{"version":3,"file":"js/application-69240096bd6539cdd4eb.js","sources":["webpack:///webpack/bootstrap","webpack:///./app/assets/images/Composz-logo-black-trans.png","webpack:///./app/assets/images/Composz-logo-white-trans.png","webpack:///./app/assets/images/blankProfile.png","webpack:///./app/assets/images/slider/Banner-0.jpg","webpack:///./app/assets/images/slider/Banner-1.jpg","webpack:///./app/assets/images/slider/Banner-10.jpg","webpack:///./app/assets/images/slider/Banner-11.jpg","webpack:///./app/assets/images/slider/Banner-2.jpg","webpack:///./app/assets/images/slider/Banner-3.jpg","webpack:///./app/assets/images/slider/Banner-4.jpg","webpack:///./app/assets/images/slider/Banner-5.jpg","webpack:///./app/assets/images/slider/Banner-6.jpg","webpack:///./app/assets/images/slider/Banner-7.jpg","webpack:///./app/assets/images/slider/Banner-8.jpg","webpack:///./app/assets/images/slider/Banner-9-India.jpg","webpack:///./app/assets/images/slider/Banner-9.jpg","webpack:///./app/assets/images/slider/WelcomeToComposz.jpg","webpack:///./app/assets/images/slider/WelcomeToComposzAudio.jpg","webpack:///./app/assets/images/slider/WelcomeToComposzIndia.jpg","webpack:///./app/assets/images/slider/WelcomeToComposzMobile.jpg","webpack:///./app/assets/images/slider/WelcomeToComposzMobileIndia.jpg","webpack:///./app/javascript/actions/index.jsx","webpack:///./app/javascript/actions/layouts.jsx","webpack:///./app/javascript/actions/misc_actions.js","webpack:///./app/javascript/actions/orders.jsx","webpack:///./app/javascript/actions/product_keys.jsx","webpack:///./app/javascript/actions/product_sets.jsx","webpack:///./app/javascript/adukku_utils/array.js","webpack:///./app/javascript/adukku_utils/authorizeUser.js","webpack:///./app/javascript/adukku_utils/formatCurrency.js","webpack:///./app/javascript/components sync ^\\.\\/.*$","webpack:///./app/javascript/components/AddProduct.jsx","webpack:///./app/javascript/components/AddUser.jsx","webpack:///./app/javascript/components/AddUser1.jsx","webpack:///./app/javascript/components/AddViewProductUser.jsx","webpack:///./app/javascript/components/Admin/Admin.js","webpack:///./app/javascript/components/ComposzHomePage.jsx","webpack:///./app/javascript/components/ComposzNavbar.jsx","webpack:///./app/javascript/components/EditProductData.jsx","webpack:///./app/javascript/components/EditProductImage.jsx","webpack:///./app/javascript/components/FileManager/FileManager.js","webpack:///./app/javascript/components/GetViewProductUser.jsx","webpack:///./app/javascript/components/MyCart.jsx","webpack:///./app/javascript/components/MyOrders.jsx","webpack:///./app/javascript/components/MyProducts.jsx","webpack:///./app/javascript/components/Navbar.jsx","webpack:///./app/javascript/components/PresetProduct.jsx","webpack:///./app/javascript/components/Product.jsx","webpack:///./app/javascript/components/ProductComposzNavbar.jsx","webpack:///./app/javascript/components/ProductDL.jsx","webpack:///./app/javascript/components/ProductDLAttr.jsx","webpack:///./app/javascript/components/ProductData.jsx","webpack:///./app/javascript/components/ProductImageUpload.jsx","webpack:///./app/javascript/components/ProductLayoutList.jsx","webpack:///./app/javascript/components/ProductList.jsx","webpack:///./app/javascript/components/ProductNavbar.jsx","webpack:///./app/javascript/components/UserStorage/CCPaymentModal.js","webpack:///./app/javascript/components/UserStorage/CCStoragePayment.jsx","webpack:///./app/javascript/components/UserStorage/PaymentModal.js","webpack:///./app/javascript/components/UserStorage/StoragePayment.jsx","webpack:///./app/javascript/components/UserStorage/UserStorage.js","webpack:///./app/javascript/components/ViewProducts.jsx","webpack:///./app/javascript/components/bootstrap/Forms.FieldGroup.jsx","webpack:///./app/javascript/components/cart/Cart.jsx","webpack:///./app/javascript/components/cart/Cart1.jsx","webpack:///./app/javascript/components/cart/CartList.jsx","webpack:///./app/javascript/components/layouts/AddLayout.jsx","webpack:///./app/javascript/components/layouts/Layout.jsx","webpack:///./app/javascript/components/layouts/LayoutList.jsx","webpack:///./app/javascript/components/layouts/ThumbnailPreview.jsx","webpack:///./app/javascript/components/layouts/lydl/LyDl.jsx","webpack:///./app/javascript/components/layouts/lydl/LyDlList.jsx","webpack:///./app/javascript/components/layouts/lydl/ManageLyDl.jsx","webpack:///./app/javascript/components/layouts/lydlrel/AddLyDlRel.jsx","webpack:///./app/javascript/components/layouts/lydlrel/AddLyDlRelKey.jsx","webpack:///./app/javascript/components/layouts/lydlrel/EditLyDlRel.jsx","webpack:///./app/javascript/components/layouts/lydlrel/EditLyDlRelKey.jsx","webpack:///./app/javascript/components/layouts/lydlrel/EditLyDlRelKeyList.jsx","webpack:///./app/javascript/components/layouts/lydlrel/EditLyDlRelList.jsx","webpack:///./app/javascript/components/layouts/lydlrel/LyDlRel.jsx","webpack:///./app/javascript/components/layouts/lydlrel/LyDlRelKey.jsx","webpack:///./app/javascript/components/layouts/lydlrel/LyDlRelKeyList.jsx","webpack:///./app/javascript/components/layouts/lydlrel/LyDlRelList.jsx","webpack:///./app/javascript/components/layouts/lyslotfors/AddLySlotFor.jsx","webpack:///./app/javascript/components/layouts/lyslotfors/LySlotFor.jsx","webpack:///./app/javascript/components/layouts/lyslotfors/LySlotForList.jsx","webpack:///./app/javascript/components/orders/CCavenuePayment.jsx","webpack:///./app/javascript/components/orders/DownloadFiles.jsx","webpack:///./app/javascript/components/orders/Layout.jsx","webpack:///./app/javascript/components/orders/Order.jsx","webpack:///./app/javascript/components/orders/OrderList.jsx","webpack:///./app/javascript/components/orders/OrderProductSet.jsx","webpack:///./app/javascript/components/orders/OrderProductSetList.jsx","webpack:///./app/javascript/components/orders/Payment.jsx","webpack:///./app/javascript/components/orders/ShareProduct.jsx","webpack:///./app/javascript/components/product_keys/EditProductKey.jsx","webpack:///./app/javascript/components/product_keys/ProductKey.jsx","webpack:///./app/javascript/components/product_keys/ProductKeyList.jsx","webpack:///./app/javascript/components/product_sets/AddProductSet.jsx","webpack:///./app/javascript/components/product_sets/ProductSet.jsx","webpack:///./app/javascript/components/product_sets/ProductSetCount.jsx","webpack:///./app/javascript/components/product_sets/ProductSetCountList.jsx","webpack:///./app/javascript/components/product_sets/ProductSetDLVal.jsx","webpack:///./app/javascript/components/product_sets/ProductSetDLValList.jsx","webpack:///./app/javascript/components/product_sets/ProductSetKeyVal.jsx","webpack:///./app/javascript/components/product_sets/ProductSetKeyValList.jsx","webpack:///./app/javascript/components/product_sets/ProductSetLayout.jsx","webpack:///./app/javascript/components/product_sets/ProductSetList.jsx","webpack:///./app/javascript/components/react-select-override/FixRequiredSelect.jsx","webpack:///./app/javascript/components/view_products/ViewProduct.jsx","webpack:///./app/javascript/components/view_products/ViewProductList.jsx","webpack:///./app/javascript/components/view_products/ViewProductSet.jsx","webpack:///./app/javascript/components/view_products/ViewProductSetList.jsx","webpack:///./app/javascript/constants/endpoints.jsx","webpack:///./app/javascript/containers/AddProductContainer.jsx","webpack:///./app/javascript/containers/AddUserContainer.jsx","webpack:///./app/javascript/containers/AdminContainer.jsx","webpack:///./app/javascript/containers/EditProductDataContainer.jsx","webpack:///./app/javascript/containers/FileManagerContainer.jsx","webpack:///./app/javascript/containers/ProductContainer.jsx","webpack:///./app/javascript/containers/ProductDLAttrContainer.jsx","webpack:///./app/javascript/containers/ProductDLContainer.jsx","webpack:///./app/javascript/containers/ProductDataContainer.jsx","webpack:///./app/javascript/containers/ProductImageUploadContainer.jsx","webpack:///./app/javascript/containers/ProductLayoutListContainer.jsx","webpack:///./app/javascript/containers/ProductListContainer.jsx","webpack:///./app/javascript/containers/UserStorageContainer.jsx","webpack:///./app/javascript/containers/cart/CartContainer.jsx","webpack:///./app/javascript/containers/cart/CartListContainer.jsx","webpack:///./app/javascript/containers/layouts/AddLayoutContainer.jsx","webpack:///./app/javascript/containers/layouts/LayoutContainer.jsx","webpack:///./app/javascript/containers/layouts/LayoutListContainer.jsx","webpack:///./app/javascript/containers/layouts/lydl/LyDlContainer.jsx","webpack:///./app/javascript/containers/layouts/lydl/LyDlListContainer.jsx","webpack:///./app/javascript/containers/layouts/lydl/ManageLyDlContainer.jsx","webpack:///./app/javascript/containers/layouts/lydlrel/AddLyDlRelContainer.jsx","webpack:///./app/javascript/containers/layouts/lydlrel/AddLyDlRelKeyContainer.jsx","webpack:///./app/javascript/containers/layouts/lydlrel/EditLyDlRelContainer.jsx","webpack:///./app/javascript/containers/layouts/lydlrel/EditLyDlRelKeyContainer.jsx","webpack:///./app/javascript/containers/layouts/lydlrel/EditLyDlRelListContainer.jsx","webpack:///./app/javascript/containers/layouts/lydlrel/LyDlRelContainer.jsx","webpack:///./app/javascript/containers/layouts/lydlrel/LyDlRelKeyContainer.jsx","webpack:///./app/javascript/containers/layouts/lydlrel/LyDlRelKeyListContainer.jsx","webpack:///./app/javascript/containers/layouts/lydlrel/LyDlRelListContainer.jsx","webpack:///./app/javascript/containers/layouts/lyslotfors/AddLySlotForContainer.jsx","webpack:///./app/javascript/containers/layouts/lyslotfors/LySlotForContainer.jsx","webpack:///./app/javascript/containers/layouts/lyslotfors/LySlotForListContainer.jsx","webpack:///./app/javascript/containers/orders/CCavenuePaymentContainer.jsx","webpack:///./app/javascript/containers/orders/DownloadFilesContainer.jsx","webpack:///./app/javascript/containers/orders/LayoutContainer.jsx","webpack:///./app/javascript/containers/orders/OrderContainer.jsx","webpack:///./app/javascript/containers/orders/OrderListContainer.jsx","webpack:///./app/javascript/containers/orders/OrderProductSetContainer.jsx","webpack:///./app/javascript/containers/orders/OrderProductSetListContainer.jsx","webpack:///./app/javascript/containers/orders/PaymentContainer.jsx","webpack:///./app/javascript/containers/orders/ShareProductContainer.jsx","webpack:///./app/javascript/containers/product_keys/EditProductKeyContainer.jsx","webpack:///./app/javascript/containers/product_keys/ProductKeyContainer.jsx","webpack:///./app/javascript/containers/product_keys/ProductKeyListContainer.jsx","webpack:///./app/javascript/containers/product_sets/AddProductSetContainer.jsx","webpack:///./app/javascript/containers/product_sets/ProductSetContainer.jsx","webpack:///./app/javascript/containers/product_sets/ProductSetCountContainer.jsx","webpack:///./app/javascript/containers/product_sets/ProductSetCountListContainer.jsx","webpack:///./app/javascript/containers/product_sets/ProductSetDLValContainer.jsx","webpack:///./app/javascript/containers/product_sets/ProductSetDLValListContainer.jsx","webpack:///./app/javascript/containers/product_sets/ProductSetKeyValContainer.jsx","webpack:///./app/javascript/containers/product_sets/ProductSetKeyValListContainer.jsx","webpack:///./app/javascript/containers/product_sets/ProductSetLayoutContainer.jsx","webpack:///./app/javascript/containers/product_sets/ProductSetListContainer.jsx","webpack:///./app/javascript/containers/view_products/ViewProductContainer.jsx","webpack:///./app/javascript/containers/view_products/ViewProductListContainer.jsx","webpack:///./app/javascript/containers/view_products/ViewProductSetContainer.jsx","webpack:///./app/javascript/containers/view_products/ViewProductSetListContainer.jsx","webpack:///./app/javascript/context/cart/CartContext.jsx","webpack:///./app/javascript/context/cart/CartReducer.jsx","webpack:///./app/javascript/context/cart/CartState.jsx","webpack:///./app/javascript/context/cart/CartTypes.js","webpack:///./app/javascript/packs/application.js","webpack:///./app/javascript/reducers/layouts.reducers.jsx","webpack:///./app/javascript/reducers/misc_reducer.jsx","webpack:///./app/javascript/reducers/orders_reducer.jsx","webpack:///./app/javascript/reducers/product_key.reducers.jsx","webpack:///./app/javascript/reducers/product_reducers.jsx","webpack:///./app/javascript/reducers/product_sets.reducers.jsx","webpack:///./app/javascript/sagas/index.jsx","webpack:///./app/javascript/sagas/layouts.saga.jsx","webpack:///./app/javascript/sagas/orders.saga.js","webpack:///./app/javascript/sagas/orders_index.saga.jsx","webpack:///./app/javascript/sagas/product_keys.saga.jsx","webpack:///./app/javascript/sagas/product_sets.saga.jsx","webpack:///./app/javascript/sagas/products.saga.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/array/from.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/object/assign.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/object/create.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/object/entries.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/object/keys.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/object/values.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/parse-int.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/symbol.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/weak-map.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/extends.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/inheritsLoose.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/extends.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/inheritsLoose.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack:///./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack:///./node_modules/@emotion/memoize/dist/emotion-memoize.browser.esm.js","webpack:///./node_modules/@emotion/react/dist/emotion-element-99289b21.browser.esm.js","webpack:///./node_modules/@emotion/react/dist/emotion-react.browser.esm.js","webpack:///./node_modules/@emotion/react/isolated-hoist-non-react-statics-do-not-use-this-in-your-code/dist/emotion-react-isolated-hoist-non-react-statics-do-not-use-this-in-your-code.browser.esm.js","webpack:///./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","webpack:///./node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","webpack:///./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","webpack:///./node_modules/@emotion/weak-memoize/dist/weak-memoize.browser.esm.js","webpack:///./node_modules/@toast-ui/react-image-editor/dist/toastui-react-image-editor.js","webpack:///./node_modules/array-unique/index.js","webpack:///./node_modules/babel-polyfill/lib/index.js","webpack:///./node_modules/babel-polyfill/node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/core-js/fn/regexp/escape.js","webpack:///./node_modules/core-js/library/fn/array/from.js","webpack:///./node_modules/core-js/library/fn/array/is-array.js","webpack:///./node_modules/core-js/library/fn/object/assign.js","webpack:///./node_modules/core-js/library/fn/object/create.js","webpack:///./node_modules/core-js/library/fn/object/define-property.js","webpack:///./node_modules/core-js/library/fn/object/entries.js","webpack:///./node_modules/core-js/library/fn/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js/library/fn/object/keys.js","webpack:///./node_modules/core-js/library/fn/object/set-prototype-of.js","webpack:///./node_modules/core-js/library/fn/object/values.js","webpack:///./node_modules/core-js/library/fn/parse-int.js","webpack:///./node_modules/core-js/library/fn/symbol/index.js","webpack:///./node_modules/core-js/library/fn/symbol/iterator.js","webpack:///./node_modules/core-js/library/fn/weak-map.js","webpack:///./node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/core-js/library/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/library/modules/_an-instance.js","webpack:///./node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/core-js/library/modules/_array-includes.js","webpack:///./node_modules/core-js/library/modules/_array-methods.js","webpack:///./node_modules/core-js/library/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/library/modules/_array-species-create.js","webpack:///./node_modules/core-js/library/modules/_classof.js","webpack:///./node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/core-js/library/modules/_collection-weak.js","webpack:///./node_modules/core-js/library/modules/_collection.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/core-js/library/modules/_create-property.js","webpack:///./node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/core-js/library/modules/_defined.js","webpack:///./node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/core-js/library/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/library/modules/_enum-keys.js","webpack:///./node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/core-js/library/modules/_for-of.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/core-js/library/modules/_html.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/library/modules/_iobject.js","webpack:///./node_modules/core-js/library/modules/_is-array-iter.js","webpack:///./node_modules/core-js/library/modules/_is-array.js","webpack:///./node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/core-js/library/modules/_iter-call.js","webpack:///./node_modules/core-js/library/modules/_iter-create.js","webpack:///./node_modules/core-js/library/modules/_iter-define.js","webpack:///./node_modules/core-js/library/modules/_iter-detect.js","webpack:///./node_modules/core-js/library/modules/_iter-step.js","webpack:///./node_modules/core-js/library/modules/_iterators.js","webpack:///./node_modules/core-js/library/modules/_library.js","webpack:///./node_modules/core-js/library/modules/_meta.js","webpack:///./node_modules/core-js/library/modules/_object-assign.js","webpack:///./node_modules/core-js/library/modules/_object-create.js","webpack:///./node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/core-js/library/modules/_object-dps.js","webpack:///./node_modules/core-js/library/modules/_object-gopd.js","webpack:///./node_modules/core-js/library/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/library/modules/_object-gopn.js","webpack:///./node_modules/core-js/library/modules/_object-gops.js","webpack:///./node_modules/core-js/library/modules/_object-gpo.js","webpack:///./node_modules/core-js/library/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/library/modules/_object-keys.js","webpack:///./node_modules/core-js/library/modules/_object-pie.js","webpack:///./node_modules/core-js/library/modules/_object-sap.js","webpack:///./node_modules/core-js/library/modules/_object-to-array.js","webpack:///./node_modules/core-js/library/modules/_parse-int.js","webpack:///./node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/core-js/library/modules/_redefine-all.js","webpack:///./node_modules/core-js/library/modules/_redefine.js","webpack:///./node_modules/core-js/library/modules/_set-collection-from.js","webpack:///./node_modules/core-js/library/modules/_set-collection-of.js","webpack:///./node_modules/core-js/library/modules/_set-proto.js","webpack:///./node_modules/core-js/library/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/library/modules/_shared-key.js","webpack:///./node_modules/core-js/library/modules/_shared.js","webpack:///./node_modules/core-js/library/modules/_string-at.js","webpack:///./node_modules/core-js/library/modules/_string-trim.js","webpack:///./node_modules/core-js/library/modules/_string-ws.js","webpack:///./node_modules/core-js/library/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/library/modules/_to-integer.js","webpack:///./node_modules/core-js/library/modules/_to-iobject.js","webpack:///./node_modules/core-js/library/modules/_to-length.js","webpack:///./node_modules/core-js/library/modules/_to-object.js","webpack:///./node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/core-js/library/modules/_uid.js","webpack:///./node_modules/core-js/library/modules/_validate-collection.js","webpack:///./node_modules/core-js/library/modules/_wks-define.js","webpack:///./node_modules/core-js/library/modules/_wks-ext.js","webpack:///./node_modules/core-js/library/modules/_wks.js","webpack:///./node_modules/core-js/library/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/library/modules/es6.array.from.js","webpack:///./node_modules/core-js/library/modules/es6.array.is-array.js","webpack:///./node_modules/core-js/library/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/library/modules/es6.object.assign.js","webpack:///./node_modules/core-js/library/modules/es6.object.create.js","webpack:///./node_modules/core-js/library/modules/es6.object.define-property.js","webpack:///./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/library/modules/es6.object.keys.js","webpack:///./node_modules/core-js/library/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/core-js/library/modules/es6.parse-int.js","webpack:///./node_modules/core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/library/modules/es6.symbol.js","webpack:///./node_modules/core-js/library/modules/es6.weak-map.js","webpack:///./node_modules/core-js/library/modules/es7.object.entries.js","webpack:///./node_modules/core-js/library/modules/es7.object.values.js","webpack:///./node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/core-js/library/modules/es7.symbol.observable.js","webpack:///./node_modules/core-js/library/modules/es7.weak-map.from.js","webpack:///./node_modules/core-js/library/modules/es7.weak-map.of.js","webpack:///./node_modules/core-js/library/modules/web.dom.iterable.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_a-number-value.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_array-copy-within.js","webpack:///./node_modules/core-js/modules/_array-fill.js","webpack:///./node_modules/core-js/modules/_array-from-iterable.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_array-reduce.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_bind.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_collection-to-json.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_create-property.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_date-to-iso-string.js","webpack:///./node_modules/core-js/modules/_date-to-primitive.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_enum-keys.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_fails-is-regexp.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/core-js/modules/_flags.js","webpack:///./node_modules/core-js/modules/_flatten-into-array.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_is-integer.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_is-regexp.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_math-expm1.js","webpack:///./node_modules/core-js/modules/_math-fround.js","webpack:///./node_modules/core-js/modules/_math-log1p.js","webpack:///./node_modules/core-js/modules/_math-scale.js","webpack:///./node_modules/core-js/modules/_math-sign.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_metadata.js","webpack:///./node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-forced-pam.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_object-sap.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/core-js/modules/_own-keys.js","webpack:///./node_modules/core-js/modules/_parse-float.js","webpack:///./node_modules/core-js/modules/_parse-int.js","webpack:///./node_modules/core-js/modules/_perform.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/core-js/modules/_replacer.js","webpack:///./node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/core-js/modules/_set-collection-from.js","webpack:///./node_modules/core-js/modules/_set-collection-of.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/core-js/modules/_string-context.js","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/core-js/modules/_string-pad.js","webpack:///./node_modules/core-js/modules/_string-repeat.js","webpack:///./node_modules/core-js/modules/_string-trim.js","webpack:///./node_modules/core-js/modules/_string-ws.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_to-index.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_typed-array.js","webpack:///./node_modules/core-js/modules/_typed-buffer.js","webpack:///./node_modules/core-js/modules/_typed.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/core-js/modules/_wks-define.js","webpack:///./node_modules/core-js/modules/_wks-ext.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/core.regexp.escape.js","webpack:///./node_modules/core-js/modules/es6.array.copy-within.js","webpack:///./node_modules/core-js/modules/es6.array.every.js","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/core-js/modules/es6.array.filter.js","webpack:///./node_modules/core-js/modules/es6.array.find-index.js","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/core-js/modules/es6.array.for-each.js","webpack:///./node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/core-js/modules/es6.array.index-of.js","webpack:///./node_modules/core-js/modules/es6.array.is-array.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/modules/es6.array.join.js","webpack:///./node_modules/core-js/modules/es6.array.last-index-of.js","webpack:///./node_modules/core-js/modules/es6.array.map.js","webpack:///./node_modules/core-js/modules/es6.array.of.js","webpack:///./node_modules/core-js/modules/es6.array.reduce-right.js","webpack:///./node_modules/core-js/modules/es6.array.reduce.js","webpack:///./node_modules/core-js/modules/es6.array.slice.js","webpack:///./node_modules/core-js/modules/es6.array.some.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/core-js/modules/es6.array.species.js","webpack:///./node_modules/core-js/modules/es6.date.now.js","webpack:///./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack:///./node_modules/core-js/modules/es6.date.to-json.js","webpack:///./node_modules/core-js/modules/es6.date.to-primitive.js","webpack:///./node_modules/core-js/modules/es6.date.to-string.js","webpack:///./node_modules/core-js/modules/es6.function.bind.js","webpack:///./node_modules/core-js/modules/es6.function.has-instance.js","webpack:///./node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.math.acosh.js","webpack:///./node_modules/core-js/modules/es6.math.asinh.js","webpack:///./node_modules/core-js/modules/es6.math.atanh.js","webpack:///./node_modules/core-js/modules/es6.math.cbrt.js","webpack:///./node_modules/core-js/modules/es6.math.clz32.js","webpack:///./node_modules/core-js/modules/es6.math.cosh.js","webpack:///./node_modules/core-js/modules/es6.math.expm1.js","webpack:///./node_modules/core-js/modules/es6.math.fround.js","webpack:///./node_modules/core-js/modules/es6.math.hypot.js","webpack:///./node_modules/core-js/modules/es6.math.imul.js","webpack:///./node_modules/core-js/modules/es6.math.log10.js","webpack:///./node_modules/core-js/modules/es6.math.log1p.js","webpack:///./node_modules/core-js/modules/es6.math.log2.js","webpack:///./node_modules/core-js/modules/es6.math.sign.js","webpack:///./node_modules/core-js/modules/es6.math.sinh.js","webpack:///./node_modules/core-js/modules/es6.math.tanh.js","webpack:///./node_modules/core-js/modules/es6.math.trunc.js","webpack:///./node_modules/core-js/modules/es6.number.constructor.js","webpack:///./node_modules/core-js/modules/es6.number.epsilon.js","webpack:///./node_modules/core-js/modules/es6.number.is-finite.js","webpack:///./node_modules/core-js/modules/es6.number.is-integer.js","webpack:///./node_modules/core-js/modules/es6.number.is-nan.js","webpack:///./node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.parse-float.js","webpack:///./node_modules/core-js/modules/es6.number.parse-int.js","webpack:///./node_modules/core-js/modules/es6.number.to-fixed.js","webpack:///./node_modules/core-js/modules/es6.number.to-precision.js","webpack:///./node_modules/core-js/modules/es6.object.assign.js","webpack:///./node_modules/core-js/modules/es6.object.create.js","webpack:///./node_modules/core-js/modules/es6.object.define-properties.js","webpack:///./node_modules/core-js/modules/es6.object.define-property.js","webpack:///./node_modules/core-js/modules/es6.object.freeze.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack:///./node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.object.is-extensible.js","webpack:///./node_modules/core-js/modules/es6.object.is-frozen.js","webpack:///./node_modules/core-js/modules/es6.object.is-sealed.js","webpack:///./node_modules/core-js/modules/es6.object.is.js","webpack:///./node_modules/core-js/modules/es6.object.keys.js","webpack:///./node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack:///./node_modules/core-js/modules/es6.object.seal.js","webpack:///./node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.object.to-string.js","webpack:///./node_modules/core-js/modules/es6.parse-float.js","webpack:///./node_modules/core-js/modules/es6.parse-int.js","webpack:///./node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/core-js/modules/es6.reflect.apply.js","webpack:///./node_modules/core-js/modules/es6.reflect.construct.js","webpack:///./node_modules/core-js/modules/es6.reflect.define-property.js","webpack:///./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack:///./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack:///./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.reflect.get.js","webpack:///./node_modules/core-js/modules/es6.reflect.has.js","webpack:///./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack:///./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack:///./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack:///./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.reflect.set.js","webpack:///./node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///./node_modules/core-js/modules/es6.regexp.exec.js","webpack:///./node_modules/core-js/modules/es6.regexp.flags.js","webpack:///./node_modules/core-js/modules/es6.regexp.match.js","webpack:///./node_modules/core-js/modules/es6.regexp.replace.js","webpack:///./node_modules/core-js/modules/es6.regexp.search.js","webpack:///./node_modules/core-js/modules/es6.regexp.split.js","webpack:///./node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es6.string.anchor.js","webpack:///./node_modules/core-js/modules/es6.string.big.js","webpack:///./node_modules/core-js/modules/es6.string.blink.js","webpack:///./node_modules/core-js/modules/es6.string.bold.js","webpack:///./node_modules/core-js/modules/es6.string.code-point-at.js","webpack:///./node_modules/core-js/modules/es6.string.ends-with.js","webpack:///./node_modules/core-js/modules/es6.string.fixed.js","webpack:///./node_modules/core-js/modules/es6.string.fontcolor.js","webpack:///./node_modules/core-js/modules/es6.string.fontsize.js","webpack:///./node_modules/core-js/modules/es6.string.from-code-point.js","webpack:///./node_modules/core-js/modules/es6.string.includes.js","webpack:///./node_modules/core-js/modules/es6.string.italics.js","webpack:///./node_modules/core-js/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./node_modules/core-js/modules/es6.string.raw.js","webpack:///./node_modules/core-js/modules/es6.string.repeat.js","webpack:///./node_modules/core-js/modules/es6.string.small.js","webpack:///./node_modules/core-js/modules/es6.string.starts-with.js","webpack:///./node_modules/core-js/modules/es6.string.strike.js","webpack:///./node_modules/core-js/modules/es6.string.sub.js","webpack:///./node_modules/core-js/modules/es6.string.sup.js","webpack:///./node_modules/core-js/modules/es6.string.trim.js","webpack:///./node_modules/core-js/modules/es6.symbol.js","webpack:///./node_modules/core-js/modules/es6.typed.array-buffer.js","webpack:///./node_modules/core-js/modules/es6.typed.data-view.js","webpack:///./node_modules/core-js/modules/es6.typed.float32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.float64-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int16-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int8-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/es6.weak-set.js","webpack:///./node_modules/core-js/modules/es7.array.flat-map.js","webpack:///./node_modules/core-js/modules/es7.array.flatten.js","webpack:///./node_modules/core-js/modules/es7.array.includes.js","webpack:///./node_modules/core-js/modules/es7.asap.js","webpack:///./node_modules/core-js/modules/es7.error.is-error.js","webpack:///./node_modules/core-js/modules/es7.global.js","webpack:///./node_modules/core-js/modules/es7.map.from.js","webpack:///./node_modules/core-js/modules/es7.map.of.js","webpack:///./node_modules/core-js/modules/es7.map.to-json.js","webpack:///./node_modules/core-js/modules/es7.math.clamp.js","webpack:///./node_modules/core-js/modules/es7.math.deg-per-rad.js","webpack:///./node_modules/core-js/modules/es7.math.degrees.js","webpack:///./node_modules/core-js/modules/es7.math.fscale.js","webpack:///./node_modules/core-js/modules/es7.math.iaddh.js","webpack:///./node_modules/core-js/modules/es7.math.imulh.js","webpack:///./node_modules/core-js/modules/es7.math.isubh.js","webpack:///./node_modules/core-js/modules/es7.math.rad-per-deg.js","webpack:///./node_modules/core-js/modules/es7.math.radians.js","webpack:///./node_modules/core-js/modules/es7.math.scale.js","webpack:///./node_modules/core-js/modules/es7.math.signbit.js","webpack:///./node_modules/core-js/modules/es7.math.umulh.js","webpack:///./node_modules/core-js/modules/es7.object.define-getter.js","webpack:///./node_modules/core-js/modules/es7.object.define-setter.js","webpack:///./node_modules/core-js/modules/es7.object.entries.js","webpack:///./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/es7.object.lookup-getter.js","webpack:///./node_modules/core-js/modules/es7.object.lookup-setter.js","webpack:///./node_modules/core-js/modules/es7.object.values.js","webpack:///./node_modules/core-js/modules/es7.observable.js","webpack:///./node_modules/core-js/modules/es7.promise.finally.js","webpack:///./node_modules/core-js/modules/es7.promise.try.js","webpack:///./node_modules/core-js/modules/es7.reflect.define-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.delete-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.has-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.has-own-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.metadata.js","webpack:///./node_modules/core-js/modules/es7.set.from.js","webpack:///./node_modules/core-js/modules/es7.set.of.js","webpack:///./node_modules/core-js/modules/es7.set.to-json.js","webpack:///./node_modules/core-js/modules/es7.string.at.js","webpack:///./node_modules/core-js/modules/es7.string.match-all.js","webpack:///./node_modules/core-js/modules/es7.string.pad-end.js","webpack:///./node_modules/core-js/modules/es7.string.pad-start.js","webpack:///./node_modules/core-js/modules/es7.string.trim-left.js","webpack:///./node_modules/core-js/modules/es7.string.trim-right.js","webpack:///./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/core-js/modules/es7.symbol.observable.js","webpack:///./node_modules/core-js/modules/es7.system.global.js","webpack:///./node_modules/core-js/modules/es7.weak-map.from.js","webpack:///./node_modules/core-js/modules/es7.weak-map.of.js","webpack:///./node_modules/core-js/modules/es7.weak-set.from.js","webpack:///./node_modules/core-js/modules/es7.weak-set.of.js","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/core-js/modules/web.timers.js","webpack:///./node_modules/core-js/shim.js","webpack:///./node_modules/deep-diff/index.js","webpack:///./node_modules/dom-helpers/activeElement.js","webpack:///./node_modules/dom-helpers/class/addClass.js","webpack:///./node_modules/dom-helpers/class/hasClass.js","webpack:///./node_modules/dom-helpers/class/index.js","webpack:///./node_modules/dom-helpers/class/removeClass.js","webpack:///./node_modules/dom-helpers/events/filter.js","webpack:///./node_modules/dom-helpers/events/index.js","webpack:///./node_modules/dom-helpers/events/listen.js","webpack:///./node_modules/dom-helpers/events/off.js","webpack:///./node_modules/dom-helpers/events/on.js","webpack:///./node_modules/dom-helpers/ownerDocument.js","webpack:///./node_modules/dom-helpers/query/contains.js","webpack:///./node_modules/dom-helpers/query/isWindow.js","webpack:///./node_modules/dom-helpers/query/offset.js","webpack:///./node_modules/dom-helpers/query/offsetParent.js","webpack:///./node_modules/dom-helpers/query/position.js","webpack:///./node_modules/dom-helpers/query/querySelectorAll.js","webpack:///./node_modules/dom-helpers/query/scrollLeft.js","webpack:///./node_modules/dom-helpers/query/scrollTop.js","webpack:///./node_modules/dom-helpers/style/getComputedStyle.js","webpack:///./node_modules/dom-helpers/style/index.js","webpack:///./node_modules/dom-helpers/style/removeStyle.js","webpack:///./node_modules/dom-helpers/transition/end.js","webpack:///./node_modules/dom-helpers/transition/index.js","webpack:///./node_modules/dom-helpers/transition/isTransform.js","webpack:///./node_modules/dom-helpers/transition/properties.js","webpack:///./node_modules/dom-helpers/util/camelize.js","webpack:///./node_modules/dom-helpers/util/camelizeStyle.js","webpack:///./node_modules/dom-helpers/util/hyphenate.js","webpack:///./node_modules/dom-helpers/util/hyphenateStyle.js","webpack:///./node_modules/dom-helpers/util/inDOM.js","webpack:///./node_modules/dom-helpers/util/scrollbarSize.js","webpack:///./node_modules/fflate/esm/browser.js","webpack:///./node_modules/form-serialize/index.js","webpack:///./node_modules/history/index.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/html2canvas/dist/html2canvas.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/jspdf/dist/jspdf.es.min.js","webpack:///./node_modules/keycode/index.js","webpack:///./node_modules/lodash-es/_Symbol.js","webpack:///./node_modules/lodash-es/_baseGetTag.js","webpack:///./node_modules/lodash-es/_freeGlobal.js","webpack:///./node_modules/lodash-es/_getPrototype.js","webpack:///./node_modules/lodash-es/_getRawTag.js","webpack:///./node_modules/lodash-es/_objectToString.js","webpack:///./node_modules/lodash-es/_overArg.js","webpack:///./node_modules/lodash-es/_root.js","webpack:///./node_modules/lodash-es/isObjectLike.js","webpack:///./node_modules/lodash-es/isPlainObject.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./node_modules/node-libs-browser/node_modules/buffer/index.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/prop-types-extra/lib/all.js","webpack:///./node_modules/prop-types-extra/lib/componentOrElement.js","webpack:///./node_modules/prop-types-extra/lib/deprecated.js","webpack:///./node_modules/prop-types-extra/lib/elementType.js","webpack:///./node_modules/prop-types-extra/lib/isRequiredForA11y.js","webpack:///./node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","webpack:///./node_modules/prop-types-extra/node_modules/warning/warning.js","webpack:///./node_modules/prop-types/checkPropTypes.js","webpack:///./node_modules/prop-types/factoryWithTypeCheckers.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/prop-types/lib/has.js","webpack:///./node_modules/react-bootstrap/es/Accordion.js","webpack:///./node_modules/react-bootstrap/es/Alert.js","webpack:///./node_modules/react-bootstrap/es/Badge.js","webpack:///./node_modules/react-bootstrap/es/Breadcrumb.js","webpack:///./node_modules/react-bootstrap/es/BreadcrumbItem.js","webpack:///./node_modules/react-bootstrap/es/Button.js","webpack:///./node_modules/react-bootstrap/es/ButtonGroup.js","webpack:///./node_modules/react-bootstrap/es/ButtonToolbar.js","webpack:///./node_modules/react-bootstrap/es/Carousel.js","webpack:///./node_modules/react-bootstrap/es/CarouselCaption.js","webpack:///./node_modules/react-bootstrap/es/CarouselItem.js","webpack:///./node_modules/react-bootstrap/es/Checkbox.js","webpack:///./node_modules/react-bootstrap/es/Clearfix.js","webpack:///./node_modules/react-bootstrap/es/CloseButton.js","webpack:///./node_modules/react-bootstrap/es/Col.js","webpack:///./node_modules/react-bootstrap/es/Collapse.js","webpack:///./node_modules/react-bootstrap/es/ControlLabel.js","webpack:///./node_modules/react-bootstrap/es/Dropdown.js","webpack:///./node_modules/react-bootstrap/es/DropdownButton.js","webpack:///./node_modules/react-bootstrap/es/DropdownMenu.js","webpack:///./node_modules/react-bootstrap/es/DropdownToggle.js","webpack:///./node_modules/react-bootstrap/es/Fade.js","webpack:///./node_modules/react-bootstrap/es/Form.js","webpack:///./node_modules/react-bootstrap/es/FormControl.js","webpack:///./node_modules/react-bootstrap/es/FormControlFeedback.js","webpack:///./node_modules/react-bootstrap/es/FormControlStatic.js","webpack:///./node_modules/react-bootstrap/es/FormGroup.js","webpack:///./node_modules/react-bootstrap/es/Glyphicon.js","webpack:///./node_modules/react-bootstrap/es/Grid.js","webpack:///./node_modules/react-bootstrap/es/HelpBlock.js","webpack:///./node_modules/react-bootstrap/es/Image.js","webpack:///./node_modules/react-bootstrap/es/InputGroup.js","webpack:///./node_modules/react-bootstrap/es/InputGroupAddon.js","webpack:///./node_modules/react-bootstrap/es/InputGroupButton.js","webpack:///./node_modules/react-bootstrap/es/Jumbotron.js","webpack:///./node_modules/react-bootstrap/es/Label.js","webpack:///./node_modules/react-bootstrap/es/ListGroup.js","webpack:///./node_modules/react-bootstrap/es/ListGroupItem.js","webpack:///./node_modules/react-bootstrap/es/Media.js","webpack:///./node_modules/react-bootstrap/es/MediaBody.js","webpack:///./node_modules/react-bootstrap/es/MediaHeading.js","webpack:///./node_modules/react-bootstrap/es/MediaLeft.js","webpack:///./node_modules/react-bootstrap/es/MediaList.js","webpack:///./node_modules/react-bootstrap/es/MediaListItem.js","webpack:///./node_modules/react-bootstrap/es/MediaRight.js","webpack:///./node_modules/react-bootstrap/es/MenuItem.js","webpack:///./node_modules/react-bootstrap/es/Modal.js","webpack:///./node_modules/react-bootstrap/es/ModalBody.js","webpack:///./node_modules/react-bootstrap/es/ModalDialog.js","webpack:///./node_modules/react-bootstrap/es/ModalFooter.js","webpack:///./node_modules/react-bootstrap/es/ModalHeader.js","webpack:///./node_modules/react-bootstrap/es/ModalTitle.js","webpack:///./node_modules/react-bootstrap/es/Nav.js","webpack:///./node_modules/react-bootstrap/es/NavDropdown.js","webpack:///./node_modules/react-bootstrap/es/NavItem.js","webpack:///./node_modules/react-bootstrap/es/Navbar.js","webpack:///./node_modules/react-bootstrap/es/NavbarBrand.js","webpack:///./node_modules/react-bootstrap/es/NavbarCollapse.js","webpack:///./node_modules/react-bootstrap/es/NavbarHeader.js","webpack:///./node_modules/react-bootstrap/es/NavbarToggle.js","webpack:///./node_modules/react-bootstrap/es/Overlay.js","webpack:///./node_modules/react-bootstrap/es/OverlayTrigger.js","webpack:///./node_modules/react-bootstrap/es/PageHeader.js","webpack:///./node_modules/react-bootstrap/es/PageItem.js","webpack:///./node_modules/react-bootstrap/es/Pager.js","webpack:///./node_modules/react-bootstrap/es/PagerItem.js","webpack:///./node_modules/react-bootstrap/es/Pagination.js","webpack:///./node_modules/react-bootstrap/es/PaginationItem.js","webpack:///./node_modules/react-bootstrap/es/Panel.js","webpack:///./node_modules/react-bootstrap/es/PanelBody.js","webpack:///./node_modules/react-bootstrap/es/PanelCollapse.js","webpack:///./node_modules/react-bootstrap/es/PanelFooter.js","webpack:///./node_modules/react-bootstrap/es/PanelGroup.js","webpack:///./node_modules/react-bootstrap/es/PanelHeading.js","webpack:///./node_modules/react-bootstrap/es/PanelTitle.js","webpack:///./node_modules/react-bootstrap/es/PanelToggle.js","webpack:///./node_modules/react-bootstrap/es/Popover.js","webpack:///./node_modules/react-bootstrap/es/ProgressBar.js","webpack:///./node_modules/react-bootstrap/es/Radio.js","webpack:///./node_modules/react-bootstrap/es/ResponsiveEmbed.js","webpack:///./node_modules/react-bootstrap/es/Row.js","webpack:///./node_modules/react-bootstrap/es/SafeAnchor.js","webpack:///./node_modules/react-bootstrap/es/SplitButton.js","webpack:///./node_modules/react-bootstrap/es/SplitToggle.js","webpack:///./node_modules/react-bootstrap/es/Tab.js","webpack:///./node_modules/react-bootstrap/es/TabContainer.js","webpack:///./node_modules/react-bootstrap/es/TabContent.js","webpack:///./node_modules/react-bootstrap/es/TabPane.js","webpack:///./node_modules/react-bootstrap/es/Table.js","webpack:///./node_modules/react-bootstrap/es/Tabs.js","webpack:///./node_modules/react-bootstrap/es/Thumbnail.js","webpack:///./node_modules/react-bootstrap/es/ToggleButton.js","webpack:///./node_modules/react-bootstrap/es/ToggleButtonGroup.js","webpack:///./node_modules/react-bootstrap/es/Tooltip.js","webpack:///./node_modules/react-bootstrap/es/Well.js","webpack:///./node_modules/react-bootstrap/es/index.js","webpack:///./node_modules/react-bootstrap/es/utils/PropTypes.js","webpack:///./node_modules/react-bootstrap/es/utils/StyleConfig.js","webpack:///./node_modules/react-bootstrap/es/utils/ValidComponentChildren.js","webpack:///./node_modules/react-bootstrap/es/utils/bootstrapUtils.js","webpack:///./node_modules/react-bootstrap/es/utils/capitalize.js","webpack:///./node_modules/react-bootstrap/es/utils/createChainedFunction.js","webpack:///./node_modules/react-bootstrap/es/utils/deprecationWarning.js","webpack:///./node_modules/react-bootstrap/es/utils/index.js","webpack:///./node_modules/react-bootstrap/es/utils/splitComponentProps.js","webpack:///./node_modules/react-bootstrap/lib/Fade.js","webpack:///./node_modules/react-bootstrap/lib/Tab.js","webpack:///./node_modules/react-bootstrap/lib/TabContainer.js","webpack:///./node_modules/react-bootstrap/lib/TabContent.js","webpack:///./node_modules/react-bootstrap/lib/TabPane.js","webpack:///./node_modules/react-bootstrap/lib/utils/StyleConfig.js","webpack:///./node_modules/react-bootstrap/lib/utils/bootstrapUtils.js","webpack:///./node_modules/react-bootstrap/lib/utils/createChainedFunction.js","webpack:///./node_modules/react-bootstrap/node_modules/prop-types/checkPropTypes.js","webpack:///./node_modules/react-bootstrap/node_modules/prop-types/factoryWithTypeCheckers.js","webpack:///./node_modules/react-bootstrap/node_modules/prop-types/index.js","webpack:///./node_modules/react-bootstrap/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-dom/cjs/react-dom-server.browser.development.js","webpack:///./node_modules/react-dom/cjs/react-dom.development.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react-dom/server.browser.js","webpack:///./node_modules/react-is/cjs/react-is.development.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack:///./node_modules/react-overlays/lib/LegacyPortal.js","webpack:///./node_modules/react-overlays/lib/Modal.js","webpack:///./node_modules/react-overlays/lib/ModalManager.js","webpack:///./node_modules/react-overlays/lib/Overlay.js","webpack:///./node_modules/react-overlays/lib/Portal.js","webpack:///./node_modules/react-overlays/lib/Position.js","webpack:///./node_modules/react-overlays/lib/RefHolder.js","webpack:///./node_modules/react-overlays/lib/RootCloseWrapper.js","webpack:///./node_modules/react-overlays/lib/utils/addEventListener.js","webpack:///./node_modules/react-overlays/lib/utils/addFocusListener.js","webpack:///./node_modules/react-overlays/lib/utils/calculatePosition.js","webpack:///./node_modules/react-overlays/lib/utils/getContainer.js","webpack:///./node_modules/react-overlays/lib/utils/isOverflowing.js","webpack:///./node_modules/react-overlays/lib/utils/manageAriaHidden.js","webpack:///./node_modules/react-overlays/lib/utils/ownerDocument.js","webpack:///./node_modules/react-overlays/node_modules/prop-types/checkPropTypes.js","webpack:///./node_modules/react-overlays/node_modules/prop-types/factoryWithTypeCheckers.js","webpack:///./node_modules/react-overlays/node_modules/prop-types/index.js","webpack:///./node_modules/react-overlays/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-prop-types/lib/elementType.js","webpack:///./node_modules/react-prop-types/lib/utils/createChainableTypeChecker.js","webpack:///./node_modules/react-redux/lib/components/Provider.js","webpack:///./node_modules/react-redux/lib/components/connect.js","webpack:///./node_modules/react-redux/lib/index.js","webpack:///./node_modules/react-redux/lib/utils/shallowEqual.js","webpack:///./node_modules/react-redux/lib/utils/storeShape.js","webpack:///./node_modules/react-redux/lib/utils/warning.js","webpack:///./node_modules/react-redux/lib/utils/wrapActionCreators.js","webpack:///./node_modules/react-redux/node_modules/prop-types/checkPropTypes.js","webpack:///./node_modules/react-redux/node_modules/prop-types/factoryWithTypeCheckers.js","webpack:///./node_modules/react-redux/node_modules/prop-types/index.js","webpack:///./node_modules/react-redux/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-router-dom/index.js","webpack:///./node_modules/react-router/index.js","webpack:///./node_modules/react-select/dist/Select-37be15dd.esm.js","webpack:///./node_modules/react-select/dist/index-d36cd2a2.esm.js","webpack:///./node_modules/react-select/dist/react-select.esm.js","webpack:///./node_modules/react-select/dist/useStateManager-0dbf12fc.esm.js","webpack:///./node_modules/react-transition-group/Transition.js","webpack:///./node_modules/react-transition-group/node_modules/prop-types/checkPropTypes.js","webpack:///./node_modules/react-transition-group/node_modules/prop-types/factoryWithTypeCheckers.js","webpack:///./node_modules/react-transition-group/node_modules/prop-types/index.js","webpack:///./node_modules/react-transition-group/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-transition-group/utils/PropTypes.js","webpack:///./node_modules/react/cjs/react.development.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/react_ujs/react_ujs/index.js","webpack:///./node_modules/react_ujs/react_ujs/src/events/detect.js","webpack:///./node_modules/react_ujs/react_ujs/src/events/native.js","webpack:///./node_modules/react_ujs/react_ujs/src/events/pjax.js","webpack:///./node_modules/react_ujs/react_ujs/src/events/turbolinks.js","webpack:///./node_modules/react_ujs/react_ujs/src/events/turbolinksClassic.js","webpack:///./node_modules/react_ujs/react_ujs/src/events/turbolinksClassicDeprecated.js","webpack:///./node_modules/react_ujs/react_ujs/src/getConstructor/fromGlobal.js","webpack:///./node_modules/react_ujs/react_ujs/src/getConstructor/fromRequireContext.js","webpack:///./node_modules/react_ujs/react_ujs/src/getConstructor/fromRequireContextWithGlobalFallback.js","webpack:///./node_modules/redux-logger/lib/core.js","webpack:///./node_modules/redux-logger/lib/defaults.js","webpack:///./node_modules/redux-logger/lib/diff.js","webpack:///./node_modules/redux-logger/lib/helpers.js","webpack:///./node_modules/redux-logger/lib/index.js","webpack:///./node_modules/redux-saga/es/effects.js","webpack:///./node_modules/redux-saga/es/index.js","webpack:///./node_modules/redux-saga/es/internal/buffers.js","webpack:///./node_modules/redux-saga/es/internal/channel.js","webpack:///./node_modules/redux-saga/es/internal/io-helpers.js","webpack:///./node_modules/redux-saga/es/internal/io.js","webpack:///./node_modules/redux-saga/es/internal/middleware.js","webpack:///./node_modules/redux-saga/es/internal/proc.js","webpack:///./node_modules/redux-saga/es/internal/runSaga.js","webpack:///./node_modules/redux-saga/es/internal/sagaHelpers/fsmIterator.js","webpack:///./node_modules/redux-saga/es/internal/sagaHelpers/index.js","webpack:///./node_modules/redux-saga/es/internal/sagaHelpers/takeEvery.js","webpack:///./node_modules/redux-saga/es/internal/sagaHelpers/takeLatest.js","webpack:///./node_modules/redux-saga/es/internal/sagaHelpers/throttle.js","webpack:///./node_modules/redux-saga/es/internal/scheduler.js","webpack:///./node_modules/redux-saga/es/internal/utils.js","webpack:///./node_modules/redux-saga/es/utils.js","webpack:///./node_modules/redux/es/applyMiddleware.js","webpack:///./node_modules/redux/es/bindActionCreators.js","webpack:///./node_modules/redux/es/combineReducers.js","webpack:///./node_modules/redux/es/compose.js","webpack:///./node_modules/redux/es/createStore.js","webpack:///./node_modules/redux/es/index.js","webpack:///./node_modules/redux/es/utils/warning.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/reselect/lib/index.js","webpack:///./node_modules/scheduler/cjs/scheduler-tracing.development.js","webpack:///./node_modules/scheduler/cjs/scheduler.development.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/scheduler/tracing.js","webpack:///./node_modules/stylis/dist/stylis.mjs","webpack:///./node_modules/symbol-observable/es/index.js","webpack:///./node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/tui-code-snippet/dist/tui-code-snippet.js","webpack:///./node_modules/tui-color-picker/dist/tui-color-picker.js","webpack:///./node_modules/tui-image-editor/dist/tui-image-editor.css","webpack:///./node_modules/tui-image-editor/dist/tui-image-editor.js","webpack:///./node_modules/uncontrollable/index.js","webpack:///./node_modules/uncontrollable/utils.js","webpack:///./node_modules/warning/browser.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///(webpack)/buildin/module.js"],"sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"application\": 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \"-\" + {\"0\":\"97eba9de3a776af03d1c\",\"1\":\"4d7a7e5ed4234b1dc9b3\"}[chunkId] + \".chunk.js\"\n \t}\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\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 = \"/packs/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./app/javascript/packs/application.js\");\n","module.exports = __webpack_public_path__ + \"media/images/Composz-logo-black-trans-da502d86.png\";","module.exports = __webpack_public_path__ + \"media/images/Composz-logo-white-trans-68a3068d.png\";","module.exports = __webpack_public_path__ + \"media/images/blankProfile-8f6d005f.png\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-0-efc4a0b5.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-1-3c1f10ca.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-10-1f31442c.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-11-21c4a497.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-2-7c937fb2.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-3-4270fa3c.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-4-a4c4dade.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-5-9fcfd8bf.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-6-7a746c08.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-7-75d01109.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-8-f842cedf.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-9-India-17d04109.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/Banner-9-ca632935.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/WelcomeToComposz-9179e6ed.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/WelcomeToComposzAudio-72b8e474.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/WelcomeToComposzIndia-3c7f0d24.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/WelcomeToComposzMobile-89eb6b55.jpg\";","module.exports = __webpack_public_path__ + \"media/slider/WelcomeToComposzMobileIndia-0e1ba5b1.jpg\";","export const GET_PRODUCT_DATA_LEVELS = \"GET_PRODUCT_DATA_LEVELS\";\nexport const DELETE_PRODUCT_DATA_LEVEL = \"DELETE_PRODUCT_DATA_LEVEL\";\nexport const CREATE_PRODUCT_DATA_LEVEL = \"CREATE_PRODUCT_DATA_LEVEL\";\nexport const PRODUCT_DATA_LEVELS = \"PRODUCT_DATA_LEVELS\";\nexport const NEW_PRODUCT_DATA_LEVEL = \"NEW_PRODUCT_DATA_LEVEL\";\n\nexport const DATA_LEVEL_ATTRIBUTES = \"DATA_LEVEL_ATTRIBUTES\";\nexport const NEW_DATA_LEVEL_ATTRIBUTE = \"DATA_LEVEL_ATTRIBUTES\";\nexport const GET_DATA_LEVEL_ATTRIBUTES = \"GET_DATA_LEVEL_ATTRIBUTES\";\nexport const DELETE_DATA_LEVEL_ATTRIBUTE = \"DELETE_DATA_LEVEL_ATTRIBUTE\";\nexport const UPDATE_DATA_LEVEL_ATTRIBUTE = \"UPDATE_DATA_LEVEL_ATTRIBUTE\";\nexport const CREATE_DATA_LEVEL_ATTRIBUTE = \"CREATE_DATA_LEVEL_ATTRIBUTE\";\n\nexport const GET_PRODUCTS = \"GET_PRODUCTS\";\nexport const DELETE_PRODUCT = \"DELETE_PRODUCT\";\nexport const DELETE_PRODUCT_SAGA = \"DELETE_PRODUCT_SAGA\";\nexport const UPDATE_PRODUCT = \"UPDATE_PRODUCT\";\nexport const UPDATE_PRODUCT_SAGA = \"UPDATE_PRODUCT_SAGA\";\nexport const CREATE_PRODUCT = \"CREATE_PRODUCT\";\nexport const PRODUCTS = \"PRODUCTS\";\nexport const CLONE_PRODUCT = \"CLONE_PRODUCT\";\nexport const GET_PRESET_PRODUCT = \"GET_PRESET_PRODUCT\";\nexport const GET_PRESET_PRODUCT_SAGA = \"GET_PRESET_PRODUCT_SAGA\";\n\nexport const TOGGLE_DATALEVEL_EXPAND = \"TOGGLE_DATALEVEL_EXPAND\";\nexport const TOGGLE_PRODUCT_EXPAND = \"TOGGLE_PRODUCT_EXPAND\";\n\nexport const TOGGLE = \"TOGGLE\";\nexport const TOGGLE_EDIT_DATALEVEL = \"TOGGLE_EDIT_DATALEVEL\";\nexport const TOGGLE_EDIT_PRODUCT = \"TOGGLE_EDIT_PRODUCT\";\nexport const TOGGLE_EDIT_DATALEVEL_ATTRIBUTE = \"TOGGLE_EDIT_DATALEVEL_ATTRIBUTE\";\n\nexport const CLEAR_PRODUCT_DATA_LEVELS = \"CLEAR_PRODUCT_DATA_LEVELS\";\nexport const CLEAR_PRODUCTS = \"CLEAR_PRODUCTS\";\n\nexport const UPDATE_OR_DELETE_RESOURCE = \"UPDATE_OR_DELETE_RESOURCE\";\nexport const CREATE_RESOURCE = \"CREATE_RESOURCE\";\n\nexport const GET_CATEGORIES = \"GET_CATEGORIES\";\nexport const ADD_CATEGORIES = \"ADD_CATEGORIES\";\n\nexport const ADD_PRODUCT_USER = \"ADD_PRODUCT_USER\";\nexport const PRODUCT_USER = \"PRODUCT_USER\";\n\nexport const ADD_VIEW_PRODUCT_USER = \"ADD_VIEW_PRODUCT_USER\";\nexport const GET_VIEW_PRODUCT_USER = \"GET_VIEW_PRODUCT_USER\";\nexport const ADD_VIEW_PRODUCT_USER_SAGA = \"ADD_VIEW_PRODUCT_USER_SAGA\";\nexport const GET_VIEW_PRODUCT_USER_SAGA = \"GET_VIEW_PRODUCT_USER_SAGA\";\n\n\nexport const GET_UPLOADED_DATA = \"GET_UPLOADED_DATA\";\nexport const GET_UPLOADED_DATA_SAGA = \"GET_UPLOADED_DATA_SAGA\";\nexport const UPDATE_UPLOADED_DATA = \"UPDATE_UPLOADED_DATA\";\nexport const UPDATE_UPLOADED_DATA_SAGA = \"UPDATE_UPLOADED_DATA_SAGA\";\n/* START OF CRUD product data levels*/\n\nexport const SET_USER_ROLE = \"SET_USER_ROLE\";\nexport const SET_USER_ROLE_SAGA = \"SET_USER_ROLE_SAGA\";\n\nexport const setCurrentUserRole = (role) => {\n return { type: SET_USER_ROLE_SAGA, role: role };\n};\n\nexport const getProductDatalevels = (product_id) => {\n return { type: PRODUCT_DATA_LEVELS, product_id: product_id };\n};\n\nexport const newProductDatalevel = (product_id, dlname) => {\n return {\n type: NEW_PRODUCT_DATA_LEVEL,\n payload: {\n product_id: product_id,\n dlname: dlname,\n id: product_id + \"/datalevels/\" + dlname,\n isEdit: true,\n attributes: [],\n },\n };\n};\n\nexport const deleteProductDataLevel = (id, persisted = true) => {\n if (persisted)\n return {\n type: UPDATE_OR_DELETE_RESOURCE,\n id: id,\n resource: \"datalevels\",\n method: \"delete\",\n payload: Object.assign({}, {}, { reducerKey: DELETE_PRODUCT_DATA_LEVEL }),\n };\n else return { type: DELETE_PRODUCT_DATA_LEVEL, id: id };\n};\n\nexport const createProductDatalevel = (product_id, dlname, dltype) => {\n return {\n type: CREATE_RESOURCE,\n resource: \"datalevels\",\n id: product_id + \"/datalevels\",\n method: \"create\",\n payload: Object.assign(\n {},\n {},\n { dltype: dltype, dlname: dlname, reducerKey: CREATE_PRODUCT_DATA_LEVEL }\n ),\n };\n};\n/* END OF CRUD product data levels*/\n\n/* START OF CRUD product data level attributes*/\nexport const getDataLevelAttributes = (product_id, dlname) => {\n return {\n type: DATA_LEVEL_ATTRIBUTES,\n product_id: product_id,\n dlname: dlname,\n };\n};\n\nexport const newDatalevelAttribute = (dlId, payload) => {\n return {\n type: NEW_DATA_LEVEL_ATTRIBUTE,\n dl_id: dlId,\n payload: Object.assign({}, payload, { isEdit: true }),\n };\n};\n\nexport const deleteDataLevelAttribute = (id, persisted = true) => {\n if (persisted)\n return {\n type: UPDATE_OR_DELETE_RESOURCE,\n id: id,\n resource: \"attributes\",\n method: \"delete\",\n payload: Object.assign({}, {}, { reducerKey: DELETE_DATA_LEVEL_ATTRIBUTE }),\n };\n else return { type: DELETE_DATA_LEVEL_ATTRIBUTE, id: id };\n};\n\nexport const updateDataLevelAttribute = (payload) => {\n return {\n type: UPDATE_OR_DELETE_RESOURCE,\n id: payload.id,\n resource: \"attributes\",\n method: \"update\",\n payload: Object.assign({}, payload, {\n reducerKey: UPDATE_DATA_LEVEL_ATTRIBUTE,\n }),\n };\n};\n\nexport const createDataLevelAttribute = (dlId, payload) => {\n let product_id = payload.product_id;\n let dlname = payload.dlname;\n let id = product_id + \"/datalevels/\" + dlname + \"/attributes\";\n return {\n type: CREATE_RESOURCE,\n dl_id: dlId,\n id: id,\n resource: \"attributes\",\n method: \"update\",\n payload: Object.assign({}, payload, {\n reducerKey: CREATE_DATA_LEVEL_ATTRIBUTE,\n }),\n };\n};\n/* END OF CRUD product data level attributes*/\n\n/* START OF CRUD product*/\nexport const getProducts = (payload) => {\n return {\n type: PRODUCTS,\n products_type: payload && payload.type ? payload.type : \"\",\n };\n};\n\nexport const getPresetProduct = (payload) => {\n return { type: GET_PRESET_PRODUCT, product_id: payload.product_id };\n};\n\n// export const deleteProduct = id => {\n// return { type: DELETE_PRODUCT, id: id };\n// };\n\nexport const deleteProduct = (url, method, payload) => {\n return {\n type: DELETE_PRODUCT_SAGA,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const updateProduct = (id, url, method, payload) => {\n // return {type: UPDATE_PRODUCT, id: id, payload: payload};\n return {\n type: UPDATE_PRODUCT_SAGA,\n id: id,\n url: url,\n method: method,\n payload: payload,\n };\n};\n\nexport const createProduct = (url, method, payload) => {\n return { type: CREATE_PRODUCT, url: url, method: method, payload: payload };\n};\n\nexport const cloneProduct = (url, method, payload) => {\n return {\n type: CLONE_PRODUCT,\n payload: payload,\n url: url,\n method: method,\n };\n};\n/* END OF CRUD product*/\n\n/* START OF CRUD product*/\nexport const getCategories = () => {\n return { type: GET_CATEGORIES };\n};\n/* END OF CRUD product*/\n\nexport const toggleView = (payload) => {\n return { type: TOGGLE, payload: payload };\n};\n\nexport const productUser = (payload) => {\n return { type: PRODUCT_USER, payload: payload };\n};\n\nexport const addViewProductUser = (payload) => {\n return { type: ADD_VIEW_PRODUCT_USER, payload: payload };\n};\n\nexport const getViewProductUser = (payload) => {\n return { type: GET_VIEW_PRODUCT_USER, payload: payload };\n};\n\nexport const getUploadedData = (payload) => {\n let product_id = payload.product_id;\n let dlname = payload.dlname;\n return {\n type: GET_UPLOADED_DATA_SAGA,\n product_id: product_id,\n dlname: dlname,\n is_search: payload.isSearch,\n search_data: payload.searchData,\n page: payload.page,\n per_page: payload.per_page,\n };\n};\n\nexport const updateUploadedData = (payload) => {\n let product_id = payload.product_id;\n let dlname = payload.dlname;\n let data = payload.data;\n return {\n type: UPDATE_UPLOADED_DATA_SAGA,\n product_id: product_id,\n dlname: dlname,\n id: payload.id,\n data: data,\n };\n};\n","export const GET_PRODUCT_LAYOUTS = \"GET_PRODUCT_LAYOUTS\";\nexport const DELETE_PRODUCT_LAYOUT = \"DELETE_PRODUCT_LAYOUT\";\nexport const CREATE_PRODUCT_LAYOUT = \"CREATE_PRODUCT_LAYOUT\";\nexport const UPDATE_PRODUCT_LAYOUT = \"UPDATE_PRODUCT_LAYOUT\";\nexport const ADD_ALL_LAYOUTS = \"ADD_ALL_LAYOUTS\";\nexport const ADD_LAYOUT = \"ADD_LAYOUT\";\nexport const CLONE_LAYOUT = \"CLONE_LAYOUT\";\nexport const CLONE_PRODUCT_LAYOUT = \"CLONE_PRODUCT_LAYOUT\";\nexport const DELETE_LAYOUT = \"DELETE_LAYOUT\";\nexport const ADD_LY_DATALEVELS = \"ADD_LY_DATALEVELS\";\nexport const DELETE_LY_DATALEVEL = \"DELETE_LY_DATALEVEL\";\nexport const GET_LAYOUT_DETAILS = \"GET_LAYOUT_DETAILS\";\nexport const CREATE_LY_DATALEVEL = \"CREATE_LY_DATALEVEL\";\nexport const CREATE_LY_DATALEVEL_REL = \"CREATE_LY_DATALEVEL_REL\";\nexport const DELETE_LY_DATALEVEL_REL = \"DELETE_LY_DATALEVEL_REL\";\nexport const CREATE_LY_DATALEVEL_REL_KEY = \"CREATE_LY_DATALEVEL_REL_KEY\";\nexport const DELETE_LY_DATALEVEL_REL_KEY = \"DELETE_LY_DATALEVEL_REL_KEY\";\nexport const CREATE_LY_SLOTFOR = \"CREATE_LY_SLOTFOR\";\nexport const DELETE_LY_SLOTFOR = \"DELETE_LY_SLOTFOR\";\n\nexport const getLayouts = (product_id, payload = {}) => {\n return {\n type: GET_PRODUCT_LAYOUTS,\n id: product_id,\n reducerKey: ADD_ALL_LAYOUTS,\n payload: Object.assign({}, payload, { product_id: product_id }),\n };\n};\n\nexport const createLayout = (url, method, payload) => {\n return {\n type: CREATE_PRODUCT_LAYOUT,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const updateLayout = (id, url, method, payload) => {\n // return {type: UPDATE_PRODUCT, id: id, payload: payload};\n return {\n type: UPDATE_PRODUCT_LAYOUT,\n id: id,\n url: url,\n method: method,\n payload: payload,\n };\n};\n\nexport const cloneLayout = (url, method, payload) => {\n return {\n type: CLONE_PRODUCT_LAYOUT,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const deleteLayout = (url, method, payload) => {\n return {\n type: DELETE_PRODUCT_LAYOUT,\n payload: payload,\n url: url,\n method: method,\n id: payload.id,\n product_id: payload.product_id,\n };\n};\n\nexport const deleteLyDL = (url, method, payload) => {\n return {\n type: DELETE_LY_DATALEVEL,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const createLyDL = (url, method, payload) => {\n return {\n type: CREATE_LY_DATALEVEL,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const getLayoutDetails = (layout_id, payload = {}) => {\n return {\n type: GET_LAYOUT_DETAILS,\n id: layout_id,\n payload: Object.assign({}, payload, { layout_id: layout_id }),\n };\n};\n\nexport const deleteLyDLRel = (url, method, payload) => {\n return {\n type: DELETE_LY_DATALEVEL_REL,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const createLyDLRel = (url, method, payload) => {\n return {\n type: CREATE_LY_DATALEVEL_REL,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const deleteLyDLRelKey = (url, method, payload) => {\n return {\n type: DELETE_LY_DATALEVEL_REL_KEY,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const createLyDLRelKey = (url, method, payload) => {\n return {\n type: CREATE_LY_DATALEVEL_REL_KEY,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const deleteLyDLSlotFor = (url, method, payload) => {\n return {\n type: DELETE_LY_SLOTFOR,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const createLyDLSlotFor = (url, method, payload) => {\n return {\n type: CREATE_LY_SLOTFOR,\n payload: payload,\n url: url,\n method: method,\n };\n};\n","export const SHOW_OVERLAY = \"SHOW_OVERLAY\";\nexport const HIDE_OVERLAY = \"HIDE_OVERLAY\";\nexport const TOGGLE_OVERLAY = \"TOGGLE_OVERLAY\";\nexport const SELECTED_DATALEVEL = \"SELECTED_DATALEVEL_OVERLAY\";\nexport const SELECTED_DATALEVEL_ATTRIBUTE = \"SELECTED_DATALEVEL_ATTRIBUTE_OVERLAY\";\nexport const SELECTED_ORDER = \"SELECTED_ORDER_OVERLAY\";\nexport const EXPAND_SECTION = \"EXPAND_SECTION\";\nexport const HIDE_SECTION = \"HIDE_SECTION\";\n\nexport const showOverlay = (id) => {\n return { type: SHOW_OVERLAY, id: id };\n};\nexport const hideOverlay = (id) => {\n return { type: HIDE_OVERLAY, id: id };\n};\n\nexport const expandSection = (id) => {\n return { type: EXPAND_SECTION, id: id };\n}\n\nexport const hideSection = (id) => {\n return { type: HIDE_SECTION, id: id };\n}\n\nexport const toggleOverlay = (id) => {\n return { type: TOGGLE_OVERLAY, id: id };\n};\n\nexport const selectDatalevel = (id, datalevel) => {\n return { type: SELECTED_DATALEVEL, id: id, payload: datalevel };\n}\n\nexport const selectDatalevelAttribute = (id, attribute) => {\n return { type: SELECTED_DATALEVEL_ATTRIBUTE, id: id, payload: attribute };\n}\n\nexport const selectKeyOrder = (id, order) => {\n return { type: SELECTED_ORDER, id: id, payload: order };\n}\n\nexport const toggleProductSets = (id) => {\n return { type: TOGGLE_PRODUCTSET, id: id };\n}","export const GET_PRICE = \"GET_PRICE\";\nexport const ADD_PRICE = \"ADD_PRICE\";\nexport const GENERATE_IMAGE = \"GENERATE_IMAGE\";\nexport const GENERATE_IMAGE_SAGA = \"GENERATE_IMAGE_SAGA\";\nexport const GET_VIEW_PRODUCTS = \"GET_VIEW_PRODUCTS\";\nexport const ADD_VIEW_PRODUCTS = \"ADD_VIEW_PRODUCTS\";\nexport const SHARE_PRODUCT = \"SHARE_PRODUCT\";\nexport const ADD_SHARE_PRODUCT = \"ADD_SHARE_PRODUCT\";\nexport const GET_ORDERS = \"GET_ORDERS\";\nexport const GET_ORDERS_SAGA = \"GET_ORDERS_SAGA\";\nexport const ADD_TO_CART = \"ADD_TO_CART\";\nexport const ADD_TO_CART_SAGA = \"ADD_TO_CART_SAGA\";\n\nexport const getPrice = (product_id, setno) => {\n setno = setno === undefined || setno === null ? \"\" : setno;\n return { type: GET_PRICE, product_id: product_id, setno: setno };\n};\n\nexport const generateImage = (product_id, setno) => {\n return {\n type: GENERATE_IMAGE_SAGA,\n payload: Object.assign({}, {}, { product_id: product_id, setno: setno }),\n };\n};\n\nexport const getViewProducts = () => {\n return { type: GET_VIEW_PRODUCTS };\n};\n\nexport const shareProduct = (payload) => {\n return { type: SHARE_PRODUCT, payload: payload };\n};\n\nexport const addToCart = (payload) => {\n return { type: ADD_TO_CART_SAGA, payload: payload };\n};\n\nexport const getOrders = (payload) => {\n return { type: GET_ORDERS_SAGA, payload: payload };\n};\n","export const GET_PRODUCT_KEYS = \"GET_PRODUCT_KEYS\";\nexport const DELETE_PRODUCT_KEY = \"DELETE_PRODUCT_KEY\";\nexport const CREATE_PRODUCT_KEY = \"CREATE_PRODUCT_KEY\";\nexport const ADD_ALL_KEYS = \"ADD_ALL_KEYS\";\nexport const ADD_KEY = \"ADD_KEY\";\nexport const DELETE_KEY = \"DELETE_KEY\";\n\nexport const getKeys = (product_id) => {\n return { type: GET_PRODUCT_KEYS, id: product_id, reducerKey: ADD_ALL_KEYS };\n};\n\nexport const createKey =(url, method, payload) => {\n return { type: CREATE_PRODUCT_KEY, payload: payload, url: url, method: method };\n}\n\n\nexport const deleteKey =(url, method, payload) => {\n return { type: DELETE_PRODUCT_KEY, payload: payload, url: url, method: method };\n}","export const GET_PRODUCT_SETSAAAA = \"GET_PRODUCT_SETSAAAA\";\nexport const GET_PRODUCT_SETS = \"GET_PRODUCT_SETS\";\nexport const GET_PRODUCT_SET_PLACEHOLDERS = \"GET_PRODUCT_SET_PLACEHOLDERS\";\nexport const DELETE_PRODUCT_SET = \"DELETE_PRODUCT_SET\";\nexport const CREATE_PRODUCT_SET = \"CREATE_PRODUCT_SET\";\nexport const ADD_ALL_SETS = \"ADD_ALL_SETS\";\nexport const ADD_SET = \"ADD_SET\";\nexport const DELETE_SET = \"DELETE_SET\";\nexport const ADD_SET_KEYVALS = \"ADD_SET_KEYVALS\";\nexport const CREATE_PRODUCT_SET_KEY = \"CREATE_PRODUCT_SET_KEY\";\nexport const UPDATE_PRODUCT_SET_KEY = \"UPDATE_PRODUCT_SET_KEY\";\n\nexport const CREATE_PRODUCT_SET_DLVAL = \"CREATE_PRODUCT_SET_DLVAL\";\nexport const UPDATE_PRODUCT_SET_DLVAL = \"UPDATE_PRODUCT_SET_DLVAL\";\nexport const CREATE_PRODUCT_SET_LAYOUT = \"CREATE_PRODUCT_SET_LAYOUT\";\nexport const DELETE_PRODUCT_SET_LAYOUT = \"DELETE_PRODUCT_SET_LAYOUT\";\nexport const GET_SUPPORTED_PRODUCT_LAYOUTS = \"GET_SUPPORTED_PRODUCT_LAYOUTS\";\nexport const ADD_ALL_SUPPORTED_LAYOUTS = \"ADD_ALL_SUPPORTED_LAYOUTS\";\n\nexport const ADD_SET_OCCURENCE_COUNT = \"ADD_SET_OCCURENCE_COUNT\";\nexport const ADD_SET_OCCURENCE_COUNT_SAGA = \"ADD_SET_OCCURENCE_COUNT_SAGA\";\nexport const UPDATE_SET_OCCURENCE_COUNT = \"UPDATE_SET_OCCURENCE_COUNT\";\nexport const UPDATE_SET_OCCURENCE_COUNT_SAGA = \"UPDATE_SET_OCCURENCE_COUNT_SAGA\";\nexport const UPDATE_PRODUCT_SET = \"UPDATE_PRODUCT_SET\";\n\nexport const getSets = (product_id) => {\n return { type: GET_PRODUCT_SETS, id: product_id, reducerKey: ADD_ALL_SETS };\n};\n\nexport const createSet = (url, method, payload) => {\n return {\n type: CREATE_PRODUCT_SET,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const deleteSet = (url, method, payload) => {\n return {\n type: DELETE_PRODUCT_SET,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const updateSet = (id, url, method, payload) => {\n // return {type: UPDATE_PRODUCT, id: id, payload: payload};\n return {\n type: UPDATE_PRODUCT_SET,\n id: id,\n url: url,\n method: method,\n payload: payload,\n };\n};\n\nexport const createSetKey = (url, method, payload) => {\n return {\n type: CREATE_PRODUCT_SET_KEY,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const updateSetKey = (url, method, payload) => {\n return {\n type: UPDATE_PRODUCT_SET_KEY,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const createSetDLVal = (url, method, payload) => {\n return {\n type: CREATE_PRODUCT_SET_DLVAL,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const updateSetDLVal = (url, method, payload) => {\n return {\n type: UPDATE_PRODUCT_SET_DLVAL,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const getSetPlaceholders = (product_id, setno) => {\n return {\n type: GET_PRODUCT_SET_PLACEHOLDERS,\n id: product_id,\n setno: setno,\n reducerKey: ADD_SET_KEYVALS,\n };\n};\n\nexport const createSetLayout = (url, method, payload) => {\n return {\n type: CREATE_PRODUCT_SET_LAYOUT,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const deleteSetLayout = (url, method, payload) => {\n return {\n type: DELETE_PRODUCT_SET_LAYOUT,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const getSupportedLayouts = (product_id, payload = {}) => {\n return {\n type: GET_SUPPORTED_PRODUCT_LAYOUTS,\n id: product_id,\n reducerKey: ADD_ALL_SUPPORTED_LAYOUTS,\n payload: Object.assign({}, payload, { product_id: product_id }),\n };\n};\n\nexport const createSetOccurenceCount = (url, method, payload) => {\n return {\n type: ADD_SET_OCCURENCE_COUNT,\n payload: payload,\n url: url,\n method: method,\n };\n};\n\nexport const updateSetOccurenceCount = (url, method, payload) => {\n return {\n type: UPDATE_SET_OCCURENCE_COUNT,\n payload: payload,\n url: url,\n method: method,\n };\n};\n","export const distinctObjects = function (objectArr, compositeKey) {\n var runTime = {};\n for (var object of objectArr) {\n let uniqKey = compositeKey\n .map((key) => {\n return object[key];\n })\n .join(\"_\");\n runTime[uniqKey] = runTime[uniqKey] || {};\n runTime[uniqKey] = Object.assign({}, runTime[uniqKey], object);\n }\n return Object.values(runTime);\n};\n\nexport const formDataToJSON = function (formData) {\n let object = {};\n formData.forEach(function (value, key) {\n object[key] = value;\n });\n return object;\n};\n","import React, { Component } from \"react\";\n\nexport const authorized = function (requiredRoles, userRoles, type = \"ANY\") {\n if (userRoles.includes(\"preset\")) {\n return false;\n }\n if (userRoles.includes(\"admin\")) {\n return true;\n }\n\n if (type === \"ANY\") {\n return requiredRoles.some((role) => userRoles.includes(role));\n } else if (type === \"ALL\") {\n return !requiredRoles.some((role) => !userRoles.includes(role));\n }\n};\n\nexport class Authorized extends Component {\n constructor(props) {\n super(props);\n }\n render() {\n if (authorized(this.props.requiredRoles, this.props.userRoles, this.props.roleType || \"ANY\")) {\n return this.props.children;\n }\n return null;\n }\n}\n","export const formatCurrency = function (value, divisor, region) {\n const converted = value / divisor;\n let formatter = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: region || \"USD\",\n\n // These options are needed to round to whole numbers if that's what you want.\n //minimumFractionDigits: 0, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)\n //maximumFractionDigits: 0, // (causes 2500.99 to be printed as $2,501)\n });\n\n return formatter.format(converted); /* $2,500.00 */\n};\n","var map = {\n\t\"./AddProduct\": \"./app/javascript/components/AddProduct.jsx\",\n\t\"./AddProduct.jsx\": \"./app/javascript/components/AddProduct.jsx\",\n\t\"./AddUser\": \"./app/javascript/components/AddUser.jsx\",\n\t\"./AddUser.jsx\": \"./app/javascript/components/AddUser.jsx\",\n\t\"./AddUser1\": \"./app/javascript/components/AddUser1.jsx\",\n\t\"./AddUser1.jsx\": \"./app/javascript/components/AddUser1.jsx\",\n\t\"./AddViewProductUser\": \"./app/javascript/components/AddViewProductUser.jsx\",\n\t\"./AddViewProductUser.jsx\": \"./app/javascript/components/AddViewProductUser.jsx\",\n\t\"./Admin/Admin\": \"./app/javascript/components/Admin/Admin.js\",\n\t\"./Admin/Admin.js\": \"./app/javascript/components/Admin/Admin.js\",\n\t\"./ComposzHomePage\": \"./app/javascript/components/ComposzHomePage.jsx\",\n\t\"./ComposzHomePage.jsx\": \"./app/javascript/components/ComposzHomePage.jsx\",\n\t\"./ComposzNavbar\": \"./app/javascript/components/ComposzNavbar.jsx\",\n\t\"./ComposzNavbar.jsx\": \"./app/javascript/components/ComposzNavbar.jsx\",\n\t\"./EditProductData\": \"./app/javascript/components/EditProductData.jsx\",\n\t\"./EditProductData.jsx\": \"./app/javascript/components/EditProductData.jsx\",\n\t\"./EditProductImage\": \"./app/javascript/components/EditProductImage.jsx\",\n\t\"./EditProductImage.jsx\": \"./app/javascript/components/EditProductImage.jsx\",\n\t\"./FileManager/FileManager\": \"./app/javascript/components/FileManager/FileManager.js\",\n\t\"./FileManager/FileManager.js\": \"./app/javascript/components/FileManager/FileManager.js\",\n\t\"./GetViewProductUser\": \"./app/javascript/components/GetViewProductUser.jsx\",\n\t\"./GetViewProductUser.jsx\": \"./app/javascript/components/GetViewProductUser.jsx\",\n\t\"./MyCart\": \"./app/javascript/components/MyCart.jsx\",\n\t\"./MyCart.jsx\": \"./app/javascript/components/MyCart.jsx\",\n\t\"./MyOrders\": \"./app/javascript/components/MyOrders.jsx\",\n\t\"./MyOrders.jsx\": \"./app/javascript/components/MyOrders.jsx\",\n\t\"./MyProducts\": \"./app/javascript/components/MyProducts.jsx\",\n\t\"./MyProducts.jsx\": \"./app/javascript/components/MyProducts.jsx\",\n\t\"./Navbar\": \"./app/javascript/components/Navbar.jsx\",\n\t\"./Navbar.jsx\": \"./app/javascript/components/Navbar.jsx\",\n\t\"./PresetProduct\": \"./app/javascript/components/PresetProduct.jsx\",\n\t\"./PresetProduct.jsx\": \"./app/javascript/components/PresetProduct.jsx\",\n\t\"./Product\": \"./app/javascript/components/Product.jsx\",\n\t\"./Product.jsx\": \"./app/javascript/components/Product.jsx\",\n\t\"./ProductComposzNavbar\": \"./app/javascript/components/ProductComposzNavbar.jsx\",\n\t\"./ProductComposzNavbar.jsx\": \"./app/javascript/components/ProductComposzNavbar.jsx\",\n\t\"./ProductDL\": \"./app/javascript/components/ProductDL.jsx\",\n\t\"./ProductDL.jsx\": \"./app/javascript/components/ProductDL.jsx\",\n\t\"./ProductDLAttr\": \"./app/javascript/components/ProductDLAttr.jsx\",\n\t\"./ProductDLAttr.jsx\": \"./app/javascript/components/ProductDLAttr.jsx\",\n\t\"./ProductData\": \"./app/javascript/components/ProductData.jsx\",\n\t\"./ProductData.jsx\": \"./app/javascript/components/ProductData.jsx\",\n\t\"./ProductImageUpload\": \"./app/javascript/components/ProductImageUpload.jsx\",\n\t\"./ProductImageUpload.jsx\": \"./app/javascript/components/ProductImageUpload.jsx\",\n\t\"./ProductLayoutList\": \"./app/javascript/components/ProductLayoutList.jsx\",\n\t\"./ProductLayoutList.jsx\": \"./app/javascript/components/ProductLayoutList.jsx\",\n\t\"./ProductList\": \"./app/javascript/components/ProductList.jsx\",\n\t\"./ProductList.jsx\": \"./app/javascript/components/ProductList.jsx\",\n\t\"./ProductNavbar\": \"./app/javascript/components/ProductNavbar.jsx\",\n\t\"./ProductNavbar.jsx\": \"./app/javascript/components/ProductNavbar.jsx\",\n\t\"./UserStorage/CCPaymentModal\": \"./app/javascript/components/UserStorage/CCPaymentModal.js\",\n\t\"./UserStorage/CCPaymentModal.js\": \"./app/javascript/components/UserStorage/CCPaymentModal.js\",\n\t\"./UserStorage/CCStoragePayment\": \"./app/javascript/components/UserStorage/CCStoragePayment.jsx\",\n\t\"./UserStorage/CCStoragePayment.jsx\": \"./app/javascript/components/UserStorage/CCStoragePayment.jsx\",\n\t\"./UserStorage/PaymentModal\": \"./app/javascript/components/UserStorage/PaymentModal.js\",\n\t\"./UserStorage/PaymentModal.js\": \"./app/javascript/components/UserStorage/PaymentModal.js\",\n\t\"./UserStorage/StoragePayment\": \"./app/javascript/components/UserStorage/StoragePayment.jsx\",\n\t\"./UserStorage/StoragePayment.jsx\": \"./app/javascript/components/UserStorage/StoragePayment.jsx\",\n\t\"./UserStorage/UserStorage\": \"./app/javascript/components/UserStorage/UserStorage.js\",\n\t\"./UserStorage/UserStorage.js\": \"./app/javascript/components/UserStorage/UserStorage.js\",\n\t\"./ViewProducts\": \"./app/javascript/components/ViewProducts.jsx\",\n\t\"./ViewProducts.jsx\": \"./app/javascript/components/ViewProducts.jsx\",\n\t\"./bootstrap/Forms.FieldGroup\": \"./app/javascript/components/bootstrap/Forms.FieldGroup.jsx\",\n\t\"./bootstrap/Forms.FieldGroup.jsx\": \"./app/javascript/components/bootstrap/Forms.FieldGroup.jsx\",\n\t\"./cart/Cart\": \"./app/javascript/components/cart/Cart.jsx\",\n\t\"./cart/Cart.jsx\": \"./app/javascript/components/cart/Cart.jsx\",\n\t\"./cart/Cart1\": \"./app/javascript/components/cart/Cart1.jsx\",\n\t\"./cart/Cart1.jsx\": \"./app/javascript/components/cart/Cart1.jsx\",\n\t\"./cart/CartList\": \"./app/javascript/components/cart/CartList.jsx\",\n\t\"./cart/CartList.jsx\": \"./app/javascript/components/cart/CartList.jsx\",\n\t\"./layouts/AddLayout\": \"./app/javascript/components/layouts/AddLayout.jsx\",\n\t\"./layouts/AddLayout.jsx\": \"./app/javascript/components/layouts/AddLayout.jsx\",\n\t\"./layouts/Layout\": \"./app/javascript/components/layouts/Layout.jsx\",\n\t\"./layouts/Layout.jsx\": \"./app/javascript/components/layouts/Layout.jsx\",\n\t\"./layouts/LayoutList\": \"./app/javascript/components/layouts/LayoutList.jsx\",\n\t\"./layouts/LayoutList.jsx\": \"./app/javascript/components/layouts/LayoutList.jsx\",\n\t\"./layouts/ThumbnailPreview\": \"./app/javascript/components/layouts/ThumbnailPreview.jsx\",\n\t\"./layouts/ThumbnailPreview.jsx\": \"./app/javascript/components/layouts/ThumbnailPreview.jsx\",\n\t\"./layouts/lydl/LyDl\": \"./app/javascript/components/layouts/lydl/LyDl.jsx\",\n\t\"./layouts/lydl/LyDl.jsx\": \"./app/javascript/components/layouts/lydl/LyDl.jsx\",\n\t\"./layouts/lydl/LyDlList\": \"./app/javascript/components/layouts/lydl/LyDlList.jsx\",\n\t\"./layouts/lydl/LyDlList.jsx\": \"./app/javascript/components/layouts/lydl/LyDlList.jsx\",\n\t\"./layouts/lydl/ManageLyDl\": \"./app/javascript/components/layouts/lydl/ManageLyDl.jsx\",\n\t\"./layouts/lydl/ManageLyDl.jsx\": \"./app/javascript/components/layouts/lydl/ManageLyDl.jsx\",\n\t\"./layouts/lydlrel/AddLyDlRel\": \"./app/javascript/components/layouts/lydlrel/AddLyDlRel.jsx\",\n\t\"./layouts/lydlrel/AddLyDlRel.jsx\": \"./app/javascript/components/layouts/lydlrel/AddLyDlRel.jsx\",\n\t\"./layouts/lydlrel/AddLyDlRelKey\": \"./app/javascript/components/layouts/lydlrel/AddLyDlRelKey.jsx\",\n\t\"./layouts/lydlrel/AddLyDlRelKey.jsx\": \"./app/javascript/components/layouts/lydlrel/AddLyDlRelKey.jsx\",\n\t\"./layouts/lydlrel/EditLyDlRel\": \"./app/javascript/components/layouts/lydlrel/EditLyDlRel.jsx\",\n\t\"./layouts/lydlrel/EditLyDlRel.jsx\": \"./app/javascript/components/layouts/lydlrel/EditLyDlRel.jsx\",\n\t\"./layouts/lydlrel/EditLyDlRelKey\": \"./app/javascript/components/layouts/lydlrel/EditLyDlRelKey.jsx\",\n\t\"./layouts/lydlrel/EditLyDlRelKey.jsx\": \"./app/javascript/components/layouts/lydlrel/EditLyDlRelKey.jsx\",\n\t\"./layouts/lydlrel/EditLyDlRelKeyList\": \"./app/javascript/components/layouts/lydlrel/EditLyDlRelKeyList.jsx\",\n\t\"./layouts/lydlrel/EditLyDlRelKeyList.jsx\": \"./app/javascript/components/layouts/lydlrel/EditLyDlRelKeyList.jsx\",\n\t\"./layouts/lydlrel/EditLyDlRelList\": \"./app/javascript/components/layouts/lydlrel/EditLyDlRelList.jsx\",\n\t\"./layouts/lydlrel/EditLyDlRelList.jsx\": \"./app/javascript/components/layouts/lydlrel/EditLyDlRelList.jsx\",\n\t\"./layouts/lydlrel/LyDlRel\": \"./app/javascript/components/layouts/lydlrel/LyDlRel.jsx\",\n\t\"./layouts/lydlrel/LyDlRel.jsx\": \"./app/javascript/components/layouts/lydlrel/LyDlRel.jsx\",\n\t\"./layouts/lydlrel/LyDlRelKey\": \"./app/javascript/components/layouts/lydlrel/LyDlRelKey.jsx\",\n\t\"./layouts/lydlrel/LyDlRelKey.jsx\": \"./app/javascript/components/layouts/lydlrel/LyDlRelKey.jsx\",\n\t\"./layouts/lydlrel/LyDlRelKeyList\": \"./app/javascript/components/layouts/lydlrel/LyDlRelKeyList.jsx\",\n\t\"./layouts/lydlrel/LyDlRelKeyList.jsx\": \"./app/javascript/components/layouts/lydlrel/LyDlRelKeyList.jsx\",\n\t\"./layouts/lydlrel/LyDlRelList\": \"./app/javascript/components/layouts/lydlrel/LyDlRelList.jsx\",\n\t\"./layouts/lydlrel/LyDlRelList.jsx\": \"./app/javascript/components/layouts/lydlrel/LyDlRelList.jsx\",\n\t\"./layouts/lyslotfors/AddLySlotFor\": \"./app/javascript/components/layouts/lyslotfors/AddLySlotFor.jsx\",\n\t\"./layouts/lyslotfors/AddLySlotFor.jsx\": \"./app/javascript/components/layouts/lyslotfors/AddLySlotFor.jsx\",\n\t\"./layouts/lyslotfors/LySlotFor\": \"./app/javascript/components/layouts/lyslotfors/LySlotFor.jsx\",\n\t\"./layouts/lyslotfors/LySlotFor.jsx\": \"./app/javascript/components/layouts/lyslotfors/LySlotFor.jsx\",\n\t\"./layouts/lyslotfors/LySlotForList\": \"./app/javascript/components/layouts/lyslotfors/LySlotForList.jsx\",\n\t\"./layouts/lyslotfors/LySlotForList.jsx\": \"./app/javascript/components/layouts/lyslotfors/LySlotForList.jsx\",\n\t\"./orders/CCavenuePayment\": \"./app/javascript/components/orders/CCavenuePayment.jsx\",\n\t\"./orders/CCavenuePayment.jsx\": \"./app/javascript/components/orders/CCavenuePayment.jsx\",\n\t\"./orders/DownloadFiles\": \"./app/javascript/components/orders/DownloadFiles.jsx\",\n\t\"./orders/DownloadFiles.jsx\": \"./app/javascript/components/orders/DownloadFiles.jsx\",\n\t\"./orders/Layout\": \"./app/javascript/components/orders/Layout.jsx\",\n\t\"./orders/Layout.jsx\": \"./app/javascript/components/orders/Layout.jsx\",\n\t\"./orders/Order\": \"./app/javascript/components/orders/Order.jsx\",\n\t\"./orders/Order.jsx\": \"./app/javascript/components/orders/Order.jsx\",\n\t\"./orders/OrderList\": \"./app/javascript/components/orders/OrderList.jsx\",\n\t\"./orders/OrderList.jsx\": \"./app/javascript/components/orders/OrderList.jsx\",\n\t\"./orders/OrderProductSet\": \"./app/javascript/components/orders/OrderProductSet.jsx\",\n\t\"./orders/OrderProductSet.jsx\": \"./app/javascript/components/orders/OrderProductSet.jsx\",\n\t\"./orders/OrderProductSetList\": \"./app/javascript/components/orders/OrderProductSetList.jsx\",\n\t\"./orders/OrderProductSetList.jsx\": \"./app/javascript/components/orders/OrderProductSetList.jsx\",\n\t\"./orders/Payment\": \"./app/javascript/components/orders/Payment.jsx\",\n\t\"./orders/Payment.jsx\": \"./app/javascript/components/orders/Payment.jsx\",\n\t\"./orders/ShareProduct\": \"./app/javascript/components/orders/ShareProduct.jsx\",\n\t\"./orders/ShareProduct.jsx\": \"./app/javascript/components/orders/ShareProduct.jsx\",\n\t\"./product_keys/EditProductKey\": \"./app/javascript/components/product_keys/EditProductKey.jsx\",\n\t\"./product_keys/EditProductKey.jsx\": \"./app/javascript/components/product_keys/EditProductKey.jsx\",\n\t\"./product_keys/ProductKey\": \"./app/javascript/components/product_keys/ProductKey.jsx\",\n\t\"./product_keys/ProductKey.jsx\": \"./app/javascript/components/product_keys/ProductKey.jsx\",\n\t\"./product_keys/ProductKeyList\": \"./app/javascript/components/product_keys/ProductKeyList.jsx\",\n\t\"./product_keys/ProductKeyList.jsx\": \"./app/javascript/components/product_keys/ProductKeyList.jsx\",\n\t\"./product_sets/AddProductSet\": \"./app/javascript/components/product_sets/AddProductSet.jsx\",\n\t\"./product_sets/AddProductSet.jsx\": \"./app/javascript/components/product_sets/AddProductSet.jsx\",\n\t\"./product_sets/ProductSet\": \"./app/javascript/components/product_sets/ProductSet.jsx\",\n\t\"./product_sets/ProductSet.jsx\": \"./app/javascript/components/product_sets/ProductSet.jsx\",\n\t\"./product_sets/ProductSetCount\": \"./app/javascript/components/product_sets/ProductSetCount.jsx\",\n\t\"./product_sets/ProductSetCount.jsx\": \"./app/javascript/components/product_sets/ProductSetCount.jsx\",\n\t\"./product_sets/ProductSetCountList\": \"./app/javascript/components/product_sets/ProductSetCountList.jsx\",\n\t\"./product_sets/ProductSetCountList.jsx\": \"./app/javascript/components/product_sets/ProductSetCountList.jsx\",\n\t\"./product_sets/ProductSetDLVal\": \"./app/javascript/components/product_sets/ProductSetDLVal.jsx\",\n\t\"./product_sets/ProductSetDLVal.jsx\": \"./app/javascript/components/product_sets/ProductSetDLVal.jsx\",\n\t\"./product_sets/ProductSetDLValList\": \"./app/javascript/components/product_sets/ProductSetDLValList.jsx\",\n\t\"./product_sets/ProductSetDLValList.jsx\": \"./app/javascript/components/product_sets/ProductSetDLValList.jsx\",\n\t\"./product_sets/ProductSetKeyVal\": \"./app/javascript/components/product_sets/ProductSetKeyVal.jsx\",\n\t\"./product_sets/ProductSetKeyVal.jsx\": \"./app/javascript/components/product_sets/ProductSetKeyVal.jsx\",\n\t\"./product_sets/ProductSetKeyValList\": \"./app/javascript/components/product_sets/ProductSetKeyValList.jsx\",\n\t\"./product_sets/ProductSetKeyValList.jsx\": \"./app/javascript/components/product_sets/ProductSetKeyValList.jsx\",\n\t\"./product_sets/ProductSetLayout\": \"./app/javascript/components/product_sets/ProductSetLayout.jsx\",\n\t\"./product_sets/ProductSetLayout.jsx\": \"./app/javascript/components/product_sets/ProductSetLayout.jsx\",\n\t\"./product_sets/ProductSetList\": \"./app/javascript/components/product_sets/ProductSetList.jsx\",\n\t\"./product_sets/ProductSetList.jsx\": \"./app/javascript/components/product_sets/ProductSetList.jsx\",\n\t\"./react-select-override/FixRequiredSelect\": \"./app/javascript/components/react-select-override/FixRequiredSelect.jsx\",\n\t\"./react-select-override/FixRequiredSelect.jsx\": \"./app/javascript/components/react-select-override/FixRequiredSelect.jsx\",\n\t\"./view_products/ViewProduct\": \"./app/javascript/components/view_products/ViewProduct.jsx\",\n\t\"./view_products/ViewProduct.jsx\": \"./app/javascript/components/view_products/ViewProduct.jsx\",\n\t\"./view_products/ViewProductList\": \"./app/javascript/components/view_products/ViewProductList.jsx\",\n\t\"./view_products/ViewProductList.jsx\": \"./app/javascript/components/view_products/ViewProductList.jsx\",\n\t\"./view_products/ViewProductSet\": \"./app/javascript/components/view_products/ViewProductSet.jsx\",\n\t\"./view_products/ViewProductSet.jsx\": \"./app/javascript/components/view_products/ViewProductSet.jsx\",\n\t\"./view_products/ViewProductSetList\": \"./app/javascript/components/view_products/ViewProductSetList.jsx\",\n\t\"./view_products/ViewProductSetList.jsx\": \"./app/javascript/components/view_products/ViewProductSetList.jsx\"\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 = \"./app/javascript/components sync recursive ^\\\\.\\\\/.*$\";","import React from \"react\";\nimport { Form, Modal, Button } from \"react-bootstrap\";\n\nimport { FieldGroup } from \"./bootstrap/Forms.FieldGroup\";\nimport { ENDPOINTS } from \"../constants/endpoints\";\nimport { formDataToJSON } from \"../adukku_utils/array\";\n\nexport default class AddProductSet extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n overlay: props.overlay || { visible: false },\n is_preset_display: false,\n categories: props.categories,\n sub_categories: props.sub_categories,\n voice: 'NO-VOICE',\n role: null,\n countryCode: this.getCookie(\"countryCode\")\n };\n this.showAddSetOverlay = this.showAddSetOverlay.bind(this);\n this.hideAddSetOverlay = this.hideAddSetOverlay.bind(this);\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps !== this.state) {\n this.setState(nextProps);\n }\n if (\n this.props.categories &&\n this.props.sub_categories &&\n (this.props.categories.length != nextProps.categories.length ||\n this.props.sub_categories.length != nextProps.sub_categories.length)\n ) {\n this.setState({\n categories: nextProps.categories,\n sub_categories: nextProps.sub_categories,\n });\n }\n }\n\n componentDidMount() {\n let user_role = document.getElementById(\"user_role\");\n user_role = user_role.innerHTML;\n this.setState({ role: user_role });\n this.props.getCategories();\n }\n\n showAddSetOverlay(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showOverlay(\"addProduct\");\n }\n\n hideAddSetOverlay(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.hideOverlay(\"addProduct\");\n }\n\n handlePresetToggle = (e) => {\n this.setState({ is_preset_display: !this.state.is_preset_display });\n };\n\n getProductCategories = () => {\n let categories = [\n \"SCHOOL\",\n \"COLLEGE\",\n \"UNIVERSITY\",\n \"PRE_SCHOOL\",\n \"PLAY_SCHOOL\",\n \"INDIVIDUAL\",\n \"STUDENT\",\n \"ALUMNI\",\n \"TEACHER\",\n \"CORPORATE\",\n \"DOCTORS-CLUB\",\n \"SPORTS\",\n \"BAR-ASSOCIATION\",\n \"MILITARY\",\n \"NAVY\",\n \"NATURE-CLUB\",\n \"WALLSTREET\",\n \"MUSIC-CLUB\",\n \"AIRFORCE\",\n \"GOVERNMENT\",\n \"OTHERS\",\n ];\n const { categories: myCategories } = this.state;\n myCategories.forEach((sc) => {\n if (!categories.includes(sc)) {\n categories.push(sc);\n }\n });\n return categories;\n };\n\n getProductSubCategories = () => {\n let subCategories = [\n \"COMPOSITES\",\n \"PICTURE_BOOKLET\",\n \"FOLDER\",\n \"GRADUATION_FOLDER\",\n \"PORTRAIT\",\n \"PASSPORT\",\n \"ID_CARD\",\n \"REPORT_CARD\",\n \"CERTIFICATES\",\n \"YEAR_BOOK\",\n \"PAST_PRESENT\",\n \"BUNDLE\",\n \"ALL_IN_ONE\",\n \"OTHER\",\n ];\n const { sub_categories } = this.state;\n sub_categories.forEach((sc) => {\n if (!subCategories.includes(sc)) {\n subCategories.push(sc);\n }\n });\n return subCategories;\n };\n\n getVoiceOptions = () => {\n if (this.state.countryCode == 'IN') {\n return [\n { label: \"NO-VOICE\", value: \"NORMAL\" },\n { label: \"VOICE-30SEC - Additional ₹200 per Record\", value: \"VOICE-30SEC\"},\n { label: \"VOICE-15SEC - Additional ₹127 per Record\", value: \"VOICE-15SEC\"},\n ];\n \n }\n else {\n return [\n { label: \"NO-VOICE\", value: \"NORMAL\" },\n { label: \"VOICE-30SEC - Additional $4 per Record\", value: \"VOICE-30SEC\"},\n ];\n }\n };\n\n getCookie(cname) {\n let name = cname + \"=\";\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for(let i = 0; i \n {this.props.labelText}\n \n
\n \n Create new product\n \n \n \n \n {this.state.role === \"admin\" && (\n \n )}\n {\n this.setState({ [name]: value });\n }}\n value={this.state.category}\n >\n \n {productCategories.map((category) => {\n return (\n \n );\n })}\n \n {this.state.category == \"OTHERS\" && (\n {\n this.setState({ [name]: value });\n }}\n value={this.state.product_category}\n />\n )}\n {\n this.setState({ [name]: value });\n }}\n value={this.state.sub_category}\n >\n \n {productSubCategories.map((scategory) => {\n return (\n \n );\n })}\n \n {this.state.sub_category == \"OTHER\" && (\n {\n this.setState({ [name]: value });\n }}\n value={this.state.product_sub_category}\n />\n )}\n {\n this.setState({ [name]: value }, ()=>{value=this.state.voice});\n }}\n value={this.state.voice}\n >\n {voiceOptions.map((vo) => {\n return (\n \n );\n })}\n \n \n \n \n {/* */}\n \n
\n
\n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Col, Form, Modal, Button } from \"react-bootstrap\";\n\nimport { FieldGroup } from \"./bootstrap/Forms.FieldGroup\";\nimport { formDataToJSON } from \"../adukku_utils/array\";\nimport { authorized, Authorized } from \"../adukku_utils/authorizeUser\";\n\nexport default class AddUser extends Component {\n constructor(props) {\n super(props);\n this.state = {\n ...props,\n email: props.edit_user && props.edit_user.email,\n login: props.edit_user && props.edit_user.login,\n view_user_user_type: props.view_user_user_type,\n view_user_product_code: props.view_user_product_code,\n view_user_password: props.view_user_password,\n view_and_pay_user_user_type: props.view_and_pay_user_user_type,\n view_and_pay_user_product_code: props.view_and_pay_user_product_code,\n view_and_pay_user_password: props.view_and_pay_user_password,\n user_id: props.user_id,\n product_id: props.product_id,\n \n is_update_code: \"Click here to Generate New Product Code\",\n \n };\n this._handleGenerateViewUserProductCode = this._handleGenerateViewUserProductCode.bind(this);\n this._handleGenerateViewAndPayUserProductCode = this._handleGenerateViewAndPayUserProductCode.bind(this);\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n this._handleAddViewUserValidSubmit = this._handleAddViewUserValidSubmit.bind(this);\n this.hideCreateLayoutOverlay = this.hideCreateLayoutOverlay.bind(this);\n }\n\n _handleGenerateViewUserProductCode = (e) => {\n let newCode = Math.round(Math.random() * (1000000));\n this.setState({ view_user_product_code: newCode });\n };\n\n _handleGenerateViewAndPayUserProductCode = (e) => {\n let newCode = Math.round(Math.random() * (1000000));\n this.setState({ view_and_pay_user_product_code: newCode });\n };\n\n _handleValidSubmit = (e) => {\n e.preventDefault();\n e.stopPropagation();\n let formData = formDataToJSON(new FormData(e.target));\n if (formData[\"role\"] === \"editor\") formData[\"name\"] = formData.login;\n this.props.productUser(formData);\n this.setState({ show: false, view_pay_modal: false });\n };\n\n hideCreateLayoutOverlay= (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ show: false, view_pay_modal: false });\n }\n\n _handleAddViewUserValidSubmit = (e) => {\n e.preventDefault();\n e.stopPropagation();\n let formData = formDataToJSON(new FormData(e.target));\n formData[\"user_id\"] = this.props.user_id;\n this.props.addViewProductUser(formData);\n \n alert (\"Make sure to share the PRODUCT_CODE & PASSWORD to your intended audience\\n\\nYour intended audience can then add your PRODUCT using VIEW/PAY PRODUCTS under DASHBOARD\");\n this.setState({ show: false, view_pay_modal: false });\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state.edit_user !== nextProps.edit_user) {\n this.setState({\n ...nextProps,\n email: nextProps.edit_user && nextProps.edit_user.email,\n login: nextProps.edit_user && nextProps.edit_user.login,\n });\n }\n }\n\n render() {\n const { edit_user, email, login, role, labelText, isAddViewUser, isAddViewPayUser } = this.state;\n const style = {\n display: \"none\",\n };\n return (\n \n{/* Commenting out Data Correction User for Phase 1 \n {role && !isAddViewUser && (\n \n
  • \n this.setState({ show: true })}>\n \n {edit_user ? \"Edit Data Correction User\" : \"Add Data Correction User\"}\n \n \n \n
    \n \n Data Correction user\n \n \n \n \n \n {\n this.setState({ [name]: value });\n }}\n />\n {\n this.setState({ [name]: value });\n }}\n />\n \n \n
    \n
    \n \n \n \n \n
    \n
    \n
  • \n
    \n )}\n*/}\n {isAddViewUser && (\n
  • \n this.setState({ view_pay_modal: true })}>\n {this.props.view_user_password ? `Edit ${labelText}` : `Add ${labelText}`}\n \n \n \n {this.props.view_user_password ? `Edit ${labelText}` : `Add ${labelText}`}\n \n \n
    \n \n \n \n \n {/* Bala*/}\n\n
    \n {\n let yesNo = confirm(\"Are you sure?\\nOld Product Code (if any) will not work anymore!!!\") \n if (yesNo) {\n this._handleGenerateViewUserProductCode()\n alert(\"New Product Code Generated\") \n }\n }}\n >\n
    \n \n \n {\n this.setState({\n view_user_password: e.target.value,\n });\n }}\n placeholder=\"Enter a Password\"\n required=\"required\"\n />\n \n
    \n \n \n
    \n \n \n \n
    \n
  • \n )}{\" \"}\n {isAddViewPayUser && (\n
  • \n this.setState({ view_pay_modal: true })}>\n {this.props.view_and_pay_user_password ? `Edit ${labelText}` : `Add ${labelText}`}\n \n \n \n {this.props.view_and_pay_user_password ? `Edit ${labelText}` : `Add ${labelText}`}\n \n \n
    \n \n \n \n \n {/* Bala*/}\n\n
    \n {\n let yesNo = confirm(\"Are you sure?\\nOld Product Code (if any) will not work anymore!!!\") \n if (yesNo) {\n this._handleGenerateViewAndPayUserProductCode()\n alert(\"New Product Code Generated\") \n }\n }}\n >\n
    \n \n \n {\n this.setState({\n view_and_pay_user_password: e.target.value,\n });\n }}\n placeholder=\"Enter a Password\"\n required=\"required\"\n />\n \n
    \n \n \n
    \n \n \n \n
    \n
  • \n )}{\" \"}\n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Col, Form, Modal, Button } from \"react-bootstrap\";\n\nimport { FieldGroup } from \"./bootstrap/Forms.FieldGroup\";\nimport { formDataToJSON } from \"../adukku_utils/array\";\nimport { authorized, Authorized } from \"../adukku_utils/authorizeUser\";\n\nexport default class AddUser extends Component {\n constructor(props) {\n super(props);\n this.state = {\n ...props,\n email: props.edit_user && props.edit_user.email,\n login: props.edit_user && props.edit_user.login,\n };\n }\n _handleValidSubmit = (e) => {\n e.preventDefault();\n e.stopPropagation();\n let formData = formDataToJSON(new FormData(e.target));\n if (formData[\"role\"] === \"editor\") formData[\"name\"] = formData.login;\n this.props.productUser(formData);\n this.setState({ show: false, view_pay_modal: false });\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state.edit_user !== nextProps.edit_user) {\n this.setState({\n ...nextProps,\n email: nextProps.edit_user && nextProps.edit_user.email,\n login: nextProps.edit_user && nextProps.edit_user.login,\n });\n }\n }\n\n render() {\n const { edit_user, email, login, role } = this.state;\n const style = {\n display: \"none\",\n };\n return (\n \n \n
  • \n this.setState({ show: true })}>\n {edit_user ? \"Edit Data Correction User\" : \"Add Data Correction User\"}\n \n \n
    \n \n Data Correction user\n \n \n \n \n \n {\n this.setState({ [name]: value });\n }}\n />\n {\n this.setState({ [name]: value });\n }}\n />\n \n \n
    \n
    \n \n \n \n \n
    \n
    \n
  • \n
    \n
  • \n this.setState({ view_pay_modal: true })}>\n {this.props.is_password_set ? \"Edit View & Pay user\" : \"Add View & Pay user\"}\n \n \n \n View & Pay User\n \n \n
    \n \n \n \n \n \n
    \n \n \n
    \n \n \n \n
    \n
  • \n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Col, Form, Modal, Button } from \"react-bootstrap\";\n\nimport { FieldGroup } from \"./bootstrap/Forms.FieldGroup\";\nimport { formDataToJSON } from \"../adukku_utils/array\";\nimport { authorized, Authorized } from \"../adukku_utils/authorizeUser\";\n\nexport default class AddUser extends Component {\n constructor(props) {\n super(props);\n this.state = {\n ...props,\n email: props.edit_user && props.edit_user.email,\n login: props.edit_user && props.edit_user.login,\n view_user_product_code: props.view_user && props.view_user.product_code,\n view_user_password: props.view_user && props.view_user.password,\n view_and_pay_user_product_code: props.view_and_pay_user && props.view_and_pay_user.product_code,\n view_and_pay_user_password: props.view_and_pay_user && props.view_and_pay_user.password,\n\n is_update_code: \"Click here to Generate New Product Code\",\n \n };\n this._handleGenerateProductCode = this._handleGenerateProductCode.bind(this);\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n }\n\n _handleGenerateProductCode = (e) => {\n let newCode = Math.round(Math.random() * (1000000));\n this.setState({ view_user_Product_code: newCode });\n };\n\n _handleValidSubmit = (e) => {\n e.preventDefault();\n e.stopPropagation();\n let formData = formDataToJSON(new FormData(e.target));\n if (formData[\"role\"] === \"editor\") formData[\"name\"] = formData.login;\n this.props.productUser(formData);\n this.setState({ show: false, view_pay_modal: false });\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state.edit_user !== nextProps.edit_user) {\n this.setState({\n ...nextProps,\n email: nextProps.edit_user && nextProps.edit_user.email,\n login: nextProps.edit_user && nextProps.edit_user.login,\n });\n }\n }\n\n render() {\n const { edit_user, email, login, role, labelText, isAddViewUser } = this.state;\n const style = {\n display: \"none\",\n };\n return (\n \n {role && !isAddViewUser && (\n \n
  • \n this.setState({ show: true })}>\n {/*Bala\n {edit_user ? \"Edit Data Correction User\" : \"Add Data Correction User\"}\n */}\n \n \n
    \n \n Data Correction user\n \n \n \n \n \n {\n this.setState({ [name]: value });\n }}\n />\n {\n this.setState({ [name]: value });\n }}\n />\n \n \n
    \n
    \n \n \n \n \n
    \n
    \n
  • \n
    \n )}\n {isAddViewUser && (\n
  • \n this.setState({ view_pay_modal: true })}>\n {this.props.is_password_set ? `Edit ${labelText}` : `Add ${labelText}`}\n \n \n {\n this.setState({ view_pay_modal: true });\n }}\n >\n {labelText}\n \n \n
    \n \n \n \n {/* Bala*/}\n\n
    \n Generate New Product Code : \n {\n let yesNo = confirm(\"Are you sure?\\nOld Product Code (if any) will not work anymore!!!\") \n if (yesNo) {\n this._handleGenerateProductCode()\n alert(\"New Product Code Generated\") \n }\n }}\n >\n
    \n \n \n {\n // this.setState({\n // password: e.target.value,\n // });\n // }}\n placeholder=\"Password\"\n required={this.props.is_password_set ? null : \"required\"}\n />\n \n
    \n \n \n
    \n \n \n \n
    \n
  • \n )}{\" \"}\n
    \n );\n }\n}\n","import React from \"react\";\nimport { Col, Modal, Button, Row } from \"react-bootstrap\";\n\nimport { FieldGroup } from \"../bootstrap/Forms.FieldGroup\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport ThumbnailPreview from \"../layouts/ThumbnailPreview\";\n// import StoragePayment from \"./StoragePayment\";\n\nexport default class AdminDefaults extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n avail_space: \"\",\n adminDefaults: {},\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.state.isFileManagerOpen && this.state.isFileManagerOpen != prevState.isFileManagerOpen)\n this.getPurchaseHistory();\n }\n\n getPurchaseHistory = () => {\n let uri = ENDPOINTS.user_storages.get_defaults.uri;\n let that = this;\n return fetch(uri, {\n method: \"GET\",\n headers: {\n \"content-type\": \"application/json\",\n },\n })\n .then((response) => response.json())\n .then((response) => {\n that.setState({\n avail_space: response.data.avail_space || 0,\n product_expiry_hours: response.data.product_expiry_hours || 0,\n space_expiry_hours: response.data.space_expiry_hours || 0,\n });\n });\n };\n\n updateAdminDefaults = (e) => {\n e.stopPropagation();\n e.preventDefault();\n let uri = ENDPOINTS.user_storages.update_defaults.uri;\n let that = this;\n let formData = new FormData();\n formData.append(\"avail_space\", this.state.avail_space);\n formData.append(\"product_expiry_hours\", this.state.product_expiry_hours);\n formData.append(\"space_expiry_hours\", this.state.space_expiry_hours);\n formData.append(\"storage_unit\", \"MEGA_BYTE\");\n formData.append(\"type\", \"set_defaults\");\n return fetch(uri, {\n method: \"PUT\",\n body: formData,\n })\n .then((response) => response.json())\n .then((response) => {\n that.setState({\n adminDefaults: response.data,\n isFileManagerOpen: false,\n });\n });\n };\n\n openFileManager = () => {\n this.setState({\n isFileManagerOpen: !this.state.isFileManagerOpen,\n });\n };\n\n render() {\n const { isFileManagerOpen, adminDefaults } = this.state;\n return (\n
  • \n {\"Set Admin Defaults\"}\n \n \n Purchase Storage\n \n \n \n \n \n \n {\n this.setState({ [name]: value });\n }}\n value={\n adminDefaults && adminDefaults.avail_space\n ? adminDefaults.avail_space\n : this.state.avail_space\n }\n />\n MB\n \n \n \n \n {\n this.setState({ [name]: value });\n }}\n value={\n adminDefaults && adminDefaults.product_expiry_hours\n ? adminDefaults.product_expiry_hours\n : this.state.product_expiry_hours\n }\n />\n Hours\n \n \n \n \n\n \n \n \n \n {\n this.setState({ [name]: value });\n }}\n value={\n adminDefaults && adminDefaults.space_expiry_hours\n ? adminDefaults.space_expiry_hours\n : this.state.space_expiry_hours\n }\n />\n Hours\n \n \n \n \n \n \n \n {/* */}\n \n \n
  • \n );\n }\n}\n","import React from 'react';\nimport { Carousel, CarouselItem, Button } from 'react-bootstrap';\n\nimport slide00 from 'images/slider/Banner-0.jpg';\nimport slide01 from 'images/slider/Banner-1.jpg';\nimport slide02 from 'images/slider/Banner-2.jpg';\nimport slide03 from 'images/slider/Banner-3.jpg';\nimport slide04 from 'images/slider/Banner-4.jpg';\nimport slide05 from 'images/slider/Banner-5.jpg';\nimport slide06 from 'images/slider/Banner-6.jpg';\nimport slide07 from 'images/slider/Banner-7.jpg';\nimport slide08 from 'images/slider/Banner-8.jpg';\nimport slide09 from 'images/slider/Banner-9.jpg';\nimport slide09India from 'images/slider/Banner-9-India.jpg';\nimport slide10 from 'images/slider/Banner-10.jpg';\nimport slide11 from 'images/slider/Banner-11.jpg';\nimport WelcomeToComposz from 'images/slider/WelcomeToComposz.jpg';\nimport WelcomeToComposzMobile from 'images/slider/WelcomeToComposzMobile.jpg';\nimport WelcomeToComposzIndia from 'images/slider/WelcomeToComposzIndia.jpg';\nimport WelcomeToComposzMobileIndia from 'images/slider/WelcomeToComposzMobileIndia.jpg';\nimport WelcomeToComposzAudio from 'images/slider/WelcomeToComposzAudio.jpg';\n\n//import 'stylesheets/ComposzHomePage.css';\n// import 'bootstrap/dist/css/bootstrap.min.css';\n\nexport class ComposzHomePage extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n windowWidth: window.innerWidth,\n windowHeight: window.innerHeight,\n countryCode: this.getCookie(\"countryCode\")\n };\n }\n \n handleSignup = () => {\n const link = document.createElement('a');\n link.setAttribute('href', '/users/sign_up');\n document.body.appendChild(link);\n link.click();\n }\n \n handleLearn = () => {\n const link = document.createElement('a');\n //link.setAttribute('href', '/static/Learn.html');\n //link.setAttribute('href', 'https://www.youtube.com/watch?v=VbWrWD8rqe4&list=PLe2VUCyoX9EzbIF94L4yNO1F1e0ESy81u');\n link.setAttribute('href', 'https://www.youtube.com/watch?v=bvbJZB3luqg&list=PLe2VUCyoX9EzbIF94L4yNO1F1e0ESy81u&index=8');\n link.setAttribute('target', 'blank');\n link.click();\n }\n\n showAlan = () => {\n const link = document.createElement('a');\n link.setAttribute('href', 'https://composz.com/CompositeOfAlan.html');\n link.setAttribute('target', 'blank');\n //link.setAttribute('onmouseover', 'pointer');\n link.click();\n }\n\n handleResize = e => {\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n \n this.setState(prevState => {\n return {\n windowWidth,\n windowHeight,\n };\n });\n };\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.handleResize);\n \n if (window.innerWidth < 450) {\n alert('Composz is best viewed on a Desktop!');\n }\n\n \n if (this.state.countryCode === ''){\n //fetch country code of user\n //var url = 'https://api.ipregistry.co/?key=64qg4jmpagjha51m';\n var url = \"https://ipinfo.io/?token=f7e161ea50651f\";\n fetch(url)\n .then((response) => response.json())\n .then((responseJson) => {\n this.setState({\n countryCode: responseJson.country\n });\n document.cookie = \"countryCode=\" + responseJson.country + \";\";\n })\n .catch((error) => {\n //console.error(error);\n this.setState({\n countryCode: \"US\"\n });\n });\n }\n \n /*\n this.setState({\n countryCode: document.cookie.split(\"=\")[1] // set the country code from cookie set in application_controller.rb\n });\n */\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.handleResize);\n }\n \n getCookie(cname) {\n let name = cname + \"=\";\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for(let i = 0; i 450) {\n \n return(\n\n \n \n\n {/**/}\n {/**/}\n \n \n \n\n
    \n
    \n\n {this.state.countryCode === 'IN' ? :\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 {this.state.countryCode === 'IN' ? : }\n \n \n \n \n \n \n \n \n \n
    \n
    \n \n {this.state.countryCode === 'IN' ?\n
    \n

    \n

    \n

    \n
    \n
    \n

    \n

           Contact :

    \n           LIFE COLORS

    \n           #9, 4th Cross,

    \n           Kothanur Main Road,

    \n           Bangalore 560 062.

    \n

    \n           email : composz-team@composz.com

    \n           phone : +91 9620621884

    \n

    \n
    \n\n
    \n

    \n

       Policies :

    \n     Pricing

    \n     Refund & Return

    \n     Shipping

    \n

    \n

    \n

    \n

    \n

    \n
    \n
    \n
    : ''\n } \n
    \n );\n }\n else {\n return(\n\n //{this.state.countryCode === 'IN' ? : }\n \n \n {/**/}\n \n \n \n \n
    \n \n {this.state.countryCode === 'IN' ? : \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 {this.state.countryCode === 'IN' ? : }\n \n \n \n \n \n \n \n \n \n
    \n \n \n {this.state.countryCode === 'IN' ?\n
    \n

    \n

    \n

    \n

    \n

    \n
    \n
    \n

    \n

    Contact :

    \n   LIFE COLORS

    \n   #9, 4th Cross,

    \n   Kothanur Main Road,

    \n   Bangalore 560 062.

    \n

    \n   email : composz-team@composz.com

    \n   phone : +91 9620621884

    \n

    \n
    \n\n
    \n

    \n

    Policies :

    \n Pricing

    \n Refund & Return

    \n Shipping

    \n

    \n

    \n

    \n

    \n

    \n
    \n
    \n
    : ''\n } \n
    \n );\n }\n }\n}\n\n\nexport default ComposzHomePage \n","import React, { useState } from 'react';\nimport { Navbar, Nav, NavItem, MenuItem, NavDropdown, Dropdown } from 'react-bootstrap';\nimport logo from 'images/Composz-logo-white-trans.png';\nimport Mynavbar from './Navbar';\n\nexport class ComposzNavbar extends React.Component {\n \n \n constructor(props) {\n super(props)\n this.state = {\n windowWidth: window.innerWidth,\n windowHeight: window.innerHeight\n };\n document.cookie = \"cartCounter=25;\";\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.handleResize);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.handleResize);\n}\n\n handleResize = e => {\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n \n this.setState(prevState => {\n return {\n windowWidth,\n windowHeight,\n };\n });\n };\n\n \n Fnavbar = () => {\n let Usernavbar = Mynavbar(this.props.user_id, this.props.user_name, this.props.has_view_products)\n return Usernavbar\n \n }\n\n render() {\n\n \n\n return (\n \n {window.location.pathname!=\"/products\" && \n window.location.pathname!=\"/orders\" &&\n window.location.pathname!=\"/orders/cart\"? \n \n : \n null\n }\n \n );\n }\n}\n\nexport default ComposzNavbar\n","import React, { Component } from \"react\";\nimport { FormGroup, ControlLabel, FormControl, Modal } from \"react-bootstrap\";\nimport ImageEditor from \"@toast-ui/react-image-editor\";\nimport \"tui-image-editor/dist/tui-image-editor.css\";\n\n// import { FieldGroup } from \"./bootstrap/Forms.FieldGroup\";\nimport { formDataToJSON } from \"../adukku_utils/array\";\nimport { ENDPOINTS } from \"../constants/endpoints\";\nimport EditProductImage from \"./EditProductImage\";\n\nlet inputWidth = null;\nlet inputHeight = null;\nlet $inputCheckInvert = null;\nlet $inputCheckSepia = null;\nlet $inputCheckSepia2 = null;\nlet $inputCheckBlur = null;\nlet $inputCheckSharpen = null;\nlet $inputCheckEmboss = null;\nlet $inputCheckGrayscale = null;\nlet $inputCheckRemoveWhite = null;\nlet $inputCheckBrightness = null;\nlet $inputCheckNoise = null;\nlet $inputCheckColorFilter = null;\nlet $inputSlideRemoveWhite = null;\nlet $inputSlideBrightness = null;\nlet $inputSlideNoise = null;\nlet $inputSlideColorFilter = null;\n\nexport default class EditProductData extends Component {\n constructor(props) {\n super(props);\n this.state = {\n currentDataId: null,\n isCurrentSaved: false,\n isFileName: null,\n editedFiles: {},\n page: 1,\n perPage: 10,\n showImageEditor: null,\n imageEditorOptions: {\n includeUI: {\n initMenu: \"mask\",\n menuBarPosition: \"bottom\",\n menu: [\"crop\", \"flip\", \"rotate\", \"text\", \"draw\", \"mask\"],\n },\n cssMaxWidth: 700,\n cssMaxHeight: 500,\n selectionStyle: {\n cornerSize: 20,\n rotatingPointOffset: 70,\n },\n usageStatistics: false,\n },\n searchData: {},\n ...props,\n };\n }\n editorRef = React.createRef();\n\n _handleValidSubmit = (e) => {\n e.preventDefault();\n e.stopPropagation();\n let formData = formDataToJSON(new FormData(e.target));\n this.setState({ show: false });\n };\n\n getUploadedData = (isSearch) => {\n if (this.state.dlname == \"DL0\") {\n this.props.getProducts();\n }\n this.props.getUploadedData({\n isSearch: isSearch,\n searchData: this.state.searchData,\n product_id: this.state.product_id,\n dlname: this.state.dlname,\n page: this.state.page,\n per_page: this.state.perPage,\n });\n };\n\n formatBytes = (bytes, decimals = 2) => {\n if (bytes === 0) return \"0 Bytes\";\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n // i indicates always in KB.\n const i = 1; //Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n };\n\n checkAvailSpace = async (fileSize, avail_space) => {\n let uri = `${ENDPOINTS.files.get.uri}?file_size=${fileSize}`;\n return await fetch(uri, {\n method: \"GET\",\n headers: {\n \"content-type\": \"application/json\",\n },\n })\n .then((response) => response.json())\n .then((response) => {\n if (response.data == \"available\") {\n return true;\n } else {\n return false;\n }\n });\n };\n\n UNSAFE_componentWillReceiveProps(ownProps) {\n if (ownProps.uploaded_data != this.state.uploaded_data) {\n let mapped_uploaded_data = {};\n if (ownProps.uploaded_data && ownProps.uploaded_data.uploaded_data) {\n ownProps.uploaded_data.uploaded_data.map((data) => {\n if (data.data) {\n mapped_uploaded_data[data.id] = data.data;\n }\n });\n this.setState({\n uploaded_data: ownProps.uploaded_data,\n mapped_uploaded_data: mapped_uploaded_data,\n product_keys: ownProps.product_keys,\n });\n }\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (\n this.state.currentDataId &&\n prevState.currentDataId &&\n this.state.currentDataId !== prevState.currentDataId &&\n !this.state.currentDataId.toString().includes(\"add_new_\")\n ) {\n if (confirm(\"Do you want to save the previous data?\")) {\n this.handleSaveUploadData(prevState.currentDataId);\n } else {\n let { uploaded_data, mapped_uploaded_data } = this.state;\n uploaded_data.uploaded_data.map((data) => {\n if (data.data && data.id === prevState.currentDataId) {\n mapped_uploaded_data[data.id] = data.data;\n }\n });\n this.setState({\n mapped_uploaded_data: mapped_uploaded_data,\n });\n }\n }\n\n if (\n this.state.page &&\n this.state.perPage &&\n (this.state.page != prevState.page || this.state.perPage != prevState.perPage)\n ) {\n let isSearch = Object.keys(this.state.searchData || {}).length > 0;\n this.props.getUploadedData({\n isSearch: isSearch,\n searchData: this.state.searchData,\n product_id: this.state.product_id,\n dlname: this.state.dlname,\n page: this.state.page,\n per_page: this.state.perPage,\n });\n }\n }\n\n handleSaveUploadData = (id, isEdited = false) => {\n if (!id) return;\n let { mapped_uploaded_data, uploaded_data } = this.state;\n let that = this;\n let formData = new FormData();\n mapped_uploaded_data &&\n mapped_uploaded_data[id] &&\n Object.keys(mapped_uploaded_data[id]).forEach((key) => {\n formData.append(key, mapped_uploaded_data[id][key]);\n });\n if (id.toString().startsWith(\"add_new_\")) {\n let url = ENDPOINTS.csv.create.uri;\n url = url.replace(\":product_id\", this.state.product_id);\n url = url.replace(\":dlname\", this.state.dlname);\n let ajaxCall = fetch(url, {\n method: ENDPOINTS.csv.create.method,\n body: formData,\n });\n return ajaxCall\n .then((response) => response.json())\n .then((response) => {\n if (response.errors) {\n alert(response.errors);\n } else {\n mapped_uploaded_data[response.data.id] = response.data.data;\n uploaded_data.uploaded_data = uploaded_data.uploaded_data.map((dt) => {\n if (dt.id == id) return response.data;\n else return dt;\n });\n that.setState({\n mapped_uploaded_data: mapped_uploaded_data,\n uploaded_data: uploaded_data,\n isFileName: null,\n });\n this.getUploadedData();\n alert(\"Saved Successfully\");\n }\n })\n .catch((error) => {\n throw error;\n });\n } else {\n this.props.updateUploadedData({\n id: id,\n product_id: this.state.product_id,\n dlname: this.state.dlname,\n data: formData,\n });\n // this.getUploadedData();\n if (isEdited) {\n alert(\"Successfully, uploaded file\");\n }\n }\n this.setState({\n currentDataId: null,\n isFileName: null,\n page: 1,\n perPage: 10,\n });\n };\n\n handleAddNewData = (id) => {\n const { mapped_uploaded_data, uploaded_data } = this.state;\n // let newUploadedData = uploaded_data;\n // let formData = new FormData();\n let that = this;\n let newRow = {};\n if (((uploaded_data && uploaded_data.uploaded_data) || []).length == 0) {\n newRow.data = {};\n let data = {};\n uploaded_data.datalevel_attributes.forEach((att) => {\n data[att.name] = null;\n });\n newRow.data = data;\n } else {\n newRow = JSON.parse(\n JSON.stringify(\n uploaded_data &&\n uploaded_data.uploaded_data &&\n uploaded_data.uploaded_data[uploaded_data.uploaded_data.length - 1]\n )\n );\n }\n newRow.id = `add_new_${uploaded_data.uploaded_data.length}`;\n newRow.data &&\n Object.keys(newRow.data).length > 0 &&\n Object.keys(newRow.data).forEach((attribute) => {\n newRow.data[attribute] = null;\n });\n mapped_uploaded_data[newRow.id] = newRow.data;\n uploaded_data.uploaded_data = [newRow, ...uploaded_data.uploaded_data];\n if (Object.keys(newRow.data).length > 0) {\n this.setState({\n uploaded_data: uploaded_data,\n mapped_uploaded_data: mapped_uploaded_data,\n });\n } else {\n alert(\"No datalevels attributes added\");\n }\n };\n\n handleDeleteUploadData = (id) => {\n if (!id) return;\n if (confirm(\"Are you are sure, you want to delete?\")) {\n const { mapped_uploaded_data, uploaded_data } = this.state;\n let newUploadedData = uploaded_data;\n let formData = new FormData();\n let that = this;\n Object.keys(mapped_uploaded_data[id]).forEach((key) => {\n formData.append(key, mapped_uploaded_data[id][key]);\n });\n newUploadedData.uploaded_data =\n (uploaded_data &&\n uploaded_data.uploaded_data &&\n uploaded_data.uploaded_data.filter((data) => data.id !== id)) ||\n [];\n let url = ENDPOINTS.csv.delete.uri;\n url = url.replace(\":product_id\", this.state.product_id);\n url = url.replace(\":dlname\", this.state.dlname);\n url = url.replace(\":data_upload_id\", id);\n if (id.toString().startsWith(\"add_new_\")) {\n that.setState({\n uploaded_data: newUploadedData,\n });\n } else {\n let ajaxCall = fetch(url, {\n method: ENDPOINTS.csv.delete.method,\n });\n return ajaxCall\n .then((response) => {\n that.setState({\n uploaded_data: newUploadedData,\n });\n })\n .catch((error) => {\n throw error;\n });\n }\n }\n };\n\n handleImageEdit = (val) => {\n if (!val) {\n this.setState({ showImageEditor: null });\n document.querySelector(\"#portal_image_editor\").classList.remove(\"show_editor\");\n } else {\n if (\n (typeof val.data.data[val.attribute.name] === \"string\" &&\n val.data.data[val.attribute.name].split(\".\").pop() !== \"svg\") ||\n (typeof val.data.data[val.attribute.name] === \"object\" &&\n val.data.data[val.attribute.name].name.split(\".\").pop() !== \"svg\")\n ) {\n document.querySelector(\"#portal_image_editor\").classList.add(\"show_editor\");\n this.setState({ showImageEditor: val });\n document.querySelector(\".modal\").removeAttribute(\"tabindex\");\n setTimeout(() => {\n this.initializeEditor();\n }, 100);\n } else {\n alert(\"Can't edit the svg images\");\n }\n }\n };\n\n initializeEditor = () => {\n let refInstance = this.editorRef.current.getInstance();\n // Changing buttons\n $(\".tui-image-editor-header-logo\").replaceWith(\"\");\n $(\".tui-image-editor-header-buttons\").replaceWith(\n `
    \n \n \n \n
    \n \n \n
    \n
    `\n );\n\n refInstance.loadImageFromURL(this.state.showImageEditor.image, \"Adukku image\").then(() => {\n refInstance.ui.activeMenuEvent();\n\n $(\".image_editor_file_name\").remove();\n $(\".tui-image-editor-header\").append(\n `

    ${\n this.state.showImageEditor.image.split(\"/\").pop().split(\"?\")[0]\n }

    `\n );\n\n if (!$(\".preset-fixed\").html()) {\n const fixedCrop = `
    \n
    \n
    \n
    \n \n
    `;\n $(\".tie-crop-preset-button\").append(fixedCrop);\n }\n\n if (!$(\".tie-btn-filter\").html()) {\n const filterBtn = `
  • \n \"Filter\"\n
  • \n `;\n $(\".tui-image-editor-menu\").prepend(filterBtn);\n $(\".tie-btn-filter\").bind(\"click\", this.onFilterSelect);\n }\n document.querySelector(\".save-as-container\").style.display = \"none\";\n this.bindActions();\n });\n\n refInstance.on(\"objectScaled\", () => {\n if (inputWidth && inputHeight) {\n this.customImageSizing();\n }\n });\n };\n\n bindActions = () => {\n $(\".tie-btn-crop\").bind(\"mousedown\", this.onCropSelect);\n $(\".tie-btn-flip\").bind(\"mousedown\", this.onFlipSelect);\n $(\".tie-btn-text\").bind(\"mousedown\", this.onTextSelect);\n $(\".tie-btn-rotate\").bind(\"mousedown\", this.onRotateSelect);\n $(\".tie-btn-draw\").bind(\"mousedown\", this.onDrawSelect);\n $(\".tie-btn-mask\").bind(\"mousedown\", this.onMaskSelect);\n $(\".tui-image-editor-close-btn\").bind(\"click\", this.onClose);\n $(\".tui-image-editor-save-btn\").bind(\"click\", this.onSave);\n $(\".tui-image-editor-save-as-btn\").bind(\"click\", this.onSaveas);\n $(\".submit_save_as_file\").bind(\"click\", this.onSubmitFile);\n $(\".preset-fixed\").bind(\"click\", this.onClickFix);\n $(\".preset-none\").bind(\"click\", this.onClickCustom);\n $(\".preset-square\").bind(\"click\", this.onClickSq);\n $(\".preset-3-2\").bind(\"click\", this.onClick32);\n $(\".preset-4-3\").bind(\"click\", this.onClick43);\n $(\".preset-5-4\").bind(\"click\", this.onClick54);\n $(\".preset-7-5\").bind(\"click\", this.onClick75);\n $(\".preset-16-9\").bind(\"click\", this.onClick169);\n };\n\n unBindActions = () => {\n $(\".tie-btn-crop\").unbind(\"mousedown\", this.onCropSelect);\n $(\".tie-btn-flip\").unbind(\"mousedown\", this.onFlipSelect);\n $(\".tie-btn-text\").unbind(\"mousedown\", this.onTextSelect);\n $(\".tie-btn-rotate\").unbind(\"mousedown\", this.onRotateSelect);\n $(\".tie-btn-draw\").unbind(\"mousedown\", this.onDrawSelect);\n $(\".tie-btn-mask\").unbind(\"mousedown\", this.onMaskSelect);\n $(\".tui-image-editor-close-btn\").unbind(\"click\", this.onClose);\n $(\".tui-image-editor-save-btn\").unbind(\"click\", this.onSave);\n $(\".tui-image-editor-save-as-btn\").unbind(\"click\", this.onSaveas);\n $(\".submit_save_as_file\").unbind(\"click\", this.onSubmitFile);\n $(\".preset-fixed\").unbind(\"click\", this.onClickFix);\n $(\".preset-none\").unbind(\"click\", this.onClickCustom);\n $(\".preset-square\").unbind(\"click\", this.onClickSq);\n $(\".preset-3-2\").unbind(\"click\", this.onClick32);\n $(\".preset-4-3\").unbind(\"click\", this.onClick43);\n $(\".preset-5-4\").unbind(\"click\", this.onClick54);\n $(\".preset-7-5\").unbind(\"click\", this.onClick75);\n $(\".preset-16-9\").unbind(\"click\", this.onClick169);\n };\n\n addCropFields = () => {\n const customCrop = `
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    `;\n if (!$(\"#crop_fields\").html()) {\n $(\".tie-crop-preset-button\").append(customCrop);\n inputWidth = document.querySelector(\"#tui_width\");\n inputHeight = document.querySelector(\"#tui_heigt\");\n inputWidth.oninput = this.updatingWidth;\n inputHeight.oninput = this.updatingHeight;\n }\n };\n\n onSaveas = () => {\n document.querySelector(\".save-as-container\").style.display = \"flex\";\n };\n\n removeCropFields = () => {\n if ($(\".custom-crop-container\").html()) {\n $(\".custom-crop-container\").remove();\n }\n };\n\n onCropSelect = () => {\n $(\".tie-btn-filter\").removeClass(\"active\");\n $(\".filter_image\").addClass(\"filter_filter\");\n this.removeCropFields();\n this.removeFilters();\n // setTimeout(() => {\n // let refInstance = this.editorRef.current.getInstance();\n // refInstance.setCropzoneRect(1);\n // }, 500);\n };\n\n onFlipSelect = () => {\n $(\".tie-btn-filter\").removeClass(\"active\");\n $(\".filter_image\").addClass(\"filter_filter\");\n this.removeCropFields();\n this.removeFilters();\n };\n\n onTextSelect = () => {\n $(\".tie-btn-filter\").removeClass(\"active\");\n $(\".filter_image\").addClass(\"filter_filter\");\n this.removeCropFields();\n this.removeFilters();\n };\n\n onRotateSelect = () => {\n $(\".tie-btn-filter\").removeClass(\"active\");\n $(\".filter_image\").addClass(\"filter_filter\");\n this.removeCropFields();\n this.removeFilters();\n };\n\n onFilterSelect = () => {\n this.removeCropFields();\n if ($(\".tie-btn-mask\").hasClass(\"active\")) {\n $(\".tie-btn-mask\").trigger(\"click\");\n }\n if ($(\".tie-btn-draw\").hasClass(\"active\")) {\n $(\".tie-btn-draw\").trigger(\"click\");\n }\n if ($(\".tie-btn-text\").hasClass(\"active\")) {\n $(\".tie-btn-text\").trigger(\"click\");\n }\n if ($(\".tie-btn-rotate\").hasClass(\"active\")) {\n $(\".tie-btn-rotate\").trigger(\"click\");\n }\n if ($(\".tie-btn-flip\").hasClass(\"active\")) {\n $(\".tie-btn-flip\").trigger(\"click\");\n }\n if ($(\".tie-btn-crop\").hasClass(\"active\")) {\n $(\".tie-btn-crop\").trigger(\"click\");\n }\n $(\".tui-image-editor-item\").removeClass(\"active\");\n $(\".tie-btn-filter\").addClass(\"active\");\n $(\".filter_image\").removeClass(\"filter_filter\");\n this.addFilterFields();\n // this.removeNotWorkingFilters();\n };\n\n onDrawSelect = () => {\n $(\".tie-btn-filter\").removeClass(\"active\");\n $(\".filter_image\").addClass(\"filter_filter\");\n this.removeCropFields();\n this.removeFilters();\n };\n\n onMaskSelect = () => {\n $(\".tie-btn-filter\").removeClass(\"active\");\n $(\".filter_image\").addClass(\"filter_filter\");\n this.removeCropFields();\n this.removeFilters();\n };\n\n onClickFix = () => {\n this.addCropFields();\n setTimeout(() => {\n let refInstance = this.editorRef.current.getInstance();\n refInstance.setCropzoneRect(1);\n this.initializeSizeCal();\n }, 500);\n };\n\n onClickCustom = () => {\n // setTimeout(() => {\n // let refInstance = this.editorRef.current.getInstance();\n // refInstance.setCropzoneRect(1);\n // }, 500);\n this.removeCropFields();\n };\n\n onClickSq = () => {\n this.removeCropFields();\n };\n\n onClick32 = () => {\n this.removeCropFields();\n };\n\n onClick43 = () => {\n this.removeCropFields();\n };\n\n onClick54 = () => {\n this.removeCropFields();\n };\n\n onClick75 = () => {\n this.removeCropFields();\n };\n\n onClick169 = () => {\n this.removeCropFields();\n };\n\n addFilterFields = () => {\n if (!$(\".tui-image-editor-menu-filter\").html()) {\n $(\".tui-image-editor-submenu\").css({ display: \"table\" });\n const filFields = `\n
    \n
      \n
    • \n
      \n \n \n \n \n \n \n \n
      \n
    • \n
    • \n
      \n
      \n \n
      \n Distance\n \n
      \n
      \n
      \n \n
      \n \n
      \n
      \n
      \n \n
      \n Threshold\n \n
      \n
      \n
      \n \n
      \n \n
      \n
      \n
      \n
    • \n
    \n
    \n `;\n $(\".tui-image-editor-submenu\").append(filFields);\n const imageRef = this.editorRef.current.getInstance();\n $inputCheckBlur = $(\".blur_check\");\n $inputCheckEmboss = $(\".emboss_check\");\n $inputCheckInvert = $(\".invert_check\");\n $inputCheckSepia = $(\".sepia_check\");\n $inputCheckSepia2 = $(\".sepia2_check\");\n $inputCheckSharpen = $(\".sharpen_check\");\n $inputCheckGrayscale = $(\".gray_check\");\n $inputCheckRemoveWhite = $(\".remove_white_check\");\n $inputCheckBrightness = $(\".brightness_check\");\n $inputCheckNoise = $(\".noise_check\");\n $inputCheckColorFilter = $(\".color_check\");\n $inputSlideRemoveWhite = $(\"#remove_white_check\");\n $inputSlideBrightness = $(\"#brightness_check\");\n $inputSlideNoise = $(\"#noise_check\");\n $inputSlideColorFilter = $(\"#color_check\");\n\n $inputCheckBlur.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"Blur\", { blur: 0.1 });\n } else {\n imageRef.removeFilter(\"Blur\");\n }\n });\n $inputCheckEmboss.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"Emboss\");\n } else {\n imageRef.removeFilter(\"Emboss\");\n }\n });\n $inputCheckInvert.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"Invert\");\n } else {\n imageRef.removeFilter(\"Invert\");\n }\n });\n $inputCheckSepia.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"Sepia\");\n } else {\n imageRef.removeFilter(\"Sepia\");\n }\n });\n $inputCheckSepia2.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"vintage\");\n } else {\n imageRef.removeFilter(\"vintage\");\n }\n });\n $inputCheckSharpen.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"Sharpen\");\n } else {\n imageRef.removeFilter(\"Sharpen\");\n }\n });\n $inputCheckGrayscale.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"Grayscale\");\n } else {\n imageRef.removeFilter(\"Grayscale\");\n }\n });\n $inputCheckRemoveWhite.on(\"change\", (e) => {\n if (e.target.checked) {\n $(\"#remove_white_check\").removeClass(\"disabled\");\n imageRef.applyFilter(\"removeColor\", {\n color: \"#FFFFFF\",\n useAlpha: false,\n distance: parseInt($inputSlideRemoveWhite.val(), 10) / 255,\n });\n } else {\n $(\"#remove_white_check\").addClass(\"disabled\");\n imageRef.removeFilter(\"removeColor\");\n }\n });\n $inputCheckBrightness.on(\"change\", (e) => {\n if (e.target.checked) {\n $(\"#brightness_check\").removeClass(\"disabled\");\n imageRef.applyFilter(\"brightness\", {\n brightness: parseInt($inputSlideBrightness.val(), 10) / 255,\n });\n } else {\n $(\"#brightness_check\").addClass(\"disabled\");\n imageRef.removeFilter(\"brightness\");\n }\n });\n $inputCheckNoise.on(\"change\", (e) => {\n if (e.target.checked) {\n $(\"#noise_check\").removeClass(\"disabled\");\n imageRef.applyFilter(\"noise\", {\n noise: parseInt($inputSlideNoise.val(), 10),\n });\n } else {\n $(\"#noise_check\").addClass(\"disabled\");\n imageRef.removeFilter(\"noise\");\n }\n });\n $inputCheckColorFilter.on(\"change\", (e) => {\n if (e.target.checked) {\n $(\"#color_check\").removeClass(\"disabled\");\n imageRef.applyFilter(\"removeColor\", {\n color: \"#FFFFFF\",\n distance: $inputSlideColorFilter.val() / 255,\n });\n } else {\n $(\"#color_check\").addClass(\"disabled\");\n imageRef.removeFilter(\"removeColor\");\n }\n });\n $inputSlideRemoveWhite.on(\"input\", (e) => {\n imageRef.applyFilter(\"removeColor\", {\n color: \"#FFFFFF\",\n useAlpha: false,\n distance: parseInt(e.target.value, 10) / 255,\n });\n });\n $inputSlideBrightness.on(\"input\", (e) => {\n imageRef.applyFilter(\"brightness\", {\n brightness: parseInt(e.target.value, 10) / 255,\n });\n });\n $inputSlideNoise.on(\"input\", (e) => {\n imageRef.applyFilter(\"noise\", {\n noise: parseInt(e.target.value, 10),\n });\n });\n $inputSlideColorFilter.on(\"input\", (e) => {\n imageRef.applyFilter(\"removeColor\", {\n color: \"#FFFFFF\",\n distance: e.target.value / 255,\n });\n });\n }\n };\n\n removeFilters = () => {\n if ($(\".tui-image-editor-menu-filter\").html()) {\n $(\".tui-image-editor-menu-filter\").remove();\n }\n };\n\n initializeSizeCal = () => {\n document.querySelector(\".preset-fixed\").classList.add(\"active\");\n this.customImageSizing();\n };\n\n updatingWidth = (e) => {\n if (parseInt(e.data) >= 0 && parseInt(e.data) <= 9) {\n inputWidth.value = e.target.value;\n const imageRef = this.editorRef.current.getInstance();\n imageRef.setCropzoneRect(inputWidth.value / inputHeight.value);\n }\n };\n\n updatingHeight = (e) => {\n if (parseInt(e.data) >= 0 && parseInt(e.data) <= 9) {\n inputHeight.value = e.target.value;\n const imageRef = this.editorRef.current.getInstance();\n imageRef.setCropzoneRect(inputWidth.value / inputHeight.value);\n }\n };\n\n onClose = () => {\n this.unBindActions();\n this.removeCropFields();\n $(\".preset-fixed\").remove();\n $(\".image_editor_file_name\").remove();\n this.handleImageEdit(null, null);\n };\n\n onSave = async () => {\n const imageRef = this.editorRef.current.getInstance();\n let filename = this.state.showImageEditor.data.data[this.state.showImageEditor.attribute.name];\n if (typeof filename === \"object\") {\n filename = filename.name;\n }\n const extension = filename.split(\".\").pop();\n const metadata = `image/${extension}`;\n const dataURL = imageRef.toDataURL(metadata, 1);\n let file = await this.dataURLtoFile(dataURL, filename, metadata);\n this.submitImage(file, this.state.showImageEditor);\n };\n\n dataURLtoFile = async (dataurl, filename, metadata) => {\n let response = await fetch(dataurl);\n let data = await response.blob();\n let bgImgFile = new File([data], filename, { type: metadata });\n return bgImgFile;\n };\n\n addNewDataLevel = () => {\n return new Promise((resolve, reject) => {\n const { mapped_uploaded_data, uploaded_data, showImageEditor } = this.state;\n // let newUploadedData = uploaded_data;\n // let formData = new FormData();\n let that = this;\n let newRow = {};\n if (((uploaded_data && uploaded_data.uploaded_data) || []).length == 0) {\n newRow.data = {};\n let data = {};\n uploaded_data.datalevel_attributes.forEach((att) => {\n data[att.name] = null;\n });\n newRow.data = data;\n } else {\n newRow = JSON.parse(\n JSON.stringify(\n uploaded_data &&\n uploaded_data.uploaded_data &&\n uploaded_data.uploaded_data[uploaded_data.uploaded_data.length - 1]\n )\n );\n }\n newRow.id = `add_new_${uploaded_data.uploaded_data.length}`;\n newRow.data &&\n Object.keys(newRow.data).length > 0 &&\n Object.keys(newRow.data).forEach((attribute) => {\n newRow.data[attribute] = showImageEditor.data.data[attribute];\n });\n mapped_uploaded_data[newRow.id] = newRow.data;\n uploaded_data.uploaded_data = [newRow, ...uploaded_data.uploaded_data];\n if (Object.keys(newRow.data).length > 0) {\n this.setState(\n {\n uploaded_data: uploaded_data,\n mapped_uploaded_data: mapped_uploaded_data,\n },\n () => {\n resolve(newRow.id);\n }\n );\n } else {\n alert(\"No datalevels attributes added\");\n reject(false);\n }\n });\n };\n\n onSubmitFile = async () => {\n let val = await this.addNewDataLevel();\n if (val != false) {\n const { mapped_uploaded_data, showImageEditor } = this.state;\n let imageName = $(\".save-as-input\").val();\n const imageRef = this.editorRef.current.getInstance();\n let filename = showImageEditor.data.data[showImageEditor.attribute.name];\n if (typeof filename === \"object\") {\n filename = filename.name;\n }\n const extension = filename.split(\".\").pop();\n const metadata = `image/${extension}`;\n const dataURL = imageRef.toDataURL(metadata, 1);\n let file = await this.dataURLtoFile(dataURL, `${imageName}.${extension}`, metadata);\n if (await this.checkAvailSpace(file.size, 0)) {\n mapped_uploaded_data[val][showImageEditor.attribute.name] = file;\n this.setImageFromFile(file, val);\n this.setState(\n {\n mapped_uploaded_data: mapped_uploaded_data,\n currentDataId: val,\n },\n () => {\n this.handleSaveUploadData(val, true);\n this.onClose();\n }\n );\n } else {\n alert(\"Storage limit exceeded\");\n }\n }\n };\n\n customImageSizing = () => {\n const imageRef = this.editorRef.current.getInstance();\n let imageMode = imageRef.getDrawingMode();\n if (imageMode === \"CROPPER\") {\n let imgCrop = imageRef.getCropzoneRect();\n if (imgCrop.width == 0.5 && imgCrop.height == 0.5) {\n let imageCanvs = imageRef.getCanvasSize();\n inputWidth.value = imageCanvs.width.toFixed(2);\n inputHeight.value = imageCanvs.height.toFixed(2);\n } else {\n inputWidth.value = imgCrop.width.toFixed(2);\n inputHeight.value = imgCrop.height.toFixed(2);\n }\n }\n };\n\n submitImage = (file, showImageEditor) => {\n const { mapped_uploaded_data } = this.state;\n mapped_uploaded_data[showImageEditor.data.id][showImageEditor.attribute.name] = file;\n this.setImageFromFile(file, showImageEditor.data.id);\n this.setState(\n {\n mapped_uploaded_data: mapped_uploaded_data,\n currentDataId: showImageEditor.data.id,\n },\n () => {\n this.handleSaveUploadData(showImageEditor.data.id, true);\n this.onClose();\n }\n );\n };\n\n setImageFromFile = (rawFile, dataID) => {\n let reader = new FileReader();\n reader.onload = (e) => {\n let dataURL = e.target.result;\n let newEditedFiles = this.state.editedFiles;\n newEditedFiles[dataID] = dataURL;\n this.setState({ editedFiles: newEditedFiles });\n };\n reader.readAsDataURL(rawFile);\n };\n\n render() {\n const { uploaded_data, mapped_uploaded_data, isFileName, editedFiles, dlname } = this.state;\n return (\n \n {\n this.setState({ show: true });\n this.getUploadedData();\n }}\n style={{ marginLeft: \"10px\", marginRight: \"8px\", cursor: \"pointer\" }}\n >\n \n \n {this.state.showImageEditor && (\n \n \n \n )}\n this.setState({ show: false })}\n >\n \n \n
    \n
    \n Edit Data: {dlname}\n
    \n
    \n \n Pages: {uploaded_data && uploaded_data.meta && uploaded_data.meta.total_pages}\n \n \n Rows: {uploaded_data && uploaded_data.meta && uploaded_data.meta.total_count}\n \n \n Per page:\n {\n this.setState({ perPage: value });\n }}\n className=\"product_data_control\"\n >\n \n \n \n \n \n {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ page: uploaded_data.meta.prev_page });\n }}\n />\n \n Page:\n {\n this.setState({ page: value });\n }}\n className=\"product_data_input\"\n >\n \n {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ page: uploaded_data.meta.next_page });\n }}\n data-toggle=\"tooltip\"\n title=\"Go to Next page\"\n src=\"/icons/icon_head.png\"\n alt=\"Next\"\n className=\"product_page_next\"\n />\n
    \n
    \n \n
    \n \n \n \n \n {uploaded_data &&\n uploaded_data.datalevel_attributes &&\n uploaded_data.datalevel_attributes.map((attribute) => {\n return (\n \n {\n this.setState({\n searchData: {\n ...this.state.searchData,\n [attribute.name]: value,\n },\n });\n }}\n />\n \n );\n })}\n \n
    \n {\n e.stopPropagation();\n e.preventDefault();\n this.getUploadedData(true);\n }}\n >\n Go\n \n {\n e.stopPropagation();\n e.preventDefault();\n this.getUploadedData(false);\n this.setState({\n searchData: {},\n });\n }}\n >\n Clear\n \n {\n this.handleAddNewData();\n }}\n >\n Add New Record\n \n
    \n \n
    \n \n
    \n
    \n \n
    \n
    \n \n {/* {\n e.preventDefault();\n e.stopPropagation();\n\n this.props.getUploadedData({\n product_id: this.state.product_id,\n dlname: this.state.dlname,\n page: page,\n per_page: perPage,\n });\n // this.setState({\n // page: uploaded_data.meta.prev_page,\n // });\n }}\n >\n Go\n */}\n \n \n \n \n {uploaded_data &&\n uploaded_data.datalevel_attributes &&\n uploaded_data.datalevel_attributes.map((attribute) => {\n return (\n \n );\n })}\n \n \n \n {uploaded_data && (\n \n {uploaded_data.uploaded_data &&\n uploaded_data.uploaded_data.map((data, index) => {\n let currentPage = (uploaded_data.meta.current_page - 1) * this.state.perPage;\n return (\n \n {mapped_uploaded_data && mapped_uploaded_data[data.id] ? (\n \n \n {uploaded_data.datalevel_attributes &&\n uploaded_data.datalevel_attributes.map((attribute) => {\n // let productKey = product_keys.find(\n // (product_key) => product_key.attribute === attribute.name\n // );\n return (\n \n );\n })}\n \n \n ) : null}\n \n );\n })}\n \n )}\n
    #\n {attribute.name}\n Action
    \n {data.id && data.id.toString().startsWith(\"add_new_\")\n ? 0\n : currentPage + (index + 1)}\n \n {attribute && attribute.type == \"text\" && (\n {\n if (this.state.currentDataId !== data.id)\n this.setState({ currentDataId: data.id });\n }}\n // readOnly={productKey ? true : false}\n name={attribute.name}\n onChange={({ target: { name, value } }) => {\n mapped_uploaded_data[data.id][name] = value;\n this.setState({\n mapped_uploaded_data: mapped_uploaded_data,\n currentDataId: data.id,\n });\n }}\n />\n )}\n {attribute && attribute.type == \"image\" && (\n \n {editedFiles[data.id] && (\n \n this.handleImageEdit({\n image:\n uploaded_data.base_image_url +\n `/uploads/products/${\n this.state.product_id\n }/images/${\n mapped_uploaded_data[data.id][\n attribute.name\n ] &&\n typeof mapped_uploaded_data[data.id][\n attribute.name\n ] === \"object\"\n ? mapped_uploaded_data[data.id][\n attribute.name\n ].name\n : mapped_uploaded_data[data.id][\n attribute.name\n ]\n }?${new Date()}`,\n data,\n attribute,\n })\n }\n src={editedFiles[data.id]}\n />\n )}\n {!editedFiles[data.id] &&\n mapped_uploaded_data[data.id][attribute.name] &&\n typeof mapped_uploaded_data[data.id][attribute.name] !==\n \"object\" && (\n \n this.handleImageEdit({\n image:\n uploaded_data.base_image_url +\n `/uploads/products/${\n this.state.product_id\n }/images/${\n mapped_uploaded_data[data.id][\n attribute.name\n ] &&\n typeof mapped_uploaded_data[data.id][\n attribute.name\n ] === \"object\"\n ? mapped_uploaded_data[data.id][\n attribute.name\n ].name\n : mapped_uploaded_data[data.id][\n attribute.name\n ]\n }?${new Date()}`,\n data,\n attribute,\n })\n }\n src={`${\n uploaded_data.base_image_url\n }/uploads/products/${\n this.state.product_id\n }/images/${\n mapped_uploaded_data[data.id][attribute.name]\n }?${new Date()}`}\n />\n )}\n {isFileName && isFileName === data.id ? (\n {\n let file = files[0];\n mapped_uploaded_data[data.id][name] = files[0];\n let that = this;\n // let fileSize = this.formatBytes(file.size, 6)\n if (await this.checkAvailSpace(file.size, 0)) {\n this.setState({\n mapped_uploaded_data: mapped_uploaded_data,\n currentDataId: data.id,\n });\n } else {\n alert(\"Storage limit exceeded\");\n }\n }}\n />\n ) : (\n {\n if (this.state.currentDataId !== data.id)\n this.setState({ currentDataId: data.id });\n }}\n name={attribute.name}\n onChange={({ target: { name, value } }) => {\n mapped_uploaded_data[data.id][name] = value;\n this.setState({\n mapped_uploaded_data: mapped_uploaded_data,\n currentDataId: data.id,\n });\n }}\n />\n )}\n\n

    \n {mapped_uploaded_data[data.id][\n attribute && attribute.name\n ] &&\n typeof mapped_uploaded_data[data.id][attribute.name] ===\n \"object\"\n ? mapped_uploaded_data[data.id][attribute.name].name\n : mapped_uploaded_data[data.id][attribute.name]}\n {\n this.setState({\n isFileName: isFileName ? null : data.id,\n });\n }}\n />\n

    \n
    \n )}\n
    \n {\n this.handleSaveUploadData(data.id);\n }}\n >\n {\n this.handleDeleteUploadData(data.id);\n }}\n >\n
    \n
    \n {/* \n \n */}\n \n
    \n );\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nlet portalRoot = null;\n\nclass EditProductImage extends React.Component {\n constructor(props) {\n super(props);\n this.el = document.createElement(\"div\");\n }\n\n componentDidMount() {\n portalRoot = document.getElementById(this.props.portalClass);\n this.el.className = \"react_image_editor\";\n portalRoot.appendChild(this.el);\n }\n\n componentWillUnmount() {\n portalRoot.removeChild(this.el);\n }\n\n render() {\n const { children } = this.props;\n return ReactDOM.createPortal(children, this.el);\n }\n}\n\nexport default EditProductImage;\n","import React from \"react\";\nimport { FormGroup, ControlLabel, FormControl, Modal } from \"react-bootstrap\";\nimport ImageEditor from \"@toast-ui/react-image-editor\";\nimport \"tui-image-editor/dist/tui-image-editor.css\";\n// import { FieldGroup } from \"./bootstrap/Forms.FieldGroup\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\n// import { formDataToJSON } from \"../adukku_utils/array\";\nimport ThumbnailPreview from \"../layouts/ThumbnailPreview\";\nimport EditProductImage from \"../EditProductImage\";\nimport { FieldGroup } from \"../bootstrap/Forms.FieldGroup\";\n\nlet inputWidth = null;\nlet inputHeight = null;\nlet $inputCheckInvert = null;\nlet $inputCheckSepia = null;\nlet $inputCheckSepia2 = null;\nlet $inputCheckBlur = null;\nlet $inputCheckSharpen = null;\nlet $inputCheckEmboss = null;\nlet $inputCheckGrayscale = null;\nlet $inputCheckRemoveWhite = null;\nlet $inputCheckBrightness = null;\nlet $inputCheckNoise = null;\nlet $inputCheckColorFilter = null;\nlet $inputSlideRemoveWhite = null;\nlet $inputSlideBrightness = null;\nlet $inputSlideNoise = null;\nlet $inputSlideColorFilter = null;\n\nexport default class FileManager extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: false,\n isFetching: false,\n overlay: props.overlay || { visible: false },\n is_preset_display: false,\n categories: props.categories,\n role: null,\n isFileManagerOpen: false,\n folders: [],\n user_products: {},\n folderHierarchy: {},\n basePath: \"\",\n show: false,\n currentFile: {},\n showImageEditor: null,\n imageEditorOptions: {\n includeUI: {\n initMenu: \"mask\",\n menuBarPosition: \"bottom\",\n menu: [\"crop\", \"flip\", \"rotate\", \"text\", \"draw\", \"mask\"],\n },\n cssMaxWidth: 700,\n cssMaxHeight: 500,\n selectionStyle: {\n cornerSize: 20,\n rotatingPointOffset: 70,\n },\n usageStatistics: false,\n },\n uploadedImages: {\n none: [],\n },\n uploadedImageNames: {\n none: [],\n },\n avail_space: 1,\n total_space: 1,\n reclaimable_space: 0,\n sortBy: \"name\",\n sortType: \"asc\",\n isShowAll: true,\n page: 1,\n perPage: 10,\n storage_unit: \"GB\",\n deletableFiles: {},\n };\n }\n editorRef = React.createRef();\n\n // componentDidMount() {\n // this.getUserFolders({});\n // }\n\n openFileManager = () => {\n this.setState({\n isFileManagerOpen: !this.state.isFileManagerOpen,\n });\n this.getUserFolders({});\n };\n\n getUserFolders = (payload) => {\n const product = this.state.product;\n let uri = ENDPOINTS.files.index.uri;\n let that = this;\n let { folderHierarchy, rootFolders } = this.state;\n const { product_id, dlname, current_path } = payload;\n\n this.setState({ isFetching: true });\n\n uri = current_path ? `${uri}?current_path=${current_path}` : `${uri}?`;\n return fetch(uri, {\n method: \"GET\",\n headers: { \"content-type\": \"application/json\" },\n })\n .then((response) => response.json())\n .then((response) => {\n if (payload.product_id) {\n folderHierarchy[payload.product_id] = folderHierarchy[payload.product_id] || {};\n folderHierarchy[payload.product_id] = response.folders;\n }\n if (payload.dlname) {\n folderHierarchy[payload.product_id] = folderHierarchy[payload.product_id] || {};\n\n folderHierarchy[payload.product_id][dlname] =\n folderHierarchy[payload.product_id][dlname] || response.folders;\n }\n that.setState({\n rootFolders: current_path ? rootFolders : response.folders,\n user_products: response.products,\n folderHierarchy: folderHierarchy,\n folders: this.sortFolders(response.folders),\n basePath: response.base_path,\n current_path: response.current_path,\n prev_path: response.prev_path,\n product_id: product_id,\n avail_space: response.avail_space,\n total_space: response.total_space,\n reclaimable_space: response.reclaimable_space,\n page: 1,\n isFetching: false,\n });\n });\n };\n\n deleteFile = (type) => {\n let uri = ENDPOINTS.files.delete.uri;\n let that = this;\n let { folderHierarchy, rootFolders, folders, deletableFiles } = this.state;\n let deletableFilePaths = [];\n if (type == \"all\") {\n folders.map((folder) => {\n if (folder.is_file) deletableFilePaths.push(folder.path);\n });\n } else {\n deletableFiles &&\n Object.keys(deletableFiles).map((file_path) => {\n if (file_path && deletableFiles[file_path]) deletableFilePaths.push(file_path);\n });\n }\n uri = uri.replace(\":file_path\", \"123\");\n uri = `${uri}?`;\n let updatedFolders = folders.filter((folder) => !deletableFilePaths.includes(folder.path));\n if (confirm(\"Are you sure you wanna delete?\")) {\n return fetch(uri, {\n method: \"DELETE\",\n body: JSON.stringify({\n file_path: deletableFilePaths.join(\",\"),\n }),\n headers: { \"content-type\": \"application/json\" },\n })\n .then((response) => response.json())\n .then((response) => {\n that.setState({\n folders: this.sortFolders(updatedFolders),\n avail_space: response.avail_space,\n total_space: response.total_space,\n reclaimable_space: response.reclaimable_space,\n deletableFiles: {},\n });\n });\n }\n };\n\n sortFolders = (folders) => {\n switch (this.state.sortBy) {\n case \"name\":\n return folders.sort((a, b) => a.name.localeCompare(b.name));\n case \"size\":\n return folders.sort((a, b) => a.size - b.size);\n case \"time\":\n return folders.sort((a, b) => new Date(b.updated_at) - new Date(a.updated_at));\n default:\n return folders.sort((a, b) => a.name.localeCompare(b.name));\n }\n };\n\n checkAvailSpace = async (fileSize, avail_space) => {\n let uri = `${ENDPOINTS.files.get.uri}?file_size=${fileSize}`;\n return fetch(uri, {\n method: \"GET\",\n headers: { \"content-type\": \"application/json\" },\n })\n .then((response) => response.json())\n .then((response) => {\n if (response.data == \"available\") {\n return true;\n } else {\n return false;\n }\n });\n };\n formatBytes = (bytes, decimals = 2, type) => {\n if (bytes === 0) return \"0 Bytes\";\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n let i = Math.floor(Math.log(bytes) / Math.log(k));\n if (type == \"global\") i = sizes.indexOf(this.state.storage_unit) || i;\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\n };\n\n uploadImages = async (dlname) => {\n const that = this;\n const product_id = this.state.product_id;\n if (!product_id) return;\n const uploadedImages = this.state.uploadedImages;\n let template_url = ENDPOINTS.images.upload;\n\n this.setState({ isLoading: true });\n\n let { folderHierarchy, rootFolders, folders, current_path, basePath } = this.state;\n // const { current_path } = payload;\n let updatedFolders = folders;\n template_url = template_url.replace(\":product_id\", product_id).replace(\":dlname\", dlname);\n let formData = new FormData();\n let totalFilesSize = 0;\n for (let index = 0; index < uploadedImages[dlname].length; index++) {\n let file = uploadedImages[dlname][index];\n formData.append(\"files[]\", uploadedImages[dlname][index]);\n totalFilesSize += file.size;\n }\n if (await this.checkAvailSpace(totalFilesSize, this.state.avail_space)) {\n let $ajax = $.ajax({\n url: template_url,\n type: \"POST\",\n method: \"POST\",\n data: formData,\n processData: false,\n contentType: false,\n });\n $ajax.done(function () {\n that.setState({ isLoading: false });\n alert(\"Successfully, uploaded file\");\n });\n $ajax.fail(function (jqXHR, textStatus, errorThrown) {\n that.setState({ isLoading: false });\n if (jqXHR.status == 406) {\n alert(\"One or more files exceeded the file size of 5MB\\n\\nPlease Upload files again with sizes less than 5MB\");\n }\n if (jqXHR.status == 500) {\n alert(\"only Max of 500 files allowed at a time\\n\\nPlease batch upload 500 or less files at a time\");\n }\n else\n alert(\"An internal server error occured\");\n });\n $ajax.always(function () {\n that.getUserFolders({\n current_path: \"/home/ubuntu/webapps/composz.com/current/public/uploads/products/\" + current_path,\n product_id: current_path.split(\"/\")[0],\n });\n });\n } else {\n this.setState({\n uploadedImages: { none: [] },\n uploadedImageNames: { none: [] },\n isLoading: false,\n });\n alert(\"Available space limit exceeding, cannot upload files\");\n }\n };\n\n handleSubmit(e, dlname) {\n e.preventDefault();\n this.setState({ isLoading: true });\n this.uploadImages(dlname);\n }\n\n fileSelectedHandler = (e, dlname) => {\n // let uploadedImages = this.state.uploadedImages;\n // let uploadedImageNames = this.state.uploadedImageNames;\n // discard the old files if upload files is clicked again\n let uploadedImages = { none: [] };\n let uploadedImageNames = { none: [] };\n let files = e.target.files;\n for (let index = 0; index < files.length; index++) {\n uploadedImages[dlname].push(files[index]);\n uploadedImageNames[dlname].push(files[index].name);\n }\n this.setState({\n uploadedImages: uploadedImages,\n uploadedImageNames: uploadedImageNames,\n });\n };\n\n toggleImageEditor = (val) => {\n if (!val) {\n this.setState({ showImageEditor: null });\n document.querySelector(\"#manage_image_editor\").classList.remove(\"show_editor\");\n } else {\n if (val.name.split(\".\").pop() !== \"svg\") {\n document.querySelector(\".modal\").removeAttribute(\"tabindex\");\n document.querySelector(\"#manage_image_editor\").classList.add(\"show_editor\");\n this.setState({ showImageEditor: val });\n setTimeout(() => {\n this.initializeEditor();\n }, 100);\n } else {\n alert(\"Can't edit the svg images\");\n }\n }\n };\n\n initializeEditor = () => {\n let refInstance = this.editorRef.current.getInstance();\n // Changing buttons\n $(\".tui-image-editor-header-logo\").replaceWith(\"\");\n $(\".tui-image-editor-header-buttons\").replaceWith(\n `
    \n \n \n \n
    \n \n \n
    \n
    `\n );\n\n if (!$(\".tie-btn-filter\").html()) {\n const filterBtn = `
  • \n \"Filter\"\n
  • \n `;\n $(\".tui-image-editor-menu\").prepend(filterBtn);\n $(\".tie-btn-filter\").bind(\"click\", this.onFilterSelect);\n }\n\n refInstance.loadImageFromURL(this.state.showImageEditor.image, \"Adukku image\").then(() => {\n refInstance.ui.activeMenuEvent();\n\n $(\".image_editor_file_name\").remove();\n $(\".tui-image-editor-header\").append(\n `

    ${this.state.showImageEditor.name}

    `\n );\n\n if (!$(\".preset-fixed\").html()) {\n const fixedCrop = `
    \n
    \n
    \n
    \n \n
    `;\n $(\".tie-crop-preset-button\").append(fixedCrop);\n }\n document.querySelector(\".save-as-container\").style.display = \"none\";\n this.bindActions();\n });\n\n refInstance.on(\"objectScaled\", () => {\n if (inputWidth && inputHeight) {\n this.customImageSizing();\n }\n });\n };\n\n bindActions = () => {\n $(\".tie-btn-crop\").bind(\"mousedown\", this.onCropSelect);\n $(\".tie-btn-flip\").bind(\"mousedown\", this.onFlipSelect);\n $(\".tie-btn-text\").bind(\"mousedown\", this.onTextSelect);\n $(\".tie-btn-rotate\").bind(\"mousedown\", this.onRotateSelect);\n $(\".tie-btn-draw\").bind(\"mousedown\", this.onDrawSelect);\n $(\".tie-btn-mask\").bind(\"mousedown\", this.onMaskSelect);\n $(\".tui-image-editor-close-btn\").bind(\"click\", this.onClose);\n $(\".tui-image-editor-save-btn\").bind(\"click\", this.onSave);\n $(\".tui-image-editor-save-as-btn\").bind(\"click\", this.onSaveas);\n $(\".submit_save_as_file\").bind(\"click\", this.onSubmitFile);\n $(\".preset-fixed\").bind(\"click\", this.onClickFix);\n $(\".preset-none\").bind(\"click\", this.onClickCustom);\n $(\".preset-square\").bind(\"click\", this.onClickSq);\n $(\".preset-3-2\").bind(\"click\", this.onClick32);\n $(\".preset-4-3\").bind(\"click\", this.onClick43);\n $(\".preset-5-4\").bind(\"click\", this.onClick54);\n $(\".preset-7-5\").bind(\"click\", this.onClick75);\n $(\".preset-16-9\").bind(\"click\", this.onClick169);\n };\n\n unBindActions = () => {\n $(\".tie-btn-crop\").unbind(\"mousedown\", this.onCropSelect);\n $(\".tie-btn-flip\").unbind(\"mousedown\", this.onFlipSelect);\n $(\".tie-btn-text\").unbind(\"mousedown\", this.onTextSelect);\n $(\".tie-btn-rotate\").unbind(\"mousedown\", this.onRotateSelect);\n $(\".tie-btn-draw\").unbind(\"mousedown\", this.onDrawSelect);\n $(\".tie-btn-mask\").unbind(\"mousedown\", this.onMaskSelect);\n $(\".tui-image-editor-close-btn\").unbind(\"click\", this.onClose);\n $(\".tui-image-editor-save-btn\").unbind(\"click\", this.onSave);\n $(\".tui-image-editor-save-as-btn\").unbind(\"click\", this.onSaveas);\n $(\".submit_save_as_file\").unbind(\"click\", this.onSubmitFile);\n $(\".preset-fixed\").unbind(\"click\", this.onClickFix);\n $(\".preset-none\").unbind(\"click\", this.onClickCustom);\n $(\".preset-square\").unbind(\"click\", this.onClickSq);\n $(\".preset-3-2\").unbind(\"click\", this.onClick32);\n $(\".preset-4-3\").unbind(\"click\", this.onClick43);\n $(\".preset-5-4\").unbind(\"click\", this.onClick54);\n $(\".preset-7-5\").unbind(\"click\", this.onClick75);\n $(\".preset-16-9\").unbind(\"click\", this.onClick169);\n };\n\n addCropFields = () => {\n const customCrop = `
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    `;\n if (!$(\"#crop_fields_1\").html()) {\n $(\".tie-crop-preset-button\").append(customCrop);\n inputWidth = document.querySelector(\"#tui_widt_1\");\n inputHeight = document.querySelector(\"#tui_heig_1\");\n inputWidth.oninput = this.updatingWidth;\n inputHeight.oninput = this.updatingHeight;\n }\n };\n\n onSaveas = () => {\n document.querySelector(\".save-as-container\").style.display = \"flex\";\n };\n\n removeCropFields = () => {\n if ($(\".custom-crop-container\").html()) {\n $(\".custom-crop-container\").remove();\n }\n };\n\n removeNotWorkingFilters = () => {\n const filterParent = document.querySelector(\".tui-image-editor-menu-filter\");\n const middleFilter = document.querySelectorAll(\".tui-image-editor-submenu-align\");\n const lines = filterParent.querySelectorAll(\".tui-image-editor-partition\");\n if (middleFilter.length === 3) {\n $(\".tui-image-editor-submenu-align\").eq(1).remove();\n $(\".tui-image-editor-submenu-align\").eq(1).remove();\n }\n if (lines.length === 3) {\n $(\".tui-image-editor-menu-filter .tui-image-editor-partition\").eq(0).remove();\n }\n };\n\n onCropSelect = () => {\n $(\".tie-btn-filter\").removeClass(\"active\");\n $(\".filter_image\").addClass(\"filter_filter\");\n this.removeCropFields();\n this.removeFilters();\n // setTimeout(() => {\n // let refInstance = this.editorRef.current.getInstance();\n // refInstance.setCropzoneRect(1);\n // }, 1000);\n };\n\n onFlipSelect = () => {\n $(\".tie-btn-filter\").removeClass(\"active\");\n $(\".filter_image\").addClass(\"filter_filter\");\n this.removeCropFields();\n this.removeFilters();\n };\n\n onTextSelect = () => {\n $(\".tie-btn-filter\").removeClass(\"active\");\n $(\".filter_image\").addClass(\"filter_filter\");\n this.removeCropFields();\n this.removeFilters();\n };\n\n onRotateSelect = () => {\n $(\".tie-btn-filter\").removeClass(\"active\");\n $(\".filter_image\").addClass(\"filter_filter\");\n this.removeCropFields();\n this.removeFilters();\n };\n\n onFilterSelect = () => {\n this.removeCropFields();\n if ($(\".tie-btn-mask\").hasClass(\"active\")) {\n $(\".tie-btn-mask\").trigger(\"click\");\n }\n if ($(\".tie-btn-draw\").hasClass(\"active\")) {\n $(\".tie-btn-draw\").trigger(\"click\");\n }\n if ($(\".tie-btn-text\").hasClass(\"active\")) {\n $(\".tie-btn-text\").trigger(\"click\");\n }\n if ($(\".tie-btn-rotate\").hasClass(\"active\")) {\n $(\".tie-btn-rotate\").trigger(\"click\");\n }\n if ($(\".tie-btn-flip\").hasClass(\"active\")) {\n $(\".tie-btn-flip\").trigger(\"click\");\n }\n if ($(\".tie-btn-crop\").hasClass(\"active\")) {\n $(\".tie-btn-crop\").trigger(\"click\");\n }\n $(\".tui-image-editor-item\").removeClass(\"active\");\n $(\".tie-btn-filter\").addClass(\"active\");\n $(\".filter_image\").removeClass(\"filter_filter\");\n this.addFilterFields();\n // this.removeNotWorkingFilters();\n };\n\n onDrawSelect = () => {\n $(\".tie-btn-filter\").removeClass(\"active\");\n $(\".filter_image\").addClass(\"filter_filter\");\n this.removeCropFields();\n this.removeFilters();\n };\n\n onMaskSelect = () => {\n $(\".tie-btn-filter\").removeClass(\"active\");\n $(\".filter_image\").addClass(\"filter_filter\");\n this.removeCropFields();\n this.removeFilters();\n };\n\n onClickFix = () => {\n this.addCropFields();\n setTimeout(() => {\n let refInstance = this.editorRef.current.getInstance();\n refInstance.setCropzoneRect(1);\n this.initializeSizeCal();\n }, 500);\n };\n\n onClickCustom = () => {\n // setTimeout(() => {\n // let refInstance = this.editorRef.current.getInstance();\n // refInstance.setCropzoneRect(1);\n // }, 500);\n this.removeCropFields();\n };\n\n onClickSq = () => {\n this.removeCropFields();\n };\n\n onClick32 = () => {\n this.removeCropFields();\n };\n\n onClick43 = () => {\n this.removeCropFields();\n };\n\n onClick54 = () => {\n this.removeCropFields();\n };\n\n onClick75 = () => {\n this.removeCropFields();\n };\n\n onClick169 = () => {\n this.removeCropFields();\n };\n\n addFilterFields = () => {\n if (!$(\".tui-image-editor-menu-filter\").html()) {\n $(\".tui-image-editor-submenu\").css({ display: \"table\" });\n const filFields = `\n
    \n
      \n
    • \n
      \n \n \n \n \n \n \n \n
      \n
    • \n
    • \n
      \n
      \n \n
      \n Distance\n \n
      \n
      \n
      \n \n
      \n \n
      \n
      \n
      \n \n
      \n Threshold\n \n
      \n
      \n
      \n \n
      \n \n
      \n
      \n
      \n
    • \n
    \n
    \n `;\n $(\".tui-image-editor-submenu\").append(filFields);\n const imageRef = this.editorRef.current.getInstance();\n $inputCheckBlur = $(\".blur_check\");\n $inputCheckEmboss = $(\".emboss_check\");\n $inputCheckInvert = $(\".invert_check\");\n $inputCheckSepia = $(\".sepia_check\");\n $inputCheckSepia2 = $(\".sepia2_check\");\n $inputCheckSharpen = $(\".sharpen_check\");\n $inputCheckGrayscale = $(\".gray_check\");\n $inputCheckRemoveWhite = $(\".remove_white_check\");\n $inputCheckBrightness = $(\".brightness_check\");\n $inputCheckNoise = $(\".noise_check\");\n $inputCheckColorFilter = $(\".color_check\");\n $inputSlideRemoveWhite = $(\"#remove_white_check\");\n $inputSlideBrightness = $(\"#brightness_check\");\n $inputSlideNoise = $(\"#noise_check\");\n $inputSlideColorFilter = $(\"#color_check\");\n\n $inputCheckBlur.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"Blur\", { blur: 0.1 });\n } else {\n imageRef.removeFilter(\"Blur\");\n }\n });\n $inputCheckEmboss.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"Emboss\");\n } else {\n imageRef.removeFilter(\"Emboss\");\n }\n });\n $inputCheckInvert.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"Invert\");\n } else {\n imageRef.removeFilter(\"Invert\");\n }\n });\n $inputCheckSepia.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"Sepia\");\n } else {\n imageRef.removeFilter(\"Sepia\");\n }\n });\n $inputCheckSepia2.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"vintage\");\n } else {\n imageRef.removeFilter(\"vintage\");\n }\n });\n $inputCheckSharpen.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"Sharpen\");\n } else {\n imageRef.removeFilter(\"Sharpen\");\n }\n });\n $inputCheckGrayscale.on(\"change\", (e) => {\n if (e.target.checked) {\n imageRef.applyFilter(\"Grayscale\");\n } else {\n imageRef.removeFilter(\"Grayscale\");\n }\n });\n $inputCheckRemoveWhite.on(\"change\", (e) => {\n if (e.target.checked) {\n $(\"#remove_white_check\").removeClass(\"disabled\");\n imageRef.applyFilter(\"removeColor\", {\n color: \"#FFFFFF\",\n useAlpha: false,\n distance: parseInt($inputSlideRemoveWhite.val(), 10) / 255,\n });\n } else {\n $(\"#remove_white_check\").addClass(\"disabled\");\n imageRef.removeFilter(\"removeColor\");\n }\n });\n $inputCheckBrightness.on(\"change\", (e) => {\n if (e.target.checked) {\n $(\"#brightness_check\").removeClass(\"disabled\");\n imageRef.applyFilter(\"brightness\", {\n brightness: parseInt($inputSlideBrightness.val(), 10) / 255,\n });\n } else {\n $(\"#brightness_check\").addClass(\"disabled\");\n imageRef.removeFilter(\"brightness\");\n }\n });\n $inputCheckNoise.on(\"change\", (e) => {\n if (e.target.checked) {\n $(\"#noise_check\").removeClass(\"disabled\");\n imageRef.applyFilter(\"noise\", {\n noise: parseInt($inputSlideNoise.val(), 10),\n });\n } else {\n $(\"#noise_check\").addClass(\"disabled\");\n imageRef.removeFilter(\"noise\");\n }\n });\n $inputCheckColorFilter.on(\"change\", (e) => {\n if (e.target.checked) {\n $(\"#color_check\").removeClass(\"disabled\");\n imageRef.applyFilter(\"removeColor\", {\n color: \"#FFFFFF\",\n distance: $inputSlideColorFilter.val() / 255,\n });\n } else {\n $(\"#color_check\").addClass(\"disabled\");\n imageRef.removeFilter(\"removeColor\");\n }\n });\n $inputSlideRemoveWhite.on(\"input\", (e) => {\n imageRef.applyFilter(\"removeColor\", {\n color: \"#FFFFFF\",\n useAlpha: false,\n distance: parseInt(e.target.value, 10) / 255,\n });\n });\n $inputSlideBrightness.on(\"input\", (e) => {\n imageRef.applyFilter(\"brightness\", {\n brightness: parseInt(e.target.value, 10) / 255,\n });\n });\n $inputSlideNoise.on(\"input\", (e) => {\n imageRef.applyFilter(\"noise\", {\n noise: parseInt(e.target.value, 10),\n });\n });\n $inputSlideColorFilter.on(\"input\", (e) => {\n imageRef.applyFilter(\"removeColor\", {\n color: \"#FFFFFF\",\n distance: e.target.value / 255,\n });\n });\n }\n };\n\n removeFilters = () => {\n if ($(\".tui-image-editor-menu-filter\").html()) {\n $(\".tui-image-editor-menu-filter\").remove();\n }\n };\n\n initializeSizeCal = () => {\n document.querySelector(\".preset-fixed\").classList.add(\"active\");\n this.customImageSizing();\n };\n\n updatingWidth = (e) => {\n if (parseInt(e.data) >= 0 && parseInt(e.data) <= 9) {\n inputWidth.value = e.target.value;\n const imageRef = this.editorRef.current.getInstance();\n imageRef.setCropzoneRect(inputWidth.value / inputHeight.value);\n }\n };\n\n updatingHeight = (e) => {\n if (parseInt(e.data) >= 0 && parseInt(e.data) <= 9) {\n inputHeight.value = e.target.value;\n const imageRef = this.editorRef.current.getInstance();\n imageRef.setCropzoneRect(inputWidth.value / inputHeight.value);\n }\n };\n\n customImageSizing = () => {\n const imageRef = this.editorRef.current.getInstance();\n let imageMode = imageRef.getDrawingMode();\n if (imageMode === \"CROPPER\") {\n let imgCrop = imageRef.getCropzoneRect();\n if (imgCrop.width == 0.5 && imgCrop.height == 0.5) {\n let imageCanvs = imageRef.getCanvasSize();\n inputWidth.value = imageCanvs.width.toFixed(2);\n inputHeight.value = imageCanvs.height.toFixed(2);\n } else {\n inputWidth.value = imgCrop.width.toFixed(2);\n inputHeight.value = imgCrop.height.toFixed(2);\n }\n }\n };\n\n onClose = () => {\n this.unBindActions();\n this.removeCropFields();\n $(\".preset-fixed\").remove();\n $(\".image_editor_file_name\").remove();\n this.toggleImageEditor(null);\n };\n\n onSave = async () => {\n const extension = this.state.showImageEditor.image.split(\".\").pop().split(\"?\")[0];\n const imageRef = this.editorRef.current.getInstance();\n let metadata = `image/${extension}`;\n const dataURL = imageRef.toDataURL(metadata, 1);\n let file = await this.dataURLtoFile(dataURL, this.state.showImageEditor.name, metadata);\n this.submitImage(file, this.state.showImageEditor);\n this.onClose();\n };\n\n dataURLtoFile = async (dataurl, filename, metadata) => {\n let response = await fetch(dataurl);\n let data = await response.blob();\n let bgImgFile = new File([data], filename, { type: metadata });\n return bgImgFile;\n };\n\n submitImage = (file, showImageEditor) => {\n let uploadedImages = { none: [] };\n let uploadedImageNames = { none: [] };\n uploadedImages[\"none\"].push(file);\n uploadedImageNames[\"none\"].push(file.name);\n this.setState(\n {\n uploadedImages: uploadedImages,\n uploadedImageNames: uploadedImageNames,\n },\n () => {\n this.uploadImages(\"none\");\n }\n );\n // this.setImageFromFile(file, showImageEditor.data.id);\n };\n\n onSubmitFile = async () => {\n let imageName = $(\".save-as-input\").val();\n const extension = this.state.showImageEditor.image.split(\".\").pop().split(\"?\")[0];\n const imageRef = this.editorRef.current.getInstance();\n let metadata = `image/${extension}`;\n const dataURL = imageRef.toDataURL(metadata, 1);\n let file = await this.dataURLtoFile(\n dataURL,\n `${imageName.trim().replaceAll(\" \", \"_\")}.${extension}`,\n metadata\n );\n this.submitImage(file, this.state.showImageEditor);\n this.onClose();\n };\n\n setImageFromFile = (rawFile, dataID) => {\n let reader = new FileReader();\n reader.onload = (e) => {\n let dataURL = e.target.result;\n let newEditedFiles = this.state.editedFiles;\n newEditedFiles[dataID] = dataURL;\n this.setState({ editedFiles: newEditedFiles });\n };\n reader.readAsDataURL(rawFile);\n };\n\n render() {\n const {\n isFileManagerOpen,\n folders,\n user_products,\n basePath,\n current_path,\n prev_path,\n isShowAll,\n searchResults,\n page,\n perPage,\n deletableFiles,\n } = this.state;\n\n let folderPath = (current_path && current_path.split(\"/\")) || [];\n let updatedFolders = isShowAll ? folders : searchResults;\n let total_pages = Math.ceil(updatedFolders && updatedFolders.length / perPage);\n if (folderPath.length > 0) folderPath[0] = user_products[folderPath[0]];\n\n const isShowPagination =\n this.state.product_id && current_path && current_path.includes(\"images\") ? true : false;\n const indexOfLastTodo = page * perPage;\n const indexOfFirstTodo = indexOfLastTodo - perPage;\n const currentFolders = isShowPagination\n ? updatedFolders.slice(indexOfFirstTodo, indexOfLastTodo)\n : updatedFolders;\n return (\n
  • \n {\"View Image Files\"}\n {/* onClick={() => this.deleteFile(\"all\")} */}\n \n \n \n
    \n
    \n File Manager: {folderPath.join(\" / \")}\n {folderPath.length > 0 && (\n {\n e.preventDefault();\n e.stopPropagation();\n this.getUserFolders({ current_path: prev_path, page: 1 });\n }}\n />\n )}\n
    \n
    \n {\n this.setState({ [name]: value });\n }}\n >\n \n \n \n \n \n Avail Space: {this.formatBytes(this.state.avail_space || 0, 3, \"global\")}\n \n \n Total Space: {this.formatBytes(this.state.total_space || 0, 3, \"global\")}\n \n \n Reclaim Space:{\" \"}\n {this.formatBytes(this.state.reclaimable_space || 0, 3, \"global\")}\n \n
    \n
    \n {this.state.product_id && current_path && current_path.includes(\"images\") && (\n \n
    \n Pages: {total_pages}\n Rows: {updatedFolders && updatedFolders.length}\n \n Per page:\n {\n this.setState({ perPage: value });\n }}\n className=\"product_data_control\"\n >\n \n \n \n \n \n {\n e.preventDefault();\n e.stopPropagation();\n if (page > 1 && page <= total_pages) {\n this.setState({ page: page - 1 });\n }\n }}\n />\n \n Page:\n {\n if (value && value >= 1 && value <= total_pages) {\n this.setState({ page: value });\n } else if (value > total_pages) {\n this.setState({ page: total_pages });\n }\n }}\n className=\"product_data_input\"\n >\n \n {\n e.preventDefault();\n e.stopPropagation();\n if (page >= 1 && page < total_pages) {\n this.setState({ page: page + 1 });\n }\n }}\n data-toggle=\"tooltip\"\n title=\"Go to Next page\"\n src=\"/icons/icon_head.png\"\n alt=\"Next\"\n className=\"product_page_next\"\n />\n
    \n
    \n
    \n {\n this.setState({ search_text: value });\n }}\n className=\"search_input\"\n placeholder=\"Search filename\"\n id={\"search_text\"}\n />\n {\n e.preventDefault();\n e.stopPropagation();\n if (this.state.search_text) {\n let searchText = this.state.search_text;\n searchText = searchText.split(\"*\"); //(\"*\", \"\");\n // searchText = searchText.replace(/[^\\w\\s]/gi, \"\");\n let searchResults = folders.filter((f) => {\n // f.name.toLowerCase().includes(searchText)\n let name = f.name.toLowerCase();\n if (searchText.every((s) => name.includes(s))) {\n return f;\n }\n });\n this.setState({\n searchResults: searchResults,\n isShowAll: false,\n page: 1,\n });\n }\n }}\n >\n Go\n \n {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ isShowAll: true, searchText: \"\" });\n }}\n className=\"btn btn-default search_btn btn-danger\"\n >\n Clear\n \n
    \n {\n this.handleSubmit(e, \"none\");\n }}\n encType=\"multipart/form-data\"\n className=\"flex_align override_form\"\n >\n {\n this.fileSelectedHandler(e, \"none\");\n }}\n accept=\"image/x-png,image/jpeg\"\n style={{ display: \"none\" }}\n id={\"upload_images\" + \"none\"}\n />\n \n {this.state.isLoading ?
    Loading...
    :\n \n }\n \n {Object.keys(deletableFiles).length > 0 && (\n this.deleteFile(\"selected\")}\n >\n Delete Selected\n \n )}\n
    \n \n )}\n
    \n
    \n \n \n \n \n {\n let sortedFolders = [];\n if (this.state.sortBy != \"name\") {\n sortedFolders = folders.sort((a, b) => a.name.localeCompare(b.name));\n }\n this.setState({\n folders: this.state.sortBy == \"name\" ? folders.reverse() : sortedFolders,\n sortBy: \"name\",\n sortType: this.state.sortType == \"asc\" ? \"des\" : \"asc\",\n });\n }}\n >\n Name\n {this.state.sortType == \"asc\" ? (\n \n ) : (\n \n )}\n \n {\n let sortedFolders = [];\n if (this.state.sortBy != \"size\") {\n sortedFolders = folders.sort((a, b) => a.size - b.size);\n // .sort(function (a, b) { return a - b; });\n }\n this.setState({\n folders: this.state.sortBy == \"size\" ? folders.reverse() : sortedFolders,\n sortBy: \"size\",\n sortType: this.state.sortType == \"asc\" ? \"des\" : \"asc\",\n });\n }}\n >\n Size\n {this.state.sortType == \"asc\" ? (\n \n ) : (\n \n )}\n \n\n {\n let sortedFolders = [];\n if (this.state.sortBy != \"time\") {\n sortedFolders = folders.sort(\n (a, b) => new Date(b.updated_at) - new Date(a.updated_at)\n );\n\n // .sort(function (a, b) { return a - b; });\n }\n this.setState({\n folders: this.state.sortBy == \"time\" ? folders.reverse() : sortedFolders,\n sortBy: \"time\",\n sortType: this.state.sortType == \"asc\" ? \"des\" : \"asc\",\n });\n }}\n >\n Uploaded Time\n {this.state.sortType == \"asc\" ? (\n \n ) : (\n \n )}\n \n {/* */}\n \n \n \n \n \n {currentFolders &&\n currentFolders.map((folder, fIndex) => {\n let currentFolderPaths = folder.path\n .split(\"public/uploads/products\")[1]\n .split(\"/\");\n let [em, product_id, dlname] = currentFolderPaths;\n let folderJSX = (\n \n \n {folder.name}\n \n );\n if (folder.is_file) {\n folderJSX = (\n \n \n \n {folder.name}\n {` (${folder.height}X${folder.width})`}\n \n \n );\n }\n return (\n \n {this.state.isFetching ? :\n {\n if (!folder.is_file) {\n this.getUserFolders({\n product_id,\n current_path: folder.path,\n dlname,\n });\n } else {\n if(folder.name.split(\".\")[1]!==\"m4a\") {\n this.toggleImageEditor({\n image: `${basePath}${folder.path.split(\"public\")[1]}?${new Date()}`,\n name: folder.name,\n });\n }\n }\n }}\n >\n {folderJSX}\n \n }\n {/* */}\n\n \n \n \n \n \n );\n })}\n \n
    Uploaded TimeView/Edit
    Fetching...
    {folder.is_file ? this.formatBytes(folder.size, 3) : `${folder.size || 0}MB`}{this.formatBytes(folder.size || 0, 3)}{`${new Date(folder.updated_at).toLocaleString()}`}\n {folder.is_file && (\n \n this.setState({\n show: true,\n currentFile: {\n desc: folder.name,\n preview_url: folder.path.split(\"public\")[1],\n },\n })\n }\n >\n View\n \n )}\n \n {folder.is_file && (\n {\n let deletableFiles = this.state.deletableFiles;\n if (checked) {\n deletableFiles[folder.path] = checked;\n } else {\n delete deletableFiles[folder.path];\n }\n this.setState({ deletableFiles });\n }}\n value={deletableFiles[folder.path] || false}\n />\n )}\n
    \n
    \n {/* \n \n */}\n \n {this.state.show && this.state.currentFile && (\n this.setState({ show: false })}\n />\n )}\n {this.state.showImageEditor && (\n \n \n \n )}\n
  • \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Col, Form, Modal, Button } from \"react-bootstrap\";\n\nimport { FieldGroup } from \"./bootstrap/Forms.FieldGroup\";\nimport { formDataToJSON } from \"../adukku_utils/array\";\nimport { authorized, Authorized } from \"../adukku_utils/authorizeUser\";\n\nexport default class AddUser extends Component {\n constructor(props) {\n super(props);\n this.state = {\n ...props,\n email: props.edit_user && props.edit_user.email,\n login: props.edit_user && props.edit_user.login,\n view_user_product_code: props.view_user && props.view_user.product_code,\n view_user_password: props.view_user && props.view_user.password,\n view_and_pay_user_product_code: props.view_and_pay_user && props.view_and_pay_user.product_code,\n view_and_pay_user_password: props.view_and_pay_user && props.view_and_pay_user.password,\n\n is_update_code: \"Click here to Generate New Product Code\",\n \n };\n this._handleGenerateProductCode = this._handleGenerateProductCode.bind(this);\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n }\n\n _handleGenerateProductCode = (e) => {\n let newCode = Math.round(Math.random() * (1000000));\n this.setState({ view_user_Product_code: newCode });\n };\n\n _handleValidSubmit = (e) => {\n e.preventDefault();\n e.stopPropagation();\n let formData = formDataToJSON(new FormData(e.target));\n if (formData[\"role\"] === \"editor\") formData[\"name\"] = formData.login;\n this.props.productUser(formData);\n this.setState({ show: false, view_pay_modal: false });\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state.edit_user !== nextProps.edit_user) {\n this.setState({\n ...nextProps,\n email: nextProps.edit_user && nextProps.edit_user.email,\n login: nextProps.edit_user && nextProps.edit_user.login,\n });\n }\n }\n\n render() {\n const { edit_user, email, login, role, labelText, isAddViewUser } = this.state;\n const style = {\n display: \"none\",\n };\n console.log(role, authorized([\"admin\", \"owner\"], [role], \"ANY\"));\n return (\n \n {role && !isAddViewUser && (\n \n
  • \n this.setState({ show: true })}>\n {/*Bala\n {edit_user ? \"Edit Data Correction User\" : \"Add Data Correction User\"}\n */}\n \n \n
    \n \n Data Correction user\n \n \n \n \n \n {\n this.setState({ [name]: value });\n }}\n />\n {\n this.setState({ [name]: value });\n }}\n />\n \n \n
    \n
    \n \n \n \n \n
    \n
    \n
  • \n
    \n )}\n {isAddViewUser && (\n
  • \n this.setState({ view_pay_modal: true })}>\n {this.props.is_password_set ? `Edit ${labelText}` : `Add ${labelText}`}\n \n \n {\n this.setState({ view_pay_modal: true });\n }}\n >\n {labelText}\n \n \n
    \n \n \n \n {/* Bala*/}\n\n
    \n Generate New Product Code : \n {\n let yesNo = confirm(\"Are you sure?\\nOld Product Code (if any) will not work anymore!!!\") \n if (yesNo) {\n this._handleGenerateProductCode()\n alert(\"New Product Code Generated\") \n }\n }}\n >\n
    \n \n \n {\n // this.setState({\n // password: e.target.value,\n // });\n // }}\n placeholder=\"Password\"\n required={this.props.is_password_set ? null : \"required\"}\n />\n \n
    \n \n \n
    \n \n \n \n
    \n
  • \n )}{\" \"}\n
    \n );\n }\n}\n","import \"babel-polyfill\";\nimport React from \"react\";\nimport CartState from \"../context/cart/CartState\";\nimport { Provider } from \"react-redux\";\nimport { applyMiddleware, createStore } from \"redux\";\nimport createLogger from \"redux-logger\";\nimport createSagaMiddleware from \"redux-saga\";\nimport rootSaga from \"../sagas/orders_index.saga\";\nimport AdukkuApp from \"../reducers/orders_reducer\";\nimport CartListContainer from \"../containers/cart/CartListContainer\";\nimport ProductComposzNavbar from \"./ProductComposzNavbar\";\n\n//const logger = createLogger({});\nconst sagaMiddleware = createSagaMiddleware();\n//const store = createStore(AdukkuApp, applyMiddleware(logger, sagaMiddleware)); // Bala\nconst store = createStore(AdukkuApp, applyMiddleware(sagaMiddleware));\nsagaMiddleware.run(rootSaga);\n\nclass MyCart extends React.Component {\n render() {\n return (\n
    \n \n \n
    \n \n \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default MyCart;\n","import \"babel-polyfill\";\nimport React from \"react\";\nimport CartState from \"../context/cart/CartState\";\nimport { Provider } from \"react-redux\";\nimport { applyMiddleware, createStore } from \"redux\";\nimport createLogger from \"redux-logger\";\nimport createSagaMiddleware from \"redux-saga\";\nimport rootSaga from \"../sagas/orders_index.saga\";\nimport AdukkuApp from \"../reducers/orders_reducer\";\nimport OrderListContainer from \"../containers/orders/OrderListContainer\";\nimport ProductComposzNavbar from \"./ProductComposzNavbar\";\n\n//const logger = createLogger({});\nconst sagaMiddleware = createSagaMiddleware();\n//const store = createStore(AdukkuApp, applyMiddleware(logger, sagaMiddleware)); // Bala\nconst store = createStore(AdukkuApp, applyMiddleware(sagaMiddleware));\nsagaMiddleware.run(rootSaga);\n\nclass MyOrders extends React.Component {\n render() {\n return (\n
    \n \n \n
    \n \n \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default MyOrders;\n","import \"babel-polyfill\";\nimport React from \"react\";\nimport CartState from \"../context/cart/CartState\";\nimport { render } from \"react-dom\";\nimport { Provider } from \"react-redux\";\nimport { applyMiddleware, createStore } from \"redux\";\nimport createLogger from \"redux-logger\";\nimport createSagaMiddleware from \"redux-saga\";\nimport rootSaga from \"../sagas\";\nimport AdukkuApp from \"../reducers/product_reducers\";\nimport ProductListContainer from \"../containers/ProductListContainer\";\nimport ProductComposzNavbar from \"./ProductComposzNavbar\";\n\n//const logger = createLogger({});\nconst sagaMiddleware = createSagaMiddleware();\n//const store = createStore(AdukkuApp, applyMiddleware(logger, sagaMiddleware)); // Bala\nconst store = createStore(AdukkuApp, applyMiddleware(sagaMiddleware));\nsagaMiddleware.run(rootSaga);\n\n$(window).scroll(function () {\n //set scroll position in session storage\n sessionStorage.scrollPos = $(window).scrollTop();\n});\nvar init = function () {\n //return scroll position in session storage\n $(window).scrollTop(sessionStorage.scrollPos || 0);\n};\nwindow.onload = init;\n\nexport class MyProducts extends React.Component {\n componentDidMount() {\n let user_role = document.getElementById(\"user_role\");\n user_role = user_role.innerHTML;\n if (localStorage.getItem(\"isOrderPaid\")) {\n alert(\n \"Payment done successfully, \\n Download your files immediately or within the next 3 days.\"\n );\n localStorage.removeItem(\"isOrderPaid\");\n }\n if (localStorage.getItem(\"isStoragePaid\")) {\n alert(\"Payment done successfully, \\n Check expiry date under Storage Purchase History\");\n localStorage.removeItem(\"isStoragePaid\");\n }\n // this.setState({ role: user_role });\n // alert(\n // \"Payment done successfully, \\n Download your files immediately or within the next 3 days.\"\n // );\n }\n render() {\n return (\n
    \n \n \n
    \n \n \n \n
    \n
    \n
    \n );\n }\n}\nexport default MyProducts;\n","import React, { useState } from 'react';\nimport { Navbar, Nav, NavItem, MenuItem, NavDropdown, Modal, Button } from 'react-bootstrap';\nimport logo from 'images/Composz-logo-white-trans.png';\nimport logoBlack from 'images/Composz-logo-black-trans.png';\nimport profile from 'images/blankProfile.png';\nimport {useLocation} from 'react-router-dom'\nimport { render } from 'react-dom';\n\nfunction Mynavbar (user_id, user_name, has_view_products) {\n\n const [show3, setShow3] = useState(false);\n const showDropdown3 = (e)=>{\n setShow3(true);\n }\n const hideDropdown3 = e => {\n setShow3(false);\n }\n \n const [show2, setShow2] = useState(false);\n const showDropdown2 = (e)=>{\n setShow2(true);\n }\n const hideDropdown2 = e => {\n setShow2(false);\n }\n \n const [show1, setShow1] = useState(false);\n const showDropdown1 = (e)=>{\n setShow1(true);\n setShow(false);\n }\n const hideDropdown1 = e => {\n setShow1(false);\n }\n \n const [show, setShow] = useState(false);\n const showDropdown = (e)=>{\n setShow(true);\n }\n const hideDropdown = e => {\n setShow(false);\n }\n const toggleShow = e => {\n setShow(!show)\n setShow1(false)\n setShow2(false)\n setShow3(false)\n }\n const toggleShow1 = e => {\n setShow1(!show1)\n setShow(false)\n setShow2(false)\n setShow3(false)\n }\n const toggleShow2 = e => {\n setShow2(!show2)\n setShow(false)\n setShow1(false)\n setShow3(false)\n }\n const toggleShow3 = e => {\n setShow3(!show3)\n setShow(false)\n setShow1(false)\n setShow2(false)\n }\n\n const hideDD = e => {\n toggleShow();\n $(\"#responsive-navbar-nav\").removeClass(\"navbar-collapse collapse in\");\n $(\"#responsive-navbar-nav\").addClass(\"navbar-collapse collapse\");\n const el=document.getElementById(\"nav-toggle\")\n el.click();\n }\n\n const hideDD1 = e => {\n toggleShow1();\n $(\"#responsive-navbar-nav\").removeClass(\"navbar-collapse collapse in\");\n $(\"#responsive-navbar-nav\").addClass(\"navbar-collapse collapse\");\n const el=document.getElementById(\"nav-toggle\")\n el.click();\n }\n \n const handleToggle = e => {\n ;; // do nothing\n }\n\n const [showModal, setshowModal] = useState(false);\n function handlePricing () {\n setshowModal(true);\n }\n\n function handleClosePricing () {\n setshowModal(false);\n }\n\n function getCookie(cname) {\n let name = cname + \"=\";\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for(let i = 0; i 450 ?\n \n \n \n \n\n {countryCode!==\"IN\" ?\n \n \n Pricing\n \n

    \n     1) Composed Image Files (.jpeg): \n

    \n               $1.00 per image file  +

    \n               $0.15 convenience charge per image file\n

    \n
    \n     2) Embedded Audio Files (.html): \n

    \n               $4.00 for all audio files in a Record\n
    \n     3) Storage (Rent for 30 days typically): \n

    \n               $1.00 per Giga Byte   +

    \n               $0.15 convenience charge per Giga Byte\n
    \n     NOTE: \n

    \n         1 Page Composite has:\n

    \n                 1 image file and can have upto 1 audio (.html) file per record\n

    \n         2 Page Graduation Folder has:\n

    \n                 2 image files and can have upto 2 audio (.html) files per record\n
    \n \n \n \n
    \n :\n \n \n Pricing\n \n

    \n     1) Composed Image Files (.jpeg): \n

    \n               ₹75.00 per image file  +

    \n               ₹10.00 convenience charge per image file\n

    \n
    \n     2) Embedded Audio Files (.html): \n



    \n        a) Max audio duration of 15 Seconds: \n

    \n               ₹127.00 for all audio files in a Record\n

    \n        b) Max audio duration of 30 Seconds: \n

    \n               ₹200.00 for all audio files in a Record\n
    \n     3) Storage (Rent for 30 days typically): \n

    \n               ₹75.00 per Giga Byte   + \n

    \n               ₹10.00 convenience charge per Giga Byte\n
    \n     NOTE: \n

    \n         1 Page Composite has:\n

    \n                 1 image file and can have upto 1 audio (.html) file per record\n

    \n         2 Page Graduation Folder has:\n

    \n                 2 image files and can have upto 2 audio (.html) files per record\n
    \n \n \n \n
    \n }\n\n {user_id!=-1?\n \n :\n \n }\n {user_id!=-1?\n \n : \n \n }\n
    \n
    \n\n :\n\n \n
    \n \n \n \n                      \n                      \n \n \n \n
    \n \n \n\n {countryCode!==\"IN\" ?\n \n \n Pricing\n \n

    \n   1) Composed Image Files (.jpeg): \n

    \n     $1.00 per image file  +

    \n     $0.15 convenience charge per image file\n

    \n
    \n   2) Embedded Audio Files (.html): \n

    \n      $4.00 for all audio files in a Record\n
    \n   3) Storage (Rent for 30 days typically): \n

    \n      $1.00 per Giga Byte   +

    \n      $0.15 convenience charge per Giga Byte\n
    \n   NOTE: \n

    \n   1 Page Composite has:\n

    \n     1 image file and can have upto 1 audio\n

    \n       (.html) file per record\n

    \n   2 Page Graduation Folder has:\n

    \n     2 image files and can have upto 2 audio\n

    \n       (.html) files per record\n
    \n \n \n \n
    \n :\n \n \n Pricing\n \n

    \n   1) Composed Image Files (.jpeg): \n

    \n     ₹75.00 per image file  +

    \n     ₹10.00 convenience charge per image file\n

    \n
    \n   2) Embedded Audio Files (.html): \n



    \n     a) Max audio duration of 15 Seconds: \n

    \n      ₹127.00 for all audio files in a Record\n

    \n     b) Max audio duration of 30 Seconds: \n

    \n      ₹200.00 for all audio files in a Record\n
    \n   3) Storage (Rent for 30 days typically): \n

    \n     ₹75.00 per Giga Byte   + \n

    \n     ₹10.00 convenience charge per Giga Byte\n
    \n   NOTE: \n

    \n   1 Page Composite has:\n

    \n     1 image file and can have upto 1 audio\n

    \n      (.html) file per record\n

    \n   2 Page Graduation Folder has:\n

    \n     2 image files and can have upto 2 audio\n

    \n      (.html) files per record\n
    \n \n \n \n
    \n }\n\n\n\n\n
    \n
    \n\n );\n}\n\nexport default Mynavbar\n","import \"babel-polyfill\";\nimport React from \"react\";\nimport { render } from \"react-dom\";\nimport { Provider } from \"react-redux\";\nimport { applyMiddleware, createStore } from \"redux\";\nimport createLogger from \"redux-logger\";\nimport createSagaMiddleware from \"redux-saga\";\nimport rootSaga from \"../sagas\";\nimport AdukkuApp from \"../reducers/product_reducers\";\nimport ProductListContainer from \"../containers/ProductListContainer\";\n\n//const logger = createLogger({});\nconst sagaMiddleware = createSagaMiddleware();\n//const store = createStore(AdukkuApp, applyMiddleware(logger, sagaMiddleware)); // Bala\nconst store = createStore(AdukkuApp, applyMiddleware(sagaMiddleware));\nsagaMiddleware.run(rootSaga);\nclass MyProducts extends React.Component {\n componentDidMount() {\n let user_role = document.getElementById(\"user_role\");\n user_role = user_role.innerHTML;\n // this.setState({ role: user_role });\n }\n render() {\n return (\n
    \n \n \n \n
    \n );\n }\n}\nexport default MyProducts;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ProductDLContainer from \"../containers/ProductDLContainer\";\nimport ProductDataContainer from \"../containers/ProductDataContainer\";\nimport ProductImageUploadContainer from \"../containers/ProductImageUploadContainer\";\nimport ProductKeysContainer from \"../containers/product_keys/ProductKeyListContainer\";\nimport ProductSetListContainer from \"../containers/product_sets/ProductSetListContainer\";\nimport ProductLayoutListContainer from \"../containers/ProductLayoutListContainer\";\nimport AddUserContainer from \"../containers/AddUserContainer\";\nimport { ENDPOINTS } from \"../constants/endpoints\";\nimport { formDataToJSON } from \"../adukku_utils/array\";\n// \"../../adukku_utils/array\";\nimport { authorized, Authorized } from \"../adukku_utils/authorizeUser\";\nimport {\n Row,\n Col,\n Form,\n FormGroup,\n ControlLabel,\n FormControl,\n Modal,\n Fade,\n utils,\n Button,\n} from \"react-bootstrap\";\nimport { FieldGroup } from \"./bootstrap/Forms.FieldGroup\";\nimport FileMangerContainer from \"../containers/FileManagerContainer\";\nimport OrderContainer from \"../containers/orders/OrderContainer\";\nimport DownloadFilesContainer from \"../containers/orders/DownloadFilesContainer\";\n\nimport { TOGGLE_PRODUCT_EXPAND, TOGGLE, TOGGLE_EDIT_PRODUCT } from \"../actions\";\n\nclass Product extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n collapse: props.collapse,\n product: props.product,\n product_datalevels: props.product_datalevels,\n isEdit: false,\n dlExpand: false,\n role: props.role,\n isCopyProductClicked: false,\n name: props.product && props.product.name,\n numpages: props.product && props.product.numpages,\n isProductKeysExpanded: false,\n isProductSetsExpanded: false,\n isDataUploadExpanded: false,\n isImagesUploadExpanded: false,\n cloneable_sets: [],\n isEditProductClicked: false,\n voice: props.product && props.product.prtype,\n countryCode: this.getCookie(\"countryCode\"),\n is_preset: props.product && props.product.is_preset,\n category: props.product && props.product.category,\n sub_category: props.product && props.product.sub_category,\n expiry:\n props.product && props.product.expiry\n ? new Date(props.product.expiry).toISOString().slice(0, 16)\n : \"NOT SET\",\n }; // isEdit: props.isEdit};\n this.onEdit = this.onEdit.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.onDataLevelsClick = this.onDataLevelsClick.bind(this);\n this.onExpandToggle = this.onExpandToggle.bind(this);\n this.newDatalevel = this.newDatalevel.bind(this);\n this.onProductKeysToggle = this.onProductKeysToggle.bind(this);\n this.onProductSetsToggle = this.onProductSetsToggle.bind(this);\n }\n onExpandToggle(e) {\n if (e !== undefined) {\n e.stopPropagation();\n e.preventDefault();\n }\n this.props.toggleView({\n reducerKey: TOGGLE_PRODUCT_EXPAND,\n id: this.state.product.id,\n });\n }\n\n onEdit(e) {\n e.stopPropagation();\n e.preventDefault();\n this.props.toggleEdit({\n reducerKey: TOGGLE_EDIT_PRODUCT,\n id: this.state.product.id,\n });\n }\n handleSubmit(e) {\n e.stopPropagation();\n e.preventDefault();\n this.props.toggleEdit({\n reducerKey: TOGGLE_EDIT_PRODUCT,\n id: this.state.product.id,\n });\n }\n newDatalevel(e) {\n e.stopPropagation();\n e.preventDefault();\n this.props.newProductDatalevel(\n this.state.product.id,\n \"DL\" + this.state.product_datalevels.length\n );\n }\n onDataLevelsClick(e) {\n e.stopPropagation();\n e.preventDefault();\n const collapse = this.state.collapse;\n this.state.dlExpand = !this.state.dlExpand;\n this.props.getProductDatalevels(this.state.product.id);\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState(nextProps);\n if (nextProps.product.expiry) {\n this.setState({\n expiry:\n nextProps.product && nextProps.product.expiry\n ? new Date(nextProps.product.expiry).toISOString().slice(0, 16)\n : new Date().toISOString().slice(0, 16),\n });\n }\n // if (\n // this.state.product !== nextProps.product ||\n // this.state.product_datalevels !== nextProps.product_datalevels\n // ) {\n // this.setState(nextProps);\n // if (nextProps.product.expiry) {\n // this.setState({\n // expiry:\n // nextProps.product && nextProps.product.expiry\n // ? new Date(nextProps.product.expiry).toISOString().slice(0, 16)\n // : new Date().toISOString().slice(0, 16),\n // });\n // }\n // }\n }\n\n onProductKeysToggle(e) {\n e.stopPropagation();\n e.preventDefault();\n this.setState({\n isProductKeysExpanded: !this.state.isProductKeysExpanded,\n });\n if (!this.state.isProductKeysExpanded) this.props.getKeys(this.state.product.id);\n }\n\n onProductSetsToggle(e) {\n e.stopPropagation();\n e.preventDefault();\n this.setState({\n isProductSetsExpanded: !this.state.isProductSetsExpanded,\n });\n if (!this.state.isProductSetsExpanded) this.props.getSets(this.state.product.id);\n }\n\n componentDidMount() {\n this.props.getProductDatalevels(this.state.product.id);\n let preset_product_id = localStorage.getItem(\"preset_product_id\");\n if (\n preset_product_id &&\n this.state.product.id &&\n preset_product_id === this.state.product.id.toString()\n ) {\n this.onExpandToggle();\n // localStorage.removeItem(\"preset_product_id\");\n }\n\n let preset_url_product_id = document.getElementById(\"preset_product_id\");\n preset_url_product_id = preset_url_product_id ? preset_url_product_id.innerHTML : null;\n let user_role = document.getElementById(\"user_role\");\n user_role = user_role.innerHTML;\n\n this.setState({\n role: user_role,\n preset_product_id: preset_product_id || null,\n preset_url_product_id: preset_url_product_id,\n voice : this.state.voice == 'NORMAL' ? 'NO-VOICE' : this.state.voice\n });\n\n let expandedProduct = localStorage.getItem(\"expandedProduct\");\n expandedProduct = expandedProduct ? JSON.parse(expandedProduct) : {};\n this.props.getOrders({ status: \"pending\" });\n if (this.state.product.id == expandedProduct.productId) {\n this.setState({\n isProductSetsExpanded: true,\n });\n\n this.props.toggleView({\n reducerKey: TOGGLE_PRODUCT_EXPAND,\n id: expandedProduct.productId,\n });\n }\n }\n\n handleProductState = (productState) => {\n let { product } = this.state;\n if (productState !== \"batch_process\")\n productState = productState && productState === \"edit\" ? \"freeze\" : \"edit\";\n // let formData = new FormData();\n // formData.append(\"product_state\", productState);\n let endpoint = ENDPOINTS.products.update;\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.updateProduct(product.id, url, method, {\n product_state: productState,\n });\n product.product_state = productState;\n this.setState({ product: product });\n if (productState == \"batch_process\") {\n alert(\"Your request is received, queued and will be serviced at the earliest\\nCheck your mail for Files Generation Completion...\");\n }\n\n let expandedProduct = {\n productId: product.id,\n };\n //localStorage.setItem(\"expandedProduct\", JSON.stringify(expandedProduct));\n\n this.props.toggleView({\n reducerKey: TOGGLE_PRODUCT_EXPAND,\n id: expandedProduct.productId,\n });\n };\n\n _handleDeleteProduct(e) {\n e.preventDefault();\n e.stopPropagation();\n if (confirm(\"Are you sure you want to delete the Product set along with data?\")) {\n let payload = {\n id: this.state.product.id,\n product_id: this.state.product.id,\n };\n let endpoint = ENDPOINTS[\"products\"][\"delete\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.deleteProduct(url, method, payload);\n } else {\n return;\n }\n }\n\n getCookie(cname) {\n let name = cname + \"=\";\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for(let i = 0; i {\n return [\n { label: \"SCHOOL\", value: \"SCHOOL\" },\n { label: \"COLLEGE\", value: \"COLLEGE\" },\n { label: \"UNIVERSITY\", value: \"UNIVERSITY\" },\n { label: \"PRE_SCHOOL\", value: \"PRE_SCHOOL\" },\n { label: \"PLAY_SCHOOL\", value: \"PLAY_SCHOOL\" },\n { label: \"INDIVIDUAL\", value: \"INDIVIDUAL\" },\n { label: \"STUDENT\", value: \"STUDENT\" },\n { label: \"ALUMNI\", value: \"ALUMNI\" },\n { label: \"TEACHER\", value: \"TEACHER\" },\n { label: \"CORPORATE\", value: \"CORPORATE\" },\n { label: \"DOCTORS-CLUB\", value: \"DOCTORS-CLUB\" },\n { label: \"SPORTS\", value: \"SPORTS\" },\n { label: \"BAR-ASSOCIATION\", value: \"BAR-ASSOCIATION\" },\n { label: \"MILITARY\", value: \"MILITARY\" },\n { label: \"NAVY\", value: \"NAVY\" },\n { label: \"NATURE-CLUB\", value: \"NATURE-CLUB\" },\n { label: \"WALLSTREET\", value: \"WALLSTREET\" },\n { label: \"MUSIC-CLUB\", value: \"MUSIC-CLUB\" },\n { label: \"AIRFORCE\", value: \"AIRFORCE\" },\n { label: \"GOVERNMENT\", value: \"GOVERNMENT\" },\n { label: \"OTHERS\", value: \"OTHERS\" },\n ];\n };\n\n getProductSubCategories = () => {\n return [\n { label: \"COMPOSITES\", value: \"COMPOSITES\" },\n { label: \"PICTURE_BOOKLET\", value: \"PICTURE_BOOKLET\" },\n { label: \"SPORTS_PICTURE_BOOKLET\", value: \"SPORTS_PICTURE_BOOKLET\" },\n { label: \"FOLDER\", value: \"FOLDER\" },\n { label: \"GRADUATION_FOLDER\", value: \"GRADUATION_FOLDER\" },\n { label: \"PORTRAIT\", value: \"PORTRAIT\" },\n { label: \"PASSPORT\", value: \"PASSPORT\" },\n { label: \"ID_CARD\", value: \"ID_CARD\" },\n { label: \"REPORT_CARD\", value: \"REPORT_CARD\" },\n { label: \"CERTIFICATES\", value: \"CERTIFICATES\" },\n { label: \"YEAR_BOOK\", value: \"YEAR_BOOK\" },\n { label: \"PAST_PRESENT\", value: \"PAST_PRESENT\" },\n { label: \"BUNDLE\", value: \"BUNDLE\" },\n { label: \"ALL_IN_ONE\", value: \"ALL_IN_ONE\" },\n { label: \"OTHER\", value: \"OTHER\" },\n ];\n };\n\n getVoiceOptions = () => {\n if (this.state.countryCode == 'IN') {\n return [\n { label: \"NO-VOICE\", value: \"NORMAL\" },\n { label: \"VOICE-30SEC - Additional ₹200 per Record\", value: \"VOICE-30SEC\"},\n { label: \"VOICE-15SEC - Additional ₹127 per Record\", value: \"VOICE-15SEC\"},\n ];\n \n }\n else {\n return [\n { label: \"NO-VOICE\", value: \"NORMAL\" },\n { label: \"VOICE-30SEC - Additional $4 per Record\", value: \"VOICE-30SEC\"},\n ];\n }\n };\n\n handleCancelLayout = (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n isCopyProductClicked: false,\n });\n };\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n handlePresetToggle = (e) => {\n this.setState({\n is_preset: !this.state.is_preset,\n category_id: this.state.is_preset ? this.state.category_id : \"\",\n });\n };\n\n getEditProductJSX = (isVisible) => {\n const product = this.state.product;\n const { name, is_preset, category, numpages, sub_category, expiry } = this.state;\n const style = {\n display: is_preset ? \"block\" : \"none\",\n };\n\n const productCategories = this.getProductCategories();\n const productSubCategories = this.getProductSubCategories();\n const voiceOptions = this.getVoiceOptions();\n\n if (isVisible) {\n return (\n {\n this.setState({\n isEditProductClicked: false,\n });\n }}\n >\n
    \n \n Edit Product\n \n \n {\n this.setState({ [name]: value });\n }}\n />\n \n {this.state.role === \"admin\" && (\n \n )}\n {\n this.setState({ [name]: value });\n }}\n >\n \n {productCategories.map((category) => {\n return (\n \n );\n })}\n \n {\n this.setState({ [name]: value });\n }}\n >\n \n {productSubCategories.map((scategory) => {\n return (\n \n );\n })}\n \n {\n if (value != this.state.voice) {\n if (this.state.voice!='NO-VOICE') {\n if (value == 'NORMAL' || value == 'VOICE-15SEC') {\n let alertText=\"*** WARNING ***\\nChanging Audio options will delete any and ALL of Audio Recordings for the Product\\nPlease confirm your choice carefully\"\n if (confirm(alertText)== false)\n return\n \n }\n }\n }\n this.setState({ [name]: value }, ()=>{value=this.state.voice});\n }}\n value={this.state.voice}\n >\n \n {voiceOptions.map((vo) => {\n return (\n \n );\n })}\n \n {this.state.role === \"admin\" && (\n {\n this.setState({ [name]: value });\n }}\n />\n )}\n \n \n \n {/* {\n this.setState({\n isEditProductClicked: false,\n });\n }}\n >\n Cancel\n */}\n \n
    \n \n );\n }\n };\n\n handleEditProduct = (e) => {\n // this.se\n e.preventDefault();\n e.stopPropagation();\n const { product } = this.state;\n let endpoint = ENDPOINTS.products.update;\n let url = endpoint.uri;\n let method = endpoint.method;\n\n let formData = formDataToJSON(new FormData(e.target));\n formData.name = formData.name.trim()\n formData.is_preset = this.state.is_preset;\n formData.prtype = \n this.state.voice == 'NO-VOICE' ? 'NORMAL' : this.state.voice;\n this.props.updateProduct(product.id, url, method, formData);\n this.setState({\n isEditProductClicked: false,\n });\n };\n\n render() {\n const product = this.state.product;\n const role = product.product_state == \"edit\" ? this.state.role : \"viewer\";\n const psets = product.setnos;\n const datalevels = this.state.product_datalevels;\n const collapse = this.state.collapse;\n const isEdit = this.state.isEdit;\n const dlExpand = this.state.dlExpand;\n const preset_url_product_id = this.state.preset_url_product_id;\n var datalevelsDOM = null;\n const { view_user, view_and_pay_user } = this.state.product;\n\n let user_role = document.getElementById(\"user_role\");\n user_role = user_role.innerHTML;\n\n const cloneProductJSX = (\n this._handleCloneProduct(e, product.id, e.target.name.value)}\n >\n
    \n {\n this.setState({ name: value });\n }}\n className=\"form-control dlname\"\n placeholder=\"Enter New Product Name\"\n required=\"required\"\n defaultValue={null}\n />\n
    \n {psets &&\n Object.keys(psets).map((pset) => {\n return (\n
    \n \n {\n let setnos = this.state.cloneable_sets;\n if (checked) {\n setnos.push(value);\n } else {\n setnos.pop(value);\n }\n this.setState({ cloneable_sets: setnos });\n }}\n value={psets[pset]}\n className=\"form-control dlname override_checkbox\"\n />\n
    \n );\n })}\n \n this.handleCancelLayout(e, product.id)}\n >\n Cancel\n \n \n );\n\n if (collapse == true) {\n let orders = product.order || [];\n let isAnyPaidOrders = orders.some((o) => o.status == \"paid\");\n datalevelsDOM = (\n
      \n
    • \n \n {this.getExpandJSX(dlExpand)} Data levels & Attributes\n \n
        \n {dlExpand &&\n datalevels != null &&\n datalevels.length > 0 &&\n datalevels.map((datalevel) => {\n return (\n {\n this.setState(\n {\n dlExpand: true,\n },\n () => {\n this.props.getProductDatalevels(this.state.product.id);\n }\n );\n }}\n />\n );\n })}\n \n {dlExpand && (\n
      • \n Create New Data level\n
      • \n )}\n \n
      \n
    • \n
    • \n this.onProductKeysToggle(e)}>\n {this.getExpandJSX(this.state.isProductKeysExpanded)} Product Set Keys\n \n {this.state.isProductKeysExpanded && (\n \n )}\n
    • \n {/* \n \n */}\n \n
    • \n \n {this.getExpandJSX(this.state.isProductSetsExpanded)} Product Sets\n \n {this.state.isProductSetsExpanded && (\n \n )}\n
    • \n\n \n {product.product_state === \"edit\" && (\n
    • \n {\n e.stopPropagation();\n this.setState({\n isDataUploadExpanded: !this.state.isDataUploadExpanded,\n });\n }}\n >\n {this.getExpandJSX(this.state.isDataUploadExpanded)} Data{\" \"}\n \n {this.state.isDataUploadExpanded && (\n \n )}\n
    • \n )}\n {/* {product.product_state === \"edit\" && (\n
    • \n {\n e.stopPropagation();\n this.setState({\n isImagesUploadExpanded: !this.state\n .isImagesUploadExpanded,\n });\n }}\n >\n {this.getExpandJSX(this.state.isImagesUploadExpanded)} Images{\" \"}\n \n {this.state.isImagesUploadExpanded && (\n \n )}\n
    • \n )} */}\n {product.product_state === \"edit\" && !preset_url_product_id && (\n \n )}\n \n \n \n {/*console.log(\n [preset_url_product_id ? role : user_role, product.product_role],\n \"auth roles::::\"\n )*/}\n {(product.product_state === \"edit\" || product.product_state === \"completed\") && (\n \n )}\n{/* Bala */}\n {product.product_state === \"completed\" && (\n \n \n )}\n {product.product_state === \"completed\" && (\n \n )}\n {/*
    • \n \n Orders\n \n
    • */}\n {(product.product_state == \"edit\" ||\n product.product_state == \"freeze\" ||\n product.product_state == \"completed\") && (\n
    • \n {\n this.handleProductState(product.product_state);\n }}\n >\n {this.state.product.product_state == \"freeze\" ||\n this.state.product.product_state == \"completed\"\n ? \"Unfreeze Product\"\n : \"Freeze Product\"}\n \n
    • \n )}\n {product.product_state == \"freeze\" && (\n
    • \n {\n this.handleProductState(\"batch_process\");\n }}\n >\n Prepare Product Files for the Product\n \n
    • \n )}\n {product.product_state == \"batch_process\" && (\n
    • \n Batch process in progress\n
    • \n )}\n \n {!this.state.is_preset && product.product_state == \"completed\" && (\n \n {/* */}\n \n \n )}\n {product.product_state == \"completed\" &&\n product.product_role != \"viewer\" &&\n isAnyPaidOrders && (\n \n \n \n )}\n {product.product_state == \"completed\" && isAnyPaidOrders && (\n \n \n \n )}\n
    \n );\n }\n const readOnly = (\n \n \n {this.getExpandJSX(collapse)} {product.name} \n \n \n new Date().getTime() + 3 * 86400000 ? \"green\" : \"red\"}} onClick={this.onExpandToggle}>\n {new Date(product.expiry) > new Date().getTime() + 3 * 86400000 ? \"- expires on ( \" : \"- expires soon on ( \"}\n {product.expiry ? new Date(product.expiry).toLocaleDateString() : \"NOT SET\"}\n {\" )\"}\n \n \n {this.state.isCopyProductClicked && cloneProductJSX}\n\n {!this.state.isCopyProductClicked && (\n {\n this._handleCloneProduct(e, product.id);\n }}\n // confirm=\"Are you sure you want to delete the layout?\"\n >\n \n \n )}\n \n {!this.state.isEditProductClicked && (\n {\n e.stopPropagation();\n e.preventDefault();\n this.setState({\n isEditProductClicked: !this.state.isEditProductClicked,\n });\n }}\n >\n \n \n )}\n {\n this._handleDeleteProduct(e);\n }}\n >\n \n \n \n {this.state.isEditProductClicked && this.getEditProductJSX(this.state.isEditProductClicked)}\n \n );\n const editOnly = (\n
    \n
    \n \n
    \n \n
    \n );\n if (product != null && (!preset_url_product_id || preset_url_product_id == product.id)) {\n // return
  • {isEdit ? editOnly : readOnly}\n // { isEdit ? null : Edit }\n // {datalevelsDOM}\n //
  • ;\n return (\n
  • \n {isEdit ? editOnly : readOnly}\n {datalevelsDOM}\n
  • \n );\n } else {\n return null;\n }\n }\n}\n\nProduct.propTypes = {\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n collapse: PropTypes.bool.isRequired,\n product_datalevels: PropTypes.array,\n};\n\nexport default Product;\n","import React, { useState } from 'react';\nimport ProductMynavbar from './ProductNavbar';\nexport class ProductComposzNavbar extends React.Component {\n \n constructor(props) {\n super(props)\n this.state = {\n windowWidth: window.innerWidth,\n windowHeight: window.innerHeight\n };\n document.cookie = \"cartCounter=25;\";\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.handleResize);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.handleResize);\n}\n\n handleResize = e => {\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n \n this.setState(prevState => {\n return {\n windowWidth,\n windowHeight,\n };\n });\n };\n \n Fnavbar = () => {\n let Usernavbar = ProductMynavbar(this.props.user_id, this.props.user_name, this.props.user_email, this.props.has_view_products)\n return Usernavbar\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nexport default ProductComposzNavbar\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ProductDLAttrContainer from \"../containers/ProductDLAttrContainer\";\nimport { FormGroup, ControlLabel, FormControl, Button } from \"react-bootstrap\";\nimport { TOGGLE_DATALEVEL_EXPAND, TOGGLE, TOGGLE_EDIT_DATALEVEL } from \"../actions\";\nimport { formDataToJSON } from \"../adukku_utils/array\";\nimport { authorized, Authorized } from \"../adukku_utils/authorizeUser\";\n\nclass ProductDL extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n product_datalevel: props.product_datalevel,\n collapse: props.collapse,\n isEdit: props.isEdit,\n role: props.role,\n product_role: props.product_role,\n };\n this.onExpandToggle = this.onExpandToggle.bind(this);\n // this.onEdit = this.onEdit.bind(this);\n this.onDelete = this.onDelete.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.onCreateCancel = this.onCreateCancel.bind(this);\n this.newAttribute = this.newAttribute.bind(this);\n }\n\n onExpandToggle(e) {\n e.stopPropagation();\n e.preventDefault();\n this.props.toggleView({\n reducerKey: TOGGLE_DATALEVEL_EXPAND,\n id: this.state.product_datalevel.id,\n });\n }\n onEdit(e) {\n e.stopPropagation();\n e.preventDefault();\n this.props.toggleView({\n reducerKey: TOGGLE_EDIT_DATALEVEL,\n id: this.state.product_datalevel.id,\n });\n }\n onDelete(e) {\n e.stopPropagation();\n e.preventDefault();\n if (confirm(\"Are you sure ?\")) {\n this.props.deleteProductDataLevel(this.state.product_datalevel.id);\n }\n }\n onCreateCancel(e) {\n e.stopPropagation();\n e.preventDefault();\n if (confirm(\"Are you sure ?\")) {\n this.props.deleteProductDataLevel(this.state.product_datalevel.id, false);\n }\n }\n handleSubmit(e) {\n e.stopPropagation();\n e.preventDefault();\n let formData = formDataToJSON(new FormData(e.target));\n formData.dlname = formData.dlname.trim()\n let datalevel = this.state.product_datalevel;\n datalevel.dlname = formData.dlname;\n datalevel.dltype = formData.dltype;\n datalevel.id = datalevel.product_id + \"/datalevels/\" + datalevel.dlname;\n this.props.createProductDatalevel(datalevel.product_id, datalevel.dlname, datalevel.dltype);\n this.props.setExpand();\n }\n\n onInputClick(e) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n newAttribute(e) {\n e.stopPropagation();\n e.preventDefault();\n let dl = this.state.product_datalevel;\n let payload = {\n product_id: dl.product_id,\n dlname: dl.dlname,\n name: \"ATTR\" + dl.attributes.length,\n type: \"text\",\n };\n payload[\"id\"] =\n payload.product_id + \"/datalevels/\" + payload.dlname + \"/attributes/\" + payload.name;\n this.props.newDatalevelAttribute(dl.id, payload);\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const { product_role, role } = this.state;\n const datalevel = this.state.product_datalevel;\n const attributes = datalevel.attributes;\n const collapse = this.state.collapse;\n let attributesDOM = null;\n const isMain = datalevel.dltype == \"main\";\n let label = datalevel.dlname;\n if (isMain) {\n label = label + \"-- main\";\n }\n let readOnlyDOM = [\n \n {this.getExpandJSX(collapse)} {label}\n ,\n\n \n \n \n \n ,\n ];\n const isEdit = !this.props.isEdit ? false : this.state.isEdit;\n const editOnlyDOM = (\n
    \n
    \n \n
    \n \n \n {[\"\", \"main\", \"other\"].map((type, i) => {\n return (\n \n );\n })}\n \n \n \n \n Cancel\n \n
    \n );\n\n if (collapse == true) {\n attributesDOM = (\n \n );\n }\n if (datalevel == null) {\n return null;\n }\n return (\n
  • \n {!isEdit && readOnlyDOM}\n {isEdit && editOnlyDOM}\n {attributesDOM}\n
  • \n );\n }\n}\n\nProductDL.propTypes = {\n product: PropTypes.shape({\n dlname: PropTypes.string.isRequired,\n product_id: PropTypes.number.isRequired,\n collapse: PropTypes.bool.isRequired,\n }),\n attributes: PropTypes.array,\n};\n\nexport default ProductDL;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { TOGGLE_EDIT_DATALEVEL_ATTRIBUTE } from \"../actions\";\nimport { formDataToJSON } from \"../adukku_utils/array\";\nimport { FormGroup, ControlLabel, FormControl, Button } from \"react-bootstrap\";\nimport { authorized, Authorized } from \"../adukku_utils/authorizeUser\";\n\nclass ProductDLAttr extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n attribute: props.attribute,\n isEdit: props.isEdit,\n role: props.role,\n product_role: props.product_role,\n };\n this.onDelete = this.onDelete.bind(this);\n this.toggleEdit = this.toggleEdit.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n onDelete(e) {\n e.stopPropagation();\n e.preventDefault();\n if (confirm(\"Are you sure ?\")) {\n this.props.deleteDataLevelAttribute(this.state.attribute.id);\n }\n }\n\n toggleEdit(e) {\n e.stopPropagation();\n e.preventDefault();\n this.props.deleteDataLevelAttribute(this.state.attribute.id, false);\n // this.setState(Object.assign({}, this.state, {isEdit: !this.state.isEdit}))\n }\n\n handleSubmit(e) {\n e.stopPropagation();\n e.preventDefault();\n let formData = formDataToJSON(new FormData(e.target));\n formData.name = formData.name.trim()\n let attribute = Object.assign({}, {}, this.state.attribute);\n let product_id = attribute.product_id;\n let dlname = attribute.dlname;\n attribute.name = formData.name;\n attribute.type = formData.type;\n let dlId = product_id + \"/datalevels/\" + dlname;\n this.props.createDataLevelAttribute(dlId, attribute); // : this.props.updateDataLevelAttribute(attribute)\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n render() {\n const { role, product_role } = this.state;\n const attr = this.state.attribute;\n const isEdit = this.state.isEdit;\n if (attr == null) {\n return null;\n }\n const readOnly = (\n \n {attr.name}\n {attr.type}\n {/* Edit*/}\n \n \n \n \n \n \n \n \n );\n const editOnly = (\n \n \n
    \n
    \n \n
    \n \n \n {[\"\", \"IMAGE\", \"TEXT\"].map((type, i) => {\n return (\n \n );\n })}\n \n \n \n \n Cancel\n \n
    \n \n \n );\n\n return (\n \n {isEdit ? editOnly : readOnly}\n
    \n );\n }\n}\n\nProductDLAttr.propTypes = {\n attribute: PropTypes.shape({\n product_id: PropTypes.number.isRequired,\n dlname: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n }),\n};\n\nexport default ProductDLAttr;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ENDPOINTS } from \"../constants/endpoints\";\nimport EditProductDataContainer from \"../containers/EditProductDataContainer\";\n\nexport default class ProductData extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isUploading: false,\n UploadinDataLevel: \"\",\n product: props.product,\n product_datalevels: props.product_datalevels,\n uploadedFileNames: {}\n };\n this.handleSubmit = this.handleSubmit.bind(this);\n this.fileInput = React.createRef();\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.product !== this.state.product) {\n this.setState({ product: nextProps.product });\n }\n if (nextProps.product_datalevels !== this.state.product_datalevels) {\n this.setState({ product_datalevels: nextProps.product_datalevels });\n }\n }\n handleUploadFile = (e, index) => {\n let temp = {};\n temp[index] = e.target.files[0].name;\n this.setState({ uploadedFileNames: { ...this.state.uploadedFileNames, ...temp } });\n }\n\n handleSubmit(e, dlname) {\n e.preventDefault();\n this.setState({ isUploading: true, UploadinDataLevel: dlname, });\n // alert(\n // `Selected file - ${\n // this.fileInput.current.files[0].name\n // }`\n // );\n let $f = $(e.target);\n const product = this.state.product;\n const that = this;\n let file = $f.find(\"input:file\")[0].files[0];\n let template_url = ENDPOINTS.csv.upload;\n template_url = template_url\n .replace(\":product_id\", product.id)\n .replace(\":dlname\", dlname);\n let f2 = new FormData(e.target);\n f2.append(\"file\", file);\n let $ajax = $.ajax({\n url: template_url,\n type: \"POST\",\n method: \"POST\",\n data: f2,\n processData: false,\n contentType: false\n });\n $ajax.done(function () {\n that.setState({ isUploading: false, UploadinDataLevel: \"\", });\n alert(\"Successfully, uploaded file\");\n });\n $ajax.fail(function (jqXHR, textStatus, errorThrown) {\n that.setState({ isUploading: false, UploadinDataLevel: \"\", });\n if (jqXHR && jqXHR.responseText) alert(jqXHR.responseText)\n else {\n if (jqXHR.status == 406) {\n alert(\"File size is in excess of 5MB\\n\\nPlease Upload file again with size less than 5MB\");\n }\n else\n alert(\"An internal server error occured\");\n }\n });\n $ajax.always(function () {\n $f.find(\"input:file\").val(\"\");\n });\n }\n render() {\n const product = this.state.product;\n const datalevels = this.state.product_datalevels;\n let template_url = ENDPOINTS.csv.download;\n template_url = template_url.replace(\":product_id\", product.id);\n if (datalevels == null || product == null) {\n return (\n
      \n
    • \n Internal error occured\n
    • \n
    \n );\n }\n return (\n
      \n {datalevels.map((p, i) => {\n return (\n
    • \n \n \n \n \n \n \n \n \n \n {/* \n \n \n */}\n \n
      {p.dlname}\n \n\n \n \n \n \n \n {(this.state.isUploading && this.state.UploadinDataLevel == p.dlname) ?
      Uploading Data...
      : \n {\n this.handleSubmit(e, p.dlname);\n }}\n encType=\"multipart/form-data\"\n >\n \n \n \n }\n
      \n {this.state.uploadedFileNames[p.dlname]}\n
      {p.dlname}\n \n
      \n
    • \n );\n })}\n
    \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ENDPOINTS } from \"../constants/endpoints\";\nexport default class ProductImageUpload extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n product: props.product,\n product_datalevels: props.product_datalevels,\n uploadedImages: {},\n uploadedImageNames: {},\n };\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.product !== this.state.product) {\n this.setState({ product: nextProps.product });\n }\n if (nextProps.product_datalevels !== this.state.product_datalevels) {\n this.setState({ product_datalevels: nextProps.product_datalevels });\n }\n }\n\n componentDidMount() {\n const { product_datalevels } = this.state;\n if (product_datalevels && product_datalevels.length > 0) {\n let uploadedImages = {};\n let uploadedImageNames = {};\n product_datalevels.map((datalevel) => {\n uploadedImages[datalevel.dlname] = [];\n uploadedImageNames[datalevel.dlname] = [];\n });\n this.setState({\n uploadedImages,\n uploadedImageNames,\n });\n }\n }\n\n uploadImages = (dlname) => {\n const that = this;\n const product = this.state.product;\n const uploadedImages = this.state.uploadedImages;\n let template_url = ENDPOINTS.images.upload;\n template_url = template_url\n .replace(\":product_id\", product.id)\n .replace(\":dlname\", dlname);\n let formData = new FormData();\n for (let index = 0; index < uploadedImages[dlname].length; index++) {\n formData.append(\"files[]\", uploadedImages[dlname][index]);\n }\n let $ajax = $.ajax({\n url: template_url,\n type: \"POST\",\n method: \"POST\",\n data: formData,\n processData: false,\n contentType: false,\n });\n $ajax.done(function () {\n alert(\"Successfully, uploaded file\");\n });\n $ajax.fail(function (jqXHR, textStatus, errorThrown) {\n alert(\"I am called from here too!\");\n if (jqXHR.status == 406) {\n alert(\"File size is in excess of 5MB\\n\\nPlease Upload file again with size less than 5MB\");\n }\n else\n alert(\"An internal server error occured\");\n });\n $ajax.always(function () {\n // $f.find(\"input:file\").val(\"\");\n uploadedImages[dlname] = [];\n that.setState({ uploadedImages: uploadedImages });\n });\n };\n\n handleSubmit(e, dlname) {\n e.preventDefault();\n const product = this.state.product;\n let uri = ENDPOINTS.csv.uploaded_data;\n let uploadedImages = this.state.uploadedImages;\n let uploadedImageNames = this.state.uploadedImageNames;\n let imageNamesMatched = false;\n uri = uri.replace(\":product_id\", product.id).replace(\":dlname\", dlname);\n this.uploadImages(dlname);\n // return fetch(uri, {\n // method: \"GET\",\n // headers: {\n // \"content-type\": \"application/json\"\n // }\n // })\n // .then(response => response.json())\n // .then(response => {\n // let image_attribute_name =\n // response.image_attributes && response.image_attributes.name;\n // if (\n // image_attribute_name === null ||\n // image_attribute_name === undefined\n // ) {\n // return alert(\"Add Data for \" + dlname);\n // }\n // let studentImageNames = [];\n // if (\n // response.upload_data &&\n // response.upload_data.length === uploadedImages[dlname].length\n // ) {\n // response.upload_data.forEach(item => {\n // if (item.data[image_attribute_name]) {\n // studentImageNames.push(item.data[image_attribute_name]);\n // }\n // });\n // for (\n // let index = 0;\n // index < uploadedImageNames[dlname].length;\n // index++\n // ) {\n // const uploadedImageName = uploadedImageNames[dlname][index];\n // if (studentImageNames.includes(uploadedImageName)) {\n // imageNamesMatched = true;\n // }\n // }\n // if (imageNamesMatched) this.uploadImages(dlname);\n // }\n // else {\n // return alert(\"no of students doesn't match no. of Images uploaded\");\n // }\n // return response;\n // });\n }\n\n fileSelectedHandler = (e, dlname) => {\n let uploadedImages = this.state.uploadedImages;\n let uploadedImageNames = this.state.uploadedImageNames;\n let files = e.target.files;\n for (let index = 0; index < files.length; index++) {\n let file_size = Math.floor(files[index].size / (1024 * 1024));\n if (file_size > 4) {\n // e.target.files = null;\n alert(\n \"file size should be less than 4MB, Skippping File:\" +\n files[index].name\n );\n } else {\n uploadedImages[dlname].push(files[index]);\n uploadedImageNames[dlname].push(files[index].name);\n }\n }\n this.setState({\n uploadedImages: uploadedImages,\n uploadedImageNames: uploadedImageNames,\n });\n };\n\n removeImage = (e, dlname) => {\n console.log(e.target);\n let imageName = e.target.id;\n let { uploadedImages, uploadedImageNames } = this.state;\n uploadedImages[dlname] = uploadedImages[dlname].filter(\n (fag) => fag.name !== imageName\n );\n uploadedImageNames[dlname] = uploadedImageNames[dlname].filter(\n (fag) => fag.name !== imageName\n );\n this.setState({\n uploadedImages: uploadedImages,\n uploadedImageNames: uploadedImageNames,\n });\n };\n\n getUploadedImages = (dlname) => {\n const uploadedImages = this.state.uploadedImages;\n let imageList = [];\n if (uploadedImages && uploadedImages[dlname])\n for (let index = 0; index < uploadedImages[dlname].length; index++) {\n const element = uploadedImages[dlname][index];\n imageList.push(\n
    \n {element.name}\n \n {\n this.removeImage(e, dlname);\n }}\n style={{ width: \"18px\", marginLeft: \"20px\", cursor: \"pointer\" }}\n />\n \n
    \n );\n }\n return imageList;\n };\n\n render() {\n const product = this.state.product;\n const datalevels = this.state.product_datalevels;\n let template_url = ENDPOINTS.csv.download;\n\n template_url = template_url.replace(\":product_id\", product.id);\n if (datalevels == null || product == null) {\n return (\n
      \n
    • \n Internal error occured\n
    • \n
    \n );\n }\n return (\n
      \n {datalevels.map((p, i) => {\n return (\n
    • \n \n \n \n \n \n \n \n \n \n \n \n
      {p.dlname}\n {\n this.handleSubmit(e, p.dlname);\n }}\n enctype=\"multipart/form-data\"\n style={{\n display: \"flex\",\n marginBottom: 0,\n paddingLeft: \"10px\",\n }}\n >\n {\n this.fileSelectedHandler(e, p.dlname);\n }}\n accept=\"image/x-png,image/jpeg\"\n style={{ display: \"none\" }}\n id={\"upload_images\" + p.dlname}\n />\n \n

      \n Add images\n \n \n \n

      \n \n \n \n
      Uploaded Image files:{this.getUploadedImages(p.dlname)}
      \n
    • \n );\n })}\n
    \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport AddLayoutContainer from \"../containers/layouts/AddLayoutContainer\";\nimport LayoutListContainer from \"../containers/layouts/LayoutListContainer\";\n\nexport default class ProductLayoutList extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this.toggleExpand = this.toggleExpand.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n // componentWillMount() {\n // let user_role = document.getElementById(\"user_role\");\n // user_role = user_role.innerHTML;\n // this.setState({ role: user_role });\n // }\n\n componentDidMount() {\n let expandedProduct = localStorage.getItem(\"expandedProduct\");\n expandedProduct = expandedProduct ? JSON.parse(expandedProduct) : {};\n\n if (\n expandedProduct.layoutId &&\n expandedProduct.productId == this.state.product.id &&\n !expandedProduct.isSet\n ) {\n this.setState({\n expand: true,\n });\n }\n }\n\n toggleExpand(e) {\n e.stopPropagation();\n this.setState(\n Object.assign({}, this.state, { expand: !this.state.expand })\n );\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const { role } = this.state;\n const isExpand = this.state.expand;\n return (\n
  • \n \n {this.getExpandJSX(isExpand)} Layouts\n \n {isExpand && (\n \n )}\n {(role === \"admin\" || role === \"owner\") && isExpand && (\n \n )}\n
  • \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ProductContainer from \"../containers/ProductContainer\";\nimport AddProductContainer from \"../containers/AddProductContainer\";\nimport FileMangerContainer from \"../containers/FileManagerContainer\";\nimport UserStorageContainer from \"../containers/UserStorageContainer\";\nimport AdminContainer from \"../containers/AdminContainer\";\nimport { ENDPOINTS } from \"../constants/endpoints\";\n\nexport default class ProductList extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n products: [],\n };\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.products !== this.state.products) {\n this.setState({ products: nextProps.products });\n }\n }\n UNSAFE_componentWillMount() {\n let user_role = document.getElementById(\"user_role\");\n user_role = user_role.innerHTML;\n let preset_product_id = document.getElementById(\"preset_product_id\");\n preset_product_id = preset_product_id ? preset_product_id.innerHTML : null;\n user_role = preset_product_id ? \"preset\" : user_role;\n localStorage.setItem(\"preset_product_id\", preset_product_id);\n this.setState({\n role: user_role,\n preset_product_id: preset_product_id || null,\n });\n if (preset_product_id) {\n this.props.getProducts({ type: \"presets\" });\n } else this.props.getProducts();\n }\n\n resetDefaults = (e) => {\n e.stopPropagation();\n e.preventDefault();\n let uri = ENDPOINTS.user_storages.update_defaults.uri;\n let that = this;\n let formData = new FormData();\n formData.append(\"type\", \"reset_defults\");\n return fetch(uri, {\n method: \"PUT\",\n body: formData,\n })\n .then((response) => response.json())\n .then((response) => {\n if (response.data == \"success\") alert(\"Space reset successful\");\n });\n };\n\n render() {\n const { role, preset_product_id } = this.state;\n return (\n
    \n {\" \"}\n \n {preset_product_id ? \"Presets\" : \"My Products\"}\n \n
      \n {/* {this.state.products.map((p, i) => (\n \n ))} */}\n {this.state.products.map((p, i) => {\n if (p.is_archived) {\n return null;\n } else {\n return (\n \n );\n }\n })}\n\n {(role === \"admin\" || role === \"owner\") && (\n \n )}\n {!preset_product_id && (\n \n \n \n {role === \"admin\" && (\n \n )}\n {role === \"admin\" && (\n
    • \n {\"Reset Defaults\"}\n
    • \n )}\n
      \n )}\n
    \n
    \n );\n }\n}\nProductList.propTypes = {\n products: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n name: PropTypes.string,\n collapse: PropTypes.bool,\n product_datalevels: PropTypes.array,\n })\n ),\n};\n","import React, { useState } from 'react';\nimport { Navbar, Nav, NavItem, MenuItem, NavDropdown, Dropdown } from 'react-bootstrap';\nimport logo from 'images/Composz-logo-white-trans.png';\nimport logoBlack from 'images/Composz-logo-black-trans.png';\nimport profile from 'images/blankProfile.png';\nimport CartState from \"../context/cart/CartState\";\nimport CartContext from \"../context/cart/CartContext\";\nimport { useContext } from \"react\";\nimport { Container } from 'react-bootstrap/lib/Tab';\n\n\nfunction ProductMynavbar (user_id, user_name, user_email, has_view_products) {\n\n // Extract itemscount from CartContext\n const { cartItems } = useContext(CartContext);\n\n const [show3, setShow3] = useState(false);\n const showDropdown3 = (e)=>{\n setShow3(true);\n }\n const hideDropdown3 = e => {\n setShow3(false);\n }\n \n const [show2, setShow2] = useState(false);\n const showDropdown2 = (e)=>{\n setShow2(true);\n }\n const hideDropdown2 = e => {\n setShow2(false);\n }\n \n const [show1, setShow1] = useState(false);\n const showDropdown1 = (e)=>{\n setShow1(true);\n setShow(false);\n }\n const hideDropdown1 = e => {\n setShow1(false);\n }\n \n const [show, setShow] = useState(false);\n const showDropdown = (e)=>{\n setShow(true);\n }\n const hideDropdown = e => {\n setShow(false);\n }\n const toggleShow = e => {\n setShow(!show)\n setShow1(false)\n setShow2(false)\n setShow3(false)\n }\n const toggleShow1 = e => {\n setShow1(!show1)\n setShow(false)\n setShow2(false)\n setShow3(false)\n }\n const toggleShow2 = e => {\n setShow2(!show2)\n setShow(false)\n setShow1(false)\n setShow3(false)\n }\n const toggleShow3 = e => {\n setShow3(!show3)\n setShow(false)\n setShow1(false)\n setShow2(false)\n }\n\n const handleToggle = e => {\n ;; // do nothing\n } \n \n\n return (\n window.innerWidth > 450 ?\n \n \n \n \n {user_id!=-1?\n \n :\n \n }\n {user_id!=-1?\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\nexport default ProductMynavbar\n","import React from \"react\";\nimport { Modal } from \"react-bootstrap\";\n\n//import StoragePayment from \"./StoragePayment\";\nimport CCStoragePayment from \"./CCStoragePayment\";\n\nexport default class CCPaymentModal extends React.Component {\n \n render() {\n //const { no_of_gb, storage_unit, convenienceCharges } = this.props.fields;\n const { no_of_gb, storage_unit } = this.props.fields;\n const convenienceCharges = 10;\n const gst = 0.18;\n\n return (\n 0}\n onHide={(e) => {\n this.props.resetStorage();\n }}\n >\n \n Purchase Storage\n \n \n
      \n
    • \n \n Total Price for {no_of_gb} GB: ₹{no_of_gb * 75}\n \n
    • \n
    • \n \n Convenience Charges : ₹\n {parseFloat(no_of_gb * convenienceCharges).toFixed(2)}\n \n
    • \n
    • \n \n GST 18% : ₹\n {parseFloat((no_of_gb * 75 + no_of_gb * convenienceCharges) * gst).toFixed(2)}\n \n
    • \n
    • \n Grand Total: ₹ {Math.round(((no_of_gb * 75 + no_of_gb * convenienceCharges))+(no_of_gb * 75 + no_of_gb * convenienceCharges) * gst).toFixed(2)}\n
    • \n
    \n \n
    \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport { ENDPOINTS } from \"../../constants/endpoints\";\n\nclass CCStoragePayment extends Component {\n constructor(props) {\n super(props);\n this.state = { no_of_gb: 1, ...props };\n }\n UNSAFE_componentWillReceiveProps(nextProps) {}\n\n \n componentDidMount() {\n // uncomment below line to generate a image in the background\n // this.props.generateImage(this.state.product_id, this.state.setno);\n }\n\n gst = 0.18;\n storage_amount = this.props.no_of_gb * 75 + this.props.no_of_gb * 10;\n gst_amount = this.storage_amount * this.gst;\n amount = Math.round(this.storage_amount + this.gst_amount).toFixed(2);\n\n render() {\n \n const style = {\n color: \"green\"\n };\n\n const style3 = {\n color: \"white\",\n fontSize: 17,\n background: \"green\"\n };\n\n return (\n
    \n
    \n \n \n \n
    \n
    \n );\n }\n}\n\nexport default CCStoragePayment;\n","import React from \"react\";\nimport { Modal } from \"react-bootstrap\";\n\nimport StoragePayment from \"./StoragePayment\";\n\nexport default class PaymentModal extends React.Component {\n render() {\n const { no_of_gb, storage_unit, convenienceCharges } = this.props.fields;\n return (\n 0}\n onHide={(e) => {\n this.props.resetStorage();\n }}\n >\n \n Invoice\n \n \n
      \n
    • \n \n Total Price for {no_of_gb} GB: ${no_of_gb}\n \n
    • \n
    • \n \n Convenience Charges ({convenienceCharges * 100}%) : $\n {parseFloat(no_of_gb * convenienceCharges).toFixed(2)}\n \n
    • \n
    • \n Grand Total: $ {parseFloat(no_of_gb + no_of_gb * convenienceCharges)}\n
    • \n
    \n \n
    \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport { ENDPOINTS } from \"../../constants/endpoints\";\n\nclass StoragePayment extends Component {\n constructor(props) {\n super(props);\n this.state = { no_of_gb: 1, ...props };\n }\n UNSAFE_componentWillReceiveProps(nextProps) {}\n\n componentDidMount() {\n // uncomment below line to generate a image in the background\n // this.props.generateImage(this.state.product_id, this.state.setno);\n }\n\n createOrder = (data, actions) => {\n if (this.state.pg_order_id) return this.state.pg_order_id;\n const payload = { no_of_gb: this.props.no_of_gb };\n let uri = ENDPOINTS.user_storages.create.uri;\n return fetch(uri, {\n method: ENDPOINTS.user_storages.create.method,\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(payload),\n })\n .then((response) => response.json())\n .then((response) => {\n this.setState({ pg_order_id: response.pg_order_id });\n return response.pg_order_id;\n });\n };\n\n onApprove = (data, actions) => {\n localStorage.setItem(\"isStoragePaid\", \"true\");\n let uri = ENDPOINTS.user_storages.capture.uri;\n let storage_unit = this.props.storage_unit;\n return fetch(uri, {\n method: ENDPOINTS.user_storages.capture.method,\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({\n paypal_order_id: data.orderID,\n storage_unit: storage_unit,\n }),\n })\n .then(function (res) {\n return res.json();\n })\n .then(function (data) {\n alert(\"payment done successfully\");\n window.location.reload();\n return data.pg_order_id;\n });\n };\n\n onSuccess = (details, data) => {\n alert(\"payment done successfully\");\n };\n\n onCancel = (data, actions) => {\n alert(\"Payment cancelled\");\n };\n\n onError = (data, actions) => {\n localStorage.removeItem(\"isStoragePaid\", \"true\");\n alert(\"Something went wrong please try again later\");\n };\n\n render() {\n const PaypalButton = window.paypal.Buttons.driver(\"react\", {\n React,\n ReactDOM,\n });\n return (\n this.onApprove(e)}\n onSuccess={this.onSuccess}\n onError={this.onError}\n onCancel={this.onCancel}\n // style={style}\n />\n );\n }\n}\n\nexport default StoragePayment;\n","import React from \"react\";\nimport { Form, Col, Row, Modal, Button } from \"react-bootstrap\";\n\nimport html2canvas from \"html2canvas\";\nimport jsPDF from \"jspdf\";\n\nimport { FieldGroup } from \"../bootstrap/Forms.FieldGroup\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport ThumbnailPreview from \"../layouts/ThumbnailPreview\";\nimport PaymentModal from \"./PaymentModal\";\nimport CCPaymentModal from \"./CCPaymentModal\";\nimport { formatCurrency } from \"../../adukku_utils/formatCurrency\";\n\nexport default class FileManager extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n no_of_gb: 0,\n overlay: props.overlay || { visible: false },\n is_preset_display: false,\n categories: props.categories,\n role: null,\n isFileManagerOpen: false,\n folders: [],\n user_products: {},\n folderHierarchy: {},\n basePath: \"\",\n show: false,\n currentFile: {},\n uploadedImages: { none: [] },\n uploadedImageNames: { none: [] },\n purchaseHistory: [],\n expiries: {},\n storage_unit: \"GIGA_BYTE\",\n currentOrder: null,\n isEditProductClicked: false,\n };\n }\n\n componentDidMount() {\n // if (this.state.isFileManagerOpen) this.getPurchaseHistory();\n // this.getPurchaseHistory();\n }\n\n getPurchaseHistory = () => {\n let uri = ENDPOINTS.user_storages.list.uri;\n let that = this;\n return fetch(uri, {\n method: \"GET\",\n headers: { \"content-type\": \"application/json\" },\n })\n .then((response) => response.json())\n .then((response) => {\n that.setState({\n purchaseHistory: response.user_storages,\n convenienceCharges: parseFloat(response.convience_charges.transaction_fee || 0.15),\n host_url: response.host_url,\n });\n });\n };\n\n openFileManager = () => {\n this.setState({ isFileManagerOpen: !this.state.isFileManagerOpen });\n this.getPurchaseHistory();\n };\n\n handleSaveExpiry = (id) => {\n if (!id) return;\n let { expiries } = this.state;\n let formData = new FormData();\n formData.append(\"expires_on\", expiries[id]);\n let url = ENDPOINTS.user_storages.update.uri;\n url = url.replace(\":user_storage_id\", id);\n let ajaxCall = fetch(url, {\n method: \"PUT\",\n body: formData,\n });\n return ajaxCall\n .then((response) => response.json())\n .then((response) => {\n if (response.errors) {\n alert(response.errors);\n } else {\n }\n })\n .catch((error) => {\n throw error;\n });\n };\n\n getOrderInvoice = (order) => {\n let user = {};\n // let storageAmount = (order.total_amount - order.pg_transaction_fee) / 100;\n\n return (\n {\n this.setState({ currentOrder: null, isEditProductClicked: false });\n }}\n >\n
    \n \n Invoice\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 INVOICE\n \n
    COMPOSZ LLC,Invoice #: INVSTO00000{order.id}
    #121 HAUT BRION AVENUEInvoice Date: {order.updated_at}
    NEWARK, DE-19702.\n Invoice Amount:\n {formatCurrency(order.total_amount, 100, \"USD\")}\n {/* {(order.total_amount / 100).toFixed(2)} */}\n
    \n Status: PAID\n
    \n \n BILLED TO\n \n

    \n {order.full_name}\n
    \n {order.email}\n
    \n {order.pg_user_email}\n
    \n {order.address}\n
    \n {/* Bangalore, 560076. */}\n

    \n
    \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n
    DescriptionPriceQuantityAmount
    Storage${\"1.00\"}{order.no_of_gb}\n {formatCurrency(order.total_amount - order.pg_transaction_fee, 100, \"USD\")}\n {/* ${storageAmount.toFixed(2)} */}\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
    PAYMENT DETAILS
    Paypal Transaction ID: {order.paypal_capture_id}\n Item (s) Subtotal:{\" \"}\n {formatCurrency(order.total_amount - order.pg_transaction_fee, 100, \"USD\")}\n
    \n Convenience charges: {formatCurrency(order.pg_transaction_fee, 100, \"USD\")}\n {/* {(order.pg_transaction_fee / 100).toFixed(2)} */}\n
    \n Tax to be collected: {formatCurrency(order.pg_fixed_fee, 100, \"USD\")}\n {/* ${(order.pg_fixed_fee / 100).toFixed(2)} */}\n
    \n \n GRAND TOTAL: {formatCurrency(order.total_amount, 100, \"USD\")}\n {/* {(order.total_amount / 100).toFixed(2)} */}\n \n
    \n\n

    To check the expiry date of storage purchased, login to composz.com

    \n

    Thanks for your purchase

    \n
    \n \n
    \n \n {\n this.printDocument(`INVSTO00000${order.id}`);\n }}\n >\n Download\n \n {\n this.setState({ isEditProductClicked: false });\n }}\n >\n Cancel\n \n \n
    \n \n );\n };\n\n getccavenueOrderInvoice = (order) => {\n let user = {};\n // let storageAmount = (order.total_amount - order.pg_transaction_fee) / 100;\n\n return (\n {\n this.setState({ currentOrder: null, isEditProductClicked: false });\n }}\n >\n
    \n \n Invoice\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 INVOICE\n \n
    LIFE COLORS,Invoice #: INVSTO00000{order.id}
    #9, 4th Cross, Kothanur Main Road,Invoice Date: {order.updated_at}
    Bangalore 560 062.\n Invoice Amount: {\" \"}\n {formatCurrency(order.total_amount, 1, \"INR\")} \n {/* {(order.total_amount / 100).toFixed(2)} */}\n
    GSTIN: 29AUTPB5544P1ZS; GST SAC Code: 998434\n Status: PAID\n
    \n \n BILLED TO\n \n

    \n {order.order_details.billing_name}\n
    \n {order.order_details.billing_address}\n
    \n {order.order_details.billing_city}, {order.order_details.billing_state} - {order.order_details.billing_zip}\n
    \n {order.email}, {order.order_details.billing_tel}\n
    \n

    \n
    \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n
    DescriptionPriceQuantityAmount
    Storage₹{\"75.00\"}{order.no_of_gb}\n {formatCurrency(order.no_of_gb * 75.00, 1, \"INR\")}\n {/* ${storageAmount.toFixed(2)} */}\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
    PAYMENT DETAILS
    CCAvenue Tracking ID: {order.paypal_capture_id}\n Item (s) Subtotal:{\" \"}\n {formatCurrency(order.no_of_gb * 75.00, 1, \"INR\")}\n
    Payment Mode: {order.order_details.payment_mode} {\"-\"} {order.order_details.card_name}\n Convenience charges: {formatCurrency(order.no_of_gb * order.pg_transaction_fee, 1, \"INR\")}\n {/* {(order.pg_transaction_fee / 100).toFixed(2)} */}\n
    Bank Ref No: {order.order_details.bank_ref_no}\n GST 18%: {formatCurrency((order.no_of_gb * 75.00 + order.no_of_gb * order.pg_transaction_fee) * 0.18, 1, \"INR\")}\n {/* ${(order.pg_fixed_fee / 100).toFixed(2)} */}\n
    \n \n GRAND TOTAL : {formatCurrency(order.total_amount, 1, \"INR\")}\n {/* {(order.total_amount / 100).toFixed(2)} */}\n \n
    \n\n

    To check the expiry date of storage purchased, login to https://composz.com

    \n

    Thanks for your purchase

    \n

    --team Composz

    \n
    \n \n
    \n \n {\n this.printDocument(`INVSTO00000${order.id}`);\n }}\n >\n Download\n \n {\n this.setState({ isEditProductClicked: false });\n }}\n >\n Cancel\n \n \n
    \n \n );\n };\n\n printDocument = (orderId) => {\n const input = document.getElementById(\"divToPrint2\");\n html2canvas(input).then((canvas) => {\n const imgData = canvas.toDataURL(\"image/jpeg\");\n const pdf = new jsPDF();\n var width = pdf.internal.pageSize.getWidth();\n var height = pdf.internal.pageSize.getHeight();\n\n pdf.addImage(imgData, \"JPEG\", 0, 0, width, height);\n // pdf.output('dataurlnewwindow');\n pdf.save(`${orderId}.pdf`);\n });\n };\n\n getCookie(cname) {\n let name = cname + \"=\";\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for(let i = 0; i \n {\"Buy More storage\"}\n {this.countryCode===\"US\"?\n {\n this.setState({ no_of_gb: 0 });\n }}\n /> :\n {\n this.setState({ no_of_gb: 0 });\n }}\n />\n }\n \n \n Purchase Storage\n \n \n
    \n {\n this.setState({ [name]: parseInt(value) });\n }}\n value={this.state.no_of_gb ? this.state.no_of_gb : 0}\n />\n Price for 1GB: {this.countryCode===\"US\"?'$1.00':' ₹75.00'}\n {/* {\n this.setState({ [name]: value });\n }}\n >\n \n \n \n */}\n
    \n {purchaseHistory && purchaseHistory.length > 0 && (\n \n \n \n \n \n \n \n \n \n {/* */}\n {/* */}\n \n \n \n \n {purchaseHistory &&\n purchaseHistory.map((storage) => {\n return (\n \n \n \n \n {/* */}\n {/* */}\n {/* */}\n \n {/* */}\n \n );\n })}\n \n
    Purchase Storage - History
    No of GBPurchased OnExpires OnCredits AddedPayment ID
    {storage.no_of_gb} GB{`${new Date(storage.purchased_on).toLocaleString()}`}\n {\n expiries[storage.id] = value;\n this.setState({ expiries: expiries });\n }}\n />\n {`${new Date(storage.expires_on).toLocaleString()}`}{storage.credits}{storage.pg_reference_id}\n {\n e.stopPropagation();\n e.preventDefault();\n this.setState({\n currentOrder: storage,\n isEditProductClicked: !this.state.isEditProductClicked,\n });\n }}\n >\n Download Invoice\n \n \n {\n this.handleSaveExpiry(storage.id);\n }}\n >\n
    \n \n
    \n )}\n
    \n {/* \n \n */}\n \n {this.state.isEditProductClicked && (this.countryCode===\"US\"?this.getOrderInvoice(this.state.currentOrder):this.getccavenueOrderInvoice(this.state.currentOrder))}\n \n );\n }\n}\n","import \"babel-polyfill\";\nimport React from \"react\";\nimport { Provider } from \"react-redux\";\nimport { applyMiddleware, createStore } from \"redux\";\nimport createLogger from \"redux-logger\";\nimport createSagaMiddleware from \"redux-saga\";\nimport rootSaga from \"../sagas/orders_index.saga\";\nimport AdukkuApp from \"../reducers/orders_reducer\";\nimport ViewProductListContainer from \"../containers/view_products/ViewProductListContainer\";\n\n//const logger = createLogger({});\nconst sagaMiddleware = createSagaMiddleware();\n//const store = createStore(AdukkuApp, applyMiddleware(logger, sagaMiddleware)); // Bala\nconst store = createStore(AdukkuApp, applyMiddleware(sagaMiddleware));\nsagaMiddleware.run(rootSaga);\n\nclass ViewProducts extends React.Component {\n render() {\n return (\n
    \n \n \n \n
    \n );\n }\n}\n\nexport default ViewProducts;\n","import React from \"react\";\nimport { FormGroup, ControlLabel, FormControl, HelpBlock } from \"react-bootstrap\";\n\nexport const FieldGroup = ({ id, label, help, ...props }) => {\n return (\n \n {label}\n \n {help && {help}}\n \n );\n};\n","import React, { Component } from \"react\";\nimport { TOGGLE_PRODUCT_EXPAND } from \"../../actions\";\nimport OrderProductSetListContainer from \"../../containers/orders/OrderProductSetListContainer\";\nimport PaymentContainer from \"../../containers/orders/PaymentContainer\";\nimport CCavenuePaymentContainer from \"../../containers/orders/CCavenuePaymentContainer\";\nimport ShareProductContainer from \"../../containers/orders/ShareProductContainer\";\n\nclass Order extends Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n }\n onExpandToggle = (e) => {\n e.stopPropagation();\n e.preventDefault();\n this.setState({ expand: !this.state.expand });\n // this.props.getSets(this.props.product.id);\n };\n\n onProductSetsToggle = (e) => {\n e.stopPropagation();\n e.preventDefault();\n this.setState({ isProductSetsExpanded: !this.state.isProductSetsExpanded });\n this.props.getSets(this.props.product.id);\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (\n nextProps.product !== this.state.product ||\n (nextProps.product && nextProps.product.product_sets)\n ) {\n this.setState({ product: nextProps.product });\n }\n }\n\n componentDidMount() {\n // this.props.getPrice(this.props.product.id);\n // this.props.getOrders({ status: \"pending\" });\n // this.props.getSets(this.props.product.id);\n }\n\n getPaymentDetails = (order, product) => {\n if (\n (order && order.status == \"paid\") ||\n (product.pricing && product.pricing.price_for_files === 0)\n ) {\n return (\n
      \n
    • Download
    • \n
    \n );\n } else if (order && order.status == \"pending\") {\n return (\n
      \n \n
    \n );\n } else {\n return (\n
      \n \n
    \n );\n }\n };\n\n getCartDetails = (order, product) => {\n if (order && order.status == \"paid\" && this.isProductAddToCart(product.id, \"order\")) {\n return (\n
      \n
    • Download
    • \n
    \n );\n } else {\n return (\n
      \n
    • \n {this.isProductAddToCart(product.id, \"cart\") ? (\n {\n this.props.addToCart({ product_id: product.id, type: \"remove\", setno: \"all\" });\n }}\n >\n Remove from Cart\n \n ) : (\n {\n this.props.addToCart({ product_id: product.id });\n }}\n >\n Add to Cart\n \n )}\n
    • \n
    \n );\n }\n };\n\n isProductAddToCart = (setno) => {\n const { cart_product } = this.props;\n if (cart_product && cart_product.order_details) {\n let sets =\n (cart_product && cart_product.order_details && cart_product.order_details.sets) || {};\n if (Object.keys(sets).includes(\"all\") || sets[setno]) return true;\n return false;\n }\n return false;\n };\n\n getOrderDetails(product) {\n const pricing = product.pricing;\n var costPerAudioFile=0.00;\n var audioFileduration = 0; \n \n product.prtype!==\"NORMAL\"? audioFileduration = parseInt(product.prtype.split('-')[1].split('SEC')[0]) : 0;\n \n if (this.getCookie(\"countryCode\")!==\"IN\") {\n costPerAudioFile = 4.00;\n }\n else { \n if (audioFileduration===15) {\n costPerAudioFile = 127.00\n }\n if (audioFileduration===30) {\n costPerAudioFile = 200.00\n }\n }\n\n const order = (product.order || []).find((o) => o.status == \"pending\");\n if (order && order.status == \"pending\") {\n return (\n this.getCookie(\"countryCode\")!==\"IN\"?\n
      \n
    • Total no. of Records: {order.num_files / product.numpages}
    • \n
    • Total no. of Image files: {order.num_files}
    • \n
    • Price per Image File: ${(order.price_first_page / 100).toFixed(2)}
    • \n
    • Total Image files amount: ${(order.total_files_amount / 100).toFixed(2)}
    • \n {product.prtype!==\"NORMAL\"?
    • Price for Audio Files / Record (.html): ${costPerAudioFile.toFixed(2)}
    • : null}\n {product.prtype!==\"NORMAL\"?
    • Total Audio files: Upto {order.num_files}
    • : null}\n {product.prtype!==\"NORMAL\"?
    • Total Audio files amount: ${(order.num_files / product.numpages * costPerAudioFile).toFixed(2)}
    • : null}\n
    • \n Convenience Charges: $\n {((order.total_amount - order.total_files_amount) / 100).toFixed(2)}\n
    • \n {product.prtype!==\"NORMAL\"? \n
    • Grand Total Amount: ${((order.total_amount / 100) + (order.num_files / product.numpages * costPerAudioFile)).toFixed(2)}
    • \n : \n
    • Grand Total Amount: ${(order.total_amount / 100).toFixed(2)}
    • \n } \n
    :\n
      \n
    • Total no. of Records: {order.num_files / product.numpages}
    • \n
    • Total no. of Image files: {order.num_files}
    • \n
    • Price per Image File: ₹75.00
    • \n
    • Total Image files amount: ₹{(order.num_files * 75).toFixed(2)}
    • \n {product.prtype!==\"NORMAL\"?
    • Price for Audio Files / Record (.html): ${costPerAudioFile.toFixed(2)}
    • : null}\n {product.prtype!==\"NORMAL\"?
    • Total Audio files: Upto {order.num_files}
    • : null}\n {product.prtype!==\"NORMAL\"?
    • Total Audio files amount: ₹{(order.num_files / product.numpages * costPerAudioFile).toFixed(2)}
    • : null}\n
    • \n Convenience Charges: ₹{(order.num_files * 10).toFixed(2)}\n
    • \n
    • \n GST 18% : ₹\n {product.prtype!==\"NORMAL\"? (((order.num_files / product.numpages * costPerAudioFile) + (order.num_files * 75 + order.num_files * 10)) * 0.18).toFixed(2)\n : ((order.num_files * 75 + order.num_files * 10) * 0.18).toFixed(2)}\n
    • \n {product.prtype!==\"NORMAL\"? \n
    • Grand Total Amount: ₹{Math.round(((order.num_files * 75) + (order.num_files * 10)) + (order.num_files / product.numpages * costPerAudioFile) + (((order.num_files / product.numpages * costPerAudioFile) + (order.num_files * 75 + order.num_files * 10)) * 0.18)).toFixed(2)}
    • \n :
    • Grand Total Amount: ₹{Math.round(((order.num_files * 75) + (order.num_files * 10)) + (order.num_files * 75 + order.num_files * 10) * 0.18).toFixed(2)}
    • }\n
    \n \n );\n }\n // if (order && order.status === \"paid\") {\n // return (\n //
      \n //
    • No. of files: {order.num_files}
    • \n //
    • Total Amount: {order.total_amount}
    • \n //
    \n // );\n // } else if (pricing) {\n // return (\n //
      \n //
    • {pricing && pricing.pages_count && pricing.pages_count.total} Files
    • \n //
    • Total Amount: {pricing.price_total}
    • \n //
    \n // );\n // }\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n getCookie(cname) {\n let name = cname + \"=\";\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for(let i = 0; i \n {this.getExpandJSX(expand)} {product.name}\n \n );\n // if (product_sets && product_sets.length) {\n // return null;\n // }\n\n let productSets = null;\n if (expand == true) {\n productSets = (\n \n
  • \n \n {this.getExpandJSX(this.state.isProductSetsExpanded)} Product Sets\n \n {this.state.isProductSetsExpanded &&\n product_sets.length &&\n product_sets.map((ps) => {\n let t = [];\n if (this.isProductAddToCart(ps.setno)) {\n const { cart_product } = this.props;\n let sets = [];\n let counts = (ps.counts || []).find((f) => f.dlname == product.main_dlname);\n if (cart_product && cart_product.order_details) {\n sets =\n (cart_product &&\n cart_product.order_details &&\n cart_product.order_details.sets) ||\n {};\n\n let isAllRecords =\n Object.keys(sets).includes(\"all\") ||\n (sets[ps.setno] &&\n (Object.keys(sets[ps.setno]).includes(\"all\") ||\n Object.keys(sets[ps.setno]).length ==\n ((counts && counts.main_occurence_count) || 0)));\n\n let keys = Object.keys(sets[ps.setno] || {});\n for (let i = 0; i < keys.length; i++) {\n t.push(
  • Record no {parseInt(keys[i]) + 1}
  • );\n }\n // if (isAllRecords && counts.main_occurence_count) {\n // for (let index = 1; index <= counts.main_occurence_count; index++) {\n // t.push(
  • Record no {index}
  • );\n // }\n // } else {\n // // Object.keys(sets[ps.setno]).forEach((recordNo) => {\n // // t.push(
  • Record no {recordNo}
  • );\n // // });\n // let keys = Object.keys(sets[ps.setno] || {});\n // for (let i = 0; i < keys.length; i++) {\n // t.push(
  • Record no {parseInt(keys[i]) + 1}
  • );\n // }\n // }\n }\n return (\n
      \n {\n this.setState({\n [`p_set_${ps.setno}`]: !(this.state[`p_set_${ps.setno}`] || false),\n });\n }}\n >\n {this.getExpandJSX(this.state[`p_set_${ps.setno}`] || false)}\n {\" \" + ps.desc}\n \n {this.state[`p_set_${ps.setno}`] &&
        {t}
      }\n {/*
        {t}
      */}\n
    \n );\n }\n })}\n {/* */}\n \n {cart_product.pg_order_id && (\n
  • \n {this.countryCode!==\"IN\"?\n :\n \n }\n
  • \n )}\n
  • {this.getOrderDetails(this.state.product)}
  • \n {!cart_product.pg_order_id && (\n
  • \n {this.countryCode!==\"IN\"?\n :\n \n }\n
  • \n )}\n
    \n );\n }\n if (cart_product) {\n return (\n \n
  • {readOnly}
  • \n
      {productSets}
    \n
    \n );\n } else {\n return null;\n }\n }\n}\n\nexport default Order;\n","import React, { Component } from \"react\";\nimport { TOGGLE_PRODUCT_EXPAND } from \"../../actions\";\nimport PaymentContainer from \"../../containers/orders/PaymentContainer\";\n\nclass Cart extends Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n }\n onExpandToggle = e => {\n e.stopPropagation();\n e.preventDefault();\n this.setState({ expand: !this.state.expand });\n this.props.toggleView({\n reducerKey: TOGGLE_PRODUCT_EXPAND,\n id: this.props.product.id\n });\n this.props.getSets(this.props.product.id);\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.product !== this.state.product) {\n this.setState({ product: nextProps.product });\n }\n }\n\n componentDidMount() {\n this.props.getPrice(this.props.product.id);\n }\n\n getPaymentDetails = (order, product) => {\n if (\n (order && order.status == \"paid\") ||\n (product.pricing && product.pricing.price_for_files === 0)\n ) {\n return (\n
      \n
    • Download
    • \n
    \n );\n } else if (order && order.status == \"pending\") {\n return (\n
      \n \n
    \n );\n } else {\n return (\n
      \n \n
    \n );\n }\n };\n\n getCartDetails = (order, product) => {\n if (\n (order && order.status == \"paid\") ||\n (product.pricing && product.pricing.price_for_files === 0)\n ) {\n return (\n
      \n
    • Download
    • \n
    \n );\n } else {\n return (\n
      \n
    • \n {this.isProductAddToCart(product.id) ? (\n \"Added to cart\"\n ) : (\n {\n this.props.addToCart({ product_id: product.id });\n }}\n >\n Add to Cart\n \n )}\n
    • \n
    \n );\n }\n };\n\n isProductAddToCart = product_id => {\n const { cart_product } = this.state;\n if (cart_product) {\n let sets =\n cart_product &&\n cart_product.order_details &&\n cart_product.order_details.sets;\n if (Object.keys(sets).includes(\"all\")) return true;\n return false;\n }\n return false;\n };\n\n getOrderDetails(product) {\n const pricing = product.pricing;\n const order = product.order;\n if (order && order.status === \"paid\") {\n return (\n
      \n
    • No. of files: {order.num_files}
    • \n
    • Total Amount: {order.total_amount}
    • \n
    \n );\n } else if (pricing) {\n return (\n
      \n
    • \n {pricing && pricing.pages_count && pricing.pages_count.total} Files\n
    • \n
    • Total Amount: {pricing.price_total}
    • \n
    \n );\n }\n }\n\n render() {}\n}\n\nexport default Cart;\n","import React, { Component } from \"react\";\nimport PaymentContainer from \"../../containers/orders/PaymentContainer\";\nimport CartContainer from \"../../containers/cart/CartContainer\";\n\nclass CartList extends Component {\n UNSAFE_componentWillReceiveProps(nextProps) {}\n\n componentDidMount() {\n this.props.getProducts();\n this.props.getOrders({ status: \"pending\" });\n }\n\n render1() {\n const carts = this.props.carts;\n const cartsList = carts.length ? (\n carts.map((cart) => {\n return (\n
  • \n {cart.product.name}\n
      \n {cart.pg_order_id && (\n
    • \n \n
    • \n )}\n {!cart.pg_order_id && (\n
    • \n \n
    • \n )}\n
    \n
  • \n );\n })\n ) : (\n
    No items in the cart
    \n );\n\n return (\n
    \n

    My Cart

    \n
      {cartsList}
    \n
    \n );\n }\n\n render() {\n const products = this.props.products;\n const productList = products.length ? (\n products.map((product) => {\n return ;\n })\n ) : (\n
    No Items
    \n );\n\n return (\n
    \n

    My Cart

    \n
      {productList}
    \n
    \n );\n }\n}\n\nexport default CartList;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Col,\n Form,\n FormGroup,\n InputGroup,\n ControlLabel,\n FormControl,\n Modal,\n Fade,\n utils,\n Button,\n} from \"react-bootstrap\";\nimport { FieldGroup } from \"../bootstrap/Forms.FieldGroup\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport { formDataToJSON } from \"../../adukku_utils/array\";\n\nexport default class AddLayout extends React.Component {\n constructor(props) {\n super(props);\n this.showCreateLayoutOverlay = this.showCreateLayoutOverlay.bind(this);\n this.hideCreateLayoutOverlay = this.hideCreateLayoutOverlay.bind(this);\n this.state = {\n product: props.product,\n widthI: 12,\n heightI: 10,\n width: 1200,\n height: 1000,\n overlay: props.overlay || { visible: false },\n layoutCategories: [],\n };\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n this._handleInputChange = this._handleInputChange.bind(this);\n\n // this.handleOrderChange = this.handleOrderChange.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps !== this.state) {\n this.setState(nextProps);\n }\n }\n\n showCreateLayoutOverlay(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showOverlay(this.state.overlay_id);\n }\n\n hideCreateLayoutOverlay(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.hideOverlay(this.state.overlay_id);\n }\n\n\n _handleInputChange(e) {\n e.preventDefault();\n e.stopPropagation();\n const target = e.target;\n if (target.value>24) {\n alert(\"Value cannot be greater than 24 Inches!\");\n }\n else if\n (target.value<1) {\n alert(\"Value cannot be less than 1 Inches!\");\n }\n else if\n (target.name == \"widthI\") {\n this.setState({\n [\"width\"]: Math.round(target.value * 100),\n [\"widthI\"]: target.value\n });\n }\n else if (target.name == \"heightI\") {\n this.setState({\n [\"height\"]: Math.round(target.value * 100),\n [\"heightI\"]: target.value \n });\n }\n }\n\n _handleValidSubmit(e) {\n e.preventDefault();\n e.stopPropagation();\n let formData = formDataToJSON(new FormData(e.target));\n formData.desc = formData.desc.trim()\n let endpoint = ENDPOINTS[\"layouts\"][\"create\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.createLayout(url, method, formData);\n }\n\n render() {\n const isVisible = this.state.overlay.visible;\n const product = this.state.product;\n\n return (\n
      \n
    • \n Create New layout \n \n
      \n \n Create New layout\n \n \n
      Width (in Inches):
      \n
      \n \n \n Width in Pixels :\n {this.state.width}\n\n
      \n

      \n \n
      Height (in Inches):
      \n
      \n \n \n Height in Pixels :\n {this.state.height}\n
      \n

      \n \n\n \n \n \n \n
      \n \n \n {/* */}\n \n
      \n
      \n
    • \n
    \n );\n }\n}\n","import React from \"react\";\nimport LyDlListContainer from \"../../containers/layouts/lydl/LyDlListContainer\";\nimport LyDlRelListContainer from \"../../containers/layouts/lydlrel/LyDlRelListContainer\";\nimport LySlotForListContainer from \"../../containers/layouts/lyslotfors/LySlotForListContainer\";\nimport AddLySlotForContainer from \"../../containers/layouts/lyslotfors/AddLySlotForContainer\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\n\nimport { formDataToJSON } from \"../../adukku_utils/array\";\nimport ThumbnailPreview from \"./ThumbnailPreview\";\n\nimport {\n Row,\n Col,\n Form,\n FormGroup,\n ControlLabel,\n FormControl,\n Modal,\n Fade,\n utils,\n Button,\n} from \"react-bootstrap\";\nimport { FieldGroup } from \"../bootstrap/Forms.FieldGroup\";\nimport { authorized, Authorized } from \"../../adukku_utils/authorizeUser\";\n\nexport default class Layout extends React.Component {\n constructor(props) {\n super(props);\n const layout = (props && props.layout) || {};\n this.state = {\n ...props,\n isCopyLayoutClicked: false,\n description: \"\",\n desc: layout.desc,\n is_preset_bg: layout.is_preset_bg,\n is_preset_sticker: layout.is_preset_sticker,\n height: layout.height,\n width: layout.width,\n isSlotForsExpanded: false,\n show: false,\n isEditLayoutClicked: false,\n layoutCategories: [],\n other_category: \"\",\n sticker_category: layout.sticker_category,\n };\n this.toggleExpand = this.toggleExpand.bind(this);\n }\n\n toggleExpand(e) {\n e.stopPropagation();\n this.props.getLayoutDetails(this.state.layout.id);\n this.setState(Object.assign({}, this.state, { expand: !this.state.expand }));\n }\n\n componentDidMount() {\n let expandedProduct = localStorage.getItem(\"expandedProduct\");\n expandedProduct = expandedProduct ? JSON.parse(expandedProduct) : {};\n\n if (\n expandedProduct.layoutId &&\n this.state.layout.id == expandedProduct.layoutId &&\n !expandedProduct.isSet\n ) {\n this.setState({\n expand: true,\n });\n this.props.getLayoutDetails(this.state.layout.id);\n localStorage.setItem(\"expandedProduct\", JSON.stringify({}));\n }\n let that = this;\n fetch(\"/api/layouts/categories\", {\n method: \"GET\",\n headers: {\n \"content-type\": \"application/json\",\n },\n })\n .then((response) => response.json())\n .then((response) => {\n let layoutCategories =\n (response &&\n response.categories &&\n response.categories.map((category) => {\n return {\n label: category,\n value: category,\n };\n })) ||\n [];\n that.setState({ layoutCategories: layoutCategories || [] });\n });\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n _handleDeletelayout(e, layout_id) {\n e.preventDefault();\n e.stopPropagation();\n if (confirm(\"Are you sure you want to delete the layout along with data?\")) {\n let payload = { id: layout_id, product_id: this.state.product.id };\n let endpoint = ENDPOINTS[\"layouts\"][\"delete\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.deleteLayout(url, method, payload);\n } else {\n return;\n }\n }\n\n _handleClonelayout(e, layout_id) {\n e.preventDefault();\n e.stopPropagation();\n if (this.state.isCopyLayoutClicked) {\n if (!this.state.description) return alert(\"Please enter layout description\");\n let payload = {\n id: layout_id,\n product_id: this.state.product.id,\n desc: this.state.description,\n };\n let endpoint = ENDPOINTS[\"layouts\"][\"clone\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.cloneLayout(url, method, payload);\n this.setState({\n isCopyLayoutClicked: false,\n });\n } else {\n this.setState({\n isCopyLayoutClicked: true,\n });\n }\n }\n\n handleCancelLayout = (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n isCopyLayoutClicked: false,\n });\n };\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n getEditLayoutJSX = (isVisible) => {\n const layout = this.state.layout;\n const { desc, height, width, is_preset_bg, is_preset_sticker } = this.state;\n const layoutCategories = this.state.layoutCategories || [];\n\n if (isVisible) {\n return (\n {\n this.setState({\n isEditLayoutClicked: false,\n });\n }}\n >\n
    \n \n Edit Layout\n \n \n {\n this.setState({ [name]: value });\n }}\n // disabled={true}\n placeholder=\"Product Name\"\n required=\"required\"\n />\n {/* {\n this.setState({ [name]: value });\n }}\n // disabled={true}\n placeholder=\"Height\"\n required=\"required\"\n />\n {\n this.setState({ [name]: value });\n }}\n // disabled={true}\n placeholder=\"Width\"\n required=\"required\"\n /> */}\n {this.state.role === \"admin\" && (\n \n {\n this.setState({ [name]: checked });\n }}\n />\n {\n this.setState({ [name]: checked });\n }}\n />\n\n {\n this.setState({ [name]: value });\n }}\n value={this.state.sticker_category}\n >\n \n {layoutCategories.map((category) => {\n return (\n \n );\n })}\n \n {this.state.sticker_category == \"other\" && (\n {\n this.setState({ [name]: value });\n }}\n value={this.state.other_category}\n />\n )}\n \n )}\n \n \n \n {/* {\n this.setState({\n isEditLayoutClicked: false,\n });\n }}\n >\n Cancel\n */}\n \n
    \n \n );\n }\n };\n\n handleEditLayout = (e) => {\n // this.se\n e.preventDefault();\n e.stopPropagation();\n const { layout, product } = this.state;\n let endpoint = ENDPOINTS.layouts.update;\n let url = endpoint.uri;\n let method = endpoint.method;\n\n let formData = formDataToJSON(new FormData(e.target));\n formData.is_preset_bg = this.state.is_preset_bg;\n formData.is_preset_sticker = this.state.is_preset_sticker;\n formData.sticker_category =\n this.state.sticker_category == \"other\"\n ? this.state.other_category\n : this.state.sticker_category;\n formData.product_id = product.id;\n this.props.updateLayout(layout.id, url, method, formData);\n this.setState({\n isEditLayoutClicked: false,\n });\n };\n\n render() {\n const layout = this.state.layout;\n const product = this.state.product;\n const isExpand = this.state.expand;\n const role = this.state.role;\n let children = [];\n\n const cloneLayoutJSX = (\n this._handleClonelayout(e, layout.id)}\n >\n
    \n {\n this.setState({ description: value });\n }}\n className=\"form-control dlname\"\n placeholder=\"Enter Layout Description\"\n required=\"required\"\n defaultValue={null}\n />\n
    \n \n this.handleCancelLayout(e, layout.id)}\n >\n Cancel\n \n \n );\n if (isExpand) {\n children.push(\n \n );\n children.push(\n \n );\n children.push(\n \n );\n children.push(\n \n );\n }\n return (\n
  • \n \n {this.getExpandJSX(isExpand)} {layout.desc}\n \n \n {\n e.stopPropagation();\n e.preventDefault();\n let expandedProduct = {\n productId: product.id,\n layoutId: layout.id,\n };\n localStorage.setItem(\"expandedProduct\", JSON.stringify(expandedProduct));\n window.location = \"/products/\" + product.id + \"/layouts/\" + layout.id;\n }}\n // href={\"/products/\" + product.id + \"/layouts/\" + layout.id}\n style={{ paddingLeft: \"15px\" }}\n title=\"Edit Layout\"\n >\n \n \n\n {!this.state.isCopyLayoutClicked && (\n {\n this._handleClonelayout(e, layout.id);\n }}\n style={{ paddingLeft: \"15px\" }}\n title=\"Copy Layout\"\n // confirm=\"Are you sure you want to delete the layout?\"\n >\n \n \n )}\n {\n this._handleDeletelayout(e, layout.id);\n }}\n style={{ paddingLeft: \"15px\" }}\n title=\"Delete\"\n // confirm=\"Are you sure you want to delete the layout?\"\n >\n \n \n {!this.state.isEditLayoutClicked && (\n // \n // \n {\n e.stopPropagation();\n e.preventDefault();\n this.setState({\n isEditLayoutClicked: !this.state.isEditLayoutClicked,\n });\n }}\n >\n \n \n )}\n\n {this.state.isEditLayoutClicked && this.getEditLayoutJSX(this.state.isEditLayoutClicked)}\n \n {this.state.isCopyLayoutClicked && cloneLayoutJSX}\n {layout.preview_url && (\n
    \n this.setState({ show: true })}\n style={{\n height: \"60px\",\n boxShadow: \"5px 5px 10px rgba(0,0,0,.5)\",\n marginBottom: \"15px\",\n margin: \"10px 0 15px 35px\",\n cursor: \"pointer\",\n }}\n src={`${layout.preview_url}?${new Date()}`}\n />\n {this.state.show && (\n this.setState({ show: false })}\n />\n )}\n
    \n )}\n {children}\n
  • \n );\n }\n}\n","import React from \"react\";\nimport LayoutContainer from \"../../containers/layouts/LayoutContainer\";\n\nexport default class LayoutList extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n UNSAFE_componentWillMount() {\n this.props.getLayouts(this.state.product.id);\n }\n\n render() {\n let view = [];\n for (let i = 0; i < this.state.layouts.length; i++) {\n view.push(\n \n );\n }\n return
      {view}
    ;\n }\n}\n","import React from \"react\";\n\nclass ThumbnailPreview extends React.Component {\n handleClose = () => {\n this.closeFullScreen();\n this.props.onClose();\n };\n closeFullScreen = () => {\n var isInFullScreen =\n (document.fullscreenElement && document.fullscreenElement !== null) ||\n (document.webkitFullscreenElement &&\n document.webkitFullscreenElement !== null) ||\n (document.mozFullScreenElement &&\n document.mozFullScreenElement !== null) ||\n (document.msFullscreenElement && document.msFullscreenElement !== null);\n\n if (document.exitFullscreen) {\n if (isInFullScreen) {\n document.exitFullscreen();\n }\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n };\n render() {\n const { imageSrc, layoutDetails } = this.props;\n let self = this;\n function toggleFullScreen() {\n let element = document.querySelector(\".thumbnail-preview-modal\");\n var isInFullScreen =\n (document.fullscreenElement && document.fullscreenElement !== null) ||\n (document.webkitFullscreenElement &&\n document.webkitFullscreenElement !== null) ||\n (document.mozFullScreenElement &&\n document.mozFullScreenElement !== null) ||\n (document.msFullscreenElement && document.msFullscreenElement !== null);\n\n var docElm = element;\n if (!isInFullScreen) {\n if (docElm.requestFullscreen) {\n docElm.requestFullscreen();\n } else if (docElm.mozRequestFullScreen) {\n docElm.mozRequestFullScreen();\n } else if (docElm.webkitRequestFullScreen) {\n docElm.webkitRequestFullScreen();\n } else if (docElm.msRequestFullscreen) {\n docElm.msRequestFullscreen();\n }\n } else {\n self.closeFullScreen();\n }\n }\n return (\n
    \n
    \n {layoutDetails.desc && (\n
    \n
    {layoutDetails.desc}
    \n
    \n )}\n\n
    \n \n X\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n \n
    \n
    \n \n );\n }\n}\nexport default ThumbnailPreview;\n","import React from 'react';\n\nexport default class LyDl extends React.Component {\n constructor(props)\n {\n super(props);\n this.state = {...props};\n }\n\n UNSAFE_componentWillReceiveProps(nextProps){\n if(this.state !== nextProps){\n this.setState(nextProps);\n }\n }\n\n render()\n {\n const lyDl = this.state.layout_datalevel;\n return
  • \n {lyDl.dlname}\n
  • ;\n }\n};","import React from \"react\";\nimport LyDlContainer from \"../../../containers/layouts/lydl/LyDlContainer\";\nimport ManageLyDlContainer from \"../../../containers/layouts/lydl/ManageLyDlContainer\";\nimport { authorized, Authorized } from \"../../../adukku_utils/authorizeUser\";\n\nexport default class LyDlList extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this.toggleExpand = this.toggleExpand.bind(this);\n }\n\n toggleExpand(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { expand: !this.state.expand }));\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const layout = this.state.layout;\n const product = this.state.product;\n const role = this.state.role;\n if (layout == null && layout.datalevels == null) {\n return null;\n }\n const ly_datalevels = layout.datalevels;\n const isExpand = this.state.expand;\n let children = [];\n if (isExpand) {\n for (let i = 0; i < ly_datalevels.length; i++) {\n children.push(\n \n );\n }\n\n if (authorized([\"admin\", \"owner\"], [role, product.product_role], \"ANY\")) {\n children.push(\n \n );\n }\n }\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport {\n Col,\n Form,\n FormGroup,\n ControlLabel,\n FormControl,\n Modal,\n Fade,\n utils,\n Button,\n Table,\n} from \"react-bootstrap\";\nimport { formDataToJSON } from \"../../../adukku_utils/array\";\nimport { ENDPOINTS } from \"../../../constants/endpoints\";\n\nexport default class ManageLyDl extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this.toggleExpand = this.toggleExpand.bind(this);\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n this.hideLayoutDLOverlay = this.hideLayoutDLOverlay.bind(this);\n this.showLayoutDLOverlay = this.showLayoutDLOverlay.bind(this);\n }\n\n _handleValidSubmit(e) {\n e.preventDefault();\n e.stopPropagation();\n let formData = formDataToJSON(new FormData(e.target));\n const datalevels = this.state.datalevels;\n let endpoint = ENDPOINTS[\"layout_datalevels\"][\"create\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n let data = {};\n let product = this.state.product;\n let layout = this.state.layout;\n for (let i = 0; i < datalevels.length; i++) {\n let datalevel = datalevels[i];\n data[\"dlname\"] = formData[\"dl[\" + i + \"][dlname]\"];\n data[\"product_id\"] = product.id;\n data[\"layout_id\"] = layout.id;\n if (formData[\"dl[\" + i + \"][selected]\"] == null && datalevel.saved) {\n let endpoint = ENDPOINTS[\"layout_datalevels\"][\"delete\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.deleteLyDL(url, method, data);\n }\n if (formData[\"dl[\" + i + \"][selected]\"] != null && !datalevel.saved) {\n let endpoint = ENDPOINTS[\"layout_datalevels\"][\"create\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.createLyDL(url, method, data);\n }\n }\n this.hideLayoutDLOverlay(e);\n }\n\n toggleExpand(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { expand: !this.state.expand }));\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n hideLayoutDLOverlay(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { visible: false }));\n }\n\n showLayoutDLOverlay(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { visible: true }));\n }\n\n render() {\n const layout = this.state.layout;\n const isVisible = this.state.visible;\n const datalevels = this.state.datalevels;\n let tbodyDOM = [];\n for (let i = 0; i < datalevels.length; i++) {\n let datalevel = datalevels[i];\n tbodyDOM.push(\n \n \n {datalevel.dlname}\n \n \n \n \n );\n }\n return (\n
  • \n {this.props.labelText}\n \n
    \n \n Manage Layout Data Levels\n \n \n \n \n \n \n \n \n \n {tbodyDOM}\n
    Product Data LevelsAdd
    \n
    \n \n \n {/* */}\n \n
    \n
    \n
  • \n );\n }\n}\n","import React from \"react\";\nimport {\n Row,\n Col,\n Form,\n FormGroup,\n ControlLabel,\n FormControl,\n Modal,\n Fade,\n utils,\n Button,\n Table,\n} from \"react-bootstrap\";\nimport serialize from \"form-serialize\";\nimport { ENDPOINTS } from \"../../../constants/endpoints\";\n\nexport default class AddLyDlRel extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props, isAddKeyOpen: false };\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n this.hideOverlay = this.hideOverlay.bind(this);\n }\n\n _handleValidSubmit(e) {\n e.preventDefault();\n e.stopPropagation();\n let formData = serialize(e.target, { hash: true, empty: true });\n const layout = this.state.layout;\n const product = this.state.product;\n formData.cdlcount = 0;\n let endpoint = Object.assign({}, ENDPOINTS.layout_datalevels_rel.create, {});\n let url = endpoint.uri.replace(\":layout_id\", layout.id);\n formData.product_id = product.id;\n formData.layout_id = layout.id;\n formData.pdlname = this.props.type == \"product_key\" ? formData.cdlname : formData.pdlname;\n this.props.createLyDLRel(url, endpoint.method, formData);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n hideOverlay(e) {\n this.setState(Object.assign({}, this.state, { isVisible: false }));\n }\n\n render() {\n const dlRel = this.state.dlRel;\n const left_dls = this.state.left_dls;\n const right_dls = this.state.right_dls;\n const isVisible = this.state.isVisible;\n const layout_datalevels = this.state.layout.datalevels;\n let dlRelStyle = dlRel.style;\n let popupTitle =\n this.props.type == \"product_key\"\n ? \"Data Level Relationship via Product Set Keys\"\n : \"Data Level Relationship via non Product Set Keys\";\n if (dlRelStyle == null) {\n if (this.props.type == \"product_key\") dlRelStyle = \"P\";\n else dlRelStyle = \"N\";\n }\n let left_view = [];\n if (this.props.type == \"product_key\") {\n left_view.push(\n \n );\n } else {\n left_view.push(\n \n \n {left_dls.map((datalevel, i) => {\n let ld = layout_datalevels.find((l) => l.dlname === datalevel.dlname);\n if (ld)\n return (\n \n );\n })}\n \n );\n }\n const a = (\n \n \n {!this.props.type && (\n \n )}\n {left_view}\n \n \n {!this.props.type && }\n {this.props.type && }\n \n \n {right_dls.map((datalevel, i) => {\n let ld = layout_datalevels.find((l) => l.dlname === datalevel.dlname);\n if (ld)\n return (\n \n );\n })}\n \n \n \n \n \n \n );\n\n return (\n {\n this.props.closeAddRel();\n }}\n >\n
    \n \n {popupTitle}\n \n {a}\n \n \n {/* */}\n \n
    \n \n );\n }\n}\n","import React from \"react\";\nimport EditLyDlRelKeyContainer from \"../../../containers/layouts/lydlrel/EditLyDlRelKeyContainer\";\nimport {\n Row,\n Col,\n Form,\n FormGroup,\n ControlLabel,\n FormControl,\n Modal,\n Fade,\n utils,\n Button,\n Table,\n} from \"react-bootstrap\";\nimport serialize from \"form-serialize\";\nimport { ENDPOINTS } from \"../../../constants/endpoints\";\n\nexport default class AddLyDlRelKey extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n this.hideOverlay = this.hideOverlay.bind(this);\n this.showOverlay = this.showOverlay.bind(this);\n }\n\n hideOverlay(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { visible: false }));\n }\n\n showOverlay(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { visible: true }));\n }\n\n _handleValidSubmit(e) {\n e.preventDefault();\n e.stopPropagation();\n let formData = serialize(e.target, { hash: true, empty: true });\n const layout = this.state.layout;\n const product = this.state.product;\n const dlRel = this.state.dlRel;\n let endpoint = Object.assign({}, ENDPOINTS.layout_datalevels_keys.create, {});\n let url = endpoint.uri.replace(\":layout_id\", layout.id);\n url.replace(\":pdlname\", dlRel.pdlname);\n url.replace(\":cdlname\", dlRel.cdlname);\n // url.replace(\":relstyle\", dlRel.style);\n formData.pdlname = dlRel.pdlname;\n formData.cdlname = dlRel.cdlname;\n formData.product_id = product.id;\n formData.layout_id = layout.id;\n formData.relstyle = dlRel.style;\n this.props.createLyDLRelKey(url, endpoint.method, formData);\n this.setState(Object.assign({}, this.state, { visible: false }));\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n componentDidMount() {\n let presetProductId = localStorage.getItem(\"preset_product_id\");\n const isPresetProduct =\n !presetProductId || presetProductId == \"null\" || presetProductId == \"undefined\"\n ? false\n : true;\n this.setState({\n isPresetProduct: isPresetProduct,\n });\n }\n\n render() {\n const layout = this.state.layout;\n const product = this.state.product;\n const relation_keys = this.state.dlRel.datalevel_relation_keys || [];\n const attributes = this.state.attributes;\n const isVisible = this.state.visible;\n const dlRelKey = this.state.dlRelKey;\n let children = [];\n const isPresetProduct = this.state.isPresetProduct;\n children.push(\n
    \n \n {/*\n \n */}\n \n \n {attributes.map((attribute, i) => {\n return (\n \n );\n })}\n \n \n \n
    \n );\n return (\n
  • \n {!isPresetProduct && Add key}\n \n
    \n \n Add Layout datalevel relationship key\n \n \n \n {/*Join Key Order*/}\n Join Key\n \n {children}\n \n \n \n {/* */}\n \n
    \n
    \n
  • \n );\n }\n}\n","import React from 'react';\nimport { FormControl, Col, Row } from 'react-bootstrap';\n\nexport default class EditLyDlRel extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this.toggleExpand = this.toggleExpand.bind(this);\n }\n\n toggleExpand(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { expand: !this.state.expand }));\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n render() {\n const dlRel = this.state.dlRel;\n const isExpand = this.state.expand;\n const datalevels = this.state.product_datalevels;\n return
    \n \n \n \n {datalevels.map((datalevel, i) => {\n return ;\n }\n )}\n \n \n \n \n {datalevels.map((datalevel, i) => {\n return ;\n }\n )}\n \n \n \n \n {[[\"S\", \"SINGLE\"], [\"R\", \"REPEAT\"], [\"M\", \"MAIN\"]].map((style, i) => {\n return ;\n }\n )}\n \n \n \n \n \n \n
    ;\n }\n};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nexport default class EditLyDlRel extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n render() {\n const attribute = this.state.attribute;\n const dlRelKey = this.state.dlRelKey;\n return
    \n \n {dlRelKey.key || attribute.name}\n \n \n \n \n \n \n \n \n
    ;\n }\n};","import React from \"react\";\nimport { Row, Col, Form, FormControl, Modal, Button } from \"react-bootstrap\";\nimport serialize from \"form-serialize\";\n\nimport EditLyDlRelKeyContainer from \"../../../containers/layouts/lydlrel/EditLyDlRelKeyContainer\";\n\nexport default class EditLyDlRelKeyList extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n this.hideOverlay = this.hideOverlay.bind(this);\n this.showOverlay = this.showOverlay.bind(this);\n }\n\n hideOverlay(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { visible: false }));\n }\n\n showOverlay(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { visible: true }));\n }\n\n _handleValidSubmit(e) {\n e.preventDefault();\n e.stopPropagation();\n let formData = serialize(e.target, { hash: true, empty: true });\n console.debug(formData);\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n render() {\n const layout = this.state.layout;\n const product = this.state.product;\n const relation_keys = this.state.dlRel.datalevel_relation_keys || [];\n const attributes = this.state.attributes;\n const isVisible = this.state.visible;\n if (attributes == null) {\n return null;\n }\n let children = [];\n if (isVisible) {\n for (let i = 0; i < attributes.length; i++) {\n let attribute = attributes[i];\n let dlRelKey = relation_keys.filter((rel_key) => rel_key.key == attribute)[0] || {};\n children.push(\n \n {dlRelKey.key || attribute}\n \n \n \n \n \n \n \n \n );\n }\n }\n return (\n
  • \n Manage Join keys\n \n
    \n \n Manage Layout datalevel relationship keys\n \n \n
    \n \n Join Key\n Join Key Order\n Action\n \n {children}\n
    \n
    \n \n \n \n \n
    \n
    \n
  • \n );\n }\n}\n","import React from \"react\";\nimport { Row, Col, Form, Modal, Button } from \"react-bootstrap\";\nimport serialize from \"form-serialize\";\n\nimport EditLyDlRelContainer from \"../../../containers/layouts/lydlrel/EditLyDlRelContainer\";\nimport AddLyDlRelContainer from \"../../../containers/layouts/lydlrel/AddLyDlRelContainer\";\nimport { ENDPOINTS } from \"../../../constants/endpoints\";\n\nexport default class EditLyDlRelList extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n this.hideOverlay = this.hideOverlay.bind(this);\n this.showOverlay = this.showOverlay.bind(this);\n this.addRelKey = this.addRelKey.bind(this);\n }\n\n addRelKey(e) {\n e.preventDefault();\n this.setState(Object.assign({}, this.state, { isAddVisible: true }));\n }\n\n hideOverlay(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { visible: false }));\n }\n\n showOverlay(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { visible: true }));\n }\n\n _handleValidSubmit(e) {\n e.preventDefault();\n e.stopPropagation();\n let formData = serialize(e.target, { hash: true, empty: true });\n const layout = this.state.layout;\n const product = this.state.product;\n formData.lydlrel.map((data) => {\n if (data.selected.length == 0) {\n let endpoint = Object.assign({}, ENDPOINTS.layout_datalevels_rel.delete, {});\n let url = endpoint.uri.replace(\":layout_id\", layout.id).replace(\":pdlname\", data.pdlname);\n url = url.replace(\":cdlname\", data.cdlname);\n data.product_id = product.id;\n this.props.deleteLyDLRel(url, endpoint.method, data);\n // delete\n } else {\n // create\n let endpoint = Object.assign({}, ENDPOINTS.layout_datalevels_rel.create, {});\n let url = endpoint.uri.replace(\":layout_id\", layout.id);\n data.product_id = product.id;\n this.props.createLyDLRel(url, endpoint.method, data);\n }\n });\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n render() {\n const layout = this.state.layout;\n const product = this.state.product;\n const isVisible = this.state.visible;\n const isAddVisible = this.state.isAddVisible;\n const product_datalevels = this.state.product_datalevels;\n const datalevel_relations = layout.datalevel_relations;\n if (product_datalevels == null) {\n return null;\n }\n let children = [];\n if (isVisible) {\n for (let i = 0; i < product_datalevels.length; i++) {\n let lyDlRel = datalevel_relations[i] || {};\n children.push(\n \n );\n }\n }\n return (\n
  • \n Manage Layout relationships\n \n
    \n \n Manage Layout datalevel relationships\n \n \n
    \n \n Parent Data Level\n Child Data Level\n Datalevel style\n Action\n \n {children}\n
    \n
    \n
  • \n Add new\n
  • \n \n \n \n \n \n \n
    \n
  • \n );\n }\n}\n","import React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport LyDlRelKeyListContainer from \"../../../containers/layouts/lydlrel/LyDlRelKeyListContainer\";\nimport { ENDPOINTS } from \"../../../constants/endpoints\";\n\nimport { authorized, Authorized } from \"../../../adukku_utils/authorizeUser\";\n\nexport default class LyDlRel extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this.toggleExpand = this.toggleExpand.bind(this);\n this.onDelete = this.onDelete.bind(this);\n }\n\n toggleExpand(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { expand: !this.state.expand }));\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n onDelete(e) {\n e.stopPropagation();\n const data = this.state.dlRel;\n const layout = this.state.layout;\n const product = this.state.product;\n let endpoint = Object.assign({}, ENDPOINTS.layout_datalevels_rel.delete, {});\n let url = endpoint.uri.replace(\":layout_id\", layout.id).replace(\":pdlname\", data.pdlname);\n url = url.replace(\":cdlname\", data.cdlname);\n data.product_id = product.id;\n data.layout_id = layout.id;\n this.props.deleteLyDLRel(url, endpoint.method, data);\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const dlRel = this.state.dlRel;\n const isExpand = this.state.expand;\n const role = this.state.role;\n const product = this.state.product;\n return (\n
    \n \n \n {this.getExpandJSX(isExpand)} {dlRel.pdlname}\n \n {this.props.type == \"non_product_key\" && {dlRel.cdlname}}\n {/* {dlRel.cdlcount}\n {dlRel.style} */}\n \n {product.product_state == \"edit\" && (\n \n \n \n \n \n )}\n \n \n {isExpand && (\n \n )}\n
    \n );\n }\n}\n","import React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { ENDPOINTS } from \"../../../constants/endpoints\";\n\nexport default class LyDlRel extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this.onDelete = this.onDelete.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n componentDidMount() {\n let presetProductId = localStorage.getItem(\"preset_product_id\");\n const isPresetProduct =\n !presetProductId || presetProductId == \"null\" || presetProductId == \"undefined\"\n ? false\n : true;\n this.setState({\n isPresetProduct: isPresetProduct,\n });\n }\n\n onDelete(e) {\n const layout = this.state.layout;\n const product = this.state.product;\n const dlRel = this.state.dlRel;\n const dlRelKey = this.state.dlRelKey;\n let formData = Object.assign({}, dlRelKey, {});\n let endpoint = Object.assign({}, ENDPOINTS.layout_datalevels_keys.delete, {});\n let url = endpoint.uri.replace(\":layout_id\", layout.id);\n url = url.replace(\":pdlname\", dlRel.pdlname);\n url = url.replace(\":cdlname\", dlRel.cdlname);\n url = url.replace(\":key\", formData.key);\n formData.pdlname = dlRel.pdlname;\n formData.cdlname = dlRel.cdlname;\n formData.product_id = product.id;\n formData.layout_id = layout.id;\n this.props.deleteLyDLRelKey(url, endpoint.method, formData);\n }\n render() {\n const dlRelKey = this.state.dlRelKey;\n const isPresetProduct = this.state.isPresetProduct;\n const product = this.state.product;\n return (\n
    \n \n {dlRelKey.key}\n {dlRelKey.order}\n \n {!isPresetProduct && product.product_state == \"edit\" && (\n \n \"deleteIcon\"\n \n )}\n \n \n
    \n );\n }\n}\n","import React from \"react\";\nimport LyDlRelKeyContainer from \"../../../containers/layouts/lydlrel/LyDlRelKeyContainer\";\nimport { Col, Row } from \"react-bootstrap\";\nimport AddLyDlRelKeyContainer from \"../../../containers/layouts/lydlrel/AddLyDlRelKeyContainer\";\n\nexport default class LyDlRelKeyList extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this.toggleExpand = this.toggleExpand.bind(this);\n }\n\n toggleExpand(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { expand: !this.state.expand }));\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const layout = this.state.layout;\n const product = this.state.product;\n const dlRel = this.state.dlRel;\n const relation_keys = this.state.dlRel.datalevel_relation_keys;\n\n if (relation_keys == null) {\n return null;\n }\n const isExpand = this.state.expand;\n let children = [];\n if (isExpand) {\n for (let i = 0; i < relation_keys.length; i++) {\n children.push(\n \n );\n }\n }\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport LyDlRelContainer from \"../../../containers/layouts/lydlrel/LyDlRelContainer\";\nimport EditLyDlRelListContainer from \"../../../containers/layouts/lydlrel/EditLyDlRelListContainer\";\nimport AddLyDlRelContainer from \"../../../containers/layouts/lydlrel/AddLyDlRelContainer\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { authorized, Authorized } from \"../../../adukku_utils/authorizeUser\";\n\nexport default class LyDlRelList extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this.toggleExpand = this.toggleExpand.bind(this);\n this.addRelKey = this.addRelKey.bind(this);\n this.getDlRelsByType = this.getDlRelsByType.bind(this);\n }\n\n toggleExpand(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { expand: !this.state.expand }));\n }\n componentDidMount() {\n if (this.state.product && this.state.product.id) this.props.getKeys(this.state.product.id);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n addRelKey(e) {\n e.preventDefault();\n this.setState(Object.assign({}, this.state, { isAddVisible: true }));\n }\n\n getDlRelsByType(type, isExpand) {\n let children = [];\n const layout = this.state.layout;\n const product = this.state.product;\n const isAddVisible = this.state.isAddVisible;\n const datalevel_relations = layout.datalevel_relations;\n const role = this.state.role;\n\n if (isExpand) {\n if (type == \"product_key\")\n for (let i = 0; i < datalevel_relations.length; i++) {\n let dlRel = datalevel_relations[i];\n if (dlRel.style.toUpperCase() == \"P\")\n children.push(\n \n );\n }\n else\n for (let i = 0; i < datalevel_relations.length; i++) {\n let dlRel = datalevel_relations[i];\n if (dlRel.style.toUpperCase() != \"P\")\n children.push(\n \n );\n }\n }\n return children;\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const layout = this.state.layout;\n const product = this.state.product;\n const isAddVisible = this.state.isAddVisible;\n const datalevel_relations = layout.datalevel_relations;\n const role = this.state.role;\n\n if (datalevel_relations == null) {\n return null;\n }\n const isExpand = this.state.expand;\n let children = this.getDlRelsByType(this.props.type, isExpand);\n let label = \"Layout Data Level Relationships & Keys\";\n if (this.props.type == \"product_key\")\n label = \"Layout Data Level Relationships & Keys via Product Set keys\";\n else label = \"Layout Data Level Relationships & Keys via non-Product Set keys\";\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport { Form, FormGroup, ControlLabel, FormControl, Modal, Button } from \"react-bootstrap\";\nimport serialize from \"form-serialize\";\n\nimport Select from \"../../react-select-override/FixRequiredSelect\";\nimport { ENDPOINTS } from \"../../../constants/endpoints\";\nimport { authorized, Authorized } from \"../../../adukku_utils/authorizeUser\";\n\nexport default class AddLySlotFor extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n // this.state = {\n // layout: props.layout,\n // layout_datalevels: props.layout_datalevels,\n // product: props.product,\n // };\n this.hideOverlay = this.hideOverlay.bind(this);\n this.showOverlay = this.showOverlay.bind(this);\n this.handleLayoutDLChange = this.handleLayoutDLChange.bind(this);\n this.handleDLAttrChange = this.handleDLAttrChange.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n componentDidMount() {\n let presetProductId = localStorage.getItem(\"preset_product_id\");\n const isPresetProduct =\n !presetProductId || presetProductId == \"null\" || presetProductId == \"undefined\"\n ? false\n : true;\n this.setState({ isPresetProduct: isPresetProduct });\n }\n\n hideOverlay(e) {\n this.setState(Object.assign({}, this.state, { visible: false }));\n }\n\n showOverlay(e) {\n e.stopPropagation();\n this.setState(Object.assign({}, this.state, { visible: true }));\n }\n\n handleLayoutDLChange(e) {\n e.preventDefault();\n const selected_layout_datalevel = this.state.layout_datalevels.filter((lyDl) => {\n return lyDl.dlname == e.target.value;\n })[0];\n this.setState({ selected_layout_datalevel: selected_layout_datalevel });\n }\n\n handleDLAttrChange(attr_names) {\n // e.preventDefault();\n const selected_layout_datalevel = this.state.selected_layout_datalevel;\n let selected_attrs = selected_layout_datalevel.attributes.filter((attr) => {\n return (\n attr_names.filter((attr_name) => {\n return attr_name.value == attr.name;\n }).length > 0\n );\n });\n this.setState({ selected_attrs: selected_attrs });\n }\n\n handleSubmit(e) {\n e.preventDefault();\n const selected_attrs = this.state.selected_attrs;\n const layout = this.state.layout;\n const product = this.state.product;\n const role = this.state.role;\n\n let formData = serialize(e.target, { hash: true, empty: true });\n let dlname = formData.lyslotfor[\"dlname\"];\n let dl = this.state.layout_datalevels.filter((dl) => dl.dlname == dlname)[0];\n let maxOrder = Math.max.apply(\n Math,\n this.props.slotFors.map(function (o) {\n return o.attributeorder;\n })\n );\n maxOrder = parseInt(maxOrder) || 0;\n let newFormData = [];\n let temp = null;\n for (let i = 0; i < selected_attrs.length; i++) {\n temp = serialize(e.target, { hash: true, empty: true });\n temp.lyslotfor[\"slotforcode\"] = dl.dltype == \"main\" ? \"MA\" : \"OT\";\n temp.lyslotfor[\"attributename\"] = selected_attrs[i].name;\n temp.lyslotfor[\"attributetype\"] = selected_attrs[i].type.toLowerCase();\n temp.lyslotfor[\"layout_id\"] = layout.id;\n temp.lyslotfor[\"layout_id\"] = layout.id;\n temp.lyslotfor[\"product_id\"] = product.id;\n newFormData.push(temp);\n // if (temp.lyslotfor[\"slotforcode\"] == \"MA\") {\n // newFormData.push({\n // ...temp,\n // lyslotfor: {\n // ...temp.lyslotfor,\n // slotforcode: \"MM\"\n // }\n // });\n // }\n temp = null;\n }\n const that = this;\n let endpoint = null;\n newFormData.map((data, i) => {\n console.debug(data);\n endpoint = Object.assign({}, ENDPOINTS.layout_slotfors.create, {});\n endpoint.uri = endpoint.uri.replace(\":slotforcode\", data.lyslotfor.slotforcode);\n endpoint.uri = endpoint.uri.replace(\":layout_id\", layout.id);\n that.props.createLyDLSlotFor(\n endpoint.uri,\n endpoint.method,\n Object.assign({}, data.lyslotfor, { attributeorder: maxOrder + i + 1 })\n );\n endpoint = null;\n });\n this.hideOverlay(e);\n }\n\n render() {\n const slotFors = this.state.slotFors;\n const isVisible = this.state.visible;\n const layout_datalevels = this.state.layout_datalevels;\n const selected_layout_datalevel = this.state.selected_layout_datalevel;\n const selected_attrs = this.state.selected_attrs;\n const datalevel_relations = this.state.layout.datalevel_relations;\n const product = this.state.product;\n const role = this.state.role; \n const { isPresetProduct } = this.state;\n \n if (authorized([\"admin\", \"owner\"], [role, product.product_role], \"ANY\")) {\n return (\n \n \n \n
  • \n {!isPresetProduct && Add Slot For's}\n \n \n
    \n \n Add Slot For's\n \n \n \n Select Data Level:\n \n \n {layout_datalevels.map((layout_datalevel) => {\n let dl = datalevel_relations.find(\n (dl) => dl.cdlname == layout_datalevel.dlname\n );\n if (dl)\n return (\n \n );\n })}\n \n \n \n Select Data Level Attribute:\n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default CCavenuePayment;","import React, { Component } from \"react\";\nimport { Row, Col, Form, Modal, Button } from \"react-bootstrap\";\nimport jsPDF from \"jspdf\";\nimport html2canvas from \"html2canvas\";\nimport { formatCurrency } from \"../../adukku_utils/formatCurrency\";\n\nclass DownloadFiles extends Component {\n constructor(props) {\n super(props);\n this.state = { ...props, expand: false, isEditProductClicked: false };\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps !== this.state) {\n this.setState({ ...nextProps });\n }\n }\n\n UNSAFE_componentWillMount() {\n this.props.getSets(this.props.product.id);\n }\n\n onExpandToggle = (e) => {\n e.stopPropagation();\n e.preventDefault();\n this.setState({ expand: !this.state.expand });\n };\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n getOrderedProductSets = (order) => {\n if (order && order.status == \"paid\") {\n let t = [];\n let sets = order && order.order_details && order.order_details.sets;\n let product_sets = this.state.product_sets;\n if (sets && Object.keys(sets).includes(\"all\")) {\n return product_sets.map((product_set, i) => {\n let counts =\n (product_set && product_set.counts && product_set.counts[this.state.main_dlname]) || [];\n const count = (counts || []).find((f) => f.setno == product_set.setno) || {\n main_occurence_count: 0,\n };\n let productSetRecords = [];\n for (let index = 1; index < count.main_occurence_count; index++) {\n productSetRecords.push(
  • {\"Record No \" + index}
  • );\n }\n return (\n {\n this.setState({\n [`p_set_${product_set.setno}`]: !(\n this.state[`p_set_${product_set.setno}`] || false\n ),\n });\n }}\n >\n {this.getExpandJSX(this.state[`p_set_${product_set.setno}`] || false)}\n {product_set && \" \" + product_set.desc}\n {this.state[`p_set_${product_set.setno}`] &&
      {productSetRecords}
    }\n \n );\n });\n } else if (sets && Object.keys(sets).length > 0) {\n return Object.keys(sets).map((setno) => {\n let product_set = (product_sets || []).find((set) => set.setno == setno);\n let counts =\n (product_set && product_set.counts && product_set.counts[this.state.main_dlname]) || [];\n const count = (counts || []).find((f) => f.setno == setno) || {\n main_occurence_count: 0,\n };\n let productSetRecords = [];\n let seq_nos = Object.keys(sets[setno] || {});\n // Object.keys(sets[setno]).map((seq_no) => {});\n for (let index = 0; index < seq_nos.length; index++) {\n productSetRecords.push(
  • {\"Record No \" + (parseInt(seq_nos[index]) + 1)}
  • );\n }\n // if (sets[setno] && Object.keys(sets[setno]).includes(\"all\")) {\n // for (let index = 1; index < count.main_occurence_count; index++) {\n // productSetRecords.push(
  • {\"Record No \" + index}
  • );\n // }\n // } else if (Object.keys(sets[setno]).length > 0) {\n // let seq_nos = Object.keys(sets[setno] || {});\n // // Object.keys(sets[setno]).map((seq_no) => {});\n // for (let index = 1; index < seq_nos.length; index++) {\n // productSetRecords.push(
  • {\"Record No \" + seq_nos[index]}
  • );\n // }\n // }\n return (\n {\n this.setState({\n [`p_set_${product_set.setno}`]: !(\n this.state[`p_set_${product_set.setno}`] || false\n ),\n });\n }}\n >\n {this.getExpandJSX(this.state[`p_set_${product_set.setno}`] || false)}\n {product_set && \" \" + product_set.desc}\n {this.state[`p_set_${product_set.setno}`] &&
      {productSetRecords}
    }\n \n );\n });\n }\n }\n };\n\n printDocument = (orderId) => {\n const input = document.getElementById(\"divToPrint2\");\n html2canvas(input).then((canvas) => {\n const imgData = canvas.toDataURL(\"image/jpeg\");\n const pdf = new jsPDF();\n var width = pdf.internal.pageSize.getWidth();\n var height = pdf.internal.pageSize.getHeight();\n pdf.addImage(imgData, \"JPEG\", 0, 0, width, height);\n // pdf.output('dataurlnewwindow');\n pdf.save(`${orderId}.pdf`);\n });\n };\n\n getOrderInvoice = (order) => {\n let user = {};\n let amount = order.paypal_capture.purchase_units[0].table.payments.table.captures[0].table.amount.table.value;\n console.log(\"paypal_capture.amount=> \", amount)\n // const convenienceCharges = formatCurrency(\n // order.total_amount - order.total_files_amount,\n // 100,\n // \"USD\"\n // );\n return (\n {\n this.setState({\n currentOrder: null,\n isEditProductClicked: false,\n });\n }}\n >\n
    \n \n Invoice\n \n \n
    \n \n \n \n \n \n \n \n {\" \"}\n \n \n \n {\" \"}\n {// \n // Bala Edit - Commented above and added below line with Date Function\n }\n \n \n \n {\" \"}\n \n \n \n {\" \"}\n \n \n
    \n \n \n \n INVOICE\n \n
    COMPOSZ LLC,Invoice #: INVFIL00000{order.id}
    #121 HAUT BRION AVENUEInvoice Date: {order.created_at}Invoice Date: {new Date(order.created_at).toLocaleString().split(',')[0]}
    NEWARK, DE-19702.\n Invoice Amount: {formatCurrency(amount, 1, \"USD\")}\n {/* {(order.total_amount / 100).toFixed(2)} */}\n
    \n Status: PAID\n
    \n \n BILLED TO\n \n

    \n {order.full_name || \"Not Provided\"}\n
    \n {order.email}\n
    \n {order.address || \"Not Provided\"}\n

    \n
    \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n {order.prtype!=='NORMAL'?\n \n \n \n \n \n \n : null\n }\n

    \n \n \n \n
    DescriptionPriceQuantityAmount
     Digital Files - (.jpeg)\n {formatCurrency(order.price_first_page, 100, \"USD\")}\n {/* ${(order.price_first_page / 100).toFixed(2)} */}\n       {order.num_files}\n {formatCurrency(order.total_files_amount, 100, \"USD\")}\n {/* ${(order.total_files_amount / 100).toFixed(2)} */}\n
     Audio Files - {order.prtype} - (.html)\n {formatCurrency(4,1, \"USD\")}/record\n {/* ${(order.price_first_page / 100).toFixed(2)} */}\n Upto {order.num_files}  files\n {formatCurrency(4*(order.num_files/this.state.product.numpages), 1, \"INR\")}\n {/* ${(order.total_files_amount / 100).toFixed(2)} */}\n
    \n \n \n \n \n \n \n \n \n \n \n {order.prtype!=='NORMAL'?\n \n :\n \n }\n \n \n \n \n \n \n \n \n \n \n \n {order.prtype!=='NORMAL'? \n \n :\n \n }\n \n \n \n \n
    PAYMENT DETAILS
    Paypal Transaction ID | {order.paypal_capture_id}\n Item (s) Subtotal:{\" \"}\n {formatCurrency((order.total_files_amount/100) + (4*(order.num_files/this.state.product.numpages)), 1, \"USD\")}\n {/* ${(order.total_files_amount / 100).toFixed(2)} */}\n \n Item (s) Subtotal:{\" \"}\n {formatCurrency(order.total_files_amount, 100, \"USD\")}\n {/* ${(order.total_files_amount / 100).toFixed(2)} */}\n
    \n Convenience charges:{\" \"}\n {formatCurrency(order.total_amount - order.total_files_amount, 100, \"USD\")}\n
    \n Tax to be collected:{\" \"} {formatCurrency(order.pg_fixed_fee, 100, \"USD\")}\n {/* {(order.pg_fixed_fee / 100).toFixed(2)} */}\n
    \n \n GRAND TOTAL :{\" \"}\n {formatCurrency(((order.total_files_amount/100) + (4*(order.num_files/this.state.product.numpages)) + ((order.total_amount - order.total_files_amount)/100)), 1, \"USD\")}\n {/* ${(order.total_amount / 100).toFixed(2)} */}\n \n \n \n GRAND TOTAL :{\" \"}\n {formatCurrency(order.total_amount, 100, \"USD\")}\n {/* ${(order.total_amount / 100).toFixed(2)} */}\n \n
    \n\n

    To download the digital files, login to https://composz.com

    \n

    Thanks for your purchase

    \n

    -- team Composz

    \n

    \n

    \n

    \n {order.prtype!=='NORMAL'?\n \n Note: If no Audio is recorded, no Audio files (.html) will be generated; \n User will still be charged due to user's Product choice of Voice Options\n & provision of Voice recording infrastructure made available to the user.\n It is user's responsibility to record Audio or choose NO-VOICE for Product.\n \n

    \n : null\n }\n \n
    \n \n
    \n \n {\n this.printDocument(`INVFIL00000${order.id}`);\n }}\n >\n Download\n \n {\n this.setState({\n isEditProductClicked: false,\n });\n }}\n >\n Cancel\n \n \n
    \n \n );\n };\n\n getccavenueOrderInvoice = (order) => {\n let user = {};\n console.log(order);\n\n // const convenienceCharges = formatCurrency(\n // order.total_amount - order.total_files_amount,\n // 100,\n // \"USD\"\n // );\n return (\n {\n this.setState({\n currentOrder: null,\n isEditProductClicked: false,\n });\n }}\n >\n
    \n \n Invoice\n \n \n
    \n \n \n \n \n \n \n \n {\" \"}\n \n \n \n {\" \"}\n {// \n // Bala Edit - Commented above and added below line with Date Function\n }\n \n \n \n {\" \"}\n \n \n \n {\" \"}\n \n \n
    \n \n \n \n INVOICE\n \n
    LIFE COLORS,Invoice #: INVFIL00000{order.id}
    #9, 4th Cross, Kothanur Main Road,Invoice Date: {order.created_at}Invoice Date: {new Date(order.created_at).toLocaleString().split(',')[0]}
    Bangalore 560 062.\n Invoice Amount: {formatCurrency(order.ccavenue_capture.amount, 1, \"INR\")}\n {/* {(order.total_amount / 100).toFixed(2)} */}\n
    GSTIN: 29AUTPB5544P1ZS; GST SAC Code: 998434\n Status: PAID\n
    \n \n BILLED TO\n \n

    \n {order.ccavenue_capture.billing_name}\n
    \n {order.ccavenue_capture.billing_address}\n
    \n {order.ccavenue_capture.billing_city}, {order.ccavenue_capture.billing_state} - {order.ccavenue_capture.billing_zip}\n
    \n {order.email}, {order.ccavenue_capture.billing_tel}\n
    \n

    \n
    \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n {order.prtype!=='NORMAL'?\n \n \n \n \n \n \n : null\n }\n

    \n \n \n \n
    DescriptionPriceQuantityAmount
    Digital Files - (.jpeg)\n {formatCurrency(order.price_first_page, 1, \"INR\")}\n {/* ${(order.price_first_page / 100).toFixed(2)} */}\n       {order.num_files}\n {formatCurrency(order.total_files_amount, 1, \"INR\")}\n {/* ${(order.total_files_amount / 100).toFixed(2)} */}\n
    Audio Files - {order.prtype} - (.html)\n {formatCurrency(parseInt(order.prtype.split('-')[1].split('SEC')[0])==15?127:200,1, \"INR\")}/record\n {/* ${(order.price_first_page / 100).toFixed(2)} */}\n Upto {order.num_files} files\n {formatCurrency((parseInt(order.prtype.split('-')[1].split('SEC')[0])==15?127:200)*(order.num_files/this.state.product.numpages), 1, \"INR\")}\n {/* ${(order.total_files_amount / 100).toFixed(2)} */}\n
    \n \n \n \n \n \n \n \n \n \n \n {order.prtype!=='NORMAL'?\n \n :\n \n }\n \n \n \n \n \n \n \n {order.prtype!=='NORMAL'? \n \n :\n \n } \n \n \n \n {order.prtype!=='NORMAL'? \n \n :\n \n }\n \n \n
    PAYMENT DETAILS
    CCAvenue Tracking ID: {order.ccavenue_capture.tracking_id}\n Item (s) Subtotal:{\" \"}\n {formatCurrency(order.total_files_amount + (parseInt(order.prtype.split('-')[1].split('SEC')[0])==15?127:200)*(order.num_files/this.state.product.numpages), 1, \"INR\")}\n {/* ${(order.total_files_amount / 100).toFixed(2)} */}\n \n Item (s) Subtotal:{\" \"}\n {formatCurrency(order.total_files_amount, 1, \"INR\")}\n {/* ${(order.total_files_amount / 100).toFixed(2)} */}\n
    Payment Mode: {order.ccavenue_capture.payment_mode} {\"-\"} {order.ccavenue_capture.card_name}\n Convenience charges:{\" \"}\n {formatCurrency(order.num_files * order.pg_transaction_fee, 1, \"INR\")}\n
    Bank Ref No: {order.ccavenue_capture.bank_ref_no}\n GST 18%: {\" \"} {formatCurrency(((order.num_files * 75.00 + order.num_files * 10.00) + (parseInt(order.prtype.split('-')[1].split('SEC')[0])==15?127:200)*(order.num_files/this.state.product.numpages) )* 0.18, 1, \"INR\")}\n {/* {(order.pg_fixed_fee / 100).toFixed(2)} */}\n \n GST 18%: {\" \"} {formatCurrency((order.num_files * 75.00 + order.num_files * 10.00) * 0.18, 1, \"INR\")}\n {/* {(order.pg_fixed_fee / 100).toFixed(2)} */}\n
    \n \n GRAND TOTAL :{\" \"}\n {formatCurrency(Math.round(((order.num_files * 75.00 + order.num_files * 10.00) + (parseInt(order.prtype.split('-')[1].split('SEC')[0])==15?127:200)*(order.num_files/this.state.product.numpages) + ((order.num_files * 75.00 + order.num_files * 10.00) + (parseInt(order.prtype.split('-')[1].split('SEC')[0])==15?127:200)*(order.num_files/this.state.product.numpages) )* 0.18)) , 1, \"INR\")}\n {/* ${(order.total_amount / 100).toFixed(2)} */}\n \n \n \n GRAND TOTAL:{\" \"}\n {formatCurrency(order.total_amount, 1, \"INR\")}\n {/* ${(order.total_amount / 100).toFixed(2)} */}\n \n
    \n\n

    To download the digital files, login to https://composz.com

    \n

    Thanks for your purchase

    \n

    --team Composz

    \n

    \n

    \n

    \n {order.prtype!=='NORMAL'?\n \n Note: If no Audio is recorded, no Audio files (.html) will be generated; \n User will still be charged due to user's Product choice of Voice Options\n & provision of Voice recording infrastructure made available to the user.\n It is user's responsibility to record Audio or choose NO-VOICE for Product.\n \n

    \n : null\n }\n
    \n \n
    \n \n {\n this.printDocument(`INVFIL00000${order.id}`);\n }}\n >\n Download\n \n {\n this.setState({\n isEditProductClicked: false,\n });\n }}\n >\n Cancel\n \n \n
    \n \n );\n };\n\n\n getCookie(cname) {\n let name = cname + \"=\";\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for(let i = 0; i \n \n {this.getExpandJSX(expand)} {treeName}\n \n {expand && (\n \n
      \n {paidOrders.map((order, i) => {\n return (\n
    • \n {\n this.setState({\n [`order_${order.id}`]: !(this.state[`order_${order.id}`] || false),\n });\n }}\n >\n {this.getExpandJSX(this.state[`order_${order.id}`] || false)}\n {\" Order ID \" +\n order.id +\n \" \" +\n `${new Date(order.created_at).toLocaleString()} `}\n \n \n Download\n {\" \"}\n |{\" \"}\n {\n e.stopPropagation();\n e.preventDefault();\n this.setState({\n currentOrder: order,\n isEditProductClicked: !this.state.isEditProductClicked,\n });\n }}\n >\n Invoice\n \n \n {this.state[`order_${order.id}`] && (\n
        {this.getOrderedProductSets(order)}
      \n )}\n
    • \n );\n })}\n
    \n {this.state.isEditProductClicked && (this.countryCode!==\"IN\"?this.getOrderInvoice(this.state.currentOrder):this.getccavenueOrderInvoice(this.state.currentOrder))}\n
    \n )}\n \n );\n }\n}\n\nexport default DownloadFiles;\n","import React from \"react\";\nimport PaymentContainer from \"../../containers/orders/PaymentContainer\";\n\nexport default class Layout extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n setno: props.setno,\n product: props.product,\n pageno: props.pageno,\n layout: props.layout\n };\n }\n onExpandToggle = e => {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ expand: !this.state.expand });\n };\n\n UNSAFE_componentWillReceiveProps() {}\n\n UNSAFE_componentWillMount() {}\n\n getOrderDetails(pricing, pageno) {\n let charges =\n pricing.pg_charges.transaction_fee + pricing.pg_charges.fixed_fee;\n let first_page_price = pricing.charges.first_page;\n let non_first_page_price = pricing.charges.non_first_page;\n let page_price = pageno === 1 ? first_page_price : non_first_page_price;\n if (pricing && pricing.has_main_page) {\n return (\n \n
  • Price for page: {page_price}
  • \n
  • Total Amount: {page_price} + Additional charges
  • \n
  • {this.getCartDetails(pageno)}
  • \n
    \n );\n }\n }\n\n getCartDetails = pageno => {\n pageno = pageno.toString();\n let product_order = this.state.product.order;\n let product_set = this.props.product_set;\n if (product_order.status === \"paid\") {\n return \"Download\";\n } else if (product_set && product_set.order) {\n let page_order_status = product_set.order.page_no;\n let page_nos =\n product_set.order && product_set.order.page_no\n ? Object.keys(product_set.order.page_no)\n : null;\n\n if (\n (page_nos &&\n (page_nos.includes(pageno) &&\n page_order_status[pageno] === \"paid\")) ||\n (page_nos && page_nos.length === 0)\n ) {\n return \"Download\";\n } else {\n return \"Add to Cart\";\n }\n } else {\n return \"Add to Cart\";\n }\n };\n\n getOrderStatus(pageno) {\n pageno = pageno.toString();\n let product_order = this.state.product.order;\n let product_set = this.props.product_set;\n if (product_order.status === \"paid\") {\n return \"Download\";\n } else if (product_set && product_set.order) {\n let page_order_status = product_set.order.page_no;\n let page_nos =\n product_set.order && product_set.order.page_no\n ? Object.keys(product_set.order.page_no)\n : null;\n\n if (\n (page_nos &&\n (page_nos.includes(pageno) &&\n page_order_status[pageno] === \"paid\")) ||\n (page_nos && page_nos.length === 0)\n ) {\n return \"Download\";\n } else {\n return (\n \n );\n }\n } else {\n return (\n \n );\n }\n }\n\n render() {\n const product = this.state.product;\n const pricing = product.pricing;\n const set_layout = this.state.layout;\n const pageno = this.state.pageno;\n let expandView = [];\n\n if (set_layout.layout_id) {\n let t = (\n
  • \n {\"Page no \" + pageno}\n \n \n \n \n \n \n \n \n \n
    {/* */}
    \n \n Preview final product\n \n
    \n
  • \n );\n expandView.push(t);\n }\n return {expandView};\n }\n}\n","import React, { Component } from \"react\";\nimport CartContext from \"../../context/cart/CartContext\";\nimport { TOGGLE_PRODUCT_EXPAND } from \"../../actions\";\nimport OrderProductSetListContainer from \"../../containers/orders/OrderProductSetListContainer\";\nimport PaymentContainer from \"../../containers/orders/PaymentContainer\";\nimport ShareProductContainer from \"../../containers/orders/ShareProductContainer\";\nimport DownloadFilesContainer from \"../../containers/orders/DownloadFilesContainer\";\n// \"../containers/orders/DownloadFilesContainer\";\n\nexport default class Order extends Component {\n constructor(props) {\n super(props);\n this.state = { ...props, isAllAddedToCart: false };\n }\n onExpandToggle = (e) => {\n e.stopPropagation();\n e.preventDefault();\n this.setState({ expand: !this.state.expand });\n // this.props.toggleView({\n // reducerKey: TOGGLE_PRODUCT_EXPAND,\n // id: this.props.product.id\n // });\n this.props.getSets(this.props.product.id);\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.product !== this.state.product) {\n this.setState({ product: nextProps.product });\n }\n }\n\n componentDidMount() {\n this.props.getPrice(this.props.product.id);\n // this.props.getOrders({ status: \"pending\" });\n }\n\n setCartQty(){\n // Timeout is used as state updates are asyn! Important\n setTimeout(() => this.context.setqty(this.props.cart_product.num_files), 1000);\n }\n\n getPaymentDetails = (order, product) => {\n if (\n (order && order.status == \"paid\" && product.freeze_count == order.freeze_count) ||\n (product.pricing && product.pricing.price_for_files === 0)\n ) {\n return (\n
      \n
    • Download
    • \n
    \n );\n } else if (order && order.status == \"pending\") {\n return (\n
      \n \n
    \n );\n } else {\n return (\n
      \n \n
    \n );\n }\n };\n\n getCartDetails = (order, product) => {\n // if (product.product_role == \"viewer\") return null;\n if (\n order &&\n order.status == \"paid\" &&\n product.freeze_count == order.freeze_count &&\n this.isProductAddToCart(product.id, \"order\")\n ) {\n return (\n
      \n
    • Already Ordered
    • \n
    \n );\n } else {\n if (product.product_role == \"viewer\") return null;\n return (\n \n
      \n
    • \n {this.isProductAddToCart(product.id, \"order\") ? (\n {\n this.props.addToCart({ product_id: product.id, setno: \"all\", type: \"remove\", });\n this.setState({\n isAllAddedToCart: !this.state.isAllAddedToCart,\n });\n this.setCartQty();\n }}\n >\n Remove all Product Set Records from cart\n \n ) : (\n {\n this.props.addToCart({ product_id: product.id, });\n this.setState({\n isAllAddedToCart: !this.state.isAllAddedToCart,\n });\n this.setCartQty();\n }}\n >\n Add all Product Set Records to Cart\n \n )}\n
    • \n
    \n \n );\n }\n };\n\n \n isProductAddToCart = (product_id, type) => {\n const { cart_product: product_cart, product_set, product } = this.state;\n let cart_product = {};\n let not_ordered_product = {};\n if (type == \"order\")\n not_ordered_product = product.order.filter(notOrdered=>notOrdered.status != \"paid\")\n //cart_product = type == \"cart\" ? [product_cart] : (product && product.order) || []; Bala introduced this. We may not need this.\n cart_product = type == \"cart\" ? [product_cart] : (product && not_ordered_product) || []; \n let isAddedToCart = this.state.isAllAddedToCart; \n if (cart_product && cart_product[0]) {\n for (let index = 0; index < cart_product.length; index++) {\n const cp = cart_product[index];\n let sets = (cp && cp.order_details && cp.order_details.sets) || {};\n if (Object.keys(sets).includes(\"all\")) {\n isAddedToCart = !this.state.isAllAddedToCart;\n break;\n }\n isAddedToCart = this.state.isAllAddedToCart;\n \n }\n }\n return isAddedToCart;\n \n };\n\n // Add to Cart is not flipping to Remove and vice versa!\n OriginalisProductAddToCart = (product_id, type) => {\n const { cart_product: product_cart, product_set, product } = this.state;\n let cart_product = {};\n cart_product = type == \"cart\" ? [product_cart] : (product && product.order) || [];\n let isAddedToCart = false; \n if (cart_product && cart_product[0]) {\n for (let index = 0; index < cart_product.length; index++) {\n const cp = cart_product[index];\n let sets = (cp && cp.order_details && cp.order_details.sets) || {};\n if (Object.keys(sets).includes(\"all\")) {\n isAddedToCart = true;\n break;\n }\n isAddedToCart = false;\n \n }\n }\n return isAddedToCart;\n \n };\n\n getOrderDetails1 = (product) => {\n const pricing = product.pricing;\n const order = product.order;\n if (order && order.status === \"paid\") {\n return (\n
      \n
    • No. of files: {order.num_files}
    • \n
    • Total Amount: {order.total_amount}
    • \n
    \n );\n } else if (pricing) {\n return (\n
      \n
    • {pricing && pricing.pages_count && pricing.pages_count.total} Files
    • \n
    • Total Amount: {pricing.price_total}
    • \n
    \n );\n }\n };\n\n getOrderDetails(product) {\n const pricing = product.pricing;\n const order = (product.order || []).find((o) => o.status == \"pending\");\n if (order && order.status == \"pending\") {\n return (\n
      \n
    • Total files: {order.num_files}
    • \n
    • Price per File: ${order.price_first_page / 100}
    • \n
    • Total files amount: ${order.total_files_amount / 100}
    • \n
    • Convenience Charges: ${(order.total_amount - order.total_files_amount) / 100}
    • \n
    • Grand Total Amount: ${order.total_amount / 100}
    • \n
    \n );\n }\n // if (order && order.status === \"paid\") {\n // return (\n //
      \n //
    • No. of files: {order.num_files}
    • \n //
    • Total Amount: {order.total_amount}
    • \n //
    \n // );\n // } else if (pricing) {\n // return (\n //
      \n //
    • {pricing && pricing.pages_count && pricing.pages_count.total} Files
    • \n //
    • Total Amount: {pricing.price_total}
    • \n //
    \n // );\n // }\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const product = this.state.product;\n const expand = this.state.expand;\n const order = this.state.product.order;\n const { isShowDownloads } = this.state;\n\n const readOnly = (\n \n {this.getExpandJSX(expand)} {product.name}\n \n );\n\n let productSets = null;\n if (expand == true) {\n productSets = (\n \n
  • \n \n {this.getExpandJSX(expand)} Product Sets\n \n \n
  • \n\n {product.product_role != \"viewer\" ? (\n
  • \n {this.getExpandJSX(expand)} All Product Sets\n\n {/* {this.getOrderDetails(product)} */}\n {/* {this.getPaymentDetails(order, product)} */}\n\n {this.getCartDetails(order, product)}\n
  • ) : (\"\")}\n\n {/* */}\n
    \n );\n }\n let orders = product.order || [];\n \n let isAnyPaidOrders = orders.some((o) => o.status == \"paid\");\n return (\n \n
  • \n \n {this.getExpandJSX(expand)} {this.state.treeName || \"View Final Product Files\"}\n \n
  • \n {this.state.expand &&
      {productSets}
    }\n {product.product_state == \"completed\" && isShowDownloads && isAnyPaidOrders && (\n \n \n \n )}\n
    \n );\n // return (\n //
  • \n // {readOnly}\n // {expand && (\n // \n //
  • {this.getExpandJSX(expand)} View Final Product Files
  • \n //
      {productSets}
    \n // \n // )}\n // \n // );\n }\n}\n\nOrder.contextType=CartContext\n","import React, { Component } from \"react\";\nimport OrderContainer from \"../../containers/orders/OrderContainer\";\n\nclass OrderList extends Component {\n state = {\n expandFlag: false,\n };\n UNSAFE_componentWillReceiveProps(nextProps) {}\n\n componentDidMount() {\n this.props.getProducts();\n this.props.getOrders({ status: \"pending\" });\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n onExpandToggle = (e) => {\n e.stopPropagation();\n e.preventDefault();\n this.setState({ expandFlag: !this.state.expandFlag });\n // this.props.getSets(this.props.product.id);\n };\n\n render() {\n const products = this.props.products;\n const { expandFlag } = this.state;\n const productList = products.length ? (\n products.map((product) => {\n return (\n \n
  • \n \n {this.getExpandJSX(expandFlag)} {product.name}\n \n
  • \n {expandFlag && (\n
      \n \n
    \n )}\n
    \n // \n //
  • \n // \n // {this.getExpandJSX(expand)} {this.state.treeName || \"View Final Production Files\"}\n // \n //
  • \n // {this.state.expand &&
      {productSets}
    }\n //
    \n );\n })\n ) : (\n
    No Orders
    \n );\n\n return (\n
    \n {/*

    My Orders

    */}\n

    View/Pay Products

    \n \n
      {productList}
    \n
    \n
    \n );\n }\n}\n\nexport default OrderList;\n","import React, { component, useEffect } from \"react\";\nimport LayoutContainer from \"../../containers/orders/LayoutContainer\";\nimport PaymentContainer from \"../../containers/orders/PaymentContainer\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport CartContext from \"../../context/cart/CartContext\";\n\n\n\n\nexport default class ProductSet extends React.Component {\n \n constructor(props) {\n super(props);\n // let customState = { ...props, isAddedToCart: false, myMainOccurenceCount: [], mydbKeyVals: [], filesCountBySet: [] };\n let customState = { ...props, isAddedToCart: false, myMainOccurenceCount: [], filesCountBySet: [] };\n customState.expand = false;\n this.state = customState;\n \n \n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n UNSAFE_componentWillMount() {\n this.props.getPrice(this.props.product.id, this.state.setno);\n }\n \n componentDidMount() {\n // ** Important note: Bala - Compulsarily look at files generated rather than rowcounts from DB!!!\n this.getFinalFilesCountBySet();\n\n if (this.props.cart_product !== undefined && this.props.cart_product !== null){\n this.context.setqty(this.props.cart_product.num_files); \n }\n if (this.props.cart_product == (undefined||null)){\n this.context.setqty(0); \n }\n\n // this.getKeyValsfromDB(); \n// this.getMainOccurenceCount();\n //this.mygetRowsCountBySet();\n }\n\n componentWillUnmount() {\n this.context.setqty(null)\n }\n \n setCartQty(){\n // Timeout is used as state updates are asyn! Important\n setTimeout(() => this.context.setqty(this.state.cart_product.num_files), 1000);\n }\n\n \n// Bala Edit Start\n\ngetFinalFilesCountBySet = () => {\n let uri = ENDPOINTS.final_files.index.uri;\n var product_id = this.props.product.id;\n var setno = this.state.setno;\n uri = `${uri}?product_id=${product_id}&setno=${setno}`;\n \n let noOfFiles;\n (async () => {\n noOfFiles = await fetch(uri, {\n method: \"GET\", headers: { \"content-type\": \"application/json\" }, \n })\n .then((response) => response.json())\n .then((data) => { \n this.setState({filesCountBySet: data});\n });\n\n })();\n}\n\n\n\ngetMainOccurenceCount = () => {\n let counts_uri = ENDPOINTS.productsetcount.index.uri;\n var product_id = this.props.product.id;\n var setno = this.props.setno;\n \n var where = \"product_id=\" + product_id + \" and setno=\" + setno;\n \n counts_uri = `${counts_uri}?where=${where}`;\n\n let noRecords;\n \n (async () => {\n noRecords = fetch(counts_uri, {\n method: \"GET\", headers: { \"content-type\": \"application/json\" }, \n })\n .then((response) => response.json())\n .then((data) => { \n this.setState({myMainOccurenceCount: data});\n });\n })(); \n};\n\n\n\ngetKeyValsfromDB = () => {\n let keyVals_uri = ENDPOINTS.productkeyval.index.uri;\n var product_id = this.props.product.id;\n var setno = this.props.setno;\n \n var where = \"product_id=\" + product_id + \" and setno=\" + setno;\n \n keyVals_uri = `${keyVals_uri}?where=${where}`;\n\n let noRecords;\n \n // (async () => {\n noRecords = fetch(keyVals_uri, {\n method: \"GET\", headers: { \"content-type\": \"application/json\" }, \n })\n .then((response) => response.json())\n .then((data) => { \n this.setState({mydbKeyVals: data});\n// this.getRowsCountBySet();\n });\n// })(); \n};\n\ngetRowsCountBySet = () => {\n let uri = ENDPOINTS.maindbrowcountforaset.index.uri;\n var product_id = this.props.product.id;\n var dlname = this.props.main_dlname;\n\n var where = \"product_id=\" + product_id;\n \n let localKeyVals = this.props.product_set.keyvals;\n \n if (localKeyVals == undefined){\n localKeyVals = this.state.mydbKeyVals;\n localKeyVals = JSON.parse(localKeyVals);\n }\n \n // myKeyVals.map(keys => console.log(\"map Key = \" + keys.keyname + \" map Key Val = \" + keys.keyval));\n // DataUpload.mainDbRowCountForAset(\"product_id = 4 and dlname='IMAGES' \n // and JSON_CONTAINS(data, '\\\"ALL\\\"', '$.key')\") \n \n const jsonText=\"and JSON_CONTAINS(data, \";\n var allJson = '';\n let whereKeys = [];\n\n \n localKeyVals.map(keys => { \n allJson = jsonText + \"'\" + '\"' + keys.keyval + '\"' + \"','$.\" + keys.keyname + \"')\" \n whereKeys.push(allJson);\n });\n\n let finalWhereKeys = '';\n whereKeys.forEach(myConcat)\n\n function myConcat(item){\n finalWhereKeys = finalWhereKeys + \" \" + item;\n }\n\n where = \"product_id=\" + product_id + \" and dlname='\" + dlname + \"'\";\n\n where = where + \" \" + finalWhereKeys;\n\n uri = `${uri}?where=${where}`;\n\n let noOfFiles;\n\n (async () => {\n noOfFiles = await fetch(uri, {\n method: \"GET\", headers: { \"content-type\": \"application/json\" }, \n })\n .then((response) => response.json())\n .then((data) => { \n this.setState({filesCountBySet: data});\n });\n \n })();\n \n}\n\n\n// Bala Edit End (2 functions)\n\n\n\n getCartDetails = (order, product_id, setno, seq_no) => {\n const { product_role, cart_product, product } = this.state;\n if (product_role == \"viewer\") return null;\n if (this.isProductAddToCart(product_id, setno, seq_no, \"order\")) {\n // Bala Edit return \"Download\"; \n return \"Already Ordered\";\n } else {\n return (\n \n {this.isProductAddToCart(product_id, setno, seq_no, \"cart\") ? (\n {\n this.props.addToCart({\n product_id: product_id,\n setno: setno,\n seq_no,\n type: \"remove\",\n });\n \n if (seq_no == undefined) {\n this.setState({\n isAddedToCart: !this.state.isAddedToCart,\n });\n this.setCartQty();\n }\n if (seq_no != undefined) {\n this.context.decrease();\n // this.context.setqty(this.state.cart_product.num_files); too slow\n }\n }}\n >\n {seq_no!= undefined ? 'Remove from Cart' : 'Remove all records from Cart'}\n \n ) : (\n {\n this.props.addToCart({\n product_id: product_id,\n setno: setno,\n seq_no,\n });\n if (seq_no == undefined) {\n this.setState({\n isAddedToCart: !this.state.isAddedToCart,\n });\n this.setCartQty();\n }\n if (seq_no != undefined) {\n this.context.increase();\n //this.context.setqty(this.state.cart_product.num_files); too slow\n }\n }}\n >\n {seq_no!= undefined ? 'Add Record to Cart' : 'Add all records to Cart'}\n \n )}\n \n );\n }\n };\n\n isProductAddToCart = (product_id, setno, seq_no, type) => {\n const { cart_product: product_cart, product_set, order, product } = this.state;\n let cart_product = {};\n cart_product = type == \"cart\" ? [product_cart] : (order && order) || [];\n \n let isRecordAddedToCart = false;\n let orderedCount = 0;\n let NumFiles = 0;\n let counts =\n (product_set && product_set.counts && product_set.counts[this.state.main_dlname]) || [];\n if (product_set && Array.isArray(product_set.counts)) {\n counts = product_set.counts.filter((ps) => ps.dlname == this.state.main_dlname);\n }\n const count = (counts || []).find((f) => f.setno == setno) || {\n main_occurence_count: 0,\n };\n let addToCartCount = 0;\n\n\n\n //let correctCount = this.state.filesCountBySet.maindbrowcountforaset\n let correctCount = this.state.filesCountBySet.filesCount;\n\n if (count.main_occurence_count < correctCount) \n correctCount = count.main_occurence_count;\n\n \n\n if (count.main_occurence_count == 0) {\n //count.main_occurence_count = this.state.myMainOccurenceCount[0];\n //correctCount = this.state.filesCountBySet.maindbrowcountforaset;\n correctCount = this.state.filesCountBySet.filesCount;\n } \n\n\n if (cart_product && cart_product[0]) {\n for (let index = 0; index < cart_product.length; index++) {\n const cp = cart_product[index];\n\n if (cp.freeze_count != product.freeze_count || cp.status == \"failed\") {\n continue;\n }\n \n let sets = cp && cp.order_details && cp.order_details.sets;\n if (sets && Object.keys(sets).includes(\"all\")) {\n isRecordAddedToCart =\n type == \"cart\"\n ? true\n : cp.status == \"paid\" && cp.freeze_count == product.freeze_count && true;\n } else if (\n setno &&\n sets[setno.toString()] &&\n Object.keys(sets[setno.toString()]).includes(\"all\")\n ) {\n isRecordAddedToCart =\n type == \"cart\"\n ? true\n : cp.status == \"paid\" && cp.freeze_count == product.freeze_count && true;\n } else if ((seq_no || \"0\") && setno && sets[setno] && sets[setno][seq_no]) {\n isRecordAddedToCart =\n type == \"cart\" \n ? true\n : cp.status == \"paid\" && cp.freeze_count == product.freeze_count && true;\n } else if (sets[setno]) {\n if (type == \"order\" && cp.status == \"paid\") {\n orderedCount += cp.order_details.sets[setno]\n ? Object.keys(cp.order_details.sets[setno]).length\n : 0;\n } else {\n addToCartCount += cp.order_details.sets[setno]\n ? Object.keys(cp.order_details.sets[setno]).length\n : 0;\n }\n \n \n } else if (seq_no == undefined) { // This is the only way to track Add all to Cart!!!!\n\n // can do sometign anout this area. Needs research.\n isRecordAddedToCart = isRecordAddedToCart;\n\n }\n \n }\n \n \n\n if (\n count &&\n (\n (type == \"order\" && orderedCount == correctCount) ||\n (type == \"cart\" && addToCartCount == correctCount) \n )\n ) {\n isRecordAddedToCart = true;\n }\n/*\n if (this.props.cart_product)\n NumFiles = this.props.cart_product.num_files;\n else\n NumFiles = 0;\n\n if (\n count &&\n (\n (type == \"order\" && orderedCount + NumFiles == correctCount)\n ) && seq_no == undefined\n\n ) {\n isRecordAddedToCart = true;\n }\n */ \n \n \n }\n return isRecordAddedToCart;\n };\n\n getOrderStatus = (product_id, setno) => {\n const { order } = this.state.product;\n let payment = null;\n let page_nos = order && order.page_no ? Object.keys(order.page_no) : null;\n if (\n order &&\n order.status == \"paid\" &&\n this.state.product.freeze_count == order.freeze_count &&\n page_nos.length == 0\n ) {\n // payment =
  • Download
  • ;\n payment =
  • Already Ordered
  • ;\n \n } else if (order && order.status == \"pending\" && page_nos) {\n payment = (\n
      \n \n \n
    \n );\n } else {\n payment = (\n
      \n \n
    \n );\n }\n return payment;\n };\n\n onExpandToggle = (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ expand: !this.state.expand });\n };\n\n getOrderDetails = (product_set) => {\n const pricing = product_set.pricing;\n const order = product_set.order;\n let page_nos = order && order.page_no ? Object.keys(order.page_no) : null;\n if (\n order &&\n order.status === \"paid\" &&\n (page_nos.length === 0 || page_nos.length === this.state.product.numpages)\n ) {\n return (\n \n
  • No. of files: {order.num_files}
  • \n
  • Total Amount: {order.total_amount}
  • \n
    \n );\n } else if (pricing) {\n return (\n \n
  • {pricing && pricing.pages_count && pricing.pages_count.total} Files
  • \n
  • Total Amount: {pricing.price_total}
  • \n
    \n );\n }\n };\n\n\n\n getExpandDetails(product, product_set) {\n const { order, product_role } = this.state.product;\n const product_order_status = this.state.product.order.status;\n let payment = null;\n let expandView = [];\n let t = [];\n \n let product_set_order_status = product_set && product_set.order.status === \"paid\";\n let page_nos =\n product_set.order && product_set.order.page_no\n ? Object.keys(product_set.order.page_no)\n : null;\n\n //product_set_order_status = product_set.order.status\n product_set_order_status = product_set_order_status\n ? page_nos.length === 0 || page_nos.length === product.numpages\n : product_set_order_status;\n \n if (this.isProductAddToCart(product.id, product_set.setno, null, \"order\")) {\n // payment =
  • Download
  • ; \n // payment =
  • Already Ordered
  • ; \n payment =
  • Already Ordered/Added to Cart
  • ; \n \n } else {\n if (product_role != \"viewer\") \n payment =
  • {this.getCartDetails(this.state.order, product.id, this.state.setno)}
  • ;\n \n }\n let counts =\n (product_set && product_set.counts && product_set.counts[this.state.main_dlname]) || [];\n if (product_set && Array.isArray(product_set.counts)) {\n counts = product_set.counts.filter((ps) => ps.dlname == this.state.main_dlname);\n }\n const count = (counts || []).find((f) => f.setno == this.state.setno) || {\n main_occurence_count: 0,\n };\n\n \n // For db Row Count\n \n //let correctCount = this.state.filesCountBySet.maindbrowcountforaset;\n let correctCount = this.state.filesCountBySet.filesCount;\n\n if (count.main_occurence_count < correctCount) \n correctCount = count.main_occurence_count;\n\n if (count.main_occurence_count == 0) { // This is required because View/Pay user don't have the counts state properties!\n //count.main_occurence_count = this.state.myMainOccurenceCount[0];\n //correctCount = this.state.filesCountBySet.maindbrowcountforaset;\n correctCount = this.state.filesCountBySet.filesCount;\n }\n\n\n// Bala Edit for (let i = 1; i <= this.state.filesCountBySet.maindbrowcountforaset; i++) { \n for (let i = 1; i <= correctCount; i++) { \n\n let set_layout = this.state.layouts[i] || {};\n\n t.push(\n
  • \n {\"Record no \" + i} | \n \n \n View\n {\" \"}\n |{\" \"}\n \n {this.getCartDetails(this.state.order, product.id, this.state.setno, i - 1)}\n
  • \n );\n }\n expandView.push(\n \n {t}\n {/* {this.getOrderDetails(product_set)} */}\n {payment}\n \n );\n return expandView;\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const expand = this.state.expand;\n const setno = this.state.setno;\n const product = this.state.product;\n const product_set = this.state.product_set;\n return (\n //
  • \n \n
  • \n \n {this.getExpandJSX(expand)} {product_set && product_set.desc}\n \n
  • \n
      {expand ? this.getExpandDetails(product, product_set) : null}
    \n \n );\n }\n}\nProductSet.contextType=CartContext","import React, { Component } from \"react\";\nimport OrderProductSetContainer from \"../../containers/orders/OrderProductSetContainer\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\n\n\nclass OrderProductSetList extends Component {\n constructor(props) {\n super(props);\n let customState = { ...props, dbKeyVals: [] };\n this.state = customState;\n this.getKeyValsfromDB();\n }\n\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps !== this.state) {\n this.setState(nextProps);\n }\n }\n\n UNSAFE_componentWillMount() {\n }\n\n getKeyValsfromDB = () => {\n let keyVals_uri = ENDPOINTS.productkeyval.index.uri;\n var product_id = this.props.product.id;\n \n var where = \"product_id=\" + product_id;\n \n let localKeyVals = [];\n \n keyVals_uri = `${keyVals_uri}?where=${where}`;\n \n let noRecords;\n \n (async () => {\n noRecords = await fetch(keyVals_uri, {\n method: \"GET\", headers: { \"content-type\": \"application/json\" }, \n })\n .then((response) => response.json())\n .then((data) => { \n this.setState({dbKeyVals: data});\n });\n })(); \n };\n \n\n\n render() {\n const product_sets = this.props.product_sets;\n const product = this.props.product;\n const order_status = this.props.product.order.status;\n if (product_sets == null) {\n return null;\n }\n return (\n
      \n {Object.keys(product_sets).map((k, i) => {\n let product_set = product_sets[k];\n let props = { ...product_set };\n props.product = product;\n props.main_dlname = this.props.main_dlname;\n props.dbKeyVals = this.state.dbKeyVals;\n return (\n \n );\n })}\n
    \n );\n }\n}\n\nexport default OrderProductSetList;\n","import React, { Component } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\n\nclass Payment extends Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n }\n UNSAFE_componentWillReceiveProps(nextProps) {}\n\n componentDidMount() {\n // uncomment below line to generate a image in the background\n // this.props.generateImage(this.state.product_id, this.state.setno);\n }\n\n createOrder = (data, actions) => {\n if (this.state.pg_order_id) return this.state.pg_order_id;\n let uri = ENDPOINTS.orders.create.uri;\n return fetch(uri, {\n method: ENDPOINTS.orders.create.method,\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(this.state),\n })\n .then((response) => response.json())\n .then((response) => {\n this.setState({ pg_order_id: response.pg_order_id });\n return response.pg_order_id;\n });\n };\n\n onApprove = (data, actions) => {\n localStorage.setItem(\"isOrderPaid\", \"true\");\n let uri = ENDPOINTS.orders.capture.uri;\n return fetch(uri, {\n method: ENDPOINTS.orders.capture.method,\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n paypal_order_id: data.orderID,\n }),\n })\n .then(function (res) {\n return res.json();\n })\n .then(function (data) {\n alert(\"payment done successfully\");\n // if (this.props.isRedirect)\n window.location = \"/products\";\n // window.location.reload();\n return data.pg_order_id;\n });\n };\n\n onSuccess = (details, data) => {\n alert(\"payment done successfully\");\n // if (this.props.isRedirect) window.location = \"/products\";\n };\n\n onCancel = (data, actions) => {\n alert(\"Payment cancelled\");\n };\n onError = (data, actions) => {\n localStorage.removeItem(\"isOrderPaid\", \"true\");\n alert(\"Something went wrong please try again later\");\n };\n\n render() {\n const style = {\n // height: 25,\n // width: 25,\n // color: \"gold\"\n size: \"small\",\n color: \"gold\",\n shape: \"pill\",\n label: \"checkout\",\n tagline: \"true\",\n };\n const PaypalButton = window.paypal.Buttons.driver(\"react\", {\n React,\n ReactDOM,\n });\n return (\n
    \n this.onApprove(e)}\n onSuccess={this.onSuccess}\n onError={this.onError}\n onCancel={this.onCancel}\n // style={style}\n />\n
    \n );\n }\n}\n\nexport default Payment;\n","import React, { Component } from \"react\";\r\nimport { Col, Form, Modal, Button, closeButton } from \"react-bootstrap\";\r\nimport { FieldGroup } from \"../bootstrap/Forms.FieldGroup\";\r\nimport { formDataToJSON } from \"../../adukku_utils/array\";\r\n\r\nexport default class ShareProduct extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { ...props };\r\n }\r\n _handleValidSubmit = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let formData = formDataToJSON(new FormData(e.target));\r\n this.props.shareProduct(formData);\r\n this.setState({ show: false });\r\n };\r\n\r\n render() {\r\n const style = {\r\n display: \"none\",\r\n };\r\n return (\r\n
  • \r\n this.setState({ show: true })}>\r\n Share Product\r\n \r\n \r\n \r\n Share Product\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 }\r\n}\r\n","import React from \"react\";\nimport { FormControl, Modal, Button, Form } from \"react-bootstrap\";\n\nimport { ENDPOINTS } from \"../../constants/endpoints\";\n// import { formDataToJSON } from \"../../adukku_utils/array\";\n\nexport default class EditProductKey extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this.hideOverlay = this.hideOverlay.bind(this);\n this.showOverlay = this.showOverlay.bind(this);\n this.saveProductKeys = this.saveProductKeys.bind(this);\n this.deleteAttribute = this.deleteAttribute.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n showOverlay(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showOverlay(this.state.product.id + \"/keys\");\n }\n\n hideOverlay(e) {\n // e.preventDefault();\n // e.stopPropagation();\n this.props.hideOverlay(this.state.product.id + \"/keys\");\n }\n\n saveProductKeys(e) {\n e.preventDefault();\n e.stopPropagation();\n // let formData = formDataToJSON(new FormData(e.target));\n // const product_keys = this.state.product_keys;\n const selectedKeys = this.state.selectedKeys;\n const attributes = this.state.product_datalevel.attributes;\n // let endpoint = ENDPOINTS[\"keys\"][\"create\"];\n // let url = endpoint.uri;\n // let method = endpoint.method;\n let data = {};\n attributes.map((attr, i) => {\n // data[\"order\"] = this.state.product_key_order;\n // data[\"attribute\"] = formData[\"key[\" + i + \"][attribute]\"];\n data[\"attribute\"] = selectedKeys[attr.name] ? attr.name : null;\n data[\"product_id\"] = this.state.product_id;\n data[\"dlname\"] = this.state.product_datalevel.dlname;\n data[\"order\"] = selectedKeys[data[\"attribute\"]].order;\n if (data.attribute != null && data.order > 0) {\n this.createProductKey(data);\n }\n });\n }\n\n deleteAttribute(attribute) {\n const product_id = this.state.product.id;\n const dlname = this.state.product_datalevel.dlname;\n const payload = {\n product_id: product_id,\n dlname: dlname,\n attribute: attribute,\n };\n const endpoint = ENDPOINTS[\"keys\"][\"delete\"];\n const url = endpoint.uri;\n const method = endpoint.method;\n this.props.deleteKey(url, method, payload);\n }\n\n createProductKey(formData) {\n let endpoint = ENDPOINTS[\"keys\"][\"create\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.createKey(url, method, formData);\n }\n\n handleCheck(attribute, e) {\n let { selectedKeys, currentKeyOrder } = this.state;\n\n selectedKeys[attribute].checked = !selectedKeys[attribute].checked;\n\n if (selectedKeys[attribute].checked == false && selectedKeys[attribute].saved == true) {\n this.deleteAttribute(attribute);\n } else if (selectedKeys[attribute].checked == true && selectedKeys[attribute].order == 0) {\n currentKeyOrder += 1;\n selectedKeys[attribute].order = currentKeyOrder;\n this.setState({\n selectedKeys: selectedKeys,\n currentKeyOrder: currentKeyOrder,\n });\n } else if (selectedKeys[attribute].checked == false && selectedKeys[attribute].order > 0) {\n currentKeyOrder -= 1;\n selectedKeys[attribute].order = 0;\n this.setState({\n selectedKeys: selectedKeys,\n currentKeyOrder: currentKeyOrder,\n });\n }\n }\n\n render() {\n if (this.state.product_datalevel == null || this.state.product_datalevel.attributes == null) {\n return null;\n }\n const isVisible = this.state.overlay.visible;\n const dlname = this.state.product_datalevel.dlname;\n const attributes = this.state.product_datalevel.attributes;\n const product_keys = this.state.product_keys;\n const anchorDLDeleteStyle = {\n paddingLeft: \"20px\",\n };\n let tbodyDOM = null;\n let selectedKeys = this.state.selectedKeys;\n tbodyDOM = attributes.map((attr, i) => {\n let product_key =\n this.state.product_keys.filter((key) => key.attribute == attr.name)[0] || {};\n let attribute = product_key.attribute || attr.name;\n let defaultChecked = this.state.selectedKeys[attribute];\n if (defaultChecked == null) {\n return null;\n }\n return (\n
    \n

    {attribute}

    \n
    \n \n\n \n \n
    \n
    \n );\n });\n\n return (\n
  • \n {this.props.labelText}\n \n
    \n \n Modify Product Set Keys\n \n \n \n \n
    \n
    \n

    Attributes (Key)

    \n

    Order

    \n
    \n
    {tbodyDOM}
    \n
    \n
    \n \n \n {/* */}\n \n
    \n
    \n
  • \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { authorized, Authorized } from \"../../adukku_utils/authorizeUser\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\n\nexport default class ProductKey extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this.onDeleteDatalevel = this.onDeleteDatalevel.bind(this);\n this.onExpandToggle = this.onExpandToggle.bind(this);\n this.onClickAddNewAttr = this.onClickAddNewAttr.bind(this);\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n onExpandToggle(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n onDeleteAttribute(attribute, e) {\n e.preventDefault();\n e.stopPropagation();\n const product_id = this.state.product_id;\n const dlname = this.state.product_datalevel.dlname;\n const payload = {\n product_id: product_id,\n dlname: dlname,\n attribute: attribute\n };\n const endpoint = ENDPOINTS[\"keys\"][\"delete\"];\n const url = endpoint.uri;\n const method = endpoint.method;\n this.props.deleteKey(url, method, payload);\n }\n onDeleteDatalevel(e) {\n e.preventDefault();\n e.stopPropagation();\n const product_id = this.state.product_id;\n const dlname = this.state.product_datalevel.dlname;\n const attributes = this.state.attributes;\n const endpoint = ENDPOINTS[\"keys\"][\"delete\"];\n const url = endpoint.uri;\n const method = endpoint.method;\n let payload = { product_id: product_id, dlname: dlname };\n this.props.deleteKey(url, method, payload);\n }\n\n onClickAddNewAttr(e) {\n e.preventDefault();\n e.stopPropagation();\n let datalevel = this.props.product_datalevel;\n this.props.showOverlay(this.state.product.id);\n this.props.selectDatalevel(this.state.product_id, datalevel);\n }\n\n render() {\n if (\n this.state.product_datalevel == null ||\n this.state.product_datalevel.attributes == null\n ) {\n return null;\n }\n const { role, product_role } = this.state;\n const dlname = this.state.product_datalevel.dlname;\n const product_keys = this.state.product_keys;\n const anchorDLDeleteStyle = {\n paddingLeft: \"20px\"\n };\n return (\n
  • \n \n {dlname}(Data Level)\n \n \n \n Delete\n \n \n
      \n
    • \n \n \n \n \n \n \n \n \n {product_keys.map(key => (\n \n \n \n \n \n ))}\n \n
      KeyOrder
      {key.attribute}{key.order}\n \n \n Delete\n \n \n
      \n
    • \n
    \n
  • \n );\n }\n}\n","import React from \"react\";\n\nimport ProductKeyContainer from \"../../containers/product_keys/ProductKeyContainer\";\nimport EditProductKeyContainer from \"../../containers/product_keys/EditProductKeyContainer\";\nimport { authorized, Authorized } from \"../../adukku_utils/authorizeUser\";\n\nexport default class ProductKeyList extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n product: props.product,\n product_keys: props.product_keys,\n overlay: props.overlay,\n role: props.role,\n product_role: props.product_role,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps !== this.state) {\n this.setState(nextProps);\n }\n }\n\n UNSAFE_componentWillMount() {\n this.props.getKeys(this.state.product.id);\n }\n\n render() {\n const { role, product_role } = this.state;\n const product_keys = this.state.product_keys;\n if (product_keys == null) {\n return null;\n }\n const key_cnt = Object.keys(product_keys).length;\n const labelText = key_cnt > 0 ? \"Modify product key\" : \"Add new product key\";\n return (\n
      \n {Object.keys(product_keys).map((k, i) => {\n let product_key = product_keys[k];\n return (\n \n );\n })}\n \n \n \n
    \n );\n }\n}\n","import React from \"react\";\nimport { Form, Modal, Button } from \"react-bootstrap\";\n\nimport { FieldGroup } from \"../bootstrap/Forms.FieldGroup\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport { formDataToJSON } from \"../../adukku_utils/array\";\n\nexport default class AddProductSet extends React.Component {\n constructor(props) {\n super(props);\n this.showAddSetOverlay = this.showAddSetOverlay.bind(this);\n this.hideAddSetOverlay = this.hideAddSetOverlay.bind(this);\n this.state = {\n product: props.product,\n overlay: props.overlay || { visible: false },\n };\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n // this.handleOrderChange = this.handleOrderChange.bind(this);\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps !== this.state) {\n this.setState(nextProps);\n }\n }\n\n showAddSetOverlay(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showOverlay(this.state.product.id + \"_sets\");\n }\n\n hideAddSetOverlay(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.hideOverlay(this.state.product.id + \"_sets\");\n }\n\n _handleValidSubmit(e) {\n e.preventDefault();\n e.stopPropagation();\n let formData = formDataToJSON(new FormData(e.target));\n let endpoint = ENDPOINTS[\"sets\"][\"create\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.createSet(url, method, formData);\n }\n\n render() {\n const isVisible = this.state.overlay.visible;\n const product = this.state.product;\n return (\n
  • \n {this.props.labelText}\n \n
    \n \n Create Product Set\n \n \n {/* */}\n \n \n \n \n \n {/* */}\n \n
    \n
    \n
  • \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport ProductSetKeyValListContainer from \"../../containers/product_sets/ProductSetKeyValListContainer\";\nimport ProductSetDLValListContainer from \"../../containers/product_sets/ProductSetDLValListContainer\";\nimport ProductSetLayoutContainer from \"../../containers/product_sets/ProductSetLayoutContainer\";\nimport ProductSetCountListContainer from \"../../containers/product_sets/ProductSetCountListContainer\";\nimport { authorized, Authorized } from \"../../adukku_utils/authorizeUser\";\nimport {\n Row,\n Col,\n Form,\n FormGroup,\n ControlLabel,\n FormControl,\n Modal,\n Fade,\n utils,\n Button,\n} from \"react-bootstrap\";\nimport { FieldGroup } from \"../bootstrap/Forms.FieldGroup\";\nimport { formDataToJSON } from \"../../adukku_utils/array\";\n\nexport default class ProductSet extends React.Component {\n constructor(props) {\n super(props);\n let customState = {\n ...props,\n isEditLayoutClicked: false,\n isProductSetLayoutExpanded: false,\n };\n customState.expand = false;\n this.state = customState;\n this.onExpandToggle = this.onExpandToggle.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n componentDidMount() {\n this.props.getSetPlaceholders(this.state.product_id, this.state.setno);\n let expandedProduct = localStorage.getItem(\"expandedProduct\");\n expandedProduct = expandedProduct ? JSON.parse(expandedProduct) : {};\n\n if (\n expandedProduct.productId &&\n this.state.product.id == expandedProduct.productId &&\n this.state.setno == expandedProduct.setNo &&\n (expandedProduct.isSet || expandedProduct.pagePreview)\n ) {\n this.setState({\n expand: true,\n isProductSetLayoutExpanded: true,\n });\n localStorage.setItem(\"expandedProduct\", JSON.stringify({}));\n }\n }\n\n onExpandToggle(e) {\n if (e == undefined) return;\n e.preventDefault();\n e.stopPropagation();\n this.setState({ expand: !this.state.expand }); // TODO set from reducer\n }\n\n _handleDeleteSet(e, setno) {\n e.preventDefault();\n e.stopPropagation();\n if (confirm(\"Are you sure you want to delete the Product set along with data?\")) {\n let payload = {\n setno: setno,\n product_id: this.state.product.id,\n };\n let endpoint = ENDPOINTS[\"sets\"][\"delete\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.deleteSet(url, method, payload);\n } else {\n return;\n }\n }\n\n getEditLayoutJSX = (isVisible) => {\n const layout = this.state.layout;\n const { desc, height, width, is_preset_bg, is_preset_sticker } = this.state;\n const layoutCategories = this.state.layoutCategories || [];\n\n if (isVisible) {\n return (\n {\n this.setState({\n isEditLayoutClicked: false,\n });\n }}\n >\n
    \n \n Edit Set\n \n \n {\n this.setState({ [name]: value });\n }}\n // disabled={true}\n placeholder=\"Product Set Name\"\n required=\"required\"\n />\n \n \n \n {/* {\n this.setState({\n isEditLayoutClicked: false,\n });\n }}\n >\n Cancel\n */}\n \n
    \n \n );\n }\n };\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n handleEditLayout = (e) => {\n // this.se\n e.preventDefault();\n e.stopPropagation();\n const { setno, product } = this.state;\n let endpoint = ENDPOINTS.sets.update;\n let url = endpoint.uri;\n let method = endpoint.method;\n\n let formData = formDataToJSON(new FormData(e.target));\n // formData.is_preset_bg = this.state.is_preset_bg;\n // formData.is_preset_sticker = this.state.is_preset_sticker;\n // formData.sticker_category =\n // this.state.sticker_category == \"other\"\n // ? this.state.other_category\n // : this.state.sticker_category;\n console.log(formData);\n formData.product_id = product.id;\n this.props.updateSet(setno, url, method, formData);\n this.setState({\n isEditLayoutClicked: false,\n });\n };\n\n render() {\n const { role, product_role } = this.state;\n const expand = this.state.expand;\n const setno = this.state.setno;\n const desc = this.state.desc;\n const keyvals = this.state.keyvals;\n const dlvals = this.state.dlvals;\n const counts = this.state.counts;\n const layouts = this.state.layouts;\n const product = this.state.product;\n const anchorDLDeleteStyle = {\n paddingLeft: \"20px\",\n };\n let expandView = [];\n let t = [];\n if (expand) {\n expandView.push(\n \n );\n expandView.push(\n \n );\n expandView.push(\n \n );\n for (let i = 1; i <= product.numpages; i++) {\n t.push(\n \n );\n }\n expandView.push(\n
  • \n {\n e.stopPropagation();\n this.setState({\n isProductSetLayoutExpanded: !this.state.isProductSetLayoutExpanded,\n });\n }}\n >\n {this.getExpandJSX(this.state.isProductSetLayoutExpanded)} Layouts\n \n {/* {this.getExpandJSX(expand)} Layouts */}\n {this.state.isProductSetLayoutExpanded &&
      {t}
    }\n
  • \n );\n // expandView.push(
  • Pre-View/Edit Product Set
  • );\n // expandView.push(
  • View Final Product Set
  • );\n }\n return (\n
  • \n \n {this.getExpandJSX(expand)} {`${desc}`}\n {/* {`${desc} -- #${setno}`}\n --{\" \"} */}\n \n\n \n {\n this._handleDeleteSet(e, setno);\n }}\n style={{ paddingLeft: \"15px\" }}\n title=\"Delete\"\n >\n \n \n {!this.state.isEditLayoutClicked && (\n // \n // \n {\n e.stopPropagation();\n e.preventDefault();\n this.setState({\n isEditLayoutClicked: !this.state.isEditLayoutClicked,\n });\n }}\n >\n \n \n )}\n\n {this.state.isEditLayoutClicked && this.getEditLayoutJSX(this.state.isEditLayoutClicked)}\n \n
      \n {expandView}\n \n
    • \n {\n e.stopPropagation();\n e.preventDefault();\n let expandedProduct = {\n productId: product.id,\n setNo: setno,\n pagePreview: true,\n };\n localStorage.setItem(\"expandedProduct\", JSON.stringify(expandedProduct));\n window.location = \"/products/\" + product.id + \"/sets/\" + setno + \"/page_preview\";\n }}\n className=\"no-textcolor\"\n // href={\n // \"/products/\" + product.id + \"/sets/\" + setno + \"/page_preview\"\n // }\n // target=\"_blank\"\n >\n Pre-View/Edit Product Set\n \n
    • \n {/*
    • \n {\n e.stopPropagation();\n e.preventDefault();\n let expandedProduct = {\n productId: product.id,\n setNo: setno,\n pagePreview: true,\n };\n localStorage.setItem(\"expandedProduct\", JSON.stringify(expandedProduct));\n window.location = \"/products/\" + product.id + \"/sets/\" + setno + \"/page_preview\";\n }}\n className=\"no-textcolor\"\n // href={\n // \"/products/\" + product.id + \"/sets/\" + setno + \"/page_preview\"\n // }\n // target=\"_blank\"\n >\n View Final Product Set\n \n
    • */}\n \n
    \n
  • \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport {\n Table,\n Col,\n Form,\n FormGroup,\n ControlLabel,\n FormControl,\n Modal,\n Fade,\n utils,\n Button,\n} from \"react-bootstrap\";\nimport { FieldGroup } from \"../bootstrap/Forms.FieldGroup\";\nimport { formDataToJSON } from \"../../adukku_utils/array\";\nimport { authorized, Authorized } from \"../../adukku_utils/authorizeUser\";\n\nexport default class ProductSetCount extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props, editableField: null };\n this.onEditClick = this.onEditClick.bind(this);\n this.onExpandToggle = this.onExpandToggle.bind(this);\n this.hideAddSetOverlay = this.hideAddSetOverlay.bind(this);\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n hideAddSetOverlay(e, count) {\n e.preventDefault();\n e.stopPropagation();\n this.props.hideOverlay(count.id);\n }\n\n onEditClick(e, count) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showOverlay(count.id);\n }\n\n _handleValidSubmit(e, count) {\n e.preventDefault();\n e.stopPropagation();\n let formData = formDataToJSON(new FormData(e.target));\n if (count.main_occurence_count == null || count.main_occurence_count == 0) {\n let endpoint = ENDPOINTS.sets.counts.create;\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.createSetOccurenceCount(url, method, formData);\n } else {\n let endpoint = ENDPOINTS.sets.counts.update;\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.updateSetOccurenceCount(url, method, formData);\n }\n this.hideAddSetOverlay(e, count);\n }\n\n onExpandToggle(e) {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ expand: !this.state.expand });\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const { role, product_role } = this.state;\n const counts = this.state.counts;\n const isExpand = this.state.expand;\n let that = this;\n let isVisible = null;\n let view = [\n \n {this.getExpandJSX(isExpand)} {\"Product Set Count \"}\n ,\n ];\n if (isExpand) {\n let t = (\n
      \n
    • \n \n \n {counts.map((count, i) => {\n return (\n \n \n \n \n \n \n \n );\n })}\n \n
      {count.dlname}{count.main_occurence_count || \"NA\"}\n this.onEditClick(e, count)}\n style={{ paddingLeft: \"15px\" }}\n title=\"Edit\"\n >\n \n \n
      \n
    • \n
    \n );\n view.push(t);\n counts.map((count, i) => {\n isVisible = (that.state.overlays[count.id] || { visible: false }).visible;\n t = (\n {\n that.hideAddSetOverlay(e, count);\n }}\n >\n {\n that._handleValidSubmit(e, count);\n }}\n >\n \n Add Product Set Count\n \n \n \n \n \n \n \n \n \n {/* {\n that.hideAddSetOverlay(e, count);\n }}\n >\n Cancel\n */}\n \n \n \n );\n view.push(t);\n });\n }\n return
  • {view}
  • ;\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport ProductSetCountContainer from \"../../containers/product_sets/ProductSetCountContainer\";\nimport { Table } from \"react-bootstrap\";\n\nexport default class ProductSetCountList extends React.Component {\n constructor(props) {\n super(props);\n let customState = { ...props };\n customState.expand = false;\n this.state = customState;\n this.onExpandToggle = this.onExpandToggle.bind(this);\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n onExpandToggle(e) {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ expand: !this.state.expand }); // TODO set from reducer\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const { role, product_role } = this.state;\n const setno = this.state.setno;\n const expand = this.state.expand;\n const counts = this.state.counts;\n\n const anchorDLDeleteStyle = {\n paddingLeft: \"20px\",\n };\n return (\n \n {Object.keys(counts).map((dlname, i) => {\n return (\n \n );\n })}\n \n );\n }\n}\n","import React, { Fragment } from \"react\";\nimport { Table, Form, Modal, Button } from \"react-bootstrap\";\n\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport { FieldGroup } from \"../bootstrap/Forms.FieldGroup\";\nimport { formDataToJSON } from \"../../adukku_utils/array\";\nimport { authorized, Authorized } from \"../../adukku_utils/authorizeUser\";\n\nexport default class ProductSetKeyVal extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props, editableField: null };\n this.onEditClick = this.onEditClick.bind(this);\n this.onExpandToggle = this.onExpandToggle.bind(this);\n this.hideAddSetOverlay = this.hideAddSetOverlay.bind(this);\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n hideAddSetOverlay(e, dlval) {\n e.preventDefault();\n e.stopPropagation();\n this.props.hideOverlay(dlval.id);\n }\n\n onEditClick(e, dlval) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showOverlay(dlval.id);\n }\n\n _handleValidSubmit(e, dlval) {\n e.preventDefault();\n e.stopPropagation();\n let formData = formDataToJSON(new FormData(e.target));\n if (dlval.dlcount == null) {\n let endpoint = ENDPOINTS[\"sets\"][\"create_dlval\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.createSetDLVal(url, method, formData);\n } else {\n let endpoint = ENDPOINTS[\"sets\"][\"update_dlval\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.updateSetDLVal(url, method, formData);\n }\n this.hideAddSetOverlay(e, dlval);\n }\n\n onExpandToggle(e) {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ expand: !this.state.expand });\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const { role, product_role } = this.state;\n const dlvals = this.state.dlvals;\n const isExpand = this.state.expand;\n let that = this;\n let isVisible = null;\n let view = [\n \n {this.getExpandJSX(isExpand)} {\"PageNo \" + this.state.pageno}\n ,\n ];\n if (isExpand) {\n let t = (\n
      \n
    • \n \n \n {dlvals.map((dlval, i) => {\n return (\n \n \n \n \n \n \n \n );\n })}\n \n
      {dlval.dlname}{dlval.dlcount < 0 ? \"NA\" : dlval.dlcount}\n {!dlval.layout_id ? (\n this.onEditClick(e, dlval)}\n style={{ paddingLeft: \"15px\" }}\n title=\"Edit\"\n >\n \n \n ) : (\n \n )}\n
      \n
    • \n
    \n );\n view.push(t);\n dlvals.map((dlval, i) => {\n isVisible = (that.state.overlays[dlval.id] || { visible: false }).visible;\n t = (\n {\n that.hideAddSetOverlay(e, dlval);\n }}\n >\n {\n that._handleValidSubmit(e, dlval);\n }}\n >\n \n Add Occurence Count\n \n \n \n \n \n \n \n {/* */}\n \n \n \n \n {/* {\n that.hideAddSetOverlay(e, dlval);\n }}\n >\n Cancel\n */}\n \n \n \n );\n view.push(t);\n });\n }\n return
  • {view}
  • ;\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport ProductSetDLValContainer from \"../../containers/product_sets/ProductSetDLValContainer\";\nimport { Table } from \"react-bootstrap\";\n\nexport default class ProductSetKeyValList extends React.Component {\n constructor(props) {\n super(props);\n let customState = { ...props };\n customState.expand = false;\n this.state = customState;\n this.onExpandToggle = this.onExpandToggle.bind(this);\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n onExpandToggle(e) {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ expand: !this.state.expand }); // TODO set from reducer\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const { role, product_role } = this.state;\n const setno = this.state.setno;\n const expand = this.state.expand;\n const dlvals = this.state.dlvals;\n\n const anchorDLDeleteStyle = {\n paddingLeft: \"20px\",\n };\n return (\n
  • \n \n {this.getExpandJSX(expand)} Occurence Counts{\" \"}\n \n
      \n {expand &&\n Object.keys(dlvals).map((pageno, i) => {\n return (\n \n );\n })}\n
    \n
  • \n );\n }\n}\n","import React from \"react\";\nimport { Col, Form, Modal, Button } from \"react-bootstrap\";\n\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport { FieldGroup } from \"../bootstrap/Forms.FieldGroup\";\nimport { formDataToJSON } from \"../../adukku_utils/array\";\nimport { authorized, Authorized } from \"../../adukku_utils/authorizeUser\";\n\nexport default class ProductSetKeyVal extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n this.onEditClick = this.onEditClick.bind(this);\n this.hideAddSetOverlay = this.hideAddSetOverlay.bind(this);\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n onEditClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showOverlay(\n this.state.product_id + \"/sets/\" + this.state.setno + \"/\" + this.state.keyname\n );\n }\n\n hideAddSetOverlay(e) {\n if (e == undefined) return;\n e.preventDefault();\n e.stopPropagation();\n this.props.hideOverlay(\n this.state.product_id + \"/sets/\" + this.state.setno + \"/\" + this.state.keyname\n );\n }\n\n _handleValidSubmit(e) {\n e.preventDefault();\n e.stopPropagation();\n let formData = formDataToJSON(new FormData(e.target));\n if (this.state.keyval == null) {\n let endpoint = ENDPOINTS[\"sets\"][\"create_key\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.createSetKey(url, method, formData);\n } else {\n let endpoint = ENDPOINTS[\"sets\"][\"update_key\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.updateSetKey(url, method, formData);\n }\n }\n\n onExpandToggle(e) {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ expand: !this.state.expand });\n }\n\n render() {\n const { role, product_role } = this.state;\n const keyval = this.state;\n const isVisible = this.state.overlay.visible;\n return (\n \n {keyval.keyname}\n {keyval.keyval}\n \n \n \n \n \n \n
    \n \n Add Key value\n \n \n \n \n \n \n {/* */}\n \n \n \n {/* */}\n \n
    \n
    \n \n \n \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport ProductSetKeyValContainer from \"../../containers/product_sets/ProductSetKeyValContainer\";\nimport { Table } from \"react-bootstrap\";\n\nexport default class ProductSetKeyValList extends React.Component {\n constructor(props) {\n super(props);\n let customState = { ...props };\n customState.expand = false;\n this.state = customState;\n this.onExpandToggle = this.onExpandToggle.bind(this);\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (this.state !== nextProps) {\n this.setState(nextProps);\n }\n }\n\n onExpandToggle(e) {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ expand: !this.state.expand }); // TODO set from reducer\n }\n\n getExpandJSX = (expandFlag) => {\n return (\n \n {expandFlag && }\n {!expandFlag && }\n \n );\n };\n\n render() {\n const { role, product_role } = this.state;\n const setno = this.state.setno;\n const expand = this.state.expand;\n const keyvals = this.state.keyvals;\n // const keyvals = [...new Set(this.state.keyvals.map(item => item.id))];\n const anchorDLDeleteStyle = {\n paddingLeft: \"20px\",\n };\n return (\n
  • \n \n {this.getExpandJSX(expand)} Keys and Values{\" \"}\n \n
      \n {expand && (\n
    • \n \n \n {expand &&\n keyvals.map((keyval, i) => {\n return (\n \n );\n })}\n \n
      \n
    • \n )}\n
    \n
  • \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Row,\n Col,\n Form,\n FormGroup,\n ControlLabel,\n FormControl,\n Modal,\n Fade,\n utils,\n Button,\n} from \"react-bootstrap\";\nimport { FieldGroup } from \"../bootstrap/Forms.FieldGroup\";\nimport { ENDPOINTS } from \"../../constants/endpoints\";\nimport { formDataToJSON } from \"../../adukku_utils/array\";\n// import { placeholder } from '/svg/placeholder.svg'\nimport { authorized, Authorized } from \"../../adukku_utils/authorizeUser\";\nimport ThumbnailPreview from \"../../components/layouts/ThumbnailPreview\";\nexport default class ProductSetLayout extends React.Component {\n constructor(props) {\n super(props);\n this.showAssignLayoutOverlay = this.showAssignLayoutOverlay.bind(this);\n this.hideAssignLayoutOverlay = this.hideAssignLayoutOverlay.bind(this);\n this.onExpandToggle = this.onExpandToggle.bind(this);\n this.state = {\n supported_layouts: props.supported_layouts,\n setno: props.setno,\n product: props.product,\n pageno: props.pageno,\n layout: props.layout,\n overlay: props.overlay,\n overlay_id: props.overlay_id,\n show: false,\n role: props.role,\n product_role: props.product_role,\n };\n this._handleValidSubmit = this._handleValidSubmit.bind(this);\n }\n onExpandToggle(e) {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ expand: !this.state.expand }); // TODO set from reducer\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps !== this.state) {\n this.setState(nextProps);\n }\n }\n\n componentDidMount() {\n let expandedProduct = localStorage.getItem(\"expandedProduct\");\n expandedProduct = expandedProduct ? JSON.parse(expandedProduct) : {};\n\n if (expandedProduct.layoutId && this.state.layout.id == expandedProduct.layoutId) {\n this.setState({\n expand: true,\n });\n }\n }\n\n showAssignLayoutOverlay(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showOverlay(this.state.overlay_id);\n\n const product = this.state.product;\n const pageno = this.state.pageno;\n const setno = this.state.setno;\n this.props.getSupportedLayouts(product.id, {\n product_id: product.id,\n setno: setno,\n pageno: pageno,\n });\n }\n\n hideAssignLayoutOverlay(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.hideOverlay(this.state.overlay_id);\n }\n\n UNSAFE_componentWillMount() {\n const product = this.state.product;\n const pageno = this.state.pageno;\n const setno = this.state.setno;\n this.props.getSupportedLayouts(product.id, {\n product_id: product.id,\n setno: setno,\n pageno: pageno,\n });\n }\n\n _handleValidSubmit(e) {\n e.preventDefault();\n e.stopPropagation();\n\n const set_layout = this.state.layout;\n let info = set_layout.layout_id ? confirm(\"Are you sure, you want to Assign layout?\") : true;\n if (info) {\n let formData = formDataToJSON(new FormData(e.target));\n let endpoint = ENDPOINTS[\"sets\"][\"layout_create\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n this.props.createSetLayout(url, method, formData);\n this.props.hideOverlay(this.state.overlay_id);\n }\n }\n\n _handleUnAssignSetLayout(e, pageno) {\n if (confirm(\"Are you sure you UnAssign the layout?\")) {\n e.preventDefault();\n let endpoint = ENDPOINTS[\"sets\"][\"layout_delete\"];\n let url = endpoint.uri;\n let method = endpoint.method;\n let payload = {\n product_id: this.state.product.id,\n setno: this.state.setno,\n pageno: pageno,\n };\n this.props.deleteSetLayout(url, method, payload);\n }\n }\n\n render() {\n const { role, product_role } = this.state;\n const isVisible = this.state.overlay.visible;\n const product = this.state.product;\n const expand = this.state.expand;\n const set_layout = this.state.layout;\n const pageno = this.state.pageno;\n const layouts = this.state.supported_layouts;\n const setno = this.state.setno;\n let expandView = [];\n let formView = null;\n if (isVisible) {\n formView = (\n \n
    \n \n Assign Layout to Product Set\n \n \n {layouts.map((layout) => {\n if (layout.errors && layout.errors.length > 1) {\n for (let i = 0; i < layout.errors.length; i++) {\n alert(\"For layout \" + layout.desc + \"\\nErrors: \" + layout.errors[i]);\n }\n }\n })}\n {\n this.setState({ [name]: value });\n }}\n value={this.state.category}\n required=\"required\"\n >\n \n {layouts.map((layout) => (\n \n {layout.errors && layout.errors.length == 0 && (\n \n )}\n \n ))}\n \n \n \n \n \n \n \n {/* */}\n \n
    \n
    \n );\n }\n\n if (set_layout.layout_id) {\n let t = (\n
  • \n {\"Page No \" + pageno + \" - \" + set_layout.layout_name}\n \n {\n e.stopPropagation();\n e.preventDefault();\n let expandedProduct = {\n productId: product.id,\n layoutId: set_layout.layout_id,\n setNo: setno,\n isSet: true,\n };\n localStorage.setItem(\"expandedProduct\", JSON.stringify(expandedProduct));\n window.location = \"/products/\" + product.id + \"/layouts/\" + set_layout.layout_id;\n }}\n // href={\n // \"/products/\" +\n // product.id +\n // \"/layouts/\" +\n // set_layout.layout_id\n // }\n style={{ paddingLeft: \"15px\" }}\n // target=\"_blank\"\n >\n \n \n this._handleUnAssignSetLayout(e, pageno)}\n style={{ paddingLeft: \"15px\" }}\n >\n \n \n \n \n \n \n
    \n this.setState({ show: true })}\n style={{\n height: \"60px\",\n margin: \"10px 0\",\n boxShadow: \"5px 5px 10px rgba(0,0,0,.5)\",\n cursor: \"pointer\",\n }}\n src={`${set_layout.preview_url}?${new Date()}`}\n />\n {this.state.show && (\n this.setState({ show: false })}\n />\n )}\n
    \n
  • \n );\n expandView.push(t);\n } else {\n if (authorized([\"admin\", \"owner\"], [role, product_role], \"ANY\")) {\n expandView.push(\n
  • \n Page No {pageno}\n \n \n \n \n \n \n \n \n \n \n \n {/* */}\n
  • \n );\n }\n }\n return (\n \n {expandView}\n {formView}\n \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ProductSetContainer from \"../../containers/product_sets/ProductSetContainer\";\nimport AddSetContainer from \"../../containers/product_sets/AddProductSetContainer\";\nimport { authorized, Authorized } from \"../../adukku_utils/authorizeUser\";\n\nexport default class ProductSetList extends React.Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n }\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps !== this.state) {\n this.setState(nextProps);\n }\n }\n UNSAFE_componentWillMount() {\n this.props.getSets(this.state.product.id);\n this.props.getKeys(this.state.product.id);\n\n // let user_role = document.getElementById(\"user_role\");\n // user_role = user_role.innerHTML;\n // this.setState({ role: user_role });\n }\n\n render() {\n const { role, product_role } = this.state;\n const product_sets = this.state.product_sets;\n const product = this.state.product;\n if (product_sets == null) {\n return null;\n }\n return (\n
      \n {Object.keys(product_sets).map((k, i) => {\n let product_set = product_sets[k];\n let props = { ...product_set };\n props.product = product;\n return (\n \n );\n })}\n\n \n \n \n
    \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport BaseSelect from \"react-select\";\n\nconst noop = () => {\n // no operation (do nothing real quick)\n};\n\nclass FixRequiredSelect extends React.Component {\n state = {\n value: this.props.value || \"\",\n };\n\n selectRef = null;\n setSelectRef = (ref) => {\n this.selectRef = ref;\n };\n\n onChange = (value, actionMeta) => {\n this.props.onChange(value, actionMeta);\n this.setState({ value });\n };\n\n getValue = () => {\n if (this.props.value != undefined) return this.props.value;\n return this.state.value || \"\";\n };\n\n render() {\n const { SelectComponent, required, ...props } = this.props;\n const { isLoading, isDisabled } = this.props;\n const enableRequired = !isDisabled;\n\n return (\n
    \n \n {enableRequired && (\n this.selectRef.focus()}\n required={required}\n />\n )}\n
    \n );\n }\n}\n\nFixRequiredSelect.defaultProps = {\n onChange: noop,\n};\n\nFixRequiredSelect.protoTypes = {\n // react-select component class (e.g. Select, Creatable, Async)\n selectComponent: PropTypes.func.isRequired,\n onChange: PropTypes.func,\n required: PropTypes.bool,\n};\n\nconst Select = (props) => (\n \n);\n\nexport default Select;\n","import React, { Component } from \"react\";\nimport { TOGGLE_PRODUCT_EXPAND } from \"../../actions\";\nimport ViewProductSetListContainer from \"../../containers/view_products/ViewProductSetListContainer\";\n\nclass ViewProduct extends Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n }\n onExpandToggle = e => {\n e.stopPropagation();\n e.preventDefault();\n this.setState({ expand: !this.state.expand });\n this.props.toggleView({\n reducerKey: TOGGLE_PRODUCT_EXPAND,\n id: this.props.product.id\n });\n this.props.getSets(this.props.product.id);\n };\n\n componentDidUpdate(nextProps) {\n if (nextProps.product !== this.state.product) {\n this.setState({ product: nextProps.product });\n }\n }\n\n componentDidMount() {\n }\n\n render() {\n const product = this.state.product;\n const expand = this.state.expand;\n const readOnly = (\n \n {product.name}\n \n );\n let productSets = null;\n if (expand == true) {\n productSets = (\n
      \n
    • \n \n Product Sets\n \n \n
    • \n
    \n );\n }\n return (\n
  • \n {readOnly}\n {productSets}\n
  • \n );\n }\n}\n\nexport default ViewProduct;\n","import React, { Component } from \"react\";\nimport ViewProductContainer from \"../../containers/view_products/ViewProductContainer\";\n\nclass ViewProductList extends Component {\n componentDidUpdate(nextProps) {}\n\n componentDidMount() {\n this.props.getViewProducts();\n }\n\n render() {\n const products = this.props.products;\n const productList = products.length ? (\n products.map(product => {\n return (\n \n );\n })\n ) : (\n
    No Products
    \n );\n\n return (\n
    \n

    View Products

    \n
      {productList}
    \n
    \n );\n }\n}\n\nexport default ViewProductList;\n","import React from \"react\";\nimport LayoutContainer from \"../../containers/orders/LayoutContainer\"\n\nexport default class ViewProductSet extends React.Component {\n constructor(props) {\n super(props);\n let customState = { ...props };\n customState.expand = false;\n this.state = customState;\n }\n\n\n onExpandToggle = e => {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ expand: !this.state.expand });\n };\n\n getExpandDetails(product, product_set) {\n let expandView = [];\n let t = [];\n for (let i = 1; i <= product.numpages; i++) {\n t.push(\n \n );\n }\n expandView.push(\n
  • \n Layouts
      {t}
    \n
  • \n );\n return expandView;\n }\n\n render() {\n const expand = this.state.expand;\n const setno = this.state.setno;\n const product = this.state.product;\n const product_set = this.state.product_set;\n return (\n
  • \n \n {setno}\n \n
      {expand ? this.getExpandDetails(product, product_set) : null}
    \n
  • \n );\n }\n}\n","import React, { Component } from \"react\";\nimport ViewProductSetContainer from \"../../containers/view_products/ViewProductSetContainer\";\n\nclass ViewProductSetList extends Component {\n\n render() {\n const product_sets = this.props.product_sets;\n const product = this.props.product;\n if (product_sets == null) {\n return null;\n }\n return (\n
      \n {Object.keys(product_sets).map((k, i) => {\n let product_set = product_sets[k];\n let props = { ...product_set };\n props.product = product;\n return (\n \n );\n })}\n
    \n );\n }\n}\n\nexport default ViewProductSetList;\n","export const ENDPOINTS = {\n products: {\n list: { method: \"GET\", uri: \"/api/products\" },\n create: { method: \"POST\", uri: \"/api/products\" },\n update: { method: \"PUT\", uri: \"/api/products/\" },\n clone: { method: \"POST\", uri: \"/api/products/clone\" },\n view: { method: \"GET\", uri: \"/api/products/view\" },\n share: { method: \"POST\", uri: \"/api/products/share\" },\n add_user: { method: \"POST\", uri: \"/api/products/add_user\" },\n add_view_product_user: { method: \"POST\", uri: \"/api/products/add_view_product_user\" },\n get_view_product_user: { method: \"GET\", uri: \"/api/products/get_view_product_user\" },\n delete: { method: \"DELETE\", uri: \"/api/products/:id\" },\n presets: { method: \"GET\", uri: \"/api/products/presets\" },\n },\n datalevels: {\n list: { method: \"GET\", uri: \"/api/products/:id/datalevels\" },\n create: { method: \"POST\", uri: \"/api/products/\" },\n update: { method: \"PUT\", uri: \"/api/products/\" },\n delete: { method: \"DELETE\", uri: \"/api/products/\" },\n },\n attributes: {\n create: { method: \"POST\", uri: \"/api/products/\" },\n update: { method: \"PUT\", uri: \"/api/products/\" },\n delete: { method: \"DELETE\", uri: \"/api/products/\" },\n },\n keys: {\n list: { method: \"GET\", uri: \"/api/products/:product_id/keys\" },\n create: { method: \"POST\", uri: \"/api/products/:product_id/keys/:dlname\" },\n delete: { method: \"DELETE\", uri: \"/api/products/:product_id/keys/:dlname\" },\n },\n sets: {\n list: { method: \"GET\", uri: \"/api/products/:product_id/sets\" },\n placeholders: {\n method: \"GET\",\n uri: \"/api/products/:product_id/sets/:setno/placeholders\",\n },\n create: { method: \"POST\", uri: \"/api/products/:product_id/sets\" },\n delete: { method: \"DELETE\", uri: \"/api/products/:product_id/sets/:setno\" },\n update: { method: \"PUT\", uri: \"/api/products/:product_id/sets/:setno\" },\n create_key: {\n method: \"POST\",\n uri: \"/api/products/:product_id/sets/:setno/keys\",\n },\n update_key: {\n method: \"PUT\",\n uri: \"/api/products/:product_id/sets/:setno/keys/:keyname\",\n },\n create_dlval: {\n method: \"POST\",\n uri: \"/api/products/:product_id/sets/:setno/datalevels\",\n },\n update_dlval: {\n method: \"PUT\",\n uri: \"/api/products/:product_id/sets/:setno/datalevels/:pageno/:dlname\",\n },\n layout_create: {\n method: \"POST\",\n uri: \"/api/products/:product_id/sets/:setno/layouts\",\n },\n layout_update: {\n method: \"POST\",\n uri: \"/api/products/:product_id/sets/:setno/layouts/:pageno\",\n },\n layout_delete: {\n method: \"DELETE\",\n uri: \"/api/products/:product_id/sets/:setno/layouts/:pageno\",\n },\n layout_supported: {\n method: \"GET\",\n uri: \"/api/products/:product_id/sets/:setno/layouts/:pageno/supported\",\n },\n price: { method: \"GET\", uri: \"/api/products/:product_id/sets/price\" },\n counts: {\n create: {\n method: \"POST\",\n uri: \"/api/products/:product_id/sets/:setno/counts\",\n },\n update: {\n method: \"PUT\",\n uri: \"/api/products/:product_id/sets/:setno/counts/:dlname\",\n },\n delete: {\n method: \"DELETE\",\n uri: \"/api/products/:product_id/sets/:setno/counts/:dlname\",\n },\n },\n },\n layouts: {\n list: { method: \"GET\", uri: \"/api/layouts\" },\n create: { method: \"POST\", uri: \"/api/layouts\" },\n show: { method: \"GET\", uri: \"/api/layouts/:id\" },\n delete: { method: \"DELETE\", uri: \"/api/layouts/:id\" },\n update: { method: \"PUT\", uri: \"/api/layouts/:id\" },\n clone: { method: \"POST\", uri: \"/api/layouts/:id/clone\" },\n },\n layout_datalevels: {\n create: { method: \"post\", uri: \"/api/layouts/:layout_id/datalevels\" },\n delete: {\n method: \"delete\",\n uri: \"/api/layouts/:layout_id/datalevels/:dlname\",\n },\n },\n layout_datalevels_rel: {\n create: {\n method: \"post\",\n uri: \"/api/layouts/:layout_id/datalevel_relations\",\n },\n delete: {\n method: \"delete\",\n uri: \"/api/layouts/:layout_id/datalevel_relations/:pdlname/:cdlname\",\n },\n },\n layout_datalevels_keys: {\n create: {\n method: \"post\",\n uri: \"/api/layouts/:layout_id/datalevel_relations/:pdlname/:cdlname/keys\",\n },\n delete: {\n method: \"delete\",\n uri: \"/api/layouts/:layout_id/datalevel_relations/:pdlname/:cdlname/keys/:key\",\n },\n },\n layout_slotfors: {\n create: {\n method: \"post\",\n uri: \"/api/layouts/:layout_id/slotfors/:slotforcode\",\n },\n delete: {\n method: \"delete\",\n uri: \"/api/layouts/:layout_id/slotfors/:slotforcode/:dlname\",\n },\n delete_attribute: {\n method: \"delete\",\n uri: \"/api/layouts/:layout_id/slotfors/:slotforcode/:dlname/:attributename\",\n },\n },\n csv: {\n download: \"/api/products/:product_id/datalevels/:dlname/data/download\",\n upload: \"/api/products/:product_id/datalevels/:dlname/data/upload\",\n uploaded_data: \"/api/products/:product_id/datalevels/:dlname/data/uploaded_data\",\n list: {\n method: \"GET\",\n uri: \"/api/products/:product_id/datalevels/:dlname/data\",\n },\n\n update: {\n method: \"PATCH\",\n uri: \"/api/products/:product_id/datalevels/:dlname/data/:data_upload_id\",\n },\n create: {\n method: \"POST\",\n uri: \"/api/products/:product_id/datalevels/:dlname/data\",\n },\n delete: {\n method: \"DELETE\",\n uri: \"/api/products/:product_id/datalevels/:dlname/data/:data_upload_id\",\n },\n },\n audio: {\n upload: \"/api/products/audio/:product_id/:filename\",\n },\n images: {\n upload: \"/api/products/:product_id/datalevels/:dlname/images/upload\",\n generate: { method: \"POST\", uri: \"/api/products/generate\" },\n },\n orders: {\n products: { method: \"GET\", uri: \"/api/orders/products\" },\n create: { method: \"POST\", uri: \"/api/orders\" },\n capture: { method: \"POST\", uri: \"/api/orders/capture\" },\n show: { method: \"GET\", uri: \"/api/orders/:order_id\" },\n add_to_cart: { method: \"POST\", uri: \"/api/orders/add_to_cart\" },\n list: { method: \"GET\", uri: \"/api/orders\" },\n },\n categories: {\n index: { method: \"GET\", uri: \"/api/products/categories\" },\n },\n // Bala Add - final_files\n final_files: {\n index: { method: \"GET\", uri: \"api/final_files\" },\n },\n audio_files: {\n index: { method: \"GET\", uri: \"api/audio_files\" },\n },\n saveaudio_files: {\n index: { method: \"POST\", uri: \"api/saveaudio_files\" },\n },\n // Bala Add - mainDbRowCount\n maindbrowcountforaset: {\n index: { method: \"GET\", uri: \"api/maindbrowcountforaset\" },\n },\n // Bala Add - productkeyval\n productkeyval: {\n index: { method: \"GET\", uri: \"api/productkeyval\" },\n },\n // Bala Add - productsetcount\n productsetcount: {\n index: { method: \"GET\", uri: \"api/productsetcount\" },\n },\n files: {\n index: { method: \"GET\", uri: \"api/files\" },\n delete: { method: \"DELETE\", uri: \"api/files/:file_path\" },\n get: { method: \"GET\", uri: \"api/files/size\" },\n },\n user_storages: {\n create: { method: \"POST\", uri: \"/api/user_storages\" },\n capture: { method: \"POST\", uri: \"/api/user_storages/capture\" },\n show: { method: \"GET\", uri: \"/api/user_storages/:user_storage_id\" },\n update: { method: \"PUT\", uri: \"/api/user_storages/:user_storage_id\" },\n // add_to_cart: { method: \"POST\", uri: \"/api/orders/add_to_cart\" },\n list: { method: \"GET\", uri: \"/api/user_storages\" },\n update_defaults: { method: \"PUT\", uri: \"/api/user_storages/update_defaults\" },\n get_defaults: { method: \"GET\", uri: \"/api/user_storages/get_defaults\" },\n },\n};\n","import { connect } from \"react-redux\";\nimport { createProduct, getCategories } from \"../actions\";\nimport { hideOverlay, showOverlay } from \"../actions/misc_actions\";\nimport AddProduct from \"../components/AddProduct\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state, ownProps) => {\n return Object.assign({}, ownProps, {\n overlay: state.overlays[\"addProduct\"] || { visible: false },\n categories: state.categories.categories || [],\n sub_categories: state.categories.sub_categories || [],\n });\n};\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n createProduct,\n hideOverlay,\n showOverlay,\n getCategories,\n },\n dispatch\n );\n\nconst AddProductContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(AddProduct);\n\nexport default AddProductContainer;\n","import { connect } from 'react-redux';\nimport AddUser from \"../components/AddUser\";\nimport { bindActionCreators } from 'redux';\nimport { productUser } from \"../actions\";\nimport { addViewProductUser } from \"../actions\";\nimport { getViewProductUser } from \"../actions\";\n\nconst mapStateToProps = (state, ownProps) => {\n return Object.assign({}, {}, ownProps);\n};\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n productUser,\n addViewProductUser,\n getViewProductUser,\n },\n dispatch\n );\n\nconst AddUserContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(AddUser);\n\nexport default AddUserContainer;","import { connect } from \"react-redux\";\nimport { createProduct, getCategories } from \"../actions\";\nimport { hideOverlay, showOverlay } from \"../actions/misc_actions\";\nimport Admin from \"../components/Admin/Admin\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state, ownProps) => {\n return Object.assign({}, ownProps, {\n overlay: state.overlays[\"addProduct\"] || { visible: false },\n categories: state.categories,\n });\n};\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n createProduct,\n hideOverlay,\n showOverlay,\n getCategories,\n },\n dispatch\n );\n\nconst AdminContainer = connect(mapStateToProps, mapDispatchToProps)(Admin);\n\nexport default AdminContainer;\n","import { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { createSelector } from \"reselect\";\r\nimport EditProductData from \"../components/EditProductData\";\r\n\r\nimport { getUploadedData, updateUploadedData, getProducts } from \"../actions\";\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\r\n const main_dl = state.product_datalevels.find(pdl => pdl.dltype === \"main\");\r\n const main_dlname = main_dl && main_dl.dlname;\r\n const dlname = ownProps.dlname;\r\n const product_id = ownProps.product_id;\r\n const uploaded_data = product.uploaded_data;\r\n const product_keys =\r\n (state.product_keys[ownProps.product_id] || {})[main_dlname] || [];\r\n return Object.assign(\r\n {},\r\n {},\r\n {\r\n product: product,\r\n product_id: product_id,\r\n dlname: dlname,\r\n uploaded_data: uploaded_data,\r\n product_keys: product_keys\r\n }\r\n );\r\n};\r\n\r\nconst mapDispatchToProps = dispatch =>\r\n bindActionCreators(\r\n {\r\n getProducts,\r\n getUploadedData,\r\n updateUploadedData\r\n },\r\n dispatch\r\n );\r\n\r\nconst EditProductDataContainer = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(EditProductData);\r\n\r\nexport default EditProductDataContainer;\r\n","import { connect } from \"react-redux\";\nimport { createProduct, getCategories } from \"../actions\";\nimport { hideOverlay, showOverlay } from \"../actions/misc_actions\";\nimport FileManager from \"../components/FileManager/FileManager\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state, ownProps) => {\n return Object.assign({}, ownProps, {\n overlay: state.overlays[\"addProduct\"] || { visible: false },\n categories: state.categories,\n });\n};\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n createProduct,\n hideOverlay,\n showOverlay,\n getCategories,\n },\n dispatch\n );\n\nconst FileManagerContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(FileManager);\n\nexport default FileManagerContainer;\n","import { connect } from \"react-redux\";\nimport Product from \"../components/Product\";\nimport {\n getProductDatalevels,\n toggleView,\n newProductDatalevel,\n updateProduct,\n deleteProduct,\n cloneProduct,\n} from \"../actions\";\nimport { bindActionCreators } from \"redux\";\nimport { createSelector } from \"reselect\";\nimport { getSets } from \"../actions/product_sets\";\nimport { getKeys } from \"../actions/product_keys\";\nimport { getOrders } from \"../actions/orders\";\n\nconst dlSelector = createSelector(\n [(state) => state.id, (state) => state.datalevels],\n (product_id, datalevels) => {\n return datalevels.filter((datalevel) => datalevel.product_id == product_id);\n }\n);\n\nconst mapStateToProps = (state, ownProps) => {\n let datalevels = state.product_datalevels;\n let product = state.products.filter((p) => p.id == ownProps.id)[0];\n const collapse = product.collapse == null ? false : product.collapse;\n const isEdit = product.isEdit == null ? false : product.isEdit;\n datalevels = dlSelector(Object.assign({}, { id: product.id }, { datalevels: datalevels }));\n return Object.assign(\n {},\n {},\n {\n product: product,\n product_datalevels: datalevels,\n collapse: collapse,\n isEdit: isEdit,\n role: ownProps.role,\n categories: state.categories,\n }\n );\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n getProductDatalevels,\n toggleView,\n newProductDatalevel,\n getSets,\n getKeys,\n updateProduct,\n deleteProduct,\n cloneProduct,\n getOrders,\n },\n dispatch\n );\n\nconst ProductContainer = connect(mapStateToProps, mapDispatchToProps)(Product);\n\nexport default ProductContainer;\n","import { connect } from \"react-redux\";\nimport ProductDLAttr from \"../components/ProductDLAttr\";\nimport {\n toggleView,\n deleteDataLevelAttribute,\n createDataLevelAttribute\n} from \"../actions\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state, ownProps) => {\n return { attribute: ownProps };\n};\n\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n toggleView,\n deleteDataLevelAttribute,\n createDataLevelAttribute\n },\n dispatch\n );\n\nconst ProductDLAttrContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductDLAttr);\n\nexport default ProductDLAttrContainer;\n","import { connect } from \"react-redux\";\nimport { getProducts } from \"../actions\";\nimport ProductDL from \"../components/ProductDL\";\nimport { bindActionCreators } from \"redux\";\nimport {\n toggleView,\n deleteProductDataLevel,\n createProductDatalevel,\n newDatalevelAttribute,\n} from \"../actions\";\n\nconst mapStateToProps = (state, ownProps) => {\n // read state.datalevel_attributes and return product specific ones\n let product = state.products.filter((p) => p.id == ownProps.id)[0];\n let product_role = product && product.product_role;\n let role = ownProps.role;\n let datalevel = state.product_datalevels.filter(\n (dl) => dl.product_id == ownProps.product_id && dl.dlname == ownProps.dlname\n )[0];\n const collapse = datalevel.collapse == null ? false : datalevel.collapse;\n return {\n product_datalevel: datalevel,\n collapse: collapse,\n role: role,\n product_role: product_role,\n };\n};\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n deleteProductDataLevel,\n toggleView,\n newDatalevelAttribute,\n createProductDatalevel,\n },\n dispatch\n );\n\nconst ProductContainer = connect(mapStateToProps, mapDispatchToProps)(ProductDL);\nexport default ProductContainer;\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { createSelector } from \"reselect\";\nimport ProductData from \"../components/ProductData\";\n\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter((p) => p.id == ownProps.product_id)[0];\n const datalevels = state.product_datalevels.filter((dl) => dl.product_id == ownProps.product_id);\n return Object.assign({}, {}, { product: product, product_datalevels: datalevels });\n};\n\nconst mapDispatchToProps = (dispatch) => bindActionCreators({}, dispatch);\n\nconst ProductDataContainer = connect(mapStateToProps, mapDispatchToProps)(ProductData);\n\nexport default ProductDataContainer;\n","import { connect } from 'react-redux'\nimport {bindActionCreators} from 'redux';\nimport { createSelector } from 'reselect'\nimport ProductImageUpload from '../components/ProductImageUpload'\n\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const datalevels = state.product_datalevels.filter(dl => dl.product_id == ownProps.product_id);\n return Object.assign({}, {}, {product: product, product_datalevels: datalevels});\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n\n},dispatch);\n\nconst ProductImageUploadContainer = connect(mapStateToProps, mapDispatchToProps)(ProductImageUpload);\n\nexport default ProductImageUploadContainer;","import { connect } from \"react-redux\";\nimport ProductLayoutList from \"../components/ProductLayoutList\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter((p) => p.id == ownProps.product_id)[0];\n return Object.assign({}, ownProps, { product: product });\n};\n\nconst mapDispatchToProps = (dispatch) => bindActionCreators({}, dispatch);\n\nconst ProductContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductLayoutList);\n\nexport default ProductContainer;\n","import {connect} from 'react-redux'\nimport {getProducts} from '../actions'\nimport ProductList from '../components/ProductList'\nimport {bindActionCreators} from 'redux';\n\n\nconst mapStateToProps = (state, ownProps) => {\n const products = state.products;\n return {products: products}\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n getProducts\n},dispatch);\n\nconst ProductListContainer = connect(mapStateToProps, mapDispatchToProps)(ProductList);\n\nexport default ProductListContainer","import { connect } from \"react-redux\";\nimport { createProduct, getCategories } from \"../actions\";\nimport { hideOverlay, showOverlay } from \"../actions/misc_actions\";\nimport UserStorage from \"../components/UserStorage/UserStorage\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state, ownProps) => {\n return Object.assign({}, ownProps, {\n overlay: state.overlays[\"addProduct\"] || { visible: false },\n categories: state.categories,\n });\n};\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n createProduct,\n hideOverlay,\n showOverlay,\n getCategories,\n },\n dispatch\n );\n\nconst UserStorageContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(UserStorage);\n\nexport default UserStorageContainer;\n","import { connect } from \"react-redux\";\nimport Cart from \"../../components/cart/Cart\";\nimport { toggleView } from \"../../actions\";\nimport { getSets } from \"../../actions/product_sets\";\nimport { bindActionCreators } from \"redux\";\nimport { getPrice, addToCart, getOrders } from \"../../actions/orders\";\n\nconst mapStateToProps = (state, ownProps) => {\n let product = state.products.filter((p) => p.id == ownProps.product_id)[0];\n let cart_product = null;\n let carts = state.carts || (state.orders && state.orders.carts);\n if (carts && carts.length > 0)\n cart_product = carts && carts.find((c) => c.product_id == ownProps.product_id);\n const expand = product.expand == null ? false : product.expand;\n return Object.assign(\n {},\n {},\n {\n product: product,\n expand: expand,\n cart_product: cart_product,\n product_sets: (product && product.product_sets) || [],\n }\n );\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n getSets,\n toggleView,\n getPrice,\n addToCart,\n getOrders,\n },\n dispatch\n );\n\nconst CartContainer = connect(mapStateToProps, mapDispatchToProps)(Cart);\n\nexport default CartContainer;\n","import { connect } from \"react-redux\";\nimport CartList from \"../../components/cart/CartList\";\nimport { getOrders, get } from \"../../actions/orders\";\n\nimport { getProducts } from \"../../actions\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state) => {\n return {\n carts: state.carts,\n products: state.products,\n };\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n getOrders,\n getProducts,\n },\n dispatch\n );\n\nconst CartListContainer = connect(mapStateToProps, mapDispatchToProps)(CartList);\n\nexport default CartListContainer;\n","import { connect } from 'react-redux'\nimport {bindActionCreators} from 'redux';\nimport AddLayout from '../../components/layouts/AddLayout';\nimport { createLayout } from '../../actions/layouts';\nimport {\n hideOverlay\n ,showOverlay\n} from '../../actions/misc_actions'\n\nconst mapStateToProps = (state, ownProps) => {\n let overlay_id = ownProps.product_id+\"/layouts\";\n return Object.assign({}, ownProps, {overlay_id: overlay_id, overlay: (state.overlays[overlay_id] || { visible: false }) });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n createLayout,\n hideOverlay,\n showOverlay\n}, dispatch);\n\nconst AddLayoutContainer = connect(mapStateToProps, mapDispatchToProps)(AddLayout);\n\nexport default AddLayoutContainer;","import { connect } from \"react-redux\";\nimport LayoutComponent from \"../../components/layouts/Layout\";\nimport { bindActionCreators } from \"redux\";\nimport { getLayoutDetails } from \"../../actions/layouts\";\nimport { deleteLayout, cloneLayout, updateLayout } from \"../../actions/layouts\";\n\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter((p) => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter((p) => p.id == ownProps.layout_id)[0];\n return Object.assign({}, ownProps, { layout: layout, product: product });\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n getLayoutDetails,\n deleteLayout,\n cloneLayout,\n updateLayout,\n },\n dispatch\n );\n\nconst LayoutContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LayoutComponent);\n\nexport default LayoutContainer;\n","import { connect } from \"react-redux\";\nimport LayoutListComponent from \"../../components/layouts/LayoutList\";\nimport { bindActionCreators } from \"redux\";\nimport { getLayouts } from \"../../actions/layouts\";\n\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter((p) => p.id == ownProps.product_id)[0];\n const layouts = state.layouts.filter(\n (p) => p.product_id == ownProps.product_id\n );\n return Object.assign({}, ownProps, { layouts: layouts, product: product });\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n getLayouts,\n },\n dispatch\n );\n\nconst LayoutListContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LayoutListComponent);\n\nexport default LayoutListContainer;\n","import { connect } from 'react-redux'\nimport LyDl from '../../../components/layouts/lydl/LyDl';\nimport { getLyDatalevels } from '../../../actions/layouts';\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const layouts = state.layouts.filter(p => p.id == ownProps.layout_id);\n const layout = layouts.filter(p => p.id == ownProps.layout_id)[0];\n let layout_datalevel = layout.datalevels.filter(dl => dl.layout_id == ownProps.layout_id && dl.dlname == ownProps.dlname)[0];\n return Object.assign({}, ownProps, {layout: layout, layout_datalevel: layout_datalevel });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n},dispatch);\n\nconst LyDlContainer = connect(mapStateToProps, mapDispatchToProps)(LyDl);\n\nexport default LyDlContainer;","import { connect } from 'react-redux'\nimport LyDlList from '../../../components/layouts/lydl/LyDlList';\nimport { getLayoutDetails } from '../../../actions/layouts';\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter(p => p.id == ownProps.layout_id)[0];\n // let product_datalevels = state.product_datalevels.filter(dl => dl.product_id == ownProps.product_id);\n // let layout_datalevels = layout.layout_datalevels.filter(dl => dl.layout_id == ownProps.layout_id);\n return Object.assign({}, ownProps, {layout: layout, product: product });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n getLayoutDetails\n},dispatch);\n\nconst LyDlListContainer = connect(mapStateToProps, mapDispatchToProps)(LyDlList);\n\nexport default LyDlListContainer;","import { connect } from 'react-redux';\nimport ManageLyDl from '../../../components/layouts/lydl/ManageLyDl';\nimport {\n hideOverlay\n ,showOverlay\n ,expandSection\n ,hideSection\n} from '../../../actions/misc_actions';\n\nimport {\n deleteLyDL\n ,createLyDL\n} from '../../../actions/layouts';\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter( p => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter(l => l.id == ownProps.layout_id)[0];\n const layout_datalevels = layout.datalevels || [];\n const product_datalevels = state.product_datalevels.filter(dl => dl.product_id == ownProps.product_id);\n let datalevels = product_datalevels.map(dl => {\n let t = layout_datalevels.filter(ld => ld.dlname == dl.dlname)[0];\n return Object.assign({}, dl, { saved: (t != null)});\n });\n return Object.assign({}, ownProps, {layout: layout, datalevels: datalevels, product: product });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n hideOverlay\n ,showOverlay\n ,hideSection\n ,expandSection\n ,deleteLyDL\n ,createLyDL\n},dispatch);\n\nconst ManageLyDlContainer = connect(mapStateToProps, mapDispatchToProps)(ManageLyDl);\n\nexport default ManageLyDlContainer;","import { connect } from \"react-redux\";\nimport AddLyDlRel from \"../../../components/layouts/lydlrel/AddLyDlRel\";\nimport { createLyDLRel } from \"../../../actions/layouts\";\n\nimport { bindActionCreators } from \"redux\";\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter((p) => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter((p) => p.id == ownProps.layout_id)[0];\n let product_datalevels = state.product_datalevels.filter(\n (dl) => dl.product_id == ownProps.product_id\n );\n let product_keys = state.product_keys[ownProps.product_id] || {} || [];\n product_keys = [].concat(...Object.values(product_keys));\n let product_key_attrs = product_keys.map((k) => k.attribute);\n let layout_rel_dls = layout.datalevel_relations.filter((rel) => rel.style == \"P\");\n let left_dls = product_datalevels.filter((dl) => {\n let filteredList = dl.attributes.filter((attr) => {\n return product_key_attrs.indexOf(attr.name) != -1;\n });\n return filteredList.length == product_keys.length;\n });\n let right_dls = [];\n if (ownProps.type == \"product_key\") {\n right_dls = left_dls;\n } else {\n left_dls = left_dls.filter((dl) => {\n return layout_rel_dls.map((rel) => rel.pdlname).indexOf(dl.dlname) != -1;\n });\n right_dls = product_datalevels.filter((dl) => {\n let filteredList = dl.attributes.filter((attr) => {\n return product_key_attrs.indexOf(attr.name) != -1;\n });\n return filteredList.length != product_keys.length;\n });\n }\n if (ownProps.type != \"product_key\") {\n left_dls = left_dls.filter((dl) => {\n let currentAttr = dl.attributes;\n let isCommonAttr = false;\n right_dls.forEach((rDl) => {\n let currentRightAttr = rDl.attributes;\n let result = currentAttr.filter((o) => currentRightAttr.some((m) => o.name === m.name));\n if (result.length > 0) {\n isCommonAttr = true;\n }\n });\n if (isCommonAttr) {\n return dl;\n }\n });\n }\n return Object.assign({}, ownProps, {\n layout: layout,\n product: product,\n product_datalevels: product_datalevels,\n left_dls: left_dls,\n right_dls: right_dls,\n });\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n createLyDLRel,\n },\n dispatch\n );\n\nconst AddLyDlRelContainer = connect(mapStateToProps, mapDispatchToProps)(AddLyDlRel);\n\nexport default AddLyDlRelContainer;\n","import { connect } from 'react-redux'\nimport AddLyDlRelKey from '../../../components/layouts/lydlrel/AddLyDlRelKey';\nimport {bindActionCreators} from 'redux';\nimport unique from 'array-unique';\nimport { createLyDLRelKey } from '../../../actions/layouts';\n\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter(p => p.id == ownProps.layout_id)[0];\n let dlRel = layout.datalevel_relations.filter(rel => rel.id == ownProps.dlrel_id)[0];\n // Common attributes\n let attributes = [];\n let pdl = state.product_datalevels.filter(dl => dl.product_id == ownProps.product_id && dl.dlname == dlRel.pdlname)[0];\n let cdl = state.product_datalevels.filter(dl => dl.product_id == ownProps.product_id && dl.dlname == dlRel.cdlname)[0];\n attributes = attributes.concat(pdl.attributes).concat(cdl.attributes);\n attributes = attributes.reduce((attributeResult, attribute) => {\n attributeResult.push(attribute.name);\n return attributeResult;\n }, []);\n attributes = attributes.reduce(function(acc, el, i, arr) {\n if (arr.indexOf(el) !== i && acc.indexOf(el) < 0) acc.push(el); return acc;\n }, []);\n\n let product_keys = ((state.product_keys[ownProps.product_id] || {}) || []);\n product_keys = [].concat(...Object.values(product_keys));\n attributes = unique(attributes);\n let product_key_attrs = product_keys.map(k => k.attribute);\n\n if(dlRel.style == 'P')\n attributes = attributes.filter(attr => product_key_attrs.indexOf(attr) != -1)\n\n return Object.assign({}, ownProps, {layout: layout, product: product, dlRel: dlRel, attributes: unique(attributes) });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n createLyDLRelKey\n},dispatch);\n\nconst AddLyDlRelKeyContainer = connect(mapStateToProps, mapDispatchToProps)(AddLyDlRelKey);\n\nexport default AddLyDlRelKeyContainer;","import { connect } from 'react-redux'\nimport EditLyDlRel from '../../../components/layouts/lydlrel/EditLyDlRel';\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter(p => p.id == ownProps.layout_id)[0];\n let dlRel = layout.datalevel_relations.filter(dlrel => dlrel.id == ownProps.dlrel_id)[0] || {};\n let product_datalevels = state.product_datalevels.filter(dl => dl.product_id == ownProps.product_id);\n return Object.assign({}, ownProps, {layout: layout, dlRel: dlRel, product: product, product_datalevels: product_datalevels });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n},dispatch);\n\nconst EditLyDlRelContainer = connect(mapStateToProps, mapDispatchToProps)(EditLyDlRel);\n\nexport default EditLyDlRelContainer;","import { connect } from 'react-redux'\nimport EditLyDlRelKey from '../../../components/layouts/lydlrel/EditLyDlRelKey';\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter(p => p.id == ownProps.layout_id)[0];\n let dlRel = layout.datalevel_relations.filter(dlrel => dlrel.id == ownProps.dlrel_id)[0];\n let dlRelKey = dlRel.datalevel_relation_keys.filter(key => key.id == ownProps.dlrelkey_id)[0];\n return Object.assign({}, ownProps, {layout: layout, dlRel: dlRel, product: product, dlRelKey: dlRelKey });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n},dispatch);\n\nconst EditLyDlRelKeyContainer = connect(mapStateToProps, mapDispatchToProps)(EditLyDlRelKey);\n\nexport default EditLyDlRelKeyContainer;","import { connect } from 'react-redux'\nimport EditLyDlRelList from '../../../components/layouts/lydlrel/EditLyDlRelList';\nimport {\n hideOverlay\n ,showOverlay\n} from '../../../actions/misc_actions';\nimport { createLyDLRel, deleteLyDLRel } from '../../../actions/layouts';\n\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter(p => p.id == ownProps.layout_id)[0];\n let product_datalevels = state.product_datalevels.filter(dl => dl.product_id == ownProps.product_id);\n // let layout_datalevels = layout.layout_datalevels.filter(dl => dl.layout_id == ownProps.layout_id);\n return Object.assign({}, ownProps, {isAddVisible: false, layout: layout, product: product, product_datalevels: product_datalevels });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n hideOverlay\n ,showOverlay\n ,createLyDLRel\n ,deleteLyDLRel\n},dispatch);\n\nconst EditLyDlRelListContainer = connect(mapStateToProps, mapDispatchToProps)(EditLyDlRelList);\n\nexport default EditLyDlRelListContainer;","import { connect } from 'react-redux'\nimport LyDlRel from '../../../components/layouts/lydlrel/LyDlRel';\nimport { deleteLyDLRel } from '../../../actions/layouts';\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter(p => p.id == ownProps.layout_id)[0];\n let dlRel = layout.datalevel_relations.filter(dlrel => dlrel.id == ownProps.dlrel_id)[0];\n return Object.assign({}, ownProps, {layout: layout, dlRel: dlRel, product: product });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n deleteLyDLRel\n},dispatch);\n\nconst LyDlRelContainer = connect(mapStateToProps, mapDispatchToProps)(LyDlRel);\n\nexport default LyDlRelContainer;","import { connect } from 'react-redux'\nimport LyDlRelKey from '../../../components/layouts/lydlrel/LyDlRelKey';\nimport { deleteLyDLRelKey } from '../../../actions/layouts';\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter(p => p.id == ownProps.layout_id)[0];\n let dlRel = layout.datalevel_relations.filter(dlrel => dlrel.id == ownProps.dlrel_id)[0];\n let dlRelKey = dlRel.datalevel_relation_keys.filter(key => key.id == ownProps.dlrelkey_id)[0];\n return Object.assign({}, ownProps, {layout: layout, dlRel: dlRel, product: product, dlRelKey: dlRelKey });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n deleteLyDLRelKey\n},dispatch);\n\nconst LyDlRelKeyContainer = connect(mapStateToProps, mapDispatchToProps)(LyDlRelKey);\n\nexport default LyDlRelKeyContainer;","import { connect } from 'react-redux'\nimport LyDlRelKeyList from '../../../components/layouts/lydlrel/LyDlRelKeyList';\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter(p => p.id == ownProps.layout_id)[0];\n let dlRel = layout.datalevel_relations.filter(rel => rel.id == ownProps.dlrel_id)[0];\n return Object.assign({}, ownProps, {layout: layout, product: product, dlRel: dlRel});\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n},dispatch);\n\nconst LyDlRelKeyListContainer = connect(mapStateToProps, mapDispatchToProps)(LyDlRelKeyList);\n\nexport default LyDlRelKeyListContainer;","import { connect } from 'react-redux'\nimport LyDlRelList from '../../../components/layouts/lydlrel/LyDlRelList';\nimport { getKeys } from \"../../../actions/product_keys\"\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter(p => p.id == ownProps.layout_id)[0];\n // let product_datalevels = state.product_datalevels.filter(dl => dl.product_id == ownProps.product_id);\n // let layout_datalevels = layout.layout_datalevels.filter(dl => dl.layout_id == ownProps.layout_id);\n return Object.assign({}, ownProps, {isAddVisible: false, layout: layout, product: product });\n};\n\nconst mapDispatchToProps = (dispatch) => bindActionCreators({\n getKeys\n},dispatch);\n\nconst LyDlRelListContainer = connect(mapStateToProps, mapDispatchToProps)(LyDlRelList);\n\nexport default LyDlRelListContainer;","import { connect } from 'react-redux'\nimport AddLySlotFor from '../../../components/layouts/lyslotfors/AddLySlotFor';\nimport { createLyDLSlotFor } from '../../../actions/layouts';\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter(p => p.id == ownProps.layout_id)[0];\n let product_datalevels = state.product_datalevels.filter(dl => {\n return dl.product_id == ownProps.product_id\n });\n let slotFors = layout.datalevel_slotfors\n let layout_datalevels = layout.datalevels.reduce((accumilator, lyDl) => {\n accumilator.push(lyDl.dlname);\n return accumilator;\n }, [])\n product_datalevels = product_datalevels.filter(pDl => (layout_datalevels.indexOf(pDl.dlname) != -1))\n return Object.assign({}, ownProps, {layout: layout, layout_datalevels: product_datalevels, product: product, slotFors: slotFors });\n};\n\nconst mapDispatchToProps = (dispatch) => bindActionCreators({\n createLyDLSlotFor\n}, dispatch);\n\nconst AddLySlotForContainer = connect(mapStateToProps, mapDispatchToProps)(AddLySlotFor);\n\nexport default AddLySlotForContainer;","import { connect } from 'react-redux'\nimport LySlotFor from '../../../components/layouts/lyslotfors/LySlotFor';\nimport { deleteLyDLSlotFor } from '../../../actions/layouts';\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const layout = state.layouts.filter(p => p.id == ownProps.layout_id)[0];\n let slotFors = layout.datalevel_slotfors.filter(slotfor => slotfor.dlname == ownProps.dlname && slotfor.slotforcode == ownProps.slotforcode);\n return Object.assign({}, ownProps, {layout: layout, slotFors: slotFors, product: product });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n deleteLyDLSlotFor\n},dispatch);\n\nconst LySlotForContainer = connect(mapStateToProps, mapDispatchToProps)(LySlotFor);\n\nexport default LySlotForContainer;","import { connect } from 'react-redux'\nimport LySlotForList from '../../../components/layouts/lyslotfors/LySlotForList';\n\nimport {bindActionCreators} from 'redux';\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n let layout = state.layouts.filter(p => p.id == ownProps.layout_id)[0];\n let datalevel_slotfors = layout.datalevel_slotfors.filter(slotfor => slotfor.slotforcode == ownProps.slotforcode);\n layout = Object.assign({}, layout, {});\n delete layout.datalevel_slotfors;\n delete layout.datalevel_relations;\n delete layout.datalevels;\n datalevel_slotfors = datalevel_slotfors.reduce((accumilator, slotfor)=> {\n accumilator[slotfor.dlname] = accumilator[slotfor.dlname] || [];\n accumilator[slotfor.dlname].push(slotfor);\n return accumilator;\n }, {});\n return Object.assign({}, ownProps, {layout: layout, product: product, dlnames: Object.keys(datalevel_slotfors)});\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n},dispatch);\n\nconst LySlotForListContainer = connect(mapStateToProps, mapDispatchToProps)(LySlotForList);\n\nexport default LySlotForListContainer;","import { connect } from \"react-redux\";\nimport CCavenuePayment from \"../../components/orders/CCavenuePayment\";\nimport { bindActionCreators } from \"redux\";\nimport { getPrice, generateImage } from \"../../actions/orders\";\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n product_id: ownProps.product_id,\n setno: ownProps.setno,\n pageno: ownProps.pageno,\n no_of_files: ownProps.no_of_files,\n prtype: ownProps.prtype,\n numpages: ownProps.numpages\n };\n};\n\n\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n getPrice,\n generateImage\n },\n dispatch\n );\n\nconst CCavenuePaymentContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(CCavenuePayment);\n\nexport default CCavenuePaymentContainer;\n","import { connect } from \"react-redux\";\nimport DownloadFiles from \"../../components/orders/DownloadFiles\";\nimport { bindActionCreators } from \"redux\";\nimport { getSets } from \"../../actions/product_sets\";\n\nconst mapStateToProps = (state, ownProps) => {\n let product = state.products.filter((e) => e.id === ownProps.product_id)[0];\n let product_sets = Object.values(\n (state.product_sets && state.product_sets[ownProps.product_id]) || {}\n );\n const orders = (product && product.order) || [];\n const paidOrders = orders.filter((o) => o.status == \"paid\");\n const main_dl = ((state.product_datalevels && state.product_datalevels) || []).find(\n (pdl) => pdl.dltype === \"main\"\n );\n const main_dlname = main_dl && main_dl.dlname;\n product.product_sets =\n product && product.product_sets && product.product_sets.length > 0\n ? product.product_sets\n : product_sets;\n return {\n product: product,\n product_sets: product.product_sets || product_sets,\n main_dlname: main_dlname,\n paidOrders: paidOrders,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => bindActionCreators({ getSets }, dispatch);\n\nconst DownloadFilesContainer = connect(mapStateToProps, mapDispatchToProps)(DownloadFiles);\n\nexport default DownloadFilesContainer;\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport Layout from \"../../components/orders/Layout\";\nimport { getPrice } from \"../../actions/orders\";\n\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter((p) => p.id == ownProps.product_id)[0];\n if (product.product_sets) {\n const product_set = product.product_sets.filter(\n (p) => p.product_id === product.id && p.setno === ownProps.setno\n )[0];\n const set_layouts = product_set.layouts || [];\n const set_layout =\n set_layouts.filter((p) => p.pageno == ownProps.pageno)[0] || {};\n return Object.assign({}, ownProps, {\n product: product,\n layout: set_layout,\n product_set: product_set,\n });\n } else {\n return {\n ...state,\n ownProps,\n };\n }\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n getPrice,\n },\n dispatch\n );\n\nconst LayoutContainer = connect(mapStateToProps, mapDispatchToProps)(Layout);\n\nexport default LayoutContainer;\n","import { connect } from \"react-redux\";\nimport Order from \"../../components/orders/Order\";\nimport { toggleView } from \"../../actions\";\nimport { getSets } from \"../../actions/product_sets\";\nimport { bindActionCreators } from \"redux\";\nimport { getPrice, addToCart, getOrders } from \"../../actions/orders\";\n\nconst mapStateToProps = (state, ownProps) => {\n let product = state.products.filter((p) => p.id == ownProps.product_id)[0];\n let cart_product = null;\n let carts = state.carts || (state.orders && state.orders.carts);\n if (carts && carts.length > 0)\n cart_product = carts && carts.find((c) => c.product_id == ownProps.product_id);\n const expand = product.expand == null ? false : product.expand;\n return Object.assign(\n {},\n {},\n {\n product: product,\n expand: expand,\n cart_product: cart_product,\n }\n );\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n getSets,\n toggleView,\n getPrice,\n addToCart,\n getOrders,\n },\n dispatch\n );\n\nconst OrderContainer = connect(mapStateToProps, mapDispatchToProps)(Order);\n\nexport default OrderContainer;\n","import { connect } from \"react-redux\";\nimport OrderList from \"../../components/orders/OrderList\";\nimport { getProducts } from \"../../actions\";\nimport { getOrders } from \"../../actions/orders\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = state => {\n return {\n products: state.products\n };\n};\n\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n getProducts,\n getOrders\n },\n dispatch\n );\n\nconst OrderListContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(OrderList);\n\nexport default OrderListContainer;\n","import { connect } from \"react-redux\";\nimport OrderProductSet from \"../../components/orders/OrderProductSet\";\nimport { bindActionCreators } from \"redux\";\nimport { getPrice, addToCart } from \"../../actions/orders\";\n\n\n\n\nconst mapStateToProps = (state, ownProps) => {\n let product_set = ownProps.product.product_sets.filter((p) => p.setno === ownProps.setno)[0];\n let counts = product_set[ownProps.main_dlname];\n let cart_product = null;\n let carts = state.carts || (state.orders && state.orders.carts);\n if (carts && carts.length > 0)\n cart_product = carts && carts.find((c) => c.product_id == ownProps.product_id);\n \n return Object.assign(\n {},\n {},\n {\n product: ownProps.product,\n setno: ownProps.setno,\n product_set: product_set,\n order: ownProps.product.order || {},\n layouts: ownProps.layouts,\n cart_product: cart_product,\n counts: counts,\n carts: state.carts,\n main_dlname: ownProps.main_dlname || ownProps.product.main_dlname,\n }\n );\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n getPrice,\n addToCart,\n },\n dispatch\n );\n\n\nconst OrderProductSetContainer = connect(mapStateToProps, mapDispatchToProps)(OrderProductSet);\n\nexport default OrderProductSetContainer;\n","import { connect } from \"react-redux\";\nimport OrderProductSetList from \"../../components/orders/OrderProductSetList\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state, ownProps) => {\n let product = state.products.filter((e) => e.id === ownProps.product_id)[0];\n let product_sets = Object.values(\n (state.product_sets && state.product_sets[ownProps.product_id]) || {}\n );\n const main_dl = ((state.product_datalevels && state.product_datalevels) || []).find(\n (pdl) => pdl.dltype === \"main\" && pdl.product_id == product.id\n );\n const main_dlname = (main_dl && main_dl.dlname) || product.main_dlname;\n product.product_sets =\n product.product_sets && product.product_sets.length > 0 ? product.product_sets : product_sets;\n return {\n product: product,\n product_sets: product.product_sets || product_sets,\n order_status: ownProps.order_status,\n main_dlname: main_dlname,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => bindActionCreators({}, dispatch);\n\nconst OrderProductSetListContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(OrderProductSetList);\n\nexport default OrderProductSetListContainer;\n","import { connect } from \"react-redux\";\nimport Payment from \"../../components/orders/Payment\";\nimport { bindActionCreators } from \"redux\";\nimport { getPrice, generateImage } from \"../../actions/orders\";\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n product_id: ownProps.product_id,\n setno: ownProps.setno,\n pageno: ownProps.pageno,\n prtype: ownProps.prtype,\n numpages: ownProps.numpages\n };\n};\n\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n getPrice,\n generateImage\n },\n dispatch\n );\n\nconst PaymentContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(Payment);\n\nexport default PaymentContainer;\n","import { connect } from 'react-redux';\r\nimport ShareProduct from \"../../components/orders/ShareProduct\"\r\nimport { bindActionCreators } from 'redux';\r\nimport { shareProduct } from \"../../actions/orders\";\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n return Object.assign({}, {}, ownProps);\r\n};\r\nconst mapDispatchToProps = (dispatch) => bindActionCreators({\r\n shareProduct\r\n}, dispatch);\r\n\r\nconst ShareProductContainer = connect(mapStateToProps, mapDispatchToProps)(ShareProduct);\r\n\r\nexport default ShareProductContainer;","import { connect } from \"react-redux\";\nimport { getKeys, createKey, deleteKey } from \"../../actions/product_keys\";\nimport { getProductDatalevels } from \"../../actions\";\nimport {\n toggleOverlay,\n hideOverlay,\n showOverlay\n} from \"../../actions/misc_actions\";\nimport EditProductKey from \"../../components/product_keys/EditProductKey\";\nimport { bindActionCreators } from \"redux\";\nimport { createSelector } from \"reselect\";\n\nconst dlSelector = createSelector(\n [state => state.id, state => state.datalevels],\n (filter, datalevels) => {\n return datalevels.filter(\n datalevel => datalevel.product_id == filter.product_id\n );\n }\n);\n\nconst mapStateToProps = (state, ownProps) => {\n let datalevels = state.product_datalevels;\n let product = state.products.filter(p => p.id == ownProps.product_id)[0];\n let overlay = state.overlays[ownProps.product_id + \"/keys\"] || {\n visible: false\n };\n let datalevel =\n datalevels.filter(\n datalevel =>\n datalevel.product_id == ownProps.product_id &&\n datalevel.dltype == \"main\"\n )[0] || {};\n const product_keys =\n (state.product_keys[ownProps.product_id] || {})[datalevel.dlname] || [];\n let selectedKeys = {};\n let currentKeyOrder = 0;\n product_keys.map(key => {\n if (key.order > currentKeyOrder) currentKeyOrder = key.order;\n selectedKeys[key.attribute] = {\n checked: true,\n saved: true,\n order: key.order\n };\n });\n if (datalevel != null && datalevel.attributes != null) {\n datalevel.attributes.map(key => {\n if (selectedKeys[key.name] == null) {\n selectedKeys[key.name] = { checked: false, saved: false, order: 0 };\n }\n });\n }\n\n return Object.assign(\n {},\n {},\n {\n product: product,\n product_datalevel: datalevel,\n overlay: overlay,\n product_keys: product_keys,\n label: ownProps.labelText,\n selectedKeys: selectedKeys,\n currentKeyOrder: currentKeyOrder\n }\n );\n};\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n getProductDatalevels,\n getKeys,\n createKey,\n deleteKey,\n toggleOverlay,\n hideOverlay,\n showOverlay\n },\n dispatch\n );\n\nconst EditProductKeyContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(EditProductKey);\n\nexport default EditProductKeyContainer;\n","import {connect} from 'react-redux';\nimport {getProductDatalevels} from '../../actions';\nimport {getKeys ,deleteKey} from '../../actions/product_keys';\nimport ProductKey from '../../components/product_keys/ProductKey';\nimport {bindActionCreators} from 'redux';\nimport {\n showOverlay\n ,selectDatalevel\n} from '../../actions/misc_actions';\n\nconst mapStateToProps = (state, ownProps) => {\n let datalevels = state.product_datalevels;\n let product = state.products.filter(p => p.id == ownProps.product_id)[0];\n let datalevel = datalevels.filter(\n datalevel => (datalevel.product_id == ownProps.product_id && datalevel.dltype == 'main')\n )[0] || {};\n const product_keys = ((state.product_keys[ownProps.product_id] || {})[datalevel.dlname] || []);\n return Object.assign({}, ownProps, {product_keys: product_keys, product: product, product_datalevel: datalevel, overlay: (state.overlays[ownProps.product_id] || { visible: false } ) });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n deleteKey\n ,getProductDatalevels\n ,showOverlay\n ,selectDatalevel\n},dispatch);\n\n\nconst ProductKeyContainer = connect(mapStateToProps, mapDispatchToProps)(ProductKey);\n\nexport default ProductKeyContainer","import { connect } from \"react-redux\";\nimport { getKeys } from \"../../actions/product_keys\";\nimport ProductKeyList from \"../../components/product_keys/ProductKeyList\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state, ownProps) => {\n const role = ownProps.role;\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const product_role = product && product.product_role;\n const product_keys = state.product_keys[ownProps.product_id] || [];\n return {\n product: product,\n product_keys: product_keys,\n product_role: product_role,\n role: role\n };\n};\n\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n getKeys\n },\n dispatch\n );\n\nconst ProductKeyListContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductKeyList);\n\nexport default ProductKeyListContainer;\n","import {connect} from 'react-redux'\nimport {getSets, createSet, deleteSet} from '../../actions/product_sets'\nimport {getProductDatalevels} from '../../actions'\nimport {\n toggleOverlay\n ,hideOverlay\n ,showOverlay\n} from '../../actions/misc_actions'\nimport AddProductSet from '../../components/product_sets/AddProductSet'\nimport {bindActionCreators} from 'redux';\n\nconst mapStateToProps = (state, ownProps) => {\n let datalevels = state.product_datalevels;\n let product = state.products.filter(p => p.id == ownProps.product_id)[0];\n return Object.assign({}, {}, {product: product, overlay: ownProps.overlay, label: ownProps.labelText});\n};\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n createSet\n ,hideOverlay\n ,showOverlay\n},dispatch);\n\nconst AddSetContainer = connect(mapStateToProps, mapDispatchToProps)(AddProductSet);\n\nexport default AddSetContainer;","import { connect } from \"react-redux\";\nimport ProductSet from \"../../components/product_sets/ProductSet\";\nimport { bindActionCreators } from \"redux\";\nimport { createSelector } from \"reselect\";\nimport { getSetPlaceholders, deleteSet, updateSet } from \"../../actions/product_sets\";\n\nconst mapStateToProps = (state, ownProps) => {\n return ownProps;\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n getSetPlaceholders,\n deleteSet,\n updateSet,\n },\n dispatch\n );\n\nconst ProductSetContainer = connect(mapStateToProps, mapDispatchToProps)(ProductSet);\n\nexport default ProductSetContainer;\n","import { connect } from \"react-redux\";\nimport ProductSetCount from \"../../components/product_sets/ProductSetCount\";\nimport { bindActionCreators } from \"redux\";\nimport {\n toggleOverlay,\n hideOverlay,\n showOverlay\n} from \"../../actions/misc_actions\";\nimport {\n createSetOccurenceCount,\n updateSetOccurenceCount\n} from \"../../actions/product_sets\";\n\nconst mapStateToProps = (state, ownProps) => {\n return Object.assign({}, ownProps, { overlays: state.overlays });\n};\n\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n hideOverlay,\n showOverlay,\n createSetOccurenceCount,\n updateSetOccurenceCount\n },\n dispatch\n );\n\nconst ProductSetCountContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductSetCount);\n\nexport default ProductSetCountContainer;\n","import { connect } from \"react-redux\";\nimport ProductSetCountList from \"../../components/product_sets/ProductSetCountList\";\nimport { bindActionCreators } from \"redux\";\nimport { createSelector } from \"reselect\";\nimport {\n toggleOverlay,\n hideOverlay,\n showOverlay\n} from \"../../actions/misc_actions\";\n\nconst mapStateToProps = (state, ownProps) => {\n return Object.assign({}, ownProps, { overlay: state.overlays });\n};\n\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n hideOverlay,\n showOverlay\n },\n dispatch\n );\n\nconst ProductSetCountListContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductSetCountList);\n\nexport default ProductSetCountListContainer;\n","import {connect} from 'react-redux';\nimport ProductSetDLVal from '../../components/product_sets/ProductSetDLVal';\nimport {bindActionCreators} from 'redux';\nimport {\n toggleOverlay\n ,hideOverlay\n ,showOverlay\n} from '../../actions/misc_actions'\nimport {updateSetDLVal, createSetDLVal} from '../../actions/product_sets'\n\n\nconst mapStateToProps = (state, ownProps) => {\n return Object.assign({}, ownProps, {overlays: state.overlays });\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n hideOverlay\n ,showOverlay\n ,createSetDLVal\n ,updateSetDLVal\n},dispatch);\n\n\nconst ProductSetDLValContainer = connect(mapStateToProps, mapDispatchToProps)(ProductSetDLVal);\n\nexport default ProductSetDLValContainer;","import {connect} from 'react-redux'\nimport ProductSetDLValList from '../../components/product_sets/ProductSetDLValList'\nimport {bindActionCreators} from 'redux';\nimport { createSelector } from 'reselect'\nimport {\n toggleOverlay\n ,hideOverlay\n ,showOverlay\n} from '../../actions/misc_actions'\n\nconst mapStateToProps = (state, ownProps) => {\n return Object.assign({}, ownProps, {overlay: state.overlays});\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n hideOverlay\n ,showOverlay\n},dispatch);\n\n\nconst ProductSetDLValListContainer = connect(mapStateToProps, mapDispatchToProps)(ProductSetDLValList);\n\nexport default ProductSetDLValListContainer;","import {connect} from 'react-redux';\nimport ProductSetKeyVal from '../../components/product_sets/ProductSetKeyVal';\nimport {bindActionCreators} from 'redux';\nimport {\n toggleOverlay\n ,hideOverlay\n ,showOverlay\n} from '../../actions/misc_actions'\nimport {createSetKey, updateSetKey} from '../../actions/product_sets'\n\n\nconst mapStateToProps = (state, ownProps) => {\n return Object.assign({}, ownProps, {overlay: state.overlays[ownProps.product_id+\"/sets/\"+ownProps.setno+\"/\"+ownProps.keyname] || {visible: false}});\n};\n\nconst mapDispatchToProps = (dispatch) =>bindActionCreators({\n hideOverlay\n ,showOverlay\n ,createSetKey\n ,updateSetKey\n},dispatch);\n\n\nconst ProductSetKeyValContainer = connect(mapStateToProps, mapDispatchToProps)(ProductSetKeyVal);\n\nexport default ProductSetKeyValContainer;","import {connect} from 'react-redux'\nimport ProductSetKeyValList from '../../components/product_sets/ProductSetKeyValList'\nimport {bindActionCreators} from 'redux';\nimport { createSelector } from 'reselect'\n\nconst mapStateToProps = (state, ownProps) => {\n return Object.assign(ownProps);\n};\n\n\n\nconst ProductSetKeyValListContainer = connect(mapStateToProps, null)(ProductSetKeyValList);\n\nexport default ProductSetKeyValListContainer","import { connect } from \"react-redux\";\nimport ProductSetLayout from \"../../components/product_sets/ProductSetLayout\";\nimport { hideOverlay, showOverlay } from \"../../actions/misc_actions\";\nimport { bindActionCreators } from \"redux\";\nimport { createSetLayout, deleteSetLayout } from \"../../actions/product_sets\";\nimport { getSupportedLayouts } from \"../../actions/product_sets\";\n\nconst mapStateToProps = (state, ownProps) => {\n let overlay_id =\n \"product_\" +\n ownProps.product_id +\n \"_\" +\n \"layout_\" +\n ownProps.setno +\n \"_\" +\n ownProps.pageno;\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const supported_layouts =\n state.product_sets[\n ownProps.product_id + \"_set_\" + ownProps.setno + \"_\" + ownProps.pageno\n ] || [];\n const set_layouts =\n state.product_sets[product.id][ownProps.setno].layouts || [];\n const set_layout =\n set_layouts.filter(p => p.pageno == ownProps.pageno)[0] || {};\n return Object.assign({}, ownProps, {\n supported_layouts: supported_layouts,\n overlay_id: overlay_id,\n product: product,\n layout: set_layout,\n overlay: state.overlays[overlay_id] || { visible: false }\n });\n};\n\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n createSetLayout,\n hideOverlay,\n showOverlay,\n deleteSetLayout,\n getSupportedLayouts\n },\n dispatch\n );\n\nconst ProductSetLayoutContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductSetLayout);\n\nexport default ProductSetLayoutContainer;\n","import { connect } from \"react-redux\";\nimport { getSets } from \"../../actions/product_sets\";\nimport ProductSetList from \"../../components/product_sets/ProductSetList\";\nimport { bindActionCreators } from \"redux\";\nimport { getKeys } from \"../../actions/product_keys\";\n\nconst mapStateToProps = (state, ownProps) => {\n const product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const product_role = product.product_role;\n const role = ownProps.role;\n const product_sets = state.product_sets[ownProps.product_id] || [];\n const overlays = state.overlays[ownProps.product_id + \"_sets\"] || {\n visible: false\n };\n return {\n product: product,\n product_sets: product_sets,\n overlay: overlays,\n product_role: product_role,\n role: role\n };\n};\n\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n getSets,\n getKeys\n },\n dispatch\n );\n\nconst ProductSetListContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductSetList);\n\nexport default ProductSetListContainer;\n","import { connect } from \"react-redux\";\nimport ViewProduct from \"../../components/view_products/ViewProduct\";\nimport { toggleView } from \"../../actions\";\nimport { getSets } from \"../../actions/product_sets\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state, ownProps) => {\n let product = state.products.filter(p => p.id == ownProps.product_id)[0];\n const expand = product.expand == null ? false : product.expand;\n return Object.assign(\n {},\n {},\n {\n product: product,\n expand: expand\n }\n );\n};\n\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n getSets,\n toggleView\n },\n dispatch\n );\n\nconst ViewProductContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ViewProduct);\n\nexport default ViewProductContainer;\n","import { connect } from \"react-redux\";\nimport ViewProductList from \"../../components/view_products/ViewProductList\";\nimport { getViewProducts } from \"../../actions/orders\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state) => {\n return {\n products: state.products,\n };\n};\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n getViewProducts,\n },\n dispatch\n );\n\nconst ViewProductListContainer = connect(mapStateToProps, mapDispatchToProps)(ViewProductList);\n\nexport default ViewProductListContainer;\n","import { connect } from \"react-redux\";\nimport ViewProductSet from \"../../components/view_products/ViewProductSet\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state, ownProps) => {\n let product_set = ownProps.product.product_sets.filter(\n p => p.setno === ownProps.setno\n )[0];\n return Object.assign(\n {},\n {},\n {\n product: ownProps.product,\n setno: ownProps.setno,\n product_set: product_set,\n order: ownProps.order,\n layouts: ownProps.layouts\n }\n );\n};\n\nconst mapDispatchToProps = dispatch =>\n bindActionCreators(\n {\n },\n dispatch\n );\n\nconst ViewProductSetContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ViewProductSet);\n\nexport default ViewProductSetContainer;\n","import { connect } from \"react-redux\";\nimport ViewProductSetList from \"../../components/view_products/ViewProductSetList\";\nimport { bindActionCreators } from \"redux\";\n\nconst mapStateToProps = (state, ownProps) => {\n let product = state.products.filter(e => e.id === ownProps.product_id)[0];\n return {\n product: product,\n product_sets: product.product_sets\n };\n};\n\nconst mapDispatchToProps = dispatch => bindActionCreators({}, dispatch);\n\nconst ViewProductSetListContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ViewProductSetList);\n\nexport default ViewProductSetListContainer;\n","import { createContext } from \"react\";\n\nconst CartContext = createContext();\n\nexport default CartContext;\n","//Import the Action types\nimport {\n SETQTY,\n INCREASE,\n DECREASE,\n } from \"./CartTypes.js\";\n \n \n // The reducer is listening for an action, which is the type that we defined in the CartTypes.js file\n const CartReducer = (state, action) => {\n // The switch statement is checking the type of action that is being passed in\n switch (action.type) {\n // If the action type is SETQTY, we want to set the quantity with the payload\n case SETQTY:\n state.cartItems.quantity=action.payload;\n return {\n ...state,\n cartItems: state.cartItems,\n };\n \n // If the action type is INCREASE, we want to increase the quantity of the particular item in the cartItems array\n case INCREASE:\n state.cartItems.quantity++;\n return {\n ...state,\n cartItems: state.cartItems,\n };\n \n // If the action type is DECREASE, we want to decrease the quantity of the particular item in the cartItems array\n case DECREASE:\n state.cartItems.quantity--;\n return {\n ...state,\n cartItems: state.cartItems,\n };\n \n \n //Return the state if the action type is not found\n default:\n return state;\n }\n };\n \n export default CartReducer;\n ","import React, { useState } from 'react';\nimport { useReducer } from \"react\";\nimport CartContext from \"./CartContext\";\nimport CartReducer from \"./CartReducer\";\n\n\nconst CartState = ({ children }) => {\n // Initial State of the cart\n const initialState = {\n cartItems: {quantity:null},\n };\n\n //Set up the reducer\n const [state, dispatch] = useReducer(CartReducer, initialState);\n\n //Function to set the value of quantity\n const setqty = (payload) => {\n dispatch({ type: \"SETQTY\", payload});\n };\n \n //Function to handle when an item that is in the cart is added again\n const increase = () => {\n dispatch({ type: \"INCREASE\"});\n };\n\n //Function to handle when an item is removed from the cart\n const decrease = () => {\n dispatch({ type: \"DECREASE\"});\n };\n\n \n\n return (\n //Add the functions that have been defined above into the Context provider, and pass on to the children\n \n {children}\n \n );\n};\n\nfunction getCookie (cname) {\n let name = cname + \"=\";\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for(let i = 0; i { product_id, payload}\nconst layouts = (state = [], action) => {\n let newState = [];\n let t = {};\n let newState2 = [];\n let map = new Map();\n switch (action.type) {\n case ADD_ALL_LAYOUTS:\n for (let i = 0; i < action.payload.length; i++) {\n action.payload[i][\"product_id\"] = action.id;\n action.payload[i][\"datalevel_slotfors\"] = [];\n action.payload[i][\"datalevel_relations\"] = [];\n action.payload[i][\"datalevels\"] = [];\n }\n // newState = [...state, ...action.payload];\n newState = [...action.payload];\n for (const item of newState) {\n if (!map.has(item.id)) {\n map.set(item.id, true);\n newState2.push(item);\n }\n }\n return newState2;\n case ADD_LAYOUT:\n newState = [...state];\n let layout = newState.filter(layout => layout.id == action.payload.id)[0];\n // let datalevel_slotfors = layout.datalevel_slotfors.reduce((slotforLayout, slotfor) => {\n // slotforLayout[slotfor.slotforcode] ||= [];\n // slotforLayout[slotfor.slotforcode].push(slotfor);\n // }, {});\n // delete layout.datalevel_slotfors;\n // layout.datalevel_slotfors = datalevel_slotfors;\n if (layout == null) {\n return state;\n } else {\n newState[newState.indexOf(layout)] = Object.assign({}, action.payload, {\n product_id: layout.product_id\n });\n }\n return newState;\n case DELETE_LAYOUT:\n return state;\n default:\n return state;\n }\n};\n\nexport default layouts;\n","import { distinctObjects } from \"../adukku_utils/array\";\nimport { combineReducers } from \"redux\";\nimport {\n SHOW_OVERLAY,\n HIDE_OVERLAY,\n TOGGLE_OVERLAY,\n SELECTED_DATALEVEL,\n SELECTED_DATALEVEL_ATTRIBUTE,\n SELECTED_ORDER,\n EXPAND_SECTION,\n HIDE_SECTION,\n SET_USER_ROLE\n} from \"../actions/misc_actions\";\n\nconst X = (state = {}, action) => {\n let newState = {};\n switch (action.type) {\n case SHOW_OVERLAY:\n newState[action.id] = { visible: true };\n return { ...state, ...newState };\n case HIDE_OVERLAY:\n newState[action.id] = { visible: false };\n return { ...state, ...newState };\n case EXPAND_SECTION:\n newState[action.id] = { expand: true };\n return { ...state, ...newState };\n case HIDE_SECTION:\n newState[action.id] = { expand: false };\n return { ...state, ...newState };\n case TOGGLE_OVERLAY:\n newState[action.id] = { visible: !state[action.id] };\n return { ...state, ...newState };\n case SELECTED_DATALEVEL:\n newState[action.id] = Object.assign({}, state[action.id] || {}, {\n selectedDatalevel: action.payload\n });\n return { ...state, ...newState };\n case SELECTED_DATALEVEL_ATTRIBUTE:\n newState[action.id] = Object.assign({}, state[action.id] || {}, {\n selectedDatalevelAttribute: action.payload\n });\n return { ...state, ...newState };\n case SELECTED_ORDER:\n newState[action.id] = Object.assign({}, state[action.id] || {}, {\n selectedOrder: parseInt(action.payload)\n });\n return { ...state, ...newState };\n default:\n return state;\n }\n};\nexport default X;\n","import { GET_PRODUCTS, TOGGLE_PRODUCT_EXPAND } from \"../actions\";\nimport { ADD_ALL_SETS } from \"../actions/product_sets\";\nimport {\n ADD_PRICE,\n GENERATE_IMAGE,\n ADD_VIEW_PRODUCTS,\n ADD_SHARE_PRODUCT,\n ADD_TO_CART,\n GET_ORDERS,\n} from \"../actions/orders\";\n\nconst initialState = {\n products: [],\n carts: [],\n orders: [],\n};\n\nconst reducer = (state = initialState, action) => {\n const newState = { ...state };\n let product = {};\n switch (action.type) {\n case GET_PRODUCTS:\n newState.products = action.payload;\n break;\n case ADD_VIEW_PRODUCTS:\n newState.products = action.payload;\n break;\n case TOGGLE_PRODUCT_EXPAND:\n newState.products = state.products.map((product) =>\n product.id === action.id ? { ...product, expand: !(product.expand || false) } : product\n );\n break;\n case ADD_ALL_SETS:\n product = newState.products.filter((product) => product.id == action.id)[0];\n product.product_sets = action.payload;\n newState;\n break;\n case ADD_PRICE:\n product = newState.products.filter((product) => product.id == action.product_id)[0];\n if (action.setno === \"\") {\n product.pricing = action.payload;\n }\n if (action.setno > 0) {\n let product_set = product.product_sets.filter((ps) => ps.setno === action.setno)[0];\n product_set.pricing = action.payload;\n }\n newState;\n break;\n case GENERATE_IMAGE:\n // newState.product_set_pricing = action.payload;\n break;\n case ADD_SHARE_PRODUCT:\n break;\n case ADD_TO_CART:\n const { carts } = newState;\n const newProductCart = action.payload;\n\n let current_product_cart = carts.find(\n (cart) =>\n cart.product_id ==\n (newProductCart.product_id || (newProductCart.order && newProductCart.order.product_id))\n );\n if (current_product_cart) {\n newState.carts = carts.map((cart) => {\n if (cart.product_id == newProductCart.order.product_id) {\n return newProductCart.order;\n }\n return cart;\n });\n } else {\n newState.carts = [...carts, newProductCart.order];\n }\n break;\n case GET_ORDERS:\n newState.carts = action.payload;\n break;\n }\n return newState;\n};\n\nexport default reducer;\n","import { combineReducers } from \"redux\";\nimport { ADD_ALL_KEYS, ADD_KEY, DELETE_KEY } from \"../actions/product_keys\";\n\n// action -> { product_id, payload}\nconst X = (state = {}, action) => {\n let newState = {};\n switch (action.type) {\n case ADD_ALL_KEYS:\n let keys = action.payload.reduce((result, key) => {\n if (result[key.dlname] == null) {\n result[key.dlname] = [];\n }\n result[key.dlname].push(key);\n return result;\n }, {});\n newState[action.id] = keys;\n return Object.assign({}, state, newState);\n case ADD_KEY:\n return { ...state, ...newState };\n case DELETE_KEY:\n return { ...state, ...newState };\n default:\n return state;\n }\n};\nexport default X;\n","import { distinctObjects } from \"../adukku_utils/array\";\nimport product_keys from \"./product_key.reducers\";\nimport product_sets from \"./product_sets.reducers\";\nimport layouts from \"./layouts.reducers\";\nimport overlays from \"./misc_reducer\";\nimport { combineReducers } from \"redux\";\nimport {\n DELETE_PRODUCT_DATA_LEVEL,\n UPDATE_PRODUCT_DATA_LEVEL,\n CREATE_PRODUCT_DATA_LEVEL,\n DELETE_DATA_LEVEL_ATTRIBUTE,\n UPDATE_DATA_LEVEL_ATTRIBUTE,\n CREATE_DATA_LEVEL_ATTRIBUTE,\n DELETE_PRODUCT,\n UPDATE_PRODUCT,\n CREATE_PRODUCT,\n GET_PRODUCTS,\n GET_PRODUCT_DATA_LEVELS,\n TOGGLE_DATALEVEL_EXPAND,\n TOGGLE_PRODUCT_EXPAND,\n TOGGLE_EDIT_DATALEVEL,\n TOGGLE_EDIT_PRODUCT,\n CLEAR_PRODUCT_DATA_LEVELS,\n TOGGLE_EDIT_DATALEVEL_ATTRIBUTE,\n NEW_PRODUCT_DATA_LEVEL,\n NEW_DATA_LEVEL_ATTRIBUTE,\n ADD_CATEGORIES,\n ADD_PRODUCT_USER,\n ADD_VIEW_PRODUCT_USER,\n GET_UPLOADED_DATA,\n UPDATE_UPLOADED_DATA,\n} from \"../actions\";\nimport orders from \"./orders_reducer\";\n\nconst DatalevelHandle = (state = [], action) => {\n let newState = null;\n switch (action.type) {\n case NEW_PRODUCT_DATA_LEVEL: {\n return [...state, action.payload];\n }\n case CREATE_PRODUCT_DATA_LEVEL: {\n const payload = action.payload;\n let datalevels = state.filter((datalevel) => datalevel.isEdit !== true);\n newState = [...datalevels, payload.datalevel];\n return newState;\n }\n case TOGGLE_DATALEVEL_EXPAND: {\n return state.map((datalevel) =>\n datalevel.id === action.id ? { ...datalevel, collapse: !datalevel.collapse } : datalevel\n );\n }\n case CLEAR_PRODUCT_DATA_LEVELS: {\n return [];\n }\n case DELETE_PRODUCT_DATA_LEVEL: {\n return state.filter((datalevel) => datalevel.id !== action.id);\n }\n case DELETE_DATA_LEVEL_ATTRIBUTE: {\n newState = state.map((datalevel) => {\n let nDl = Object.assign({}, datalevel); // copies element\n let attrs = nDl.attributes.filter((attribute) => attribute.id !== action.id);\n return Object.assign({}, nDl, { attributes: attrs });\n });\n return newState;\n }\n case CREATE_DATA_LEVEL_ATTRIBUTE:\n {\n newState = state.map((datalevel) => {\n if (datalevel.id === action.dl_id) {\n let attributes = datalevel.attributes.filter((attribute) => attribute.isEdit !== true);\n if (action.payload.attribute != null) {\n attributes.push(action.payload.attribute);\n }\n return Object.assign({}, datalevel, { attributes: attributes });\n } else {\n return datalevel;\n }\n });\n }\n return newState;\n\n case NEW_DATA_LEVEL_ATTRIBUTE: {\n newState = state.map((datalevel) => {\n if (datalevel.id === action.dl_id) {\n let attributes = datalevel.attributes;\n attributes.push(action.payload);\n return Object.assign({}, datalevel, { attributes: attributes });\n } else {\n return datalevel;\n }\n });\n return newState;\n }\n\n case UPDATE_DATA_LEVEL_ATTRIBUTE: {\n newState = state.map((datalevel) => {\n let nDl = Object.assign({}, datalevel); // copies element\n let attrs = nDl.attributes.filter((attribute) => attribute.isEdit !== true);\n attrs.push(action.payload);\n return Object.assign({}, nDl, { attributes: attrs });\n });\n return newState;\n }\n case GET_PRODUCT_DATA_LEVELS: {\n newState = state.concat(action.payload || []);\n newState = newState.filter(\n (s, index, self) => index === self.findIndex((t) => t.id === s.id)\n );\n return newState;\n }\n default:\n return state;\n }\n};\n\nconst ProductHandle = (state = [], action) => {\n switch (action.type) {\n case TOGGLE_EDIT_PRODUCT:\n return state.map((product) =>\n product.id === action.id ? { ...product, isEdit: !(product.isEdit || false) } : product\n );\n case TOGGLE_PRODUCT_EXPAND:\n return state.map((product) =>\n product.id === action.id ? { ...product, collapse: !(product.collapse || false) } : product\n );\n case GET_PRODUCTS:\n return action.payload;\n case CREATE_PRODUCT:\n return [...state, action.payload];\n case DELETE_PRODUCT:\n let currentProduct1 = state.find((product) => product.id == action.id);\n //return state.filter(({ product }) => product.id !== action.id);\n return state.filter(({ product }) => currentProduct1.id !== action.id);\n case UPDATE_PRODUCT:\n return state;\n case ADD_PRODUCT_USER:\n let currentProduct = state.find((product) => product.id == action.id);\n if (action.payload && action.payload.is_edit_user_set)\n currentProduct.edit_user = action.payload.user;\n if (action.payload && action.payload.is_password_set)\n currentProduct.is_password_set = action.payload.is_password_set;\n\n return state.map((product) => (product.id === action.id ? { ...currentProduct } : product));\n case ADD_VIEW_PRODUCT_USER: {\n let currentProduct = state.find((product) => product.id == action.id);\n if (action.payload && action.payload.add_view_product_user) \n currentProduct.product_code = action.payload.product_code;\n if (action.payload && action.payload.add_view_product_user) \n currentProduct.password = action.payload.password;\n \n return state.map((product) => (product.id === action.id ? { ...currentProduct } : product)); \n }\n case GET_UPLOADED_DATA: {\n let currentProduct = state.find((product) => product.id == action.id);\n currentProduct.uploaded_data = action.payload;\n return state.map((product) => (product.id === action.id ? { ...currentProduct } : product));\n }\n case UPDATE_UPLOADED_DATA: {\n let currentProduct = state.find((product) => product.id == action.id);\n currentProduct.uploaded_data = action.payload;\n return state.map((product) => (product.id === action.id ? { ...currentProduct } : product));\n }\n\n default:\n return state;\n }\n};\n\nconst CategoryHandle = (state = { categories: [], sub_categories: [] }, action) => {\n switch (action.type) {\n case ADD_CATEGORIES:\n return action.payload;\n default:\n return state;\n }\n};\n\nconst AdukkuApp = combineReducers({\n products: ProductHandle,\n product_datalevels: DatalevelHandle,\n product_keys: product_keys,\n product_sets: product_sets,\n layouts: layouts,\n overlays: overlays,\n categories: CategoryHandle,\n orders: orders,\n});\nexport default AdukkuApp;\n","import { combineReducers } from \"redux\";\nimport {\n ADD_ALL_SETS,\n ADD_SET_KEYVALS,\n ADD_ALL_SUPPORTED_LAYOUTS\n} from \"../actions/product_sets\";\n\n// {\n// 1: { 1: { keyvals: [], dlvals: [], layouts: [] } }\n// }\nconst X = (state = {}, action) => {\n let newState = {};\n let product_id = null;\n let setno = null;\n let data = null;\n let product_set = null;\n let product_set_list = null;\n switch (action.type) {\n case ADD_ALL_SETS:\n let product_sets = action.payload.reduce((result, product_set) => {\n if (result[product_set.setno] == null) {\n result[product_set.setno] = {};\n }\n let dlvals = (product_set.dlvals || []).reduce((dlvalResult, dlval) => {\n if (dlvalResult[dlval.pageno] == null) {\n dlvalResult[dlval.pageno] = [];\n }\n dlvalResult[dlval.pageno].push(dlval);\n return dlvalResult;\n }, {});\n delete product_set.dlvals;\n product_set.dlvals = dlvals || {};\n\n let counts = (product_set.counts || []).reduce((countResult, count) => {\n if (count && countResult[count.dlname] == null) {\n countResult[count.dlname] = [];\n }\n if (count) {\n countResult[count.dlname].push(count);\n return countResult;\n }\n }, {});\n delete product_set.counts;\n product_set.counts = counts || {};\n result[product_set.setno] = product_set;\n return result;\n let layouts = (product_set.layouts || []).reduce(\n (layoutResult, layout) => {\n layoutResult[layout.pageno] = layout;\n return layoutResult;\n },\n {}\n );\n delete product_set.dlvals;\n delete product_set.layouts;\n product_set.layouts = layouts || {};\n product_set.dlvals = dlvals || {};\n result[product_set.setno] = product_set;\n return result;\n }, {});\n newState[action.id] = product_sets;\n return newState;\n case ADD_SET_KEYVALS:\n data = action.payload;\n setno = action.setno;\n product_id = action.id;\n product_set_list = Object.assign({}, state[product_id], {});\n product_set = product_set_list[setno];\n product_set.keyvals = product_set.keyvals.concat(data.keyvals).flat();\n data.dlvals = Object.values(product_set.dlvals)\n .concat(data.dlvals)\n .flat();\n let dlvals = data.dlvals.reduce((dlvalResult, dlval) => {\n if (dlvalResult[dlval.pageno] == null) {\n dlvalResult[dlval.pageno] = [];\n }\n dlvalResult[dlval.pageno].push(dlval);\n return dlvalResult;\n }, {});\n product_set.dlvals = dlvals;\n data.counts = Object.values(product_set.counts)\n .concat(data.counts)\n .flat();\n let counts = data.counts.reduce((countResult, count) => {\n if (countResult[count.dlname] == null) {\n countResult[count.dlname] = [];\n }\n countResult[count.dlname].push(count);\n return countResult;\n }, {});\n product_set.counts = counts;\n newState = {};\n newState[product_id] = product_set_list;\n return Object.assign({}, state, newState);\n case ADD_ALL_SUPPORTED_LAYOUTS:\n data = action.payload;\n setno = action.setno;\n newState[\n action.product_id + \"_set_\" + setno + \"_\" + action.pageno\n ] = data;\n return Object.assign({}, state, newState);\n default:\n return state;\n }\n};\nexport default X;\n","import { put, takeEvery, all, fork } from \"redux-saga/effects\";\nimport {\n createProductSaga,\n deleteProductSaga,\n cloneProductSaga,\n fetchProductsSaga,\n fetchDatalevelsSaga,\n toggleSaga,\n updateResourceSaga,\n createResourceSaga,\n fetchCategoriesSaga,\n updateProductSaga,\n productUserSaga,\n addViewProductUserSaga,\n getViewProductUserSaga,\n getUploadedDataSaga,\n updateUploadedDataSaga,\n} from \"./products.saga\";\nimport {\n fetchProductKeysSaga,\n createProductKeySaga,\n deleteProductKeySaga,\n} from \"./product_keys.saga\";\nimport {\n getProductSetsSaga,\n createProductSetSaga,\n deleteProductSetSaga,\n getProductSetsPlaceholdersSaga,\n updateProductSetKeySaga,\n createProductSetKeySaga,\n createProductSetDLValSaga,\n updateProductSetDLValSaga,\n createProductSetLayoutSaga,\n deleteProductSetLayoutSaga,\n getSupportedLayoutsSaga,\n createSetOcurrenceCountSaga,\n updateSetOcurrenceCountSaga,\n updateProductSetSaga,\n} from \"./product_sets.saga\";\nimport {\n getLayoutListSaga,\n createLayoutSaga,\n cloneLayoutSaga,\n deleteLayoutSaga,\n getLayoutDetailsSaga,\n createLyDlSaga,\n deleteLyDlSaga,\n createLyDlSlotForSaga,\n deleteLyDlSlotForSaga,\n createLyDLRelSaga,\n deleteLyDlRelSaga,\n createLyDLRelKeySaga,\n deleteLyDlRelKeySaga,\n updateLayoutSaga,\n} from \"./layouts.saga\";\nimport {\n fetchProductsSaga as ofetchProductsSaga,\n toggleSaga as otoggleSaga,\n getProductSetsSaga as ogetProductSetsSaga,\n fetchPriceSaga,\n generateImageSaga,\n fetchViewProductsSaga,\n shareProductSaga,\n addToCartSaga,\n getOrdersSaga,\n} from \"./orders.saga\";\nimport { updateSetOccurenceCount } from \"../actions/product_sets\";\nexport default function* rootSaga() {\n yield all([\n fork(fetchDatalevelsSaga),\n fork(fetchProductsSaga),\n fork(toggleSaga),\n fork(updateResourceSaga),\n fork(createResourceSaga),\n fork(fetchProductKeysSaga),\n fork(createProductKeySaga),\n fork(deleteProductKeySaga),\n fork(getProductSetsSaga),\n fork(createProductSetSaga),\n fork(deleteProductSetSaga),\n fork(updateProductSetSaga),\n fork(updateProductSetKeySaga),\n fork(createProductSetKeySaga),\n fork(updateProductSetDLValSaga),\n fork(createProductSetDLValSaga),\n fork(getProductSetsPlaceholdersSaga),\n fork(createProductSaga),\n fork(cloneProductSaga),\n fork(deleteProductSaga),\n fork(createProductSetLayoutSaga),\n fork(deleteProductSetLayoutSaga),\n fork(getSupportedLayoutsSaga),\n fork(getLayoutListSaga),\n fork(createLayoutSaga),\n fork(cloneLayoutSaga),\n fork(deleteLayoutSaga),\n fork(getLayoutDetailsSaga),\n fork(createLyDlSaga),\n fork(deleteLyDlSaga),\n fork(createLyDlSlotForSaga),\n fork(deleteLyDlSlotForSaga),\n fork(deleteLyDlRelSaga),\n fork(createLyDLRelSaga),\n fork(deleteLyDlRelKeySaga),\n fork(createLyDLRelKeySaga),\n fork(fetchCategoriesSaga),\n fork(updateProductSaga),\n fork(productUserSaga),\n fork(addViewProductUserSaga),\n fork(getViewProductUserSaga),\n fork(getUploadedDataSaga),\n fork(updateUploadedDataSaga),\n fork(createSetOcurrenceCountSaga),\n fork(updateSetOcurrenceCountSaga),\n fork(updateLayoutSaga),\n // fork(ofetchProductsSaga),\n // fork(otoggleSaga),\n fork(ogetProductSetsSaga),\n fork(fetchPriceSaga),\n fork(generateImageSaga),\n fork(fetchViewProductsSaga),\n fork(shareProductSaga),\n fork(addToCartSaga),\n fork(getOrdersSaga),\n ]);\n}\n","import { hideOverlay } from \"../actions/misc_actions\";\nimport { takeEvery } from \"redux-saga/effects\";\nimport { ENDPOINTS } from \"../constants/endpoints\";\nimport { put, call } from \"redux-saga/effects\";\nimport {\n getLayouts as getActionLayouts,\n getLayoutDetails,\n} from \"../actions/layouts\";\nimport {\n ADD_ALL_LAYOUTS,\n CREATE_PRODUCT_LAYOUT,\n DELETE_PRODUCT_LAYOUT,\n UPDATE_PRODUCT_LAYOUT,\n GET_PRODUCT_LAYOUTS,\n GET_LAYOUT_DETAILS,\n ADD_LAYOUT,\n CREATE_LY_DATALEVEL,\n DELETE_LY_DATALEVEL,\n CREATE_LY_DATALEVEL_REL,\n DELETE_LY_DATALEVEL_REL,\n CREATE_LY_DATALEVEL_REL_KEY,\n DELETE_LY_DATALEVEL_REL_KEY,\n CREATE_LY_SLOTFOR,\n DELETE_LY_SLOTFOR,\n CLONE_PRODUCT_LAYOUT,\n} from \"../actions/layouts\";\n\nfunction* getLayouts(action) {\n const apiCall = (action) => {\n let url =\n ENDPOINTS.layouts.list.uri +\n \"?product_id=\" +\n encodeURIComponent(action.id);\n return fetch(url, action.payload)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put(\n Object.assign({}, action, {\n type: ADD_ALL_LAYOUTS,\n payload: data.layouts,\n })\n );\n } catch (error) {\n throw error;\n }\n}\n\nfunction* getLayout(action) {\n const apiCall = (action) => {\n let url = ENDPOINTS.layouts.show.uri;\n url = url.replace(\":id\", action.id);\n return fetch(url, action.payload)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put(\n Object.assign({}, action, { type: ADD_LAYOUT, payload: data.layout })\n );\n } catch (error) {\n throw error;\n }\n}\n\nfunction* createLayout(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":layout_id\", payload.layout_id);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n let overlay_id = payload.product_id + \"/layouts\";\n if (errors == null || errors.length == 0) {\n yield put(getActionLayouts(payload.product_id));\n yield put(hideOverlay(overlay_id));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* updateLayout(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":id\", action.id);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n let overlay_id = payload.product_id + \"/layouts\";\n if (errors == null || errors.length == 0) {\n yield put(getActionLayouts(payload.product_id));\n yield put(hideOverlay(overlay_id));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* cloneLayout(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":id\", payload.id);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n let overlay_id = payload.product_id + \"/layouts\";\n if (errors == null || errors.length == 0) {\n yield put(getActionLayouts(payload.product_id));\n yield put(hideOverlay(overlay_id));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* deleteLayout(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = ENDPOINTS.layouts.show.uri;\n url = url.replace(\":id\", action.id);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n let overlay_id = payload.product_id + \"/layouts\";\n if (errors == null || errors.length == 0) {\n yield put(getActionLayouts(payload.product_id));\n yield put(hideOverlay(overlay_id));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* deleteLyDl(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":layout_id\", payload.layout_id);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(getActionLayouts(payload.product_id));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* createLyDL(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":layout_id\", payload.layout_id);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(getLayoutDetails(payload.layout_id));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* deleteLyDL(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":layout_id\", payload.layout_id);\n url = url.replace(\":dlname\", payload.dlname);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(getLayoutDetails(payload.layout_id));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* deleteLyDLRel(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":layout_id\", payload.layout_id);\n url = url.replace(\":pdlname\", payload.pdlname);\n url = url.replace(\":cdlname\", payload.cdlname);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(getLayoutDetails(payload.layout_id));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* createLyDLRel(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":layout_id\", payload.layout_id);\n url = url.replace(\":pdlname\", payload.pdlname);\n url = url.replace(\":cdlname\", payload.cdlname);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(getActionLayouts(payload.product_id));\n yield put(getLayoutDetails(payload.layout_id));\n } else {\n setTimeout(function () {\n let err = errors.join(\"\\n\");\n err = err.replace(\"Relstyle\", \"Datalevel\")\n alert(err);\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* createLyDLSlotFor(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":layout_id\", payload.layout_id);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(getLayoutDetails(payload.layout_id));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* deleteLyDLSlotFor(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":layout_id\", payload.layout_id);\n url = url.replace(\":dlname\", payload.dlname);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(getLayoutDetails(payload.layout_id));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nexport function* createLayoutSaga() {\n yield takeEvery(CREATE_PRODUCT_LAYOUT, createLayout);\n}\n\nexport function* updateLayoutSaga() {\n yield takeEvery(UPDATE_PRODUCT_LAYOUT, updateLayout);\n}\n\nexport function* cloneLayoutSaga() {\n yield takeEvery(CLONE_PRODUCT_LAYOUT, cloneLayout);\n}\n\nexport function* deleteLayoutSaga() {\n yield takeEvery(DELETE_PRODUCT_LAYOUT, deleteLayout);\n}\n\nexport function* getLayoutListSaga() {\n yield takeEvery(GET_PRODUCT_LAYOUTS, getLayouts);\n}\n\nexport function* getLayoutDetailsSaga() {\n yield takeEvery(GET_LAYOUT_DETAILS, getLayout);\n}\n\nexport function* createLyDlSaga() {\n yield takeEvery(CREATE_LY_DATALEVEL, createLyDL);\n}\n\nexport function* deleteLyDlSaga() {\n yield takeEvery(DELETE_LY_DATALEVEL, deleteLyDL);\n}\n\nexport function* createLyDlSlotForSaga() {\n yield takeEvery(CREATE_LY_SLOTFOR, createLyDLSlotFor);\n}\n\nexport function* deleteLyDlSlotForSaga() {\n yield takeEvery(DELETE_LY_SLOTFOR, deleteLyDLSlotFor);\n}\n\nexport function* createLyDLRelSaga() {\n yield takeEvery(CREATE_LY_DATALEVEL_REL, createLyDLRel);\n}\n\nexport function* deleteLyDlRelSaga() {\n yield takeEvery(DELETE_LY_DATALEVEL_REL, deleteLyDLRel);\n}\n\nexport function* createLyDLRelKeySaga() {\n yield takeEvery(CREATE_LY_DATALEVEL_REL_KEY, createLyDLRel);\n}\n\nexport function* deleteLyDlRelKeySaga() {\n yield takeEvery(DELETE_LY_DATALEVEL_REL_KEY, deleteLyDLRel);\n}\n","import { GET_PRODUCTS, PRODUCTS, TOGGLE } from \"../actions\";\nimport {\n GET_PRICE,\n ADD_PRICE,\n GENERATE_IMAGE_SAGA,\n GENERATE_IMAGE,\n GET_VIEW_PRODUCTS,\n ADD_VIEW_PRODUCTS,\n SHARE_PRODUCT,\n ADD_SHARE_PRODUCT,\n ADD_TO_CART,\n ADD_TO_CART_SAGA,\n GET_ORDERS,\n GET_ORDERS_SAGA,\n} from \"../actions/orders\";\nimport { GET_PRODUCT_SETS } from \"../actions/product_sets\";\nimport { takeEvery } from \"redux-saga/effects\";\nimport { ENDPOINTS } from \"../constants/endpoints\";\nimport { put, call } from \"redux-saga/effects\";\n\nfunction* fetchProducts(action) {\n const apiCall = () => {\n return fetch(ENDPOINTS.products.list.uri + \"?type=orders\")\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n const apiCallViewProducts = () => {\n return fetch(ENDPOINTS.products.view.uri)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const user_products = yield call(apiCall);\n const view_products = yield call(apiCallViewProducts);\n const products = view_products.products.concat(user_products.products);\n let p = {};\n\n products.map((pr) => {\n p[pr.id] = pr;\n });\n\n yield put({ type: GET_PRODUCTS, payload: Object.values(p) });\n } catch (error) {\n throw error;\n }\n}\n\nfunction* fetchViewProducts(action) {\n const apiCall = () => {\n return fetch(ENDPOINTS.products.view.uri)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall);\n yield put({ type: ADD_VIEW_PRODUCTS, payload: data.products });\n } catch (error) {\n throw error;\n }\n}\n\nfunction* toggle(action) {\n yield put({ type: action.payload.reducerKey, id: action.payload.id });\n}\n\nfunction* getSets(action) {\n const apiCall = (action) => {\n let url = ENDPOINTS.sets.list.uri;\n url = url.replace(\":product_id\", action.id);\n return fetch(url)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put(\n Object.assign({}, action, {\n type: action.reducerKey,\n payload: data.product_sets,\n })\n );\n } catch (error) {\n throw error;\n }\n}\n\nfunction* fetchPrice(action) {\n const apiCall = (action) => {\n let url = ENDPOINTS.sets.price.uri;\n url = url.replace(\":product_id\", action.product_id);\n if (action.setno !== \"\") url = url + \"?setno=\" + action.setno;\n return fetch(url)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put(\n Object.assign({}, action, {\n type: ADD_PRICE,\n payload: data.pricing,\n })\n );\n } catch (error) {\n throw error;\n }\n}\n\nfunction* generateImage(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = ENDPOINTS.images.generate.uri;\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: ENDPOINTS.images.generate.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put({ type: GENERATE_IMAGE, payload: data });\n } catch (error) {\n throw error;\n }\n}\n\nfunction* shareProduct(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = ENDPOINTS.products.share.uri;\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: ENDPOINTS.products.share.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put({ type: ADD_SHARE_PRODUCT, payload: data });\n } catch (error) {\n throw error;\n }\n}\n\nfunction* addToCart(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = ENDPOINTS.orders.add_to_cart.uri;\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: ENDPOINTS.orders.add_to_cart.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put({ type: ADD_TO_CART, payload: data });\n } catch (error) {\n throw error;\n }\n}\n\nfunction* getOrders(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n return fetch(ENDPOINTS.orders.list.uri + \"?status=\" + payload.status)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put({ type: GET_ORDERS, payload: data.orders });\n } catch (error) {\n throw error;\n }\n}\n\nexport function* fetchProductsSaga() {\n yield takeEvery(PRODUCTS, fetchProducts);\n}\n\nexport function* fetchViewProductsSaga() {\n yield takeEvery(GET_VIEW_PRODUCTS, fetchViewProducts);\n}\n\nexport function* toggleSaga() {\n yield takeEvery(TOGGLE, toggle);\n}\n\nexport function* getProductSetsSaga() {\n yield takeEvery(GET_PRODUCT_SETS, getSets);\n}\n\nexport function* fetchPriceSaga() {\n yield takeEvery(GET_PRICE, fetchPrice);\n}\n\nexport function* shareProductSaga() {\n yield takeEvery(SHARE_PRODUCT, shareProduct);\n}\n\nexport function* generateImageSaga() {\n yield takeEvery(GENERATE_IMAGE_SAGA, generateImage);\n}\n\nexport function* addToCartSaga() {\n yield takeEvery(ADD_TO_CART_SAGA, addToCart);\n}\n\nexport function* getOrdersSaga() {\n yield takeEvery(GET_ORDERS_SAGA, getOrders);\n}\n","import { all, fork } from \"redux-saga/effects\";\nimport {\n fetchProductsSaga,\n toggleSaga,\n getProductSetsSaga,\n fetchPriceSaga,\n generateImageSaga,\n fetchViewProductsSaga,\n shareProductSaga,\n addToCartSaga,\n getOrdersSaga\n} from \"./orders.saga\";\nimport { addToCart } from \"../actions/orders\";\n\nexport default function* rootSaga() {\n // getProductSetsSaga;\n yield all([\n fork(fetchProductsSaga),\n fork(toggleSaga),\n fork(getProductSetsSaga),\n fork(fetchPriceSaga),\n fork(generateImageSaga),\n fork(fetchViewProductsSaga),\n fork(shareProductSaga),\n fork(addToCartSaga),\n fork(getOrdersSaga)\n ]);\n}\n","import {\n GET_PRODUCT_KEYS\n ,CREATE_PRODUCT_KEY\n ,DELETE_PRODUCT_KEY\n ,DELETE_KEY\n ,ADD_KEY\n ,ADD_ALL_KEYS\n} from \"../actions/product_keys\";\nimport {takeEvery} from 'redux-saga/effects';\nimport {ENDPOINTS} from \"../constants/endpoints\";\nimport {put, call} from 'redux-saga/effects';\nimport { hideOverlay } from \"../actions/misc_actions\";\n\nfunction* fetchKeys(action) {\n const apiCall = (action) => {\n let url = ENDPOINTS.keys.list.uri;\n url = url.replace(\":product_id\", action.id);\n return fetch(url)\n .then(response => {\n return response.json()\n })\n .catch(error => {\n throw error;\n })\n };\n try {\n const data = yield call(apiCall, action);\n yield put(Object.assign({}, action, {type: action.reducerKey, payload: data.keys}));\n }\n catch (error) {\n throw error;\n }\n}\n\nfunction* createKey(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":dlname\", payload.dlname);\n let ajaxCall = fetch(url, \n { \n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n method: action.method,\n body: JSON.stringify(payload)\n }\n );\n return ajaxCall.then(response => {\n return response.json()\n })\n .catch(error => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if(errors == null || errors.length == 0)\n {\n yield* fetchKeys({ type: GET_PRODUCT_KEYS, id: payload.product_id, reducerKey: ADD_ALL_KEYS })\n yield put(hideOverlay(payload.product_id+\"/keys\"));\n }\n else\n {\n alert(errors.join(\"\\n\"));\n }\n }\n catch (error) {\n throw error;\n }\n}\n\nfunction* deleteKey(action) {\n const apiCall = (action) => {\n let payload = action.payload\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":dlname\", payload.dlname);\n let ajaxCall = fetch(url, \n { \n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n method: action.method,\n body: JSON.stringify(payload)\n }\n );\n return ajaxCall.then(response => {\n return response.json()\n })\n .catch(error => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if(errors == null || errors.length == 0)\n {\n yield* fetchKeys({ type: GET_PRODUCT_KEYS, id: payload.product_id, reducerKey: ADD_ALL_KEYS })\n }\n else\n {\n alert(errors.join(\"\\n\"));\n }\n }\n catch (error) {\n throw error;\n }\n}\n\n\nexport function* createProductKeySaga() {\n yield takeEvery(CREATE_PRODUCT_KEY, createKey);\n}\n\nexport function* deleteProductKeySaga() {\n yield takeEvery(DELETE_PRODUCT_KEY, deleteKey);\n}\n\nexport function* fetchProductKeysSaga() {\n yield takeEvery(GET_PRODUCT_KEYS, fetchKeys);\n}","import {\n GET_PRODUCT_SETS,\n CREATE_PRODUCT_SET,\n DELETE_PRODUCT_SET,\n DELETE_SET,\n ADD_SET,\n ADD_ALL_SETS,\n CREATE_PRODUCT_SET_KEY,\n UPDATE_PRODUCT_SET_KEY,\n CREATE_PRODUCT_SET_DLVAL,\n UPDATE_PRODUCT_SET_DLVAL,\n GET_PRODUCT_SET_PLACEHOLDERS,\n CREATE_PRODUCT_SET_LAYOUT,\n DELETE_PRODUCT_SET_LAYOUT,\n ADD_ALL_SUPPORTED_LAYOUTS,\n GET_SUPPORTED_PRODUCT_LAYOUTS,\n ADD_SET_OCCURENCE_COUNT,\n UPDATE_SET_OCCURENCE_COUNT,\n UPDATE_PRODUCT_SET,\n} from \"../actions/product_sets\";\nimport { hideOverlay } from \"../actions/misc_actions\";\nimport { getSetPlaceholders as getActionSetPlaceHolders } from \"../actions/product_sets\";\nimport { takeEvery } from \"redux-saga/effects\";\nimport { ENDPOINTS } from \"../constants/endpoints\";\nimport { put, call } from \"redux-saga/effects\";\n\nfunction* getSetPlaceholders(action) {\n const apiCall = (action) => {\n let url = ENDPOINTS.sets.placeholders.uri;\n url = url.replace(\":product_id\", action.id);\n url = url.replace(\":setno\", action.setno);\n return fetch(url)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put(\n Object.assign({}, action, {\n type: action.reducerKey,\n id: action.id,\n setno: action.setno,\n payload: data,\n })\n );\n } catch (error) {\n throw error;\n }\n}\n\nfunction* getSupportedLayouts(action) {\n const apiCall = (action) => {\n let uri = ENDPOINTS.sets.layout_supported.uri;\n let payload = action.payload;\n uri = uri.replace(\":product_id\", payload.product_id);\n uri = uri.replace(\":setno\", payload.setno);\n uri = uri.replace(\":pageno\", payload.pageno);\n return fetch(uri, action.payload)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n yield put(\n Object.assign({}, action, {\n type: ADD_ALL_SUPPORTED_LAYOUTS,\n payload: data.layouts,\n setno: payload.setno,\n pageno: payload.pageno,\n product_id: payload.product_id,\n })\n );\n } catch (error) {\n throw error;\n }\n}\n\nfunction* getSets(action) {\n const apiCall = (action) => {\n let url = ENDPOINTS.sets.list.uri;\n url = url.replace(\":product_id\", action.id);\n return fetch(url)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put(\n Object.assign({}, action, {\n type: action.reducerKey,\n payload: data.product_sets,\n })\n );\n } catch (error) {\n throw error;\n }\n}\n\nfunction* createSet(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":setno\", payload.setno);\n url = url.replace(\":keyname\", payload.keyname);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(hideOverlay(payload.product_id + \"_sets\"));\n yield* getSets({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n // yield put(getActionSetPlaceHolders(payload.product_id, payload.setno));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* deleteSet(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":setno\", payload.setno);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(hideOverlay(payload.product_id + \"_sets\"));\n yield* getSets({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n // yield put(getActionSetPlaceHolders(payload.product_id, payload.setno));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* updateSet(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":setno\", action.id);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(hideOverlay(payload.product_id + \"_sets\"));\n yield* getSets({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n // yield put(getActionSetPlaceHolders(payload.product_id, payload.setno));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* createSetKey(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":setno\", payload.setno);\n url = url.replace(\":keyname\", payload.keyname);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(hideOverlay(payload.product_id + \"/sets/\" + payload.setno + \"/\" + payload.keyname));\n yield* getSets({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n yield put(getActionSetPlaceHolders(payload.product_id, payload.setno));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* createSetLayout(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":setno\", payload.setno);\n url = url.replace(\":pageno\", payload.pageno);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(\n hideOverlay(payload.product_id + \"_layout_\" + payload.setno + \"_\" + payload.keyname)\n );\n yield* getSets({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n yield put(getActionSetPlaceHolders(payload.product_id, payload.setno));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* deleteSetLayout(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":setno\", payload.setno);\n url = url.replace(\":pageno\", payload.pageno);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(\n hideOverlay(payload.product_id + \"_layout_\" + payload.setno + \"_\" + payload.keyname)\n );\n yield* getSets({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n yield put(getActionSetPlaceHolders(payload.product_id, payload.setno));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* updateSetKey(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":setno\", payload.setno);\n url = url.replace(\":keyname\", payload.keyname);\n url = url.replace(\":dlname\", payload.dlname);\n url = url.replace(\":pageno\", payload.pageno);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(hideOverlay(payload.product_id + \"/sets/\" + payload.setno + \"/\" + payload.keyname));\n yield* getSets({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n yield put(getActionSetPlaceHolders(payload.product_id, payload.setno));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* createSetDLVal(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":setno\", payload.setno);\n url = url.replace(\":pageno\", payload.pageno);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(hideOverlay(data.dlval.id));\n yield* getSets({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n yield put(getActionSetPlaceHolders(payload.product_id, payload.setno));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* updateSetDLVal(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":setno\", payload.setno);\n url = url.replace(\":pageno\", payload.pageno);\n url = url.replace(\":dlname\", payload.dlname);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(hideOverlay(data.dlval.id));\n yield* getSets({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n yield put(getActionSetPlaceHolders(payload.product_id, payload.setno));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* deleteSetUnused(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":dlname\", payload.dlname);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield* fetchKeys({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n } else {\n alert(errors.join(\"\\n\"));\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* createProductSetLayout(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":setno\", payload.setno);\n url = url.replace(\":keyname\", payload.keyname);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n let overlay_id =\n \"product_\" + action.product_id + \"_\" + \"layout_\" + payload.setno + \"_\" + payload.pageno;\n if (errors == null || errors.length == 0) {\n yield put(hideOverlay(overlay_id));\n yield* getSets({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n yield put(getActionSetPlaceHolders(payload.product_id, payload.setno));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* createSetOccurenceCount(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":setno\", payload.setno);\n // url = url.replace(\":dlname\", payload.dlname);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(\n hideOverlay(payload.product_id + \"/sets/\" + payload.setno + \"/counts/\" + payload.dlname)\n );\n yield* getSets({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n yield put(getActionSetPlaceHolders(payload.product_id, payload.setno));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\nfunction* updateSetOccurenceCount(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":product_id\", payload.product_id);\n url = url.replace(\":setno\", payload.setno);\n url = url.replace(\":dlname\", payload.dlname);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n let payload = action.payload;\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put(\n hideOverlay(payload.product_id + \"/sets/\" + payload.setno + \"/counts/\" + payload.dlname)\n );\n yield* getSets({\n type: GET_PRODUCT_SETS,\n id: payload.product_id,\n reducerKey: ADD_ALL_SETS,\n });\n yield put(getActionSetPlaceHolders(payload.product_id, payload.setno));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nexport function* createProductSetSaga() {\n yield takeEvery(CREATE_PRODUCT_SET, createSet);\n}\n\nexport function* createProductSetKeySaga() {\n yield takeEvery(CREATE_PRODUCT_SET_KEY, createSetKey);\n}\n\nexport function* createProductSetLayoutSaga() {\n yield takeEvery(CREATE_PRODUCT_SET_LAYOUT, createSetLayout);\n}\n\nexport function* deleteProductSetLayoutSaga() {\n yield takeEvery(DELETE_PRODUCT_SET_LAYOUT, deleteSetLayout);\n}\n\nexport function* updateProductSetKeySaga() {\n yield takeEvery(UPDATE_PRODUCT_SET_KEY, updateSetKey);\n}\n\nexport function* createProductSetDLValSaga() {\n yield takeEvery(CREATE_PRODUCT_SET_DLVAL, createSetKey);\n}\n\nexport function* updateProductSetDLValSaga() {\n yield takeEvery(UPDATE_PRODUCT_SET_DLVAL, updateSetKey);\n}\n\nexport function* deleteProductSetSaga() {\n yield takeEvery(DELETE_PRODUCT_SET, deleteSet);\n}\n\nexport function* updateProductSetSaga() {\n yield takeEvery(UPDATE_PRODUCT_SET, updateSet);\n}\n\nexport function* getProductSetsSaga() {\n yield takeEvery(GET_PRODUCT_SETS, getSets);\n}\n\nexport function* getProductSetsPlaceholdersSaga() {\n yield takeEvery(GET_PRODUCT_SET_PLACEHOLDERS, getSetPlaceholders);\n}\n\nexport function* getSupportedLayoutsSaga() {\n yield takeEvery(GET_SUPPORTED_PRODUCT_LAYOUTS, getSupportedLayouts);\n}\n\nexport function* createSetOcurrenceCountSaga() {\n yield takeEvery(ADD_SET_OCCURENCE_COUNT, createSetOccurenceCount);\n}\nexport function* updateSetOcurrenceCountSaga() {\n yield takeEvery(UPDATE_SET_OCCURENCE_COUNT, updateSetOccurenceCount);\n}\n","import {\n GET_PRODUCTS,\n PRODUCTS,\n GET_PRODUCT_DATA_LEVELS,\n PRODUCT_DATA_LEVELS,\n TOGGLE,\n UPDATE_OR_DELETE_RESOURCE,\n CREATE_RESOURCE,\n CREATE_PRODUCT,\n CLEAR_PRODUCT_DATA_LEVELS,\n GET_CATEGORIES,\n ADD_CATEGORIES,\n UPDATE_PRODUCT,\n UPDATE_PRODUCT_SAGA,\n DELETE_PRODUCT,\n DELETE_PRODUCT_SAGA,\n ADD_PRODUCT_USER,\n PRODUCT_USER,\n ADD_VIEW_PRODUCT_USER,\n GET_VIEW_PRODUCT_USER,\n GET_UPLOADED_DATA,\n GET_UPLOADED_DATA_SAGA,\n UPDATE_UPLOADED_DATA,\n UPDATE_UPLOADED_DATA_SAGA,\n CLONE_PRODUCT,\n DELETE_PRODUCT_DATA_LEVEL,\n TOGGLE_PRODUCT_EXPAND,\n} from \"../actions\";\nimport { getSets } from \"../actions/product_sets\";\nimport { getKeys } from \"../actions/product_keys\";\nimport { hideOverlay } from \"../actions/misc_actions\";\nimport { getProducts, getProductDatalevels } from \"../actions\";\nimport { takeEvery } from \"redux-saga/effects\";\nimport { ENDPOINTS } from \"../constants/endpoints\";\nimport { put, call } from \"redux-saga/effects\";\n\n// todo common logic for fetching end points\nfunction* fetchDatalevels(action) {\n const apiCall = (action) => {\n let url = ENDPOINTS.datalevels.list.uri;\n url = url.replace(\":id\", action.product_id);\n return fetch(url)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put({ type: GET_PRODUCT_DATA_LEVELS, payload: data.datalevels });\n } catch (error) {\n throw error;\n }\n}\n\nfunction* fetchProducts(action) {\n const apiCall = () => {\n return fetch(ENDPOINTS.products.list.uri + \"?type=\" + action.products_type)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall);\n yield put({ type: GET_PRODUCTS, payload: data.products });\n } catch (error) {\n throw error;\n }\n}\n\nfunction* updateResource(action) {\n const apiCall = (action) => {\n const endpoint = ENDPOINTS[action.resource][action.method];\n const url = action.id == null ? endpoint.uri : endpoint.uri + action.id;\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: endpoint.method,\n body: JSON.stringify(action.payload || {}),\n });\n return ajaxCall\n .then((response) => {\n if (response.status===400) {\n alert(\"Action not performed. Entity in use\")\n window.location.reload()\n }\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n let data = null;\n let product_id = null;\n try {\n data = yield call(apiCall, action);\n data.attribute = data.attribute || {};\n data.datalevel = data.datalevel || {};\n data.datalevel.attribute = data.datalevel.attribute || {};\n if (data.errors == null || data.errors.length == 0) {\n yield put({ type: DELETE_PRODUCT_DATA_LEVEL, id: action.id });\n yield put({ type: action.payload.reducerKey, id: action.id });\n product_id =\n data.product_id || data.attribute.product_id || data.datalevel.attribute.product_id;\n } else {\n alert(data.errors.join(\"\\n\"));\n }\n } catch (error) {\n console.error(error);\n }\n try {\n if (product_id) {\n yield push(getProductDatalevels(product_id));\n yield put(getKeys(product_id));\n yield put(getSets(product_id));\n }\n } catch (error) {\n console.error(error);\n // alert(\"Error -> \" + error.message);\n }\n}\n\nfunction* createResource(action) {\n const apiCall = (action) => {\n const endpoint = ENDPOINTS[action.resource][\"create\"];\n const url = endpoint.uri + action.id;\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: endpoint.method,\n body: JSON.stringify(action.payload || {}),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n let data = null;\n let product_id = null;\n try {\n data = yield call(apiCall, action);\n data.attribute = data.attribute || {};\n data.datalevel = data.datalevel || {};\n data.datalevel.attribute = data.datalevel.attribute || {};\n if (data.errors == null || data.errors.length == 0) {\n product_id =\n data.product_id || data.attribute.product_id || data.datalevel.attribute.product_id;\n yield put(\n Object.assign({}, action, {\n type: action.payload.reducerKey,\n payload: data,\n })\n );\n } else {\n alert(data.errors.join(\"\\n\"));\n }\n } catch (error) {\n console.error(error);\n console.error(error);\n // alert(\"Error -> \"+error.message);\n }\n try {\n if (product_id) {\n yield put(getKeys(product_id));\n yield put(getSets(product_id));\n yield push(getProductDatalevels(product_id));\n }\n } catch (error) {\n console.error(error);\n // alert(\"Error -> \" + error.message);\n }\n}\n\nfunction* createProduct(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield* fetchProducts({});\n yield put(hideOverlay(\"addProduct\"));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n yield* fetchProducts({});\n yield put(hideOverlay(\"addProduct\"));\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* cloneProduct(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n alert(\"Product copied successfully to 'My Products' under 'Dashboard'\");\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield* fetchProducts({});\n yield put(hideOverlay(\"addProduct\"));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n // const data = yield call(apiCall, action);\n // const errors = data.errors;\n // if (\n // (errors == null || errors.length == 0) &&\n // payload.cloneType != \"preset\"\n // ) {\n // yield* fetchProducts({});\n // yield put(hideOverlay(\"addProduct\"));\n // } else {\n // setTimeout(function () {\n // alert(errors.join(\"\\n\"));\n // }, 100);\n // }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* deleteProduct(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n url = url.replace(\":id\", action.payload.id);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n yield put({ type: DELETE_PRODUCT, id: action.id });\n yield* fetchProducts({});\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* fetchCategories(action) {\n const apiCall = () => {\n return fetch(ENDPOINTS.categories.index.uri)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall);\n yield put({\n type: ADD_CATEGORIES,\n payload: { categories: data.categories, sub_categories: data.sub_categories },\n });\n } catch (error) {\n throw error;\n }\n}\n\nfunction* updateProduct(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = action.url;\n let ajaxCall = fetch(url + action.id, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: action.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n const errors = data.errors;\n if (errors == null || errors.length == 0) {\n if (data.product.product_state !== \"batch_process\") {\n yield put({ type: UPDATE_PRODUCT, payload: data, id: action.id });\n yield* fetchProducts({});\n yield put({ type: TOGGLE_PRODUCT_EXPAND, id: action.id });\n } else {\n yield put({ type: DELETE_PRODUCT, id: action.id });\n yield* fetchProducts({});\n }\n // yield* fetchProducts(null);\n // yield put(hideOverlay(\"addProduct\"));\n } else {\n setTimeout(function () {\n alert(errors.join(\"\\n\"));\n }, 100);\n }\n } catch (error) {\n throw error;\n }\n}\n\nfunction* toggle(action) {\n yield put({ type: action.payload.reducerKey, id: action.payload.id });\n}\n\nfunction* productUser(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = ENDPOINTS.products.add_user.uri;\n url = url.replace(\":id\", action.payload.product_id);\n console.log(\"Payload = \" + payload);\n console.log(\"url = \" + url);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: ENDPOINTS.products.add_user.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put({\n type: ADD_PRODUCT_USER,\n payload: data,\n id: action.payload.product_id,\n });\n } catch (error) {\n throw error;\n }\n}\n\n// Bala start\n\nfunction* addViewProductUser(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = ENDPOINTS.products.add_view_product_user.uri;\n url = url.replace(\":id\", action.payload.product_id);\n console.log(\"Payload = \" + payload);\n console.log(\"url = \" + url);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: ENDPOINTS.products.add_view_product_user.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put({\n type: ADD_VIEW_PRODUCT_USER,\n payload: data,\n id: action.payload.product_id,\n });\n } catch (error) {\n throw error;\n }\n}\n\n\nfunction* getViewProductUser(action) {\n const apiCall = (action) => {\n let payload = action.payload;\n let url = ENDPOINTS.products.get_view_product_user.uri;\n url = url.replace(\":id\", action.payload.product_id);\n console.log(\"Payload = \" + payload);\n console.log(\"url = \" + url);\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: ENDPOINTS.products.get_view_product_user.method,\n body: JSON.stringify(payload),\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield put({\n type: GET_VIEW_PRODUCT_USER,\n payload: data,\n id: action.payload.product_id,\n });\n } catch (error) {\n throw error;\n }\n}\n\n\n// Bala end\n\nfunction* getUploadedData(action) { \n const apiCall = (action) => {\n let url = ENDPOINTS.csv.list.uri;\n url = url.replace(\":product_id\", action.product_id);\n url = url.replace(\":dlname\", action.dlname);\n url = url + `?page=${action.page || 0}&per_page=${action.per_page || 10}`;\n if (action.is_search) {\n let searchAtt = Object.keys(action.search_data || {});\n if (searchAtt.length > 0) {\n url = url + `&search=true`;\n for (let index = 0; index < searchAtt.length; index++) {\n let attribute = searchAtt[index];\n url = url + `&${attribute}=${action.search_data[attribute]}`;\n }\n }\n }\n let ajaxCall = fetch(url, {\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n method: ENDPOINTS.csv.list.method,\n });\n return ajaxCall\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n if (data.no_results) {\n alert(\"No Matching results\");\n }\n yield put({\n type: GET_UPLOADED_DATA,\n payload: data,\n id: action.product_id,\n });\n } catch (error) {\n throw error;\n }\n}\n\nfunction* updateUploadedData(action) { \n const apiCall = (action) => {\n let url = ENDPOINTS.csv.update.uri;\n url = url.replace(\":product_id\", action.product_id);\n url = url.replace(\":dlname\", action.dlname);\n url = url.replace(\":data_upload_id\", action.id);\n let ajaxCall = fetch(url, {\n method: ENDPOINTS.csv.update.method,\n body: action.data, // JSON.stringify(action.data || {})\n });\n return ajaxCall\n .then((response) => response.json())\n .then((response) => {\n if (response.errors) {\n alert(\"File size is in excess of 5MB\\n\\nPlease Upload file again with size less than 5MB\\n\\nReturning to Dashboard\");\n window.location.reload(false);\n } \n // return response.json();\n })\n .catch((error) => {\n throw error;\n });\n };\n try {\n const data = yield call(apiCall, action);\n yield* getUploadedData(action);\n // yield put({\n // type: GET_UPLOADED_DATA,\n // payload: data,\n // id: action.product_id,\n // });\n } catch (error) {\n throw error;\n }\n}\n\nexport function* fetchDatalevelsSaga() {\n yield takeEvery(PRODUCT_DATA_LEVELS, fetchDatalevels);\n}\nexport function* fetchProductsSaga() {\n yield takeEvery(PRODUCTS, fetchProducts);\n}\n\nexport function* toggleSaga() {\n yield takeEvery(TOGGLE, toggle);\n}\n\nexport function* updateResourceSaga() {\n yield takeEvery(UPDATE_OR_DELETE_RESOURCE, updateResource);\n}\n\nexport function* createResourceSaga() {\n yield takeEvery(CREATE_RESOURCE, createResource);\n}\n\nexport function* createProductSaga() {\n yield takeEvery(CREATE_PRODUCT, createProduct);\n}\n\nexport function* cloneProductSaga() {\n yield takeEvery(CLONE_PRODUCT, cloneProduct);\n}\n\nexport function* deleteProductSaga() {\n yield takeEvery(DELETE_PRODUCT_SAGA, deleteProduct);\n}\n\nexport function* fetchCategoriesSaga() {\n yield takeEvery(GET_CATEGORIES, fetchCategories);\n}\n\nexport function* updateProductSaga() {\n yield takeEvery(UPDATE_PRODUCT_SAGA, updateProduct);\n}\n\nexport function* productUserSaga() {\n yield takeEvery(PRODUCT_USER, productUser);\n}\n\nexport function* viewProductSaga() {\n yield takeEvery(VIEW_PRODUCT, productUser);\n}\n\nexport function* addViewProductUserSaga() {\n yield takeEvery(ADD_VIEW_PRODUCT_USER, addViewProductUser);\n}\n\nexport function* getViewProductUserSaga() {\n yield takeEvery(GET_VIEW_PRODUCT_USER, getViewProductUser);\n}\n\nexport function* getUploadedDataSaga() {\n yield takeEvery(GET_UPLOADED_DATA_SAGA, getUploadedData);\n}\n\nexport function* updateUploadedDataSaga() {\n yield takeEvery(UPDATE_UPLOADED_DATA_SAGA, updateUploadedData);\n}\n","module.exports = require(\"core-js/library/fn/array/from\");","module.exports = require(\"core-js/library/fn/array/is-array\");","module.exports = require(\"core-js/library/fn/object/assign\");","module.exports = require(\"core-js/library/fn/object/create\");","module.exports = require(\"core-js/library/fn/object/define-property\");","module.exports = require(\"core-js/library/fn/object/entries\");","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptor\");","module.exports = require(\"core-js/library/fn/object/keys\");","module.exports = require(\"core-js/library/fn/object/set-prototype-of\");","module.exports = require(\"core-js/library/fn/object/values\");","module.exports = require(\"core-js/library/fn/parse-int\");","module.exports = require(\"core-js/library/fn/symbol\");","module.exports = require(\"core-js/library/fn/symbol/iterator\");","module.exports = require(\"core-js/library/fn/weak-map\");","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;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export default 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}","import _Object$assign from \"@babel/runtime-corejs2/core-js/object/assign\";\nexport default function _extends() {\n _extends = _Object$assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import _Object$create from \"@babel/runtime-corejs2/core-js/object/create\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = _Object$create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import _Object$keys from \"@babel/runtime-corejs2/core-js/object/keys\";\nexport default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n\n var sourceKeys = _Object$keys(source);\n\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import _Object$setPrototypeOf from \"@babel/runtime-corejs2/core-js/object/set-prototype-of\";\nexport default function _setPrototypeOf(o, p) {\n _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","var _Object$assign = require(\"@babel/runtime-corejs2/core-js/object/assign\");\n\nfunction _extends() {\n module.exports = _extends = _Object$assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _Object$create = require(\"@babel/runtime-corejs2/core-js/object/create\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = _Object$create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime-corejs2/helpers/typeof\")[\"default\"];\n\nvar _WeakMap = require(\"@babel/runtime-corejs2/core-js/weak-map\");\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs2/core-js/object/define-property\");\n\nvar _Object$getOwnPropertyDescriptor = require(\"@babel/runtime-corejs2/core-js/object/get-own-property-descriptor\");\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof _WeakMap !== \"function\") return null;\n var cacheBabelInterop = new _WeakMap();\n var cacheNodeInterop = new _WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n _Object$defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _Object$keys = require(\"@babel/runtime-corejs2/core-js/object/keys\");\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n\n var sourceKeys = _Object$keys(source);\n\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _Object$setPrototypeOf = require(\"@babel/runtime-corejs2/core-js/object/set-prototype-of\");\n\nfunction _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _Symbol = require(\"@babel/runtime-corejs2/core-js/symbol\");\n\nvar _Symbol$iterator = require(\"@babel/runtime-corejs2/core-js/symbol/iterator\");\n\nfunction _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\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\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 module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export default 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}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","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\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default 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}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _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}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_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}","export default 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}","export default 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}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _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}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _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(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_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;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\n\nmodule.exports = _taggedTemplateLiteral;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\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 module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\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(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, stringify, COMMENT, rulesheet, middleware, prefixer, serialize, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar last = function last(arr) {\n return arr.length ? arr[arr.length - 1] : null;\n}; // based on https://github.com/thysultan/stylis.js/blob/e6843c373ebcbbfade25ebcc23f540ed8508da0a/src/Tokenizer.js#L239-L244\n\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\n\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // .length indicates if this rule contains pseudo or not\n !element.length) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\n\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return !!element && element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule') return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses && cache.compat !== true) {\n var prevElement = index > 0 ? children[index - 1] : null;\n\n if (prevElement && isIgnoringComment(last(prevElement.children))) {\n return;\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {}; // $FlowFixMe\n\n var container;\n var nodesToHydrate = [];\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport default createCache;","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport { createContext, useContext, forwardRef, createElement } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../isolated-hoist-non-react-statics-do-not-use-this-in-your-code/dist/emotion-react-isolated-hoist-non-react-statics-do-not-use-this-in-your-code.browser.esm.js';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || _typeof(mergedTheme) !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || _typeof(theme) !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\n\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\n\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = useContext(ThemeContext);\n return /*#__PURE__*/createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n} // thus we only need to replace what is a valid character for JS, but not for CSS\n\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\n\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type;\n\n if (process.env.NODE_ENV !== 'production') {\n var error = new Error();\n\n if (error.stack) {\n // chrome\n var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z0-9$]+) /);\n\n if (!match) {\n // safari and firefox\n match = error.stack.match(/.*\\n([A-Z][A-Za-z0-9$]+)@/);\n }\n\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n\n return newProps;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var type = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n var ele = /*#__PURE__*/createElement(type, newProps);\n return ele;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, useTheme as u, withEmotionCache as w };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport { createElement, useContext, useRef, useLayoutEffect } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-99289b21.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-99289b21.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../isolated-hoist-non-react-statics-do-not-use-this-in-your-code/dist/emotion-react-isolated-hoist-non-react-statics-do-not-use-this-in-your-code.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nvar pkg = {\n name: \"@emotion/react\",\n version: \"11.5.0\",\n main: \"dist/emotion-react.cjs.js\",\n module: \"dist/emotion-react.esm.js\",\n browser: {\n \"./dist/emotion-react.cjs.js\": \"./dist/emotion-react.browser.cjs.js\",\n \"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n },\n types: \"types/index.d.ts\",\n files: [\"src\", \"dist\", \"jsx-runtime\", \"jsx-dev-runtime\", \"isolated-hoist-non-react-statics-do-not-use-this-in-your-code\", \"types/*.d.ts\", \"macro.js\", \"macro.d.ts\", \"macro.js.flow\"],\n sideEffects: false,\n author: \"mitchellhamilton \",\n license: \"MIT\",\n scripts: {\n \"test:typescript\": \"dtslint types\"\n },\n dependencies: {\n \"@babel/runtime\": \"^7.13.10\",\n \"@emotion/cache\": \"^11.5.0\",\n \"@emotion/serialize\": \"^1.0.2\",\n \"@emotion/sheet\": \"^1.0.3\",\n \"@emotion/utils\": \"^1.0.0\",\n \"@emotion/weak-memoize\": \"^0.2.5\",\n \"hoist-non-react-statics\": \"^3.3.1\"\n },\n peerDependencies: {\n \"@babel/core\": \"^7.0.0\",\n react: \">=16.8.0\"\n },\n peerDependenciesMeta: {\n \"@babel/core\": {\n optional: true\n },\n \"@types/react\": {\n optional: true\n }\n },\n devDependencies: {\n \"@babel/core\": \"^7.13.10\",\n \"@emotion/css\": \"11.5.0\",\n \"@emotion/css-prettifier\": \"1.0.0\",\n \"@emotion/server\": \"11.4.0\",\n \"@emotion/styled\": \"11.3.0\",\n \"@types/react\": \"^16.9.11\",\n dtslint: \"^0.3.0\",\n \"html-tag-names\": \"^1.1.2\",\n react: \"16.14.0\",\n \"svg-tag-names\": \"^1.1.1\"\n },\n repository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n publishConfig: {\n access: \"public\"\n },\n \"umd:main\": \"dist/emotion-react.umd.min.js\",\n preconstruct: {\n entrypoints: [\"./index.js\", \"./jsx-runtime.js\", \"./jsx-dev-runtime.js\", \"./isolated-hoist-non-react-statics-do-not-use-this-in-your-code.js\"],\n umdName: \"emotionReact\"\n }\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, useContext(ThemeContext)); // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n var sheetRef = useRef();\n useLayoutEffect(function () {\n var key = cache.key + \"-global\";\n var sheet = new StyleSheet({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useLayoutEffect(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (_typeof(arg)) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n {\n insertStyles(cache, serialized, false);\n }\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return ele;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727 for some reason Jest evaluates modules twice if some consuming module gets mocked with jest.mock\n\n var isJest = typeof jest !== 'undefined';\n\n if (isBrowser && !isJest) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };","import hoistNonReactStatics$1 from 'hoist-non-react-statics'; // this file isolates this package that is not tree-shakeable\n// and if this module doesn't actually contain any logic of its own\n// then Rollup just use 'hoist-non-react-statics' directly in other chunks\n\nvar hoistNonReactStatics = function hoistNonReactStatics(targetComponent, sourceComponent) {\n return hoistNonReactStatics$1(targetComponent, sourceComponent);\n};\n\nexport default hoistNonReactStatics;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n return interpolation;\n }\n\n switch (_typeof(interpolation)) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (_typeof(value) !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\n\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && _typeof(args[0]) === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n before = _this.prepend ? _this.container.firstChild : _this.before;\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\nexport default unitlessKeys;","var isBrowser = \"object\" !== 'undefined';\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\n\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };","var weakMemoize = function weakMemoize(func) {\n // $FlowFixMe flow doesn't include all non-primitive types as allowed for weakmaps\n var cache = new WeakMap();\n return function (arg) {\n if (cache.has(arg)) {\n // $FlowFixMe\n return cache.get(arg);\n }\n\n var ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n};\n\nexport default weakMemoize;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nmodule.exports = function (e) {\n var t = {};\n\n function n(r) {\n if (t[r]) return t[r].exports;\n var o = t[r] = {\n i: r,\n l: !1,\n exports: {}\n };\n return e[r].call(o.exports, o, o.exports, n), o.l = !0, o.exports;\n }\n\n return n.m = e, n.c = t, n.d = function (e, t, r) {\n n.o(e, t) || Object.defineProperty(e, t, {\n enumerable: !0,\n get: r\n });\n }, n.r = function (e) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n }, n.t = function (e, t) {\n if (1 & t && (e = n(e)), 8 & t) return e;\n if (4 & t && \"object\" == _typeof(e) && e && e.__esModule) return e;\n var r = Object.create(null);\n if (n.r(r), Object.defineProperty(r, \"default\", {\n enumerable: !0,\n value: e\n }), 2 & t && \"string\" != typeof e) for (var o in e) {\n n.d(r, o, function (t) {\n return e[t];\n }.bind(null, o));\n }\n return r;\n }, n.n = function (e) {\n var t = e && e.__esModule ? function () {\n return e.default;\n } : function () {\n return e;\n };\n return n.d(t, \"a\", t), t;\n }, n.o = function (e, t) {\n return Object.prototype.hasOwnProperty.call(e, t);\n }, n.p = \"\", n(n.s = 2);\n}([function (e, t) {\n e.exports = require(\"react\");\n}, function (e, t) {\n e.exports = require(\"tui-image-editor\");\n}, function (e, t, n) {\n \"use strict\";\n\n n.r(t), n.d(t, \"default\", function () {\n return v;\n });\n var r = n(0),\n o = n.n(r),\n i = n(1),\n u = n.n(i);\n\n function c(e) {\n return (c = \"function\" == typeof Symbol && \"symbol\" == _typeof(Symbol.iterator) ? function (e) {\n return _typeof(e);\n } : function (e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : _typeof(e);\n })(e);\n }\n\n function a(e, t) {\n var n = Object.keys(e);\n\n if (Object.getOwnPropertySymbols) {\n var r = Object.getOwnPropertySymbols(e);\n t && (r = r.filter(function (t) {\n return Object.getOwnPropertyDescriptor(e, t).enumerable;\n })), n.push.apply(n, r);\n }\n\n return n;\n }\n\n function f(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }\n\n function l(e, t) {\n for (var n = 0; n < t.length; n++) {\n var r = t[n];\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);\n }\n }\n\n function s(e, t) {\n return !t || \"object\" !== c(t) && \"function\" != typeof t ? y(e) : t;\n }\n\n function p(e) {\n return (p = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {\n return e.__proto__ || Object.getPrototypeOf(e);\n })(e);\n }\n\n function y(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n }\n\n function b(e, t) {\n return (b = Object.setPrototypeOf || function (e, t) {\n return e.__proto__ = t, e;\n })(e, t);\n }\n\n function d(e, t, n) {\n return t in e ? Object.defineProperty(e, t, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[t] = n, e;\n }\n\n var v = function (e) {\n function t() {\n var e, n;\n f(this, t);\n\n for (var r = arguments.length, i = new Array(r), u = 0; u < r; u++) {\n i[u] = arguments[u];\n }\n\n return d(y(n = s(this, (e = p(t)).call.apply(e, [this].concat(i)))), \"rootEl\", o.a.createRef()), d(y(n), \"imageEditorInst\", null), n;\n }\n\n var n, r, i;\n return function (e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && b(e, t);\n }(t, e), n = t, (r = [{\n key: \"componentDidMount\",\n value: function value() {\n this.imageEditorInst = new u.a(this.rootEl.current, function (e) {\n for (var t = 1; t < arguments.length; t++) {\n var n = null != arguments[t] ? arguments[t] : {};\n t % 2 ? a(Object(n), !0).forEach(function (t) {\n d(e, t, n[t]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : a(Object(n)).forEach(function (t) {\n Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));\n });\n }\n\n return e;\n }({}, this.props)), this.bindEventHandlers(this.props);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function value() {\n this.unbindEventHandlers(), this.imageEditorInst.destroy(), this.imageEditorInst = null;\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function value(e) {\n return this.bindEventHandlers(this.props, e), !1;\n }\n }, {\n key: \"getInstance\",\n value: function value() {\n return this.imageEditorInst;\n }\n }, {\n key: \"getRootElement\",\n value: function value() {\n return this.rootEl.current;\n }\n }, {\n key: \"bindEventHandlers\",\n value: function value(e, t) {\n var n = this;\n Object.keys(e).filter(this.isEventHandlerKeys).forEach(function (r) {\n var o = r[2].toLowerCase() + r.slice(3);\n t && t[r] !== e[r] && n.imageEditorInst.off(o), n.imageEditorInst.on(o, e[r]);\n });\n }\n }, {\n key: \"unbindEventHandlers\",\n value: function value() {\n var e = this;\n Object.keys(this.props).filter(this.isEventHandlerKeys).forEach(function (t) {\n var n = t[2].toLowerCase() + t.slice(3);\n e.imageEditorInst.off(n);\n });\n }\n }, {\n key: \"isEventHandlerKeys\",\n value: function value(e) {\n return /on[A-Z][a-zA-Z]+/.test(e);\n }\n }, {\n key: \"render\",\n value: function value() {\n return o.a.createElement(\"div\", {\n ref: this.rootEl\n });\n }\n }]) && l(n.prototype, r), i && l(n, i), t;\n }(o.a.Component);\n}]);","/*!\n * array-unique \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n'use strict';\n\nmodule.exports = function unique(arr) {\n if (!Array.isArray(arr)) {\n throw new TypeError('array-unique expects an array.');\n }\n\n var len = arr.length;\n var i = -1;\n\n while (i++ < len) {\n var j = i + 1;\n\n for (; j < arr.length; ++j) {\n if (arr[i] === arr[j]) {\n arr.splice(j--, 1);\n }\n }\n }\n\n return arr;\n};\n\nmodule.exports.immutable = function uniqueImmutable(arr) {\n if (!Array.isArray(arr)) {\n throw new TypeError('array-unique expects an array.');\n }\n\n var arrLen = arr.length;\n var newArr = new Array(arrLen);\n\n for (var i = 0; i < arrLen; i++) {\n newArr[i] = arr[i];\n }\n\n return module.exports(newArr);\n};","\"use strict\";\n\nrequire(\"core-js/shim\");\n\nrequire(\"regenerator-runtime/runtime\");\n\nrequire(\"core-js/fn/regexp/escape\");\n\nif (global._babelPolyfill) {\n throw new Error(\"only one instance of babel-polyfill is allowed\");\n}\nglobal._babelPolyfill = true;\n\nvar DEFINE_PROPERTY = \"defineProperty\";\nfunction define(O, key, value) {\n O[key] || Object[DEFINE_PROPERTY](O, key, {\n writable: true,\n configurable: true,\n value: value\n });\n}\n\ndefine(String.prototype, \"padLeft\", \"\".padStart);\ndefine(String.prototype, \"padRight\", \"\".padEnd);\n\n\"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill\".split(\",\").forEach(function (key) {\n [][key] && define(Array, key, Function.call.bind([][key]));\n});","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\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 var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\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 runtime.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 runtime.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 runtime.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 runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\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 Promise.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 Promise.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. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === \"object\" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(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 runtime.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 runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.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 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 runtime.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 runtime.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 // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","'use strict';\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n} // Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\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 } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n} // base64 is 4/3 + up to two characters of the original data\n\n\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 var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | 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 = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | 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] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\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\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n\n return parts.join('');\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n\n var argType = _typeof(arg);\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg)) {\n if (arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n }\n } else if (argType === 'object') {\n if (arg.toString === Object.prototype.toString) {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n } else {\n classes.push(arg.toString());\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (typeof module !== 'undefined' && module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else if (typeof define === 'function' && _typeof(define.amd) === 'object' && define.amd) {\n // register as 'classnames', consistent with npm package name\n define('classnames', [], function () {\n return classNames;\n });\n } else {\n window.classNames = classNames;\n }\n})();","require('../../modules/core.regexp.escape');\nmodule.exports = require('../../modules/_core').RegExp.escape;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","require('../../modules/es6.array.is-array');\nmodule.exports = require('../../modules/_core').Array.isArray;\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","require('../modules/es6.parse-int');\nmodule.exports = require('../modules/_core').parseInt;\n","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","require('../modules/es6.object.to-string');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es7.weak-map.of');\nrequire('../modules/es7.weak-map.from');\nmodule.exports = require('../modules/_core').WeakMap;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = function () { /* empty */ };\n","module.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","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\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","// 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 = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\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","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('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","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('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","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar meta = require('./_meta');\nvar fails = require('./_fails');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar setToStringTag = require('./_set-to-string-tag');\nvar dP = require('./_object-dp').f;\nvar each = require('./_array-methods')(0);\nvar DESCRIPTORS = require('./_descriptors');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME, '_c');\n target._c = new Base();\n if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);\n });\n each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {\n anInstance(this, C, KEY);\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = this._c[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n });\n IS_WEAK || dP(C.prototype, 'size', {\n get: function () {\n return this._c.size;\n }\n });\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F, O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\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","// optional / simple context binding\nvar aFunction = require('./_a-function');\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","// 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","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').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","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\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","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\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","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\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","// 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","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? 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","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\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","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\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","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('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","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('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","var ITERATOR = require('./_wks')('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","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = true;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(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","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('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 = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').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","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? 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","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? 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","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? 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","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').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","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('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","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('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","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\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","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var hide = require('./_hide');\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","module.exports = require('./_hide');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\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 = require('./_ctx')(Function.call, require('./_object-gopd').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","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('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","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\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: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\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","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\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","module.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","var toInteger = require('./_to-integer');\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","// 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","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\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","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').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","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').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","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(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","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\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 = require('./_iter-define')(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","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(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","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\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 require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\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] || require('./_hide')($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","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('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","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","module.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","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\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","// 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 = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\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","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('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","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('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","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\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","// optional / simple context binding\nvar aFunction = require('./_a-function');\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","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\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","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').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","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\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","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\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","var MATCH = require('./_wks')('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","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\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","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\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","module.exports = require('./_shared')('native-function-to-string', Function.toString);\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","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? 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","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').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","// 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","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\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","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\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","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('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","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('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","var ITERATOR = require('./_wks')('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","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// https://rwaldron.github.io/proposal-math-extensions/\nmodule.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {\n if (\n arguments.length === 0\n // eslint-disable-next-line no-self-compare\n || x != x\n // eslint-disable-next-line no-self-compare\n || inLow != inLow\n // eslint-disable-next-line no-self-compare\n || inHigh != inHigh\n // eslint-disable-next-line no-self-compare\n || outLow != outLow\n // eslint-disable-next-line no-self-compare\n || outHigh != outHigh\n ) return NaN;\n if (x === Infinity || x === -Infinity) return x;\n return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(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","var Map = require('./es6.map');\nvar $export = require('./_export');\nvar shared = require('./_shared')('metadata');\nvar store = shared.store || (shared.store = new (require('./es6.weak-map'))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(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","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\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","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('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 = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').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","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? 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","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? 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","'use strict';\n// Forced replacement prototype accessors methods\nmodule.exports = require('./_library') || !require('./_fails')(function () {\n var K = Math.random();\n // In FF throws only define methods\n // eslint-disable-next-line no-undef, no-useless-call\n __defineSetter__.call(null, K, function () { /* empty */ });\n delete require('./_global')[K];\n});\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? 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","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').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","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('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","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('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","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\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","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').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","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\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","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').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","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","module.exports = function (regExp, replace) {\n var replacer = replace === Object(replace) ? function (part) {\n return replace[part];\n } : replace;\n return function (it) {\n return String(it).replace(regExp, replacer);\n };\n};\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\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 = require('./_ctx')(Function.call, require('./_object-gopd').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","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('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","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\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: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('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","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\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","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\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","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\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","module.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","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\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 (require('./_cof')(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","var toInteger = require('./_to-integer');\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","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\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","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\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","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').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","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').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","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// https://github.com/benjamingr/RexExp.escape\nvar $export = require('./_export');\nvar $re = require('./_replacer')(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n$export($export.S, 'RegExp', { escape: function escape(it) { return $re(it); } });\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(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});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(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});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(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","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\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 = require('./_iter-define')(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","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","require('./_set-species')('Array');\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && 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","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').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(require('./_object-create')(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 = require('./_descriptors') ? 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 require('./_redefine')(global, NUMBER, $Number);\n}\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\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 = {})[require('./_wks')('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 = require('./_redefine-all')($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 });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[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 && require('./_iter-detect')(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","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(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","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(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","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(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","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(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","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\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 require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\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] || require('./_hide')($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","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatten: function flatten(/* depthArg = 1 */) {\n var depthArg = arguments[0];\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatten');\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(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\nrequire('./_add-to-unscopables')('includes');\n","// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask\nvar $export = require('./_export');\nvar microtask = require('./_microtask')();\nvar process = require('./_global').process;\nvar isNode = require('./_cof')(process) == 'process';\n\n$export($export.G, {\n asap: function asap(fn) {\n var domain = isNode && process.domain;\n microtask(domain ? domain.bind(fn) : fn);\n }\n});\n","// https://github.com/ljharb/proposal-is-error\nvar $export = require('./_export');\nvar cof = require('./_cof');\n\n$export($export.S, 'Error', {\n isError: function isError(it) {\n return cof(it) === 'Error';\n }\n});\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clamp: function clamp(x, lower, upper) {\n return Math.min(upper, Math.max(lower, x));\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar RAD_PER_DEG = 180 / Math.PI;\n\n$export($export.S, 'Math', {\n degrees: function degrees(radians) {\n return radians * RAD_PER_DEG;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar scale = require('./_math-scale');\nvar fround = require('./_math-fround');\n\n$export($export.S, 'Math', {\n fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {\n return fround(scale(x, inLow, inHigh, outLow, outHigh));\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n iaddh: function iaddh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n imulh: function imulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >> 16;\n var v1 = $v >> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n isubh: function isubh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar DEG_PER_RAD = Math.PI / 180;\n\n$export($export.S, 'Math', {\n radians: function radians(degrees) {\n return degrees * DEG_PER_RAD;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { scale: require('./_math-scale') });\n","// http://jfbastien.github.io/papers/Math.signbit.html\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { signbit: function signbit(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;\n} });\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n umulh: function umulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >>> 16;\n var v1 = $v >>> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.2 Object.prototype.__defineGetter__(P, getter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineGetter__: function __defineGetter__(P, getter) {\n $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.3 Object.prototype.__defineSetter__(P, setter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineSetter__: function __defineSetter__(P, setter) {\n $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\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","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.4 Object.prototype.__lookupGetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupGetter__: function __lookupGetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.get;\n } while (O = getPrototypeOf(O));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.5 Object.prototype.__lookupSetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupSetter__: function __lookupSetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.set;\n } while (O = getPrototypeOf(O));\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","'use strict';\n// https://github.com/zenparsing/es-observable\nvar $export = require('./_export');\nvar global = require('./_global');\nvar core = require('./_core');\nvar microtask = require('./_microtask')();\nvar OBSERVABLE = require('./_wks')('observable');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar anInstance = require('./_an-instance');\nvar redefineAll = require('./_redefine-all');\nvar hide = require('./_hide');\nvar forOf = require('./_for-of');\nvar RETURN = forOf.RETURN;\n\nvar getMethod = function (fn) {\n return fn == null ? undefined : aFunction(fn);\n};\n\nvar cleanupSubscription = function (subscription) {\n var cleanup = subscription._c;\n if (cleanup) {\n subscription._c = undefined;\n cleanup();\n }\n};\n\nvar subscriptionClosed = function (subscription) {\n return subscription._o === undefined;\n};\n\nvar closeSubscription = function (subscription) {\n if (!subscriptionClosed(subscription)) {\n subscription._o = undefined;\n cleanupSubscription(subscription);\n }\n};\n\nvar Subscription = function (observer, subscriber) {\n anObject(observer);\n this._c = undefined;\n this._o = observer;\n observer = new SubscriptionObserver(this);\n try {\n var cleanup = subscriber(observer);\n var subscription = cleanup;\n if (cleanup != null) {\n if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };\n else aFunction(cleanup);\n this._c = cleanup;\n }\n } catch (e) {\n observer.error(e);\n return;\n } if (subscriptionClosed(this)) cleanupSubscription(this);\n};\n\nSubscription.prototype = redefineAll({}, {\n unsubscribe: function unsubscribe() { closeSubscription(this); }\n});\n\nvar SubscriptionObserver = function (subscription) {\n this._s = subscription;\n};\n\nSubscriptionObserver.prototype = redefineAll({}, {\n next: function next(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n try {\n var m = getMethod(observer.next);\n if (m) return m.call(observer, value);\n } catch (e) {\n try {\n closeSubscription(subscription);\n } finally {\n throw e;\n }\n }\n }\n },\n error: function error(value) {\n var subscription = this._s;\n if (subscriptionClosed(subscription)) throw value;\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.error);\n if (!m) throw value;\n value = m.call(observer, value);\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n },\n complete: function complete(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.complete);\n value = m ? m.call(observer, value) : undefined;\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n }\n }\n});\n\nvar $Observable = function Observable(subscriber) {\n anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);\n};\n\nredefineAll($Observable.prototype, {\n subscribe: function subscribe(observer) {\n return new Subscription(observer, this._f);\n },\n forEach: function forEach(fn) {\n var that = this;\n return new (core.Promise || global.Promise)(function (resolve, reject) {\n aFunction(fn);\n var subscription = that.subscribe({\n next: function (value) {\n try {\n return fn(value);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n});\n\nredefineAll($Observable, {\n from: function from(x) {\n var C = typeof this === 'function' ? this : $Observable;\n var method = getMethod(anObject(x)[OBSERVABLE]);\n if (method) {\n var observable = anObject(method.call(x));\n return observable.constructor === C ? observable : new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n return new C(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n try {\n if (forOf(x, false, function (it) {\n observer.next(it);\n if (done) return RETURN;\n }) === RETURN) return;\n } catch (e) {\n if (done) throw e;\n observer.error(e);\n return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n },\n of: function of() {\n for (var i = 0, l = arguments.length, items = new Array(l); i < l;) items[i] = arguments[i++];\n return new (typeof this === 'function' ? this : $Observable)(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n for (var j = 0; j < items.length; ++j) {\n observer.next(items[j]);\n if (done) return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n }\n});\n\nhide($Observable.prototype, OBSERVABLE, function () { return this; });\n\n$export($export.G, { Observable: $Observable });\n\nrequire('./_set-species')('Observable');\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\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","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\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","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n","var Set = require('./es6.set');\nvar from = require('./_array-from-iterable');\nvar metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var $metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","'use strict';\n// https://github.com/mathiasbynens/String.prototype.at\nvar $export = require('./_export');\nvar $at = require('./_string-at')(true);\nvar $fails = require('./_fails');\n\nvar FORCED = $fails(function () {\n return '𠮷'.at(0) !== '𠮷';\n});\n\n$export($export.P + $export.F * FORCED, 'String', {\n at: function at(pos) {\n return $at(this, pos);\n }\n});\n","'use strict';\n// https://tc39.github.io/String.prototype.matchAll/\nvar $export = require('./_export');\nvar defined = require('./_defined');\nvar toLength = require('./_to-length');\nvar isRegExp = require('./_is-regexp');\nvar getFlags = require('./_flags');\nvar RegExpProto = RegExp.prototype;\n\nvar $RegExpStringIterator = function (regexp, string) {\n this._r = regexp;\n this._s = string;\n};\n\nrequire('./_iter-create')($RegExpStringIterator, 'RegExp String', function next() {\n var match = this._r.exec(this._s);\n return { value: match, done: match === null };\n});\n\n$export($export.P, 'String', {\n matchAll: function matchAll(regexp) {\n defined(this);\n if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');\n var S = String(this);\n var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);\n var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);\n rx.lastIndex = toLength(regexp.lastIndex);\n return new $RegExpStringIterator(rx, S);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.S, 'System', { global: require('./_global') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from\nrequire('./_set-collection-from')('WeakSet');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of\nrequire('./_set-collection-of')('WeakSet');\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\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","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","require('./modules/es6.symbol');\nrequire('./modules/es6.object.create');\nrequire('./modules/es6.object.define-property');\nrequire('./modules/es6.object.define-properties');\nrequire('./modules/es6.object.get-own-property-descriptor');\nrequire('./modules/es6.object.get-prototype-of');\nrequire('./modules/es6.object.keys');\nrequire('./modules/es6.object.get-own-property-names');\nrequire('./modules/es6.object.freeze');\nrequire('./modules/es6.object.seal');\nrequire('./modules/es6.object.prevent-extensions');\nrequire('./modules/es6.object.is-frozen');\nrequire('./modules/es6.object.is-sealed');\nrequire('./modules/es6.object.is-extensible');\nrequire('./modules/es6.object.assign');\nrequire('./modules/es6.object.is');\nrequire('./modules/es6.object.set-prototype-of');\nrequire('./modules/es6.object.to-string');\nrequire('./modules/es6.function.bind');\nrequire('./modules/es6.function.name');\nrequire('./modules/es6.function.has-instance');\nrequire('./modules/es6.parse-int');\nrequire('./modules/es6.parse-float');\nrequire('./modules/es6.number.constructor');\nrequire('./modules/es6.number.to-fixed');\nrequire('./modules/es6.number.to-precision');\nrequire('./modules/es6.number.epsilon');\nrequire('./modules/es6.number.is-finite');\nrequire('./modules/es6.number.is-integer');\nrequire('./modules/es6.number.is-nan');\nrequire('./modules/es6.number.is-safe-integer');\nrequire('./modules/es6.number.max-safe-integer');\nrequire('./modules/es6.number.min-safe-integer');\nrequire('./modules/es6.number.parse-float');\nrequire('./modules/es6.number.parse-int');\nrequire('./modules/es6.math.acosh');\nrequire('./modules/es6.math.asinh');\nrequire('./modules/es6.math.atanh');\nrequire('./modules/es6.math.cbrt');\nrequire('./modules/es6.math.clz32');\nrequire('./modules/es6.math.cosh');\nrequire('./modules/es6.math.expm1');\nrequire('./modules/es6.math.fround');\nrequire('./modules/es6.math.hypot');\nrequire('./modules/es6.math.imul');\nrequire('./modules/es6.math.log10');\nrequire('./modules/es6.math.log1p');\nrequire('./modules/es6.math.log2');\nrequire('./modules/es6.math.sign');\nrequire('./modules/es6.math.sinh');\nrequire('./modules/es6.math.tanh');\nrequire('./modules/es6.math.trunc');\nrequire('./modules/es6.string.from-code-point');\nrequire('./modules/es6.string.raw');\nrequire('./modules/es6.string.trim');\nrequire('./modules/es6.string.iterator');\nrequire('./modules/es6.string.code-point-at');\nrequire('./modules/es6.string.ends-with');\nrequire('./modules/es6.string.includes');\nrequire('./modules/es6.string.repeat');\nrequire('./modules/es6.string.starts-with');\nrequire('./modules/es6.string.anchor');\nrequire('./modules/es6.string.big');\nrequire('./modules/es6.string.blink');\nrequire('./modules/es6.string.bold');\nrequire('./modules/es6.string.fixed');\nrequire('./modules/es6.string.fontcolor');\nrequire('./modules/es6.string.fontsize');\nrequire('./modules/es6.string.italics');\nrequire('./modules/es6.string.link');\nrequire('./modules/es6.string.small');\nrequire('./modules/es6.string.strike');\nrequire('./modules/es6.string.sub');\nrequire('./modules/es6.string.sup');\nrequire('./modules/es6.date.now');\nrequire('./modules/es6.date.to-json');\nrequire('./modules/es6.date.to-iso-string');\nrequire('./modules/es6.date.to-string');\nrequire('./modules/es6.date.to-primitive');\nrequire('./modules/es6.array.is-array');\nrequire('./modules/es6.array.from');\nrequire('./modules/es6.array.of');\nrequire('./modules/es6.array.join');\nrequire('./modules/es6.array.slice');\nrequire('./modules/es6.array.sort');\nrequire('./modules/es6.array.for-each');\nrequire('./modules/es6.array.map');\nrequire('./modules/es6.array.filter');\nrequire('./modules/es6.array.some');\nrequire('./modules/es6.array.every');\nrequire('./modules/es6.array.reduce');\nrequire('./modules/es6.array.reduce-right');\nrequire('./modules/es6.array.index-of');\nrequire('./modules/es6.array.last-index-of');\nrequire('./modules/es6.array.copy-within');\nrequire('./modules/es6.array.fill');\nrequire('./modules/es6.array.find');\nrequire('./modules/es6.array.find-index');\nrequire('./modules/es6.array.species');\nrequire('./modules/es6.array.iterator');\nrequire('./modules/es6.regexp.constructor');\nrequire('./modules/es6.regexp.exec');\nrequire('./modules/es6.regexp.to-string');\nrequire('./modules/es6.regexp.flags');\nrequire('./modules/es6.regexp.match');\nrequire('./modules/es6.regexp.replace');\nrequire('./modules/es6.regexp.search');\nrequire('./modules/es6.regexp.split');\nrequire('./modules/es6.promise');\nrequire('./modules/es6.map');\nrequire('./modules/es6.set');\nrequire('./modules/es6.weak-map');\nrequire('./modules/es6.weak-set');\nrequire('./modules/es6.typed.array-buffer');\nrequire('./modules/es6.typed.data-view');\nrequire('./modules/es6.typed.int8-array');\nrequire('./modules/es6.typed.uint8-array');\nrequire('./modules/es6.typed.uint8-clamped-array');\nrequire('./modules/es6.typed.int16-array');\nrequire('./modules/es6.typed.uint16-array');\nrequire('./modules/es6.typed.int32-array');\nrequire('./modules/es6.typed.uint32-array');\nrequire('./modules/es6.typed.float32-array');\nrequire('./modules/es6.typed.float64-array');\nrequire('./modules/es6.reflect.apply');\nrequire('./modules/es6.reflect.construct');\nrequire('./modules/es6.reflect.define-property');\nrequire('./modules/es6.reflect.delete-property');\nrequire('./modules/es6.reflect.enumerate');\nrequire('./modules/es6.reflect.get');\nrequire('./modules/es6.reflect.get-own-property-descriptor');\nrequire('./modules/es6.reflect.get-prototype-of');\nrequire('./modules/es6.reflect.has');\nrequire('./modules/es6.reflect.is-extensible');\nrequire('./modules/es6.reflect.own-keys');\nrequire('./modules/es6.reflect.prevent-extensions');\nrequire('./modules/es6.reflect.set');\nrequire('./modules/es6.reflect.set-prototype-of');\nrequire('./modules/es7.array.includes');\nrequire('./modules/es7.array.flat-map');\nrequire('./modules/es7.array.flatten');\nrequire('./modules/es7.string.at');\nrequire('./modules/es7.string.pad-start');\nrequire('./modules/es7.string.pad-end');\nrequire('./modules/es7.string.trim-left');\nrequire('./modules/es7.string.trim-right');\nrequire('./modules/es7.string.match-all');\nrequire('./modules/es7.symbol.async-iterator');\nrequire('./modules/es7.symbol.observable');\nrequire('./modules/es7.object.get-own-property-descriptors');\nrequire('./modules/es7.object.values');\nrequire('./modules/es7.object.entries');\nrequire('./modules/es7.object.define-getter');\nrequire('./modules/es7.object.define-setter');\nrequire('./modules/es7.object.lookup-getter');\nrequire('./modules/es7.object.lookup-setter');\nrequire('./modules/es7.map.to-json');\nrequire('./modules/es7.set.to-json');\nrequire('./modules/es7.map.of');\nrequire('./modules/es7.set.of');\nrequire('./modules/es7.weak-map.of');\nrequire('./modules/es7.weak-set.of');\nrequire('./modules/es7.map.from');\nrequire('./modules/es7.set.from');\nrequire('./modules/es7.weak-map.from');\nrequire('./modules/es7.weak-set.from');\nrequire('./modules/es7.global');\nrequire('./modules/es7.system.global');\nrequire('./modules/es7.error.is-error');\nrequire('./modules/es7.math.clamp');\nrequire('./modules/es7.math.deg-per-rad');\nrequire('./modules/es7.math.degrees');\nrequire('./modules/es7.math.fscale');\nrequire('./modules/es7.math.iaddh');\nrequire('./modules/es7.math.isubh');\nrequire('./modules/es7.math.imulh');\nrequire('./modules/es7.math.rad-per-deg');\nrequire('./modules/es7.math.radians');\nrequire('./modules/es7.math.scale');\nrequire('./modules/es7.math.umulh');\nrequire('./modules/es7.math.signbit');\nrequire('./modules/es7.promise.finally');\nrequire('./modules/es7.promise.try');\nrequire('./modules/es7.reflect.define-metadata');\nrequire('./modules/es7.reflect.delete-metadata');\nrequire('./modules/es7.reflect.get-metadata');\nrequire('./modules/es7.reflect.get-metadata-keys');\nrequire('./modules/es7.reflect.get-own-metadata');\nrequire('./modules/es7.reflect.get-own-metadata-keys');\nrequire('./modules/es7.reflect.has-metadata');\nrequire('./modules/es7.reflect.has-own-metadata');\nrequire('./modules/es7.reflect.metadata');\nrequire('./modules/es7.asap');\nrequire('./modules/es7.observable');\nrequire('./modules/web.timers');\nrequire('./modules/web.immediate');\nrequire('./modules/web.dom.iterable');\nmodule.exports = require('./modules/_core');\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * deep-diff.\n * Licensed under the MIT License.\n */\n;\n\n(function (root, factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], function () {\n return factory();\n });\n } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.DeepDiff = factory();\n }\n})(this, function (undefined) {\n 'use strict';\n\n var $scope,\n conflict,\n conflictResolution = [];\n\n if ((typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) === 'object' && global) {\n $scope = global;\n } else if (typeof window !== 'undefined') {\n $scope = window;\n } else {\n $scope = {};\n }\n\n conflict = $scope.DeepDiff;\n\n if (conflict) {\n conflictResolution.push(function () {\n if ('undefined' !== typeof conflict && $scope.DeepDiff === accumulateDiff) {\n $scope.DeepDiff = conflict;\n conflict = undefined;\n }\n });\n } // nodejs compatible on server side and in the browser.\n\n\n function inherits(ctor, 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 function Diff(kind, path) {\n Object.defineProperty(this, 'kind', {\n value: kind,\n enumerable: true\n });\n\n if (path && path.length) {\n Object.defineProperty(this, 'path', {\n value: path,\n enumerable: true\n });\n }\n }\n\n function DiffEdit(path, origin, value) {\n DiffEdit.super_.call(this, 'E', path);\n Object.defineProperty(this, 'lhs', {\n value: origin,\n enumerable: true\n });\n Object.defineProperty(this, 'rhs', {\n value: value,\n enumerable: true\n });\n }\n\n inherits(DiffEdit, Diff);\n\n function DiffNew(path, value) {\n DiffNew.super_.call(this, 'N', path);\n Object.defineProperty(this, 'rhs', {\n value: value,\n enumerable: true\n });\n }\n\n inherits(DiffNew, Diff);\n\n function DiffDeleted(path, value) {\n DiffDeleted.super_.call(this, 'D', path);\n Object.defineProperty(this, 'lhs', {\n value: value,\n enumerable: true\n });\n }\n\n inherits(DiffDeleted, Diff);\n\n function DiffArray(path, index, item) {\n DiffArray.super_.call(this, 'A', path);\n Object.defineProperty(this, 'index', {\n value: index,\n enumerable: true\n });\n Object.defineProperty(this, 'item', {\n value: item,\n enumerable: true\n });\n }\n\n inherits(DiffArray, Diff);\n\n function arrayRemove(arr, from, to) {\n var rest = arr.slice((to || from) + 1 || arr.length);\n arr.length = from < 0 ? arr.length + from : from;\n arr.push.apply(arr, rest);\n return arr;\n }\n\n function realTypeOf(subject) {\n var type = _typeof(subject);\n\n if (type !== 'object') {\n return type;\n }\n\n if (subject === Math) {\n return 'math';\n } else if (subject === null) {\n return 'null';\n } else if (Array.isArray(subject)) {\n return 'array';\n } else if (Object.prototype.toString.call(subject) === '[object Date]') {\n return 'date';\n } else if (typeof subject.toString !== 'undefined' && /^\\/.*\\//.test(subject.toString())) {\n return 'regexp';\n }\n\n return 'object';\n }\n\n function deepDiff(lhs, rhs, changes, prefilter, path, key, stack) {\n path = path || [];\n var currentPath = path.slice(0);\n\n if (typeof key !== 'undefined') {\n if (prefilter) {\n if (typeof prefilter === 'function' && prefilter(currentPath, key)) {\n return;\n } else if (_typeof(prefilter) === 'object') {\n if (prefilter.prefilter && prefilter.prefilter(currentPath, key)) {\n return;\n }\n\n if (prefilter.normalize) {\n var alt = prefilter.normalize(currentPath, key, lhs, rhs);\n\n if (alt) {\n lhs = alt[0];\n rhs = alt[1];\n }\n }\n }\n }\n\n currentPath.push(key);\n } // Use string comparison for regexes\n\n\n if (realTypeOf(lhs) === 'regexp' && realTypeOf(rhs) === 'regexp') {\n lhs = lhs.toString();\n rhs = rhs.toString();\n }\n\n var ltype = _typeof(lhs);\n\n var rtype = _typeof(rhs);\n\n if (ltype === 'undefined') {\n if (rtype !== 'undefined') {\n changes(new DiffNew(currentPath, rhs));\n }\n } else if (rtype === 'undefined') {\n changes(new DiffDeleted(currentPath, lhs));\n } else if (realTypeOf(lhs) !== realTypeOf(rhs)) {\n changes(new DiffEdit(currentPath, lhs, rhs));\n } else if (Object.prototype.toString.call(lhs) === '[object Date]' && Object.prototype.toString.call(rhs) === '[object Date]' && lhs - rhs !== 0) {\n changes(new DiffEdit(currentPath, lhs, rhs));\n } else if (ltype === 'object' && lhs !== null && rhs !== null) {\n stack = stack || [];\n\n if (stack.indexOf(lhs) < 0) {\n stack.push(lhs);\n\n if (Array.isArray(lhs)) {\n var i,\n len = lhs.length;\n\n for (i = 0; i < lhs.length; i++) {\n if (i >= rhs.length) {\n changes(new DiffArray(currentPath, i, new DiffDeleted(undefined, lhs[i])));\n } else {\n deepDiff(lhs[i], rhs[i], changes, prefilter, currentPath, i, stack);\n }\n }\n\n while (i < rhs.length) {\n changes(new DiffArray(currentPath, i, new DiffNew(undefined, rhs[i++])));\n }\n } else {\n var akeys = Object.keys(lhs);\n var pkeys = Object.keys(rhs);\n akeys.forEach(function (k, i) {\n var other = pkeys.indexOf(k);\n\n if (other >= 0) {\n deepDiff(lhs[k], rhs[k], changes, prefilter, currentPath, k, stack);\n pkeys = arrayRemove(pkeys, other);\n } else {\n deepDiff(lhs[k], undefined, changes, prefilter, currentPath, k, stack);\n }\n });\n pkeys.forEach(function (k) {\n deepDiff(undefined, rhs[k], changes, prefilter, currentPath, k, stack);\n });\n }\n\n stack.length = stack.length - 1;\n }\n } else if (lhs !== rhs) {\n if (!(ltype === 'number' && isNaN(lhs) && isNaN(rhs))) {\n changes(new DiffEdit(currentPath, lhs, rhs));\n }\n }\n }\n\n function accumulateDiff(lhs, rhs, prefilter, accum) {\n accum = accum || [];\n deepDiff(lhs, rhs, function (diff) {\n if (diff) {\n accum.push(diff);\n }\n }, prefilter);\n return accum.length ? accum : undefined;\n }\n\n function applyArrayChange(arr, index, change) {\n if (change.path && change.path.length) {\n var it = arr[index],\n i,\n u = change.path.length - 1;\n\n for (i = 0; i < u; i++) {\n it = it[change.path[i]];\n }\n\n switch (change.kind) {\n case 'A':\n applyArrayChange(it[change.path[i]], change.index, change.item);\n break;\n\n case 'D':\n delete it[change.path[i]];\n break;\n\n case 'E':\n case 'N':\n it[change.path[i]] = change.rhs;\n break;\n }\n } else {\n switch (change.kind) {\n case 'A':\n applyArrayChange(arr[index], change.index, change.item);\n break;\n\n case 'D':\n arr = arrayRemove(arr, index);\n break;\n\n case 'E':\n case 'N':\n arr[index] = change.rhs;\n break;\n }\n }\n\n return arr;\n }\n\n function applyChange(target, source, change) {\n if (target && source && change && change.kind) {\n var it = target,\n i = -1,\n last = change.path ? change.path.length - 1 : 0;\n\n while (++i < last) {\n if (typeof it[change.path[i]] === 'undefined') {\n it[change.path[i]] = typeof change.path[i] === 'number' ? [] : {};\n }\n\n it = it[change.path[i]];\n }\n\n switch (change.kind) {\n case 'A':\n applyArrayChange(change.path ? it[change.path[i]] : it, change.index, change.item);\n break;\n\n case 'D':\n delete it[change.path[i]];\n break;\n\n case 'E':\n case 'N':\n it[change.path[i]] = change.rhs;\n break;\n }\n }\n }\n\n function revertArrayChange(arr, index, change) {\n if (change.path && change.path.length) {\n // the structure of the object at the index has changed...\n var it = arr[index],\n i,\n u = change.path.length - 1;\n\n for (i = 0; i < u; i++) {\n it = it[change.path[i]];\n }\n\n switch (change.kind) {\n case 'A':\n revertArrayChange(it[change.path[i]], change.index, change.item);\n break;\n\n case 'D':\n it[change.path[i]] = change.lhs;\n break;\n\n case 'E':\n it[change.path[i]] = change.lhs;\n break;\n\n case 'N':\n delete it[change.path[i]];\n break;\n }\n } else {\n // the array item is different...\n switch (change.kind) {\n case 'A':\n revertArrayChange(arr[index], change.index, change.item);\n break;\n\n case 'D':\n arr[index] = change.lhs;\n break;\n\n case 'E':\n arr[index] = change.lhs;\n break;\n\n case 'N':\n arr = arrayRemove(arr, index);\n break;\n }\n }\n\n return arr;\n }\n\n function revertChange(target, source, change) {\n if (target && source && change && change.kind) {\n var it = target,\n i,\n u;\n u = change.path.length - 1;\n\n for (i = 0; i < u; i++) {\n if (typeof it[change.path[i]] === 'undefined') {\n it[change.path[i]] = {};\n }\n\n it = it[change.path[i]];\n }\n\n switch (change.kind) {\n case 'A':\n // Array was modified...\n // it will be an array...\n revertArrayChange(it[change.path[i]], change.index, change.item);\n break;\n\n case 'D':\n // Item was deleted...\n it[change.path[i]] = change.lhs;\n break;\n\n case 'E':\n // Item was edited...\n it[change.path[i]] = change.lhs;\n break;\n\n case 'N':\n // Item is new...\n delete it[change.path[i]];\n break;\n }\n }\n }\n\n function applyDiff(target, source, filter) {\n if (target && source) {\n var onChange = function onChange(change) {\n if (!filter || filter(target, source, change)) {\n applyChange(target, source, change);\n }\n };\n\n deepDiff(target, source, onChange);\n }\n }\n\n Object.defineProperties(accumulateDiff, {\n diff: {\n value: accumulateDiff,\n enumerable: true\n },\n observableDiff: {\n value: deepDiff,\n enumerable: true\n },\n applyDiff: {\n value: applyDiff,\n enumerable: true\n },\n applyChange: {\n value: applyChange,\n enumerable: true\n },\n revertChange: {\n value: revertChange,\n enumerable: true\n },\n isConflict: {\n value: function value() {\n return 'undefined' !== typeof conflict;\n },\n enumerable: true\n },\n noConflict: {\n value: function value() {\n if (conflictResolution) {\n conflictResolution.forEach(function (it) {\n it();\n });\n conflictResolution = null;\n }\n\n return accumulateDiff;\n },\n enumerable: true\n }\n });\n return accumulateDiff;\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = _interopRequireDefault(require(\"./ownerDocument\"));\n\nfunction activeElement(doc) {\n if (doc === void 0) {\n doc = (0, _ownerDocument.default)();\n }\n\n try {\n return doc.activeElement;\n } catch (e) {\n /* ie throws if no active element */\n }\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = _interopRequireDefault(require(\"./addClass\"));\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = _interopRequireDefault(require(\"./removeClass\"));\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n addClass: _addClass.default,\n removeClass: _removeClass.default,\n hasClass: _hasClass.default\n};\nexports.default = _default;","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = filterEvents;\n\nvar _contains = _interopRequireDefault(require(\"../query/contains\"));\n\nvar _querySelectorAll = _interopRequireDefault(require(\"../query/querySelectorAll\"));\n\nfunction filterEvents(selector, handler) {\n return function filterHandler(e) {\n var top = e.currentTarget,\n target = e.target,\n matches = (0, _querySelectorAll.default)(top, selector);\n if (matches.some(function (match) {\n return (0, _contains.default)(match, target);\n })) handler.call(this, e);\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _on = _interopRequireDefault(require(\"./on\"));\n\nexports.on = _on.default;\n\nvar _off = _interopRequireDefault(require(\"./off\"));\n\nexports.off = _off.default;\n\nvar _filter = _interopRequireDefault(require(\"./filter\"));\n\nexports.filter = _filter.default;\n\nvar _listen = _interopRequireDefault(require(\"./listen\"));\n\nexports.listen = _listen.default;\nvar _default = {\n on: _on.default,\n off: _off.default,\n filter: _filter.default,\n listen: _listen.default\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar _on = _interopRequireDefault(require(\"./on\"));\n\nvar _off = _interopRequireDefault(require(\"./off\"));\n\nvar listen = function listen() {};\n\nif (_inDOM.default) {\n listen = function listen(node, eventName, handler, capture) {\n (0, _on.default)(node, eventName, handler, capture);\n return function () {\n (0, _off.default)(node, eventName, handler, capture);\n };\n };\n}\n\nvar _default = listen;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n off = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n on = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, function (e) {\n e = e || window.event;\n e.target = e.target || e.srcElement;\n e.currentTarget = node;\n handler.call(node, e);\n });\n };\n }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar _default = function () {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n return _inDOM.default ? function (context, node) {\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n } else {\n return fallback(context, node);\n }\n } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n if (node) do {\n if (node === context) return true;\n } while (node = node.parentNode);\n return false;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = offset;\n\nvar _contains = _interopRequireDefault(require(\"./contains\"));\n\nvar _isWindow = _interopRequireDefault(require(\"./isWindow\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"../ownerDocument\"));\n\nfunction offset(node) {\n var doc = (0, _ownerDocument.default)(node),\n win = (0, _isWindow.default)(doc),\n docElem = doc && doc.documentElement,\n box = {\n top: 0,\n left: 0,\n height: 0,\n width: 0\n };\n if (!doc) return; // Make sure it's not a disconnected DOM node\n\n if (!(0, _contains.default)(docElem, node)) return box;\n if (node.getBoundingClientRect !== undefined) box = node.getBoundingClientRect(); // IE8 getBoundingClientRect doesn't support width & height\n\n box = {\n top: box.top + (win.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),\n left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0),\n width: (box.width == null ? node.offsetWidth : box.width) || 0,\n height: (box.height == null ? node.offsetHeight : box.height) || 0\n };\n return box;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = offsetParent;\n\nvar _ownerDocument = _interopRequireDefault(require(\"../ownerDocument\"));\n\nvar _style = _interopRequireDefault(require(\"../style\"));\n\nfunction nodeName(node) {\n return node.nodeName && node.nodeName.toLowerCase();\n}\n\nfunction offsetParent(node) {\n var doc = (0, _ownerDocument.default)(node),\n offsetParent = node && node.offsetParent;\n\n while (offsetParent && nodeName(node) !== 'html' && (0, _style.default)(offsetParent, 'position') === 'static') {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || doc.documentElement;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = position;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _offset = _interopRequireDefault(require(\"./offset\"));\n\nvar _offsetParent = _interopRequireDefault(require(\"./offsetParent\"));\n\nvar _scrollTop = _interopRequireDefault(require(\"./scrollTop\"));\n\nvar _scrollLeft = _interopRequireDefault(require(\"./scrollLeft\"));\n\nvar _style = _interopRequireDefault(require(\"../style\"));\n\nfunction nodeName(node) {\n return node.nodeName && node.nodeName.toLowerCase();\n}\n\nfunction position(node, offsetParent) {\n var parentOffset = {\n top: 0,\n left: 0\n },\n offset; // Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n // because it is its only offset parent\n\n if ((0, _style.default)(node, 'position') === 'fixed') {\n offset = node.getBoundingClientRect();\n } else {\n offsetParent = offsetParent || (0, _offsetParent.default)(node);\n offset = (0, _offset.default)(node);\n if (nodeName(offsetParent) !== 'html') parentOffset = (0, _offset.default)(offsetParent);\n parentOffset.top += parseInt((0, _style.default)(offsetParent, 'borderTopWidth'), 10) - (0, _scrollTop.default)(offsetParent) || 0;\n parentOffset.left += parseInt((0, _style.default)(offsetParent, 'borderLeftWidth'), 10) - (0, _scrollLeft.default)(offsetParent) || 0;\n } // Subtract parent offsets and node margins\n\n\n return (0, _extends2.default)({}, offset, {\n top: offset.top - parentOffset.top - (parseInt((0, _style.default)(node, 'marginTop'), 10) || 0),\n left: offset.left - parentOffset.left - (parseInt((0, _style.default)(node, 'marginLeft'), 10) || 0)\n });\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = qsa; // Zepto.js\n// (c) 2010-2015 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nvar simpleSelectorRE = /^[\\w-]*$/;\nvar toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n\nfunction qsa(element, selector) {\n var maybeID = selector[0] === '#',\n maybeClass = selector[0] === '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,\n isSimple = simpleSelectorRE.test(nameOnly),\n found;\n\n if (isSimple) {\n if (maybeID) {\n element = element.getElementById ? element : document;\n return (found = element.getElementById(nameOnly)) ? [found] : [];\n }\n\n if (element.getElementsByClassName && maybeClass) return toArray(element.getElementsByClassName(nameOnly));\n return toArray(element.getElementsByTagName(selector));\n }\n\n return toArray(element.querySelectorAll(selector));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = scrollTop;\n\nvar _isWindow = _interopRequireDefault(require(\"./isWindow\"));\n\nfunction scrollTop(node, val) {\n var win = (0, _isWindow.default)(node);\n if (val === undefined) return win ? 'pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft : node.scrollLeft;\n if (win) win.scrollTo(val, 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop);else node.scrollLeft = val;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = scrollTop;\n\nvar _isWindow = _interopRequireDefault(require(\"./isWindow\"));\n\nfunction scrollTop(node, val) {\n var win = (0, _isWindow.default)(node);\n if (val === undefined) return win ? 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop : node.scrollTop;\n if (win) win.scrollTo('pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft, val);else node.scrollTop = val;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = _interopRequireDefault(require(\"../util/camelizeStyle\"));\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n var doc = node.ownerDocument;\n return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n getPropertyValue: function getPropertyValue(prop) {\n var style = node.style;\n prop = (0, _camelizeStyle.default)(prop);\n if (prop == 'float') prop = 'styleFloat';\n var current = node.currentStyle[prop] || null;\n if (current == null && style && style[prop]) current = style[prop];\n\n if (rnumnonpx.test(current) && !rposition.test(prop)) {\n // Remember the original values\n var left = style.left;\n var runStyle = node.runtimeStyle;\n var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n if (rsLeft) runStyle.left = node.currentStyle.left;\n style.left = prop === 'fontSize' ? '1em' : current;\n current = style.pixelLeft + 'px'; // Revert the changed values\n\n style.left = left;\n if (rsLeft) runStyle.left = rsLeft;\n }\n\n return current;\n }\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = _interopRequireDefault(require(\"../util/camelizeStyle\"));\n\nvar _hyphenateStyle = _interopRequireDefault(require(\"../util/hyphenateStyle\"));\n\nvar _getComputedStyle2 = _interopRequireDefault(require(\"./getComputedStyle\"));\n\nvar _removeStyle = _interopRequireDefault(require(\"./removeStyle\"));\n\nvar _properties = require(\"../transition/properties\");\n\nvar _isTransform = _interopRequireDefault(require(\"../transition/isTransform\"));\n\nfunction style(node, property, value) {\n var css = '';\n var transforms = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n } else {\n (props = {})[property] = value;\n }\n }\n\n Object.keys(props).forEach(function (key) {\n var value = props[key];\n\n if (!value && value !== 0) {\n (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n } else if ((0, _isTransform.default)(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += _properties.transform + \": \" + transforms + \";\";\n }\n\n node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _properties = _interopRequireDefault(require(\"./properties\"));\n\nvar _style = _interopRequireDefault(require(\"../style\"));\n\nfunction onEnd(node, handler, duration) {\n var fakeEvent = {\n target: node,\n currentTarget: node\n },\n backup;\n if (!_properties.default.end) duration = 0;else if (duration == null) duration = parseDuration(node) || 0;\n\n if (_properties.default.end) {\n node.addEventListener(_properties.default.end, done, false);\n backup = setTimeout(function () {\n return done(fakeEvent);\n }, (duration || 100) * 1.5);\n } else setTimeout(done.bind(null, fakeEvent), 0);\n\n function done(event) {\n if (event.target !== event.currentTarget) return;\n clearTimeout(backup);\n event.target.removeEventListener(_properties.default.end, done);\n handler.call(this);\n }\n}\n\nonEnd._parseDuration = parseDuration;\nvar _default = onEnd;\nexports.default = _default;\n\nfunction parseDuration(node) {\n var str = (0, _style.default)(node, _properties.default.duration),\n mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _end = _interopRequireDefault(require(\"./end\"));\n\nexports.end = _end.default;\n\nvar _properties = _interopRequireDefault(require(\"./properties\"));\n\nexports.properties = _properties.default;\nvar _default = {\n end: _end.default,\n properties: _properties.default\n};\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n exports.transform = transform = prefix + \"-\" + transform;\n exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n exports.animationName = animationName = prefix + \"-animation-name\";\n exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n var vendorMap = {\n O: function O(e) {\n return \"o\" + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return \"webkit\" + e;\n },\n ms: function ms(e) {\n return \"MS\" + e;\n }\n };\n var vendors = Object.keys(vendorMap);\n var transitionEnd, animationEnd;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + \"TransitionProperty\" in style) {\n prefix = \"-\" + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n style = null;\n return {\n animationEnd: animationEnd,\n transitionEnd: transitionEnd,\n prefix: prefix\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = _interopRequireDefault(require(\"./camelize\"));\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\n\n\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = _interopRequireDefault(require(\"./hyphenate\"));\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\n\n\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = _interopRequireDefault(require(\"./inDOM\"));\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (_inDOM.default) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}\n\nmodule.exports = exports[\"default\"];","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Much of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// Many optimizations have been made, so the bundle size is ultimately smaller but performance is similar.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\n\nvar wk = function wk(c, id, msg, transfer, cb) {\n var u = ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([c], {\n type: 'text/javascript'\n })));\n var w = new Worker(u);\n\n w.onerror = function (e) {\n return cb(e.error, null);\n };\n\n w.onmessage = function (e) {\n return cb(null, e.data);\n };\n\n w.postMessage(msg, transfer);\n return w;\n}; // aliases for shorter compressed code (most minifers don't do this)\n\n\nvar u8 = Uint8Array,\n u16 = Uint16Array,\n u32 = Uint32Array; // fixed length extra bits\n\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0,\n/* unused */\n0, 0,\n/* impossible */\n0]); // fixed distance extra bits\n// see fleb note\n\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13,\n/* unused */\n0, 0]); // code length index map\n\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); // get base, reverse index map from extra bits\n\nvar freb = function freb(eb, start) {\n var b = new u16(31);\n\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n } // numbers here are at max 18 bits\n\n\n var r = new u32(b[30]);\n\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = j - b[i] << 5 | i;\n }\n }\n\n return [b, r];\n};\n\nvar _a = freb(fleb, 2),\n fl = _a[0],\n revfl = _a[1]; // we can ignore the fact that the other numbers are wrong; they never happen anyway\n\n\nfl[28] = 258, revfl[258] = 28;\n\nvar _b = freb(fdeb, 0),\n fd = _b[0],\n revfd = _b[1]; // map of value to reverse (assuming 16 bits)\n\n\nvar rev = new u16(32768);\n\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = (i & 0xAAAA) >>> 1 | (i & 0x5555) << 1;\n x = (x & 0xCCCC) >>> 2 | (x & 0x3333) << 2;\n x = (x & 0xF0F0) >>> 4 | (x & 0x0F0F) << 4;\n rev[i] = ((x & 0xFF00) >>> 8 | (x & 0x00FF) << 8) >>> 1;\n} // create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\n\n\nvar hMap = function hMap(cd, mb, r) {\n var s = cd.length; // index\n\n var i = 0; // u16 \"map\": index -> # of codes with bit length = index\n\n var l = new u16(mb); // length of cd must be 288 (total # of codes)\n\n for (; i < s; ++i) {\n ++l[cd[i] - 1];\n } // u16 \"map\": index -> minimum code for bit length = index\n\n\n var le = new u16(mb);\n\n for (i = 0; i < mb; ++i) {\n le[i] = le[i - 1] + l[i - 1] << 1;\n }\n\n var co;\n\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb); // bits to remove for reverser\n\n var rvb = 15 - mb;\n\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = i << 4 | cd[i]; // free bits\n\n var r_1 = mb - cd[i]; // start value\n\n var v = le[cd[i] - 1]++ << r_1; // m is end value\n\n for (var m = v | (1 << r_1) - 1; v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n } else {\n co = new u16(s);\n\n for (i = 0; i < s; ++i) {\n co[i] = rev[le[cd[i] - 1]++] >>> 15 - cd[i];\n }\n }\n\n return co;\n}; // fixed length tree\n\n\nvar flt = new u8(288);\n\nfor (var i = 0; i < 144; ++i) {\n flt[i] = 8;\n}\n\nfor (var i = 144; i < 256; ++i) {\n flt[i] = 9;\n}\n\nfor (var i = 256; i < 280; ++i) {\n flt[i] = 7;\n}\n\nfor (var i = 280; i < 288; ++i) {\n flt[i] = 8;\n} // fixed distance tree\n\n\nvar fdt = new u8(32);\n\nfor (var i = 0; i < 32; ++i) {\n fdt[i] = 5;\n} // fixed length map\n\n\nvar flm = /*#__PURE__*/hMap(flt, 9, 0),\n flrm = /*#__PURE__*/hMap(flt, 9, 1); // fixed distance map\n\nvar fdm = /*#__PURE__*/hMap(fdt, 5, 0),\n fdrm = /*#__PURE__*/hMap(fdt, 5, 1); // find max of array\n\nvar max = function max(a) {\n var m = a[0];\n\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m) m = a[i];\n }\n\n return m;\n}; // read d, starting at bit p and mask with m\n\n\nvar bits = function bits(d, p, m) {\n var o = p / 8 >> 0;\n return (d[o] | d[o + 1] << 8) >>> (p & 7) & m;\n}; // read d, starting at bit p continuing for at least 16 bits\n\n\nvar bits16 = function bits16(d, p) {\n var o = p / 8 >> 0;\n return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >>> (p & 7);\n}; // get end of byte\n\n\nvar shft = function shft(p) {\n return (p / 8 >> 0) + (p & 7 && 1);\n}; // typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\n\n\nvar slc = function slc(v, s, e) {\n if (s == null || s < 0) s = 0;\n if (e == null || e > v.length) e = v.length; // can't use .constructor in case user-supplied\n\n var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n}; // expands raw DEFLATE data\n\n\nvar inflt = function inflt(dat, buf, st) {\n // source length\n var sl = dat.length; // have to estimate size\n\n var noBuf = !buf || st; // no state\n\n var noSt = !st || st.i;\n if (!st) st = {}; // Assumes roughly 33% compression ratio average\n\n if (!buf) buf = new u8(sl * 3); // ensure buffer can fit at least l elements\n\n var cbuf = function cbuf(l) {\n var bl = buf.length; // need to increase size to fit\n\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n }; // last chunk bitpos bytes\n\n\n var final = st.f || 0,\n pos = st.p || 0,\n bt = st.b || 0,\n lm = st.l,\n dm = st.d,\n lbt = st.m,\n dbt = st.n; // total bits\n\n var tbts = sl * 8;\n\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n st.f = final = bits(dat, pos, 1); // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4,\n l = dat[s - 4] | dat[s - 3] << 8,\n t = s + l;\n\n if (t > sl) {\n if (noSt) throw 'unexpected EOF';\n break;\n } // ensure size\n\n\n if (noBuf) cbuf(bt + l); // Copy over uncompressed data\n\n buf.set(dat.subarray(s, t), bt); // Get new bitpos, update byte count\n\n st.b = bt += l, st.p = pos = t * 8;\n continue;\n } else if (type == 1) lm = flrm, dm = fdrm, lbt = 9, dbt = 5;else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257,\n hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14; // length+distance tree\n\n var ldt = new u8(tl); // code length tree\n\n var clt = new u8(19);\n\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n\n pos += hcLen * 3; // code lengths bits\n\n var clb = max(clt),\n clbmsk = (1 << clb) - 1;\n if (!noSt && pos + tl * (clb + 7) > tbts) break; // code lengths map\n\n var clm = hMap(clt, clb, 1);\n\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)]; // bits read\n\n pos += r & 15; // symbol\n\n var s = r >>> 4; // code length to copy\n\n if (s < 16) {\n ldt[i++] = s;\n } else {\n // copy count\n var c = 0,\n n = 0;\n if (s == 16) n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];else if (s == 17) n = 3 + bits(dat, pos, 7), pos += 3;else if (s == 18) n = 11 + bits(dat, pos, 127), pos += 7;\n\n while (n--) {\n ldt[i++] = c;\n }\n }\n } // length tree distance tree\n\n\n var lt = ldt.subarray(0, hLit),\n dt = ldt.subarray(hLit); // max length bits\n\n lbt = max(lt); // max dist bits\n\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n } else throw 'invalid block type';\n\n if (pos > tbts) throw 'unexpected EOF';\n } // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17;\n\n\n if (noBuf) cbuf(bt + 131072);\n var lms = (1 << lbt) - 1,\n dms = (1 << dbt) - 1;\n var mxa = lbt + dbt + 18;\n\n while (noSt || pos + mxa < tbts) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms],\n sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts) throw 'unexpected EOF';\n if (!c) throw 'invalid length/literal';\n if (sym < 256) buf[bt++] = sym;else if (sym == 256) {\n lm = null;\n break;\n } else {\n var add = sym - 254; // no extra bits needed if less\n\n if (sym > 264) {\n // index\n var i = sym - 257,\n b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n } // dist\n\n\n var d = dm[bits16(dat, pos) & dms],\n dsym = d >>> 4;\n if (!d) throw 'invalid distance';\n pos += d & 15;\n var dt = fd[dsym];\n\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n\n if (pos > tbts) throw 'unexpected EOF';\n if (noBuf) cbuf(bt + 131072);\n var end = bt + add;\n\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n\n bt = end;\n }\n }\n\n st.l = lm, st.p = pos, st.b = bt;\n if (lm) final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n\n return bt == buf.length ? buf : slc(buf, 0, bt);\n}; // starting at p, write the minimum number of bits that can hold v to d\n\n\nvar wbits = function wbits(d, p, v) {\n v <<= p & 7;\n var o = p / 8 >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n}; // starting at p, write the minimum number of bits (>8) that can hold v to d\n\n\nvar wbits16 = function wbits16(d, p, v) {\n v <<= p & 7;\n var o = p / 8 >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n}; // creates code lengths from a frequency table\n\n\nvar hTree = function hTree(d, mb) {\n // Need extra info to make a tree\n var t = [];\n\n for (var i = 0; i < d.length; ++i) {\n if (d[i]) t.push({\n s: i,\n f: d[i]\n });\n }\n\n var s = t.length;\n var t2 = t.slice();\n if (!s) return [new u8(0), 0];\n\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n\n t.sort(function (a, b) {\n return a.f - b.f;\n }); // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n\n t.push({\n s: -1,\n f: 25001\n });\n var l = t[0],\n r = t[1],\n i0 = 0,\n i1 = 1,\n i2 = 2;\n t[0] = {\n s: -1,\n f: l.f + r.f,\n l: l,\n r: r\n }; // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = {\n s: -1,\n f: l.f + r.f,\n l: l,\n r: r\n };\n }\n\n var maxSym = t2[0].s;\n\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym) maxSym = t2[i].s;\n } // code lengths\n\n\n var tr = new u16(maxSym + 1); // max bits in tree\n\n var mbt = ln(t[i1 - 1], tr, 0);\n\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0,\n dt = 0; // left cost\n\n var lft = mbt - mb,\n cst = 1 << lft;\n t2.sort(function (a, b) {\n return tr[b.s] - tr[a.s] || a.f - b.f;\n });\n\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n\n if (tr[i2_1] > mb) {\n dt += cst - (1 << mbt - tr[i2_1]);\n tr[i2_1] = mb;\n } else break;\n }\n\n dt >>>= lft;\n\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb) dt -= 1 << mb - tr[i2_2]++ - 1;else ++i;\n }\n\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n\n mbt = mb;\n }\n\n return [new u8(tr), mbt];\n}; // get the max length and assign length codes\n\n\nvar ln = function ln(n, l, d) {\n return n.s == -1 ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) : l[n.s] = d;\n}; // length codes generation\n\n\nvar lc = function lc(c) {\n var s = c.length; // Note that the semicolon was intentional\n\n while (s && !c[--s]) {\n ;\n }\n\n var cl = new u16(++s); // ind num streak\n\n var cli = 0,\n cln = c[0],\n cls = 1;\n\n var w = function w(v) {\n cl[cli++] = v;\n };\n\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s) ++cls;else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138) {\n w(32754);\n }\n\n if (cls > 2) {\n w(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);\n cls = 0;\n }\n } else if (cls > 3) {\n w(cln), --cls;\n\n for (; cls > 6; cls -= 6) {\n w(8304);\n }\n\n if (cls > 2) w(cls - 3 << 5 | 8208), cls = 0;\n }\n\n while (cls--) {\n w(cln);\n }\n\n cls = 1;\n cln = c[i];\n }\n }\n\n return [cl.subarray(0, cli), s];\n}; // calculate the length of output from tree, code lengths\n\n\nvar clen = function clen(cf, cl) {\n var l = 0;\n\n for (var i = 0; i < cl.length; ++i) {\n l += cf[i] * cl[i];\n }\n\n return l;\n}; // writes a fixed block\n// returns the new bit pos\n\n\nvar wfblk = function wfblk(out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n\n for (var i = 0; i < s; ++i) {\n out[o + i + 4] = dat[i];\n }\n\n return (o + 4 + s) * 8;\n}; // writes a block\n\n\nvar wblk = function wblk(dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n\n var _a = hTree(lf, 15),\n dlt = _a[0],\n mlb = _a[1];\n\n var _b = hTree(df, 15),\n ddt = _b[0],\n mdb = _b[1];\n\n var _c = lc(dlt),\n lclt = _c[0],\n nlc = _c[1];\n\n var _d = lc(ddt),\n lcdt = _d[0],\n ndc = _d[1];\n\n var lcfreq = new u16(19);\n\n for (var i = 0; i < lclt.length; ++i) {\n lcfreq[lclt[i] & 31]++;\n }\n\n for (var i = 0; i < lcdt.length; ++i) {\n lcfreq[lcdt[i] & 31]++;\n }\n\n var _e = hTree(lcfreq, 7),\n lct = _e[0],\n mlcb = _e[1];\n\n var nlcc = 19;\n\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc) {\n ;\n }\n\n var flen = bl + 5 << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen) return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n\n for (var i = 0; i < nlcc; ++i) {\n wbits(out, p + 3 * i, lct[clim[i]]);\n }\n\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15) wbits(out, p, clct[i] >>> 5 & 127), p += clct[i] >>> 12;\n }\n }\n } else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = syms[i] >>> 18 & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7) wbits(out, p, syms[i] >>> 23 & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3) wbits16(out, p, syms[i] >>> 5 & 8191), p += fdeb[dst];\n } else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n\n wbits16(out, p, lm[256]);\n return p + ll[256];\n}; // deflate options (nice << 13) | chain\n\n\nvar deo = /*#__PURE__*/new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]); // empty\n\nvar et = /*#__PURE__*/new u8(0); // compresses data into a raw DEFLATE buffer\n\nvar dflt = function dflt(dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.floor(s / 7000)) + post); // writing to this writes to the output buffer\n\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n // end\n var e = i + 65535;\n\n if (e < s) {\n // write full block\n pos = wfblk(w, pos, dat.subarray(i, e));\n } else {\n // write final block\n w[i] = lst;\n pos = wfblk(w, pos, dat.subarray(i, s));\n }\n }\n } else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13,\n c = opt & 8191;\n var msk_1 = (1 << plvl) - 1; // prev 2-byte val map curr 2-byte val map\n\n var prev = new u16(32768),\n head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3),\n bs2_1 = 2 * bs1_1;\n\n var hsh = function hsh(i) {\n return (dat[i] ^ dat[i + 1] << bs1_1 ^ dat[i + 2] << bs2_1) & msk_1;\n }; // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n\n\n var syms = new u32(25000); // length/literal freq distance freq\n\n var lf = new u16(288),\n df = new u16(32); // l/lcnt exbits index l/lind waitdx bitpos\n\n var lc_1 = 0,\n eb = 0,\n i = 0,\n li = 0,\n wi = 0,\n bs = 0;\n\n for (; i < s; ++i) {\n // hash value\n var hv = hsh(i); // index mod 32768\n\n var imod = i & 32767; // previous index with this value\n\n var pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod; // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n\n if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n\n for (var j = 0; j < 286; ++j) {\n lf[j] = 0;\n }\n\n for (var j = 0; j < 30; ++j) {\n df[j] = 0;\n }\n } // len dist chain\n\n\n var l = 2,\n d = 0,\n ch_1 = c,\n dif = imod - pimod & 32767;\n\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i); // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n\n var ml = Math.min(258, rem);\n\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl) {\n ;\n }\n\n if (nl > l) {\n l = nl, d = dif; // break out early when we reach \"nice\" (we are satisfied enough)\n\n if (nl > maxn) break; // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j + 32768 & 32767;\n var pti = prev[ti];\n var cd = ti - pti + 32768 & 32767;\n if (cd > md) md = cd, pimod = ti;\n }\n }\n } // check the previous match\n\n\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod + 32768 & 32767;\n }\n } // d will be nonzero only when a match was found\n\n\n if (d) {\n // store both dist and len data in one Uint32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | revfl[l] << 18 | revfd[d];\n var lin = revfl[l] & 31,\n din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n } else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos); // this is the easiest way to avoid needing to maintain state\n\n if (!lst) pos = wfblk(w, pos, et);\n }\n\n return slc(o, 0, pre + shft(pos) + post);\n}; // CRC32 table\n\n\nvar crct = /*#__PURE__*/function () {\n var t = new u32(256);\n\n for (var i = 0; i < 256; ++i) {\n var c = i,\n k = 9;\n\n while (--k) {\n c = (c & 1 && 0xEDB88320) ^ c >>> 1;\n }\n\n t[i] = c;\n }\n\n return t;\n}(); // CRC32\n\n\nvar crc = function crc() {\n var c = 0xFFFFFFFF;\n return {\n p: function p(d) {\n // closures have awful performance\n var cr = c;\n\n for (var i = 0; i < d.length; ++i) {\n cr = crct[cr & 255 ^ d[i]] ^ cr >>> 8;\n }\n\n c = cr;\n },\n d: function d() {\n return c ^ 0xFFFFFFFF;\n }\n };\n}; // Alder32\n\n\nvar adler = function adler() {\n var a = 1,\n b = 0;\n return {\n p: function p(d) {\n // closures have awful performance\n var n = a,\n m = b;\n var l = d.length;\n\n for (var i = 0; i != l;) {\n var e = Math.min(i + 5552, l);\n\n for (; i < e; ++i) {\n n += d[i], m += n;\n }\n\n n %= 65521, m %= 65521;\n }\n\n a = n, b = m;\n },\n d: function d() {\n return (a >>> 8 << 16 | (b & 255) << 8 | b >>> 8) + ((a & 255) << 23) * 2;\n }\n };\n};\n\n; // deflate with opts\n\nvar dopt = function dopt(dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 12 + opt.mem, pre, post, !st);\n}; // Walmart object spread\n\n\nvar mrg = function mrg(a, b) {\n var o = {};\n\n for (var k in a) {\n o[k] = a[k];\n }\n\n for (var k in b) {\n o[k] = b[k];\n }\n\n return o;\n}; // worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\n\n\nvar wcln = function wcln(fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(',');\n\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i],\n k = ks[i];\n\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n } else {\n fnStr += st_1;\n\n for (var t in v.prototype) {\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n } else fnStr += st_1;\n } else td[k] = v;\n }\n\n return [fnStr, td];\n};\n\nvar ch = []; // clone bufs\n\nvar cbfs = function cbfs(v) {\n var tl = [];\n\n for (var k in v) {\n if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32) tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n\n return tl;\n}; // use a worker to execute code\n\n\nvar wrkr = function wrkr(fns, init, id, cb) {\n var _a;\n\n if (!ch[id]) {\n var fnStr = '',\n td_1 = {},\n m = fns.length - 1;\n\n for (var i = 0; i < m; ++i) {\n _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];\n }\n\n ch[id] = wcln(fns[m], fnStr, td_1);\n }\n\n var td = mrg({}, ch[id][1]);\n return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n}; // base async inflate fn\n\n\nvar bInflt = function bInflt() {\n return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, hMap, max, bits, bits16, shft, slc, inflt, inflateSync, pbf, gu8];\n};\n\nvar bDflt = function bDflt() {\n return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf];\n}; // gzip extra\n\n\nvar gze = function gze() {\n return [gzh, gzhl, wbytes, crc, crct];\n}; // gunzip extra\n\n\nvar guze = function guze() {\n return [gzs, gzl];\n}; // zlib extra\n\n\nvar zle = function zle() {\n return [zlh, wbytes, adler];\n}; // unzlib extra\n\n\nvar zule = function zule() {\n return [zlv];\n}; // post buf\n\n\nvar pbf = function pbf(msg) {\n return postMessage(msg, [msg.buffer]);\n}; // get u8\n\n\nvar gu8 = function gu8(o) {\n return o && o.size && new u8(o.size);\n}; // async helper\n\n\nvar cbify = function cbify(dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n if (!opts.consume) dat = new u8(dat);\n w.postMessage([dat, opts], [dat.buffer]);\n return function () {\n w.terminate();\n };\n}; // auto stream\n\n\nvar astrm = function astrm(strm) {\n strm.ondata = function (dat, final) {\n return postMessage([dat, final], [dat.buffer]);\n };\n\n return function (ev) {\n return strm.push(ev.data[0], ev.data[1]);\n };\n}; // async stream attach\n\n\nvar astrmify = function astrmify(fns, strm, opts, init, id) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err) w.terminate(), strm.ondata.call(strm, err);else {\n if (dat[1]) w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n\n strm.push = function (d, f) {\n if (t) throw 'stream finished';\n if (!strm.ondata) throw 'no stream handler';\n w.postMessage([d, t = f], [d.buffer]);\n };\n\n strm.terminate = function () {\n w.terminate();\n };\n}; // read 2 bytes\n\n\nvar b2 = function b2(d, b) {\n return d[b] | d[b + 1] << 8;\n}; // read 4 bytes\n\n\nvar b4 = function b4(d, b) {\n return (d[b] | d[b + 1] << 8 | d[b + 2] << 16) + (d[b + 3] << 23) * 2;\n}; // write bytes\n\n\nvar wbytes = function wbytes(d, b, v) {\n for (; v; ++b) {\n d[b] = v, v >>>= 8;\n }\n}; // gzip header\n\n\nvar gzh = function gzh(c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n\n if (o.mtime != 0) wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n\n if (fn) {\n c[3] = 8;\n\n for (var i = 0; i <= fn.length; ++i) {\n c[i + 10] = fn.charCodeAt(i);\n }\n }\n}; // gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\n\n\nvar gzs = function gzs(d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8) throw 'invalid gzip data';\n var flg = d[3];\n var st = 10;\n if (flg & 4) st += d[10] | (d[11] << 8) + 2;\n\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++]) {\n ;\n }\n\n return st + (flg & 2);\n}; // gzip length\n\n\nvar gzl = function gzl(d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) + 2 * (d[l - 1] << 23);\n}; // gzip header length\n\n\nvar gzhl = function gzhl(o) {\n return 10 + (o.filename && o.filename.length + 1 || 0);\n}; // zlib header\n\n\nvar zlh = function zlh(c, o) {\n var lv = o.level,\n fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = fl << 6 | (fl ? 32 - 2 * fl : 1);\n}; // zlib valid\n\n\nvar zlv = function zlv(d) {\n if ((d[0] & 15) != 8 || d[0] >>> 4 > 7 || (d[0] << 8 | d[1]) % 31) throw 'invalid zlib data';\n if (d[1] & 32) throw 'invalid zlib data: preset dictionaries not supported';\n};\n\nfunction AsyncCmpStrm(opts, cb) {\n if (!cb && typeof opts == 'function') cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n} // zlib footer: -4 to -0 is Adler32\n\n/**\n * Streaming DEFLATE compression\n */\n\n\nvar Deflate = /*#__PURE__*/function () {\n function Deflate(opts, cb) {\n if (!cb && typeof opts == 'function') cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n }\n\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, !f), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n Deflate.prototype.push = function (chunk, final) {\n if (this.d) throw 'stream finished';\n if (!this.ondata) throw 'no stream handler';\n this.d = final;\n this.p(chunk, final || false);\n };\n\n return Deflate;\n}();\n\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\n\nvar AsyncDeflate = /*#__PURE__*/function () {\n function AsyncDeflate(opts, cb) {\n astrmify([bDflt, function () {\n return [astrm, Deflate];\n }], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6);\n }\n\n return AsyncDeflate;\n}();\n\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return cbify(data, opts, [bDflt], function (ev) {\n return pbf(deflateSync(ev.data[0], ev.data[1]));\n }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\n\nexport function deflateSync(data, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return dopt(data, opts, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\n\nvar Inflate = /*#__PURE__*/function () {\n /**\n * Creates an inflation stream\n * @param cb The callback to call whenever data is inflated\n */\n function Inflate(cb) {\n this.s = {};\n this.p = new u8(0);\n this.ondata = cb;\n }\n\n Inflate.prototype.e = function (c) {\n if (this.d) throw 'stream finished';\n if (!this.ondata) throw 'no stream handler';\n var l = this.p.length;\n var n = new u8(l + c.length);\n n.set(this.p), n.set(c, l), this.p = n;\n };\n\n Inflate.prototype.c = function (final) {\n this.d = this.s.i = final || false;\n var bts = this.s.b;\n var dt = inflt(this.p, this.o, this.s);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, this.s.p / 8 >> 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n\n\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n\n return Inflate;\n}();\n\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\n\nvar AsyncInflate = /*#__PURE__*/function () {\n /**\n * Creates an asynchronous inflation stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncInflate(cb) {\n this.ondata = cb;\n astrmify([bInflt, function () {\n return [astrm, Inflate];\n }], this, 0, function () {\n var strm = new Inflate();\n onmessage = astrm(strm);\n }, 7);\n }\n\n return AsyncInflate;\n}();\n\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return cbify(data, opts, [bInflt], function (ev) {\n return pbf(inflateSync(ev.data[0], gu8(ev.data[1])));\n }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\n\nexport function inflateSync(data, out) {\n return inflt(data, out);\n} // before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n\n/**\n * Streaming GZIP compression\n */\n\nvar Gzip = /*#__PURE__*/function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n Gzip.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n\n Gzip.prototype.p = function (c, f) {\n this.c.p(c);\n this.l += c.length;\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n if (this.v) gzh(raw, this.o), this.v = 0;\n if (f) wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n\n return Gzip;\n}();\n\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\n\nvar AsyncGzip = /*#__PURE__*/function () {\n function AsyncGzip(opts, cb) {\n astrmify([bDflt, gze, function () {\n return [astrm, Deflate, Gzip];\n }], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8);\n }\n\n return AsyncGzip;\n}();\n\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return cbify(data, opts, [bDflt, gze, function () {\n return [gzipSync];\n }], function (ev) {\n return pbf(gzipSync(ev.data[0], ev.data[1]));\n }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\n\nexport function gzipSync(data, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var c = crc(),\n l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8),\n s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming GZIP decompression\n */\n\nvar Gunzip = /*#__PURE__*/function () {\n /**\n * Creates a GUNZIP stream\n * @param cb The callback to call whenever data is inflated\n */\n function Gunzip(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n\n if (this.v) {\n var s = gzs(this.p);\n if (s >= this.p.length && !final) return;\n this.p = this.p.subarray(s), this.v = 0;\n }\n\n if (final) {\n if (this.p.length < 8) throw 'invalid gzip stream';\n this.p = this.p.subarray(0, -8);\n } // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n\n\n Inflate.prototype.c.call(this, final);\n };\n\n return Gunzip;\n}();\n\nexport { Gunzip };\n/**\n * Asynchronous streaming GZIP decompression\n */\n\nvar AsyncGunzip = /*#__PURE__*/function () {\n /**\n * Creates an asynchronous GUNZIP stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncGunzip(cb) {\n this.ondata = cb;\n astrmify([bInflt, guze, function () {\n return [astrm, Inflate, Gunzip];\n }], this, 0, function () {\n var strm = new Gunzip();\n onmessage = astrm(strm);\n }, 9);\n }\n\n return AsyncGunzip;\n}();\n\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return cbify(data, opts, [bInflt, guze, function () {\n return [gunzipSync];\n }], function (ev) {\n return pbf(gunzipSync(ev.data[0]));\n }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.\n * @returns The decompressed version of the data\n */\n\nexport function gunzipSync(data, out) {\n return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));\n}\n/**\n * Streaming Zlib compression\n */\n\nvar Zlib = /*#__PURE__*/function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n Zlib.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n\n Zlib.prototype.p = function (c, f) {\n this.c.p(c);\n var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n if (this.v) zlh(raw, this.o), this.v = 0;\n if (f) wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n\n return Zlib;\n}();\n\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\n\nvar AsyncZlib = /*#__PURE__*/function () {\n function AsyncZlib(opts, cb) {\n astrmify([bDflt, zle, function () {\n return [astrm, Deflate, Zlib];\n }], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10);\n }\n\n return AsyncZlib;\n}();\n\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return cbify(data, opts, [bDflt, zle, function () {\n return [zlibSync];\n }], function (ev) {\n return pbf(zlibSync(ev.data[0], ev.data[1]));\n }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\n\nexport function zlibSync(data, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\n\nvar Unzlib = /*#__PURE__*/function () {\n /**\n * Creates a Zlib decompression stream\n * @param cb The callback to call whenever data is inflated\n */\n function Unzlib(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n\n if (this.v) {\n if (this.p.length < 2 && !final) return;\n this.p = this.p.subarray(2), this.v = 0;\n }\n\n if (final) {\n if (this.p.length < 4) throw 'invalid zlib stream';\n this.p = this.p.subarray(0, -4);\n } // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n\n\n Inflate.prototype.c.call(this, final);\n };\n\n return Unzlib;\n}();\n\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\n\nvar AsyncUnzlib = /*#__PURE__*/function () {\n /**\n * Creates an asynchronous Zlib decompression stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncUnzlib(cb) {\n this.ondata = cb;\n astrmify([bInflt, zule, function () {\n return [astrm, Inflate, Unzlib];\n }], this, 0, function () {\n var strm = new Unzlib();\n onmessage = astrm(strm);\n }, 11);\n }\n\n return AsyncUnzlib;\n}();\n\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return cbify(data, opts, [bInflt, zule, function () {\n return [unzlibSync];\n }], function (ev) {\n return pbf(unzlibSync(ev.data[0], gu8(ev.data[1])));\n }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\n\nexport function unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n} // Default algorithm for compression (used because having a known output size allows faster decompression)\n\nexport { gzip as compress, AsyncGzip as AsyncCompress }; // Default algorithm for compression (used because having a known output size allows faster decompression)\n\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\n\nvar Decompress = /*#__PURE__*/function () {\n /**\n * Creates a decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function Decompress(cb) {\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata) throw 'no stream handler';\n\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n } else this.p = chunk;\n\n if (this.p.length > 2) {\n var _this_1 = this;\n\n var cb = function cb() {\n _this_1.ondata.apply(_this_1, arguments);\n };\n\n this.s = this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8 ? new this.G(cb) : (this.p[0] & 15) != 8 || this.p[0] >> 4 > 7 || (this.p[0] << 8 | this.p[1]) % 31 ? new this.I(cb) : new this.Z(cb);\n this.s.push(this.p, final);\n this.p = null;\n }\n } else this.s.push(chunk, final);\n };\n\n return Decompress;\n}();\n\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\n\nvar AsyncDecompress = /*#__PURE__*/function () {\n /**\n * Creates an asynchronous decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function AsyncDecompress(cb) {\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n AsyncDecompress.prototype.push = function (chunk, final) {\n Decompress.prototype.push.call(this, chunk, final);\n };\n\n return AsyncDecompress;\n}();\n\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return data[0] == 31 && data[1] == 139 && data[2] == 8 ? gunzip(data, opts, cb) : (data[0] & 15) != 8 || data[0] >> 4 > 7 || (data[0] << 8 | data[1]) % 31 ? inflate(data, opts, cb) : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\n\nexport function decompressSync(data, out) {\n return data[0] == 31 && data[1] == 139 && data[2] == 8 ? gunzipSync(data, out) : (data[0] & 15) != 8 || data[0] >> 4 > 7 || (data[0] << 8 | data[1]) % 31 ? inflateSync(data, out) : unzlibSync(data, out);\n} // flatten a directory structure\n\nvar fltn = function fltn(d, p, t, o) {\n for (var k in d) {\n var val = d[k],\n n = p + k;\n if (val instanceof u8) t[n] = [val, o];else if (Array.isArray(val)) t[n] = [val[0], mrg(o, val[1])];else fltn(val, n + '/', t, o);\n }\n};\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\n\n\nexport function strToU8(str, latin1) {\n var l = str.length;\n if (!latin1 && typeof TextEncoder != 'undefined') return new TextEncoder().encode(str);\n var ar = new u8(str.length + (str.length >>> 1));\n var ai = 0;\n\n var w = function w(v) {\n ar[ai++] = v;\n };\n\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + (l - i << 1));\n n.set(ar);\n ar = n;\n }\n\n var c = str.charCodeAt(i);\n if (c < 128 || latin1) w(c);else if (c < 2048) w(192 | c >>> 6), w(128 | c & 63);else if (c > 55295 && c < 57344) c = 65536 + (c & 1023 << 10) | str.charCodeAt(++i) & 1023, w(240 | c >>> 18), w(128 | c >>> 12 & 63), w(128 | c >>> 6 & 63), w(128 | c & 63);else w(224 | c >>> 12), w(128 | c >>> 6 & 63), w(128 | c & 63);\n }\n\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\n\nexport function strFromU8(dat, latin1) {\n var r = '';\n if (!latin1 && typeof TextDecoder != 'undefined') return new TextDecoder().decode(dat);\n\n for (var i = 0; i < dat.length;) {\n var c = dat[i++];\n if (c < 128 || latin1) r += String.fromCharCode(c);else if (c < 224) r += String.fromCharCode((c & 31) << 6 | dat[i++] & 63);else if (c < 240) r += String.fromCharCode((c & 15) << 12 | (dat[i++] & 63) << 6 | dat[i++] & 63);else c = ((c & 15) << 18 | (dat[i++] & 63) << 12 | (dat[i++] & 63) << 6 | dat[i++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023);\n }\n\n return r;\n}\n; // skip local zip header\n\nvar slzh = function slzh(d, b) {\n return b + 30 + b2(d, b + 26) + b2(d, b + 28);\n}; // read zip header\n\n\nvar zh = function zh(d, b, z) {\n var fnl = b2(d, b + 28),\n fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)),\n es = b + 46 + fnl;\n\n var _a = z ? z64e(d, es) : [b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)],\n sc = _a[0],\n su = _a[1],\n off = _a[2];\n\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n}; // read zip64 extra field\n\n\nvar z64e = function z64e(d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2)) {\n ;\n }\n\n return [b4(d, b + 12), b4(d, b + 4), b4(d, b + 20)];\n}; // write zip header\n\n\nvar wzh = function wzh(d, b, c, cmp, su, fn, u, o, ce, t) {\n var fl = fn.length,\n l = cmp.length;\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null) d[b] = 20, b += 2;\n d[b] = 20, b += 2; // spec compliance? what's that?\n\n d[b++] = t == 8 && (o.level == 1 ? 6 : o.level < 6 ? 4 : o.level == 9 ? 2 : 0), d[b++] = u && 8;\n d[b] = t, b += 2;\n var dt = new Date(o.mtime || Date.now()),\n y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119) throw 'date not in range 1980-2099';\n wbytes(d, b, (y << 24) * 2 | dt.getMonth() + 1 << 21 | dt.getDate() << 16 | dt.getHours() << 11 | dt.getMinutes() << 5 | dt.getSeconds() >>> 1);\n b += 4;\n wbytes(d, b, c);\n wbytes(d, b + 4, l);\n wbytes(d, b + 8, su);\n wbytes(d, b + 12, fl), b += 16; // skip extra field, comment\n\n if (ce != null) wbytes(d, b += 10, ce), b += 4;\n d.set(fn, b);\n b += fl;\n if (ce == null) d.set(cmp, b);\n}; // write zip footer (end of central directory)\n\n\nvar wzf = function wzf(o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n\nexport function zip(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length,\n o = 0,\n tot = 0;\n var slft = lft,\n files = new Array(lft);\n var term = [];\n\n var tAll = function tAll() {\n for (var i = 0; i < term.length; ++i) {\n term[i]();\n }\n };\n\n var cbf = function cbf() {\n var out = new u8(tot + 22),\n oe = o,\n cdl = tot - o;\n tot = 0;\n\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n\n try {\n wzh(out, tot, f.c, f.d, f.m, f.n, f.u, f.p, null, f.t);\n wzh(out, o, f.c, f.d, f.m, f.n, f.u, f.p, tot, f.t), o += 46 + f.n.length, tot += 30 + f.n.length + f.d.length;\n } catch (e) {\n return cb(e, null);\n }\n }\n\n wzf(out, o, files.length, cdl, oe);\n cb(null, out);\n };\n\n if (!lft) cbf();\n\n var _loop_1 = function _loop_1(i) {\n var fn = k[i];\n var _a = r[fn],\n file = _a[0],\n p = _a[1];\n var c = crc(),\n m = file.length;\n c.p(file);\n var n = strToU8(fn),\n s = n.length;\n var t = p.level == 0 ? 0 : 8;\n\n var cbl = function cbl(e, d) {\n if (e) {\n tAll();\n cb(e, null);\n } else {\n var l = d.length;\n files[i] = {\n t: t,\n d: d,\n m: m,\n c: c.d(),\n u: fn.length != l,\n n: n,\n p: p\n };\n o += 30 + s + l;\n tot += 76 + 2 * s + l;\n if (! --lft) cbf();\n }\n };\n\n if (n.length > 65535) cbl('filename too long', null);\n if (!t) cbl(null, file);else if (m < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n } catch (e) {\n cbl(e, null);\n }\n } else term.push(deflate(file, p, cbl));\n }; // Cannot use lft because it can decrease\n\n\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\n\nexport function zipSync(data, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n\n for (var fn in r) {\n var _a = r[fn],\n file = _a[0],\n p = _a[1];\n var t = p.level == 0 ? 0 : 8;\n var n = strToU8(fn),\n s = n.length;\n if (n.length > 65535) throw 'filename too long';\n var d = t ? deflateSync(file, p) : file,\n l = d.length;\n var c = crc();\n c.p(file);\n files.push({\n t: t,\n d: d,\n m: file.length,\n c: c.d(),\n u: fn.length != s,\n n: n,\n o: o,\n p: p\n });\n o += 30 + s + l;\n tot += 76 + 2 * s + l;\n }\n\n var out = new u8(tot + 22),\n oe = o,\n cdl = tot - o;\n\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f.c, f.d, f.m, f.n, f.u, f.p, null, f.t);\n wzh(out, o, f.c, f.d, f.m, f.n, f.u, f.p, f.o, f.t), o += 46 + f.n.length;\n }\n\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Asynchronously decompresses a ZIP archive\n * @param data The raw compressed ZIP file\n * @param cb The callback to call with the decompressed files\n * @returns A function that can be used to immediately terminate the unzipping\n */\n\nexport function unzip(data, cb) {\n if (typeof cb != 'function') throw 'no callback';\n var term = [];\n\n var tAll = function tAll() {\n for (var i = 0; i < term.length; ++i) {\n term[i]();\n }\n };\n\n var files = {};\n var e = data.length - 22;\n\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cb('invalid zip file', null);\n return;\n }\n }\n\n ;\n var lft = b2(data, e + 8);\n if (!lft) cb(null, {});\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50) throw 'invalid zip file';\n c = lft = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n\n var _loop_2 = function _loop_2(i) {\n var _a = zh(data, o, z),\n c_1 = _a[0],\n sc = _a[1],\n su = _a[2],\n fn = _a[3],\n no = _a[4],\n off = _a[5],\n b = slzh(data, off);\n\n o = no;\n\n var cbl = function cbl(e, d) {\n if (e) {\n tAll();\n cb(e, null);\n } else {\n files[fn] = d;\n if (! --lft) cb(null, files);\n }\n };\n\n if (!c_1) cbl(null, slc(data, b, b + sc));else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n\n if (sc < 320000) {\n try {\n cbl(null, inflateSync(infl, new u8(su)));\n } catch (e) {\n cbl(e, null);\n }\n } else term.push(inflate(infl, {\n size: su\n }, cbl));\n } else cbl('unknown compression type ' + c_1, null);\n };\n\n for (var i = 0; i < c; ++i) {\n _loop_2(i);\n }\n\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @returns The decompressed files\n */\n\nexport function unzipSync(data) {\n var files = {};\n var e = data.length - 22;\n\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) throw 'invalid zip file';\n }\n\n ;\n var c = b2(data, e + 8);\n if (!c) return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50) throw 'invalid zip file';\n c = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z),\n c_2 = _a[0],\n sc = _a[1],\n su = _a[2],\n fn = _a[3],\n no = _a[4],\n off = _a[5],\n b = slzh(data, off);\n\n o = no;\n if (!c_2) files[fn] = slc(data, b, b + sc);else if (c_2 == 8) files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));else throw 'unknown compression type ' + c_2;\n }\n\n return files;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i; // node names which could be successful controls\n\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i; // Matches bracket notation.\n\nvar brackets = /(\\[[^\\[\\]]*\\])/g; // serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\n\nfunction serialize(form, options) {\n if (_typeof(options) != 'object') {\n options = {\n hash: !!options\n };\n } else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = options.hash ? {} : '';\n var serializer = options.serializer || (options.hash ? hash_serializer : str_serialize);\n var elements = form && form.elements ? form.elements : []; //Object store each radio and set if it's empty or not\n\n var radio_store = Object.create(null);\n\n for (var i = 0; i < elements.length; ++i) {\n var element = elements[i]; // ingore disabled fields\n\n if (!options.disabled && element.disabled || !element.name) {\n continue;\n } // ignore anyhting that is not considered a success field\n\n\n if (!k_r_success_contrls.test(element.nodeName) || k_r_submitter.test(element.type)) {\n continue;\n }\n\n var key = element.name;\n var val = element.value; // we can't just use element.value for checkboxes cause some browsers lie to us\n // they say \"on\" for value when the box isn't checked\n\n if ((element.type === 'checkbox' || element.type === 'radio') && !element.checked) {\n val = undefined;\n } // If we want empty elements\n\n\n if (options.empty) {\n // for checkbox\n if (element.type === 'checkbox' && !element.checked) {\n val = '';\n } // for radio\n\n\n if (element.type === 'radio') {\n if (!radio_store[element.name] && !element.checked) {\n radio_store[element.name] = false;\n } else if (element.checked) {\n radio_store[element.name] = true;\n }\n } // if options empty is true, continue only if its radio\n\n\n if (val == undefined && element.type == 'radio') {\n continue;\n }\n } else {\n // value-less fields are ignored unless options.empty is true\n if (!val) {\n continue;\n }\n } // multi select boxes\n\n\n if (element.type === 'select-multiple') {\n val = [];\n var selectOptions = element.options;\n var isSelectedOptions = false;\n\n for (var j = 0; j < selectOptions.length; ++j) {\n var option = selectOptions[j];\n var allowedEmpty = options.empty && !option.value;\n var hasValue = option.value || allowedEmpty;\n\n if (option.selected && hasValue) {\n isSelectedOptions = true; // If using a hash serializer be sure to add the\n // correct notation for an array in the multi-select\n // context. Here the name attribute on the select element\n // might be missing the trailing bracket pair. Both names\n // \"foo\" and \"foo[]\" should be arrays.\n\n if (options.hash && key.slice(key.length - 2) !== '[]') {\n result = serializer(result, key + '[]', option.value);\n } else {\n result = serializer(result, key, option.value);\n }\n }\n } // Serialize if no selected options and options.empty is true\n\n\n if (!isSelectedOptions && options.empty) {\n result = serializer(result, key, '');\n }\n\n continue;\n }\n\n result = serializer(result, key, val);\n } // Check for all empty radio buttons and serialize them with key=\"\"\n\n\n if (options.empty) {\n for (var key in radio_store) {\n if (!radio_store[key]) {\n result = serializer(result, key, '');\n }\n }\n }\n\n return result;\n}\n\nfunction parse_keys(string) {\n var keys = [];\n var prefix = /^([^\\[\\]]*)/;\n var children = new RegExp(brackets);\n var match = prefix.exec(string);\n\n if (match[1]) {\n keys.push(match[1]);\n }\n\n while ((match = children.exec(string)) !== null) {\n keys.push(match[1]);\n }\n\n return keys;\n}\n\nfunction hash_assign(result, keys, value) {\n if (keys.length === 0) {\n result = value;\n return result;\n }\n\n var key = keys.shift();\n var between = key.match(/^\\[(.+?)\\]$/);\n\n if (key === '[]') {\n result = result || [];\n\n if (Array.isArray(result)) {\n result.push(hash_assign(null, keys, value));\n } else {\n // This might be the result of bad name attributes like \"[][foo]\",\n // in this case the original `result` object will already be\n // assigned to an object literal. Rather than coerce the object to\n // an array, or cause an exception the attribute \"_values\" is\n // assigned as an array.\n result._values = result._values || [];\n\n result._values.push(hash_assign(null, keys, value));\n }\n\n return result;\n } // Key is an attribute name and can be assigned directly.\n\n\n if (!between) {\n result[key] = hash_assign(result[key], keys, value);\n } else {\n var string = between[1]; // +var converts the variable into a number\n // better than parseInt because it doesn't truncate away trailing\n // letters and actually fails if whole thing is not a number\n\n var index = +string; // If the characters between the brackets is not a number it is an\n // attribute name and can be assigned directly.\n\n if (isNaN(index)) {\n result = result || {};\n result[string] = hash_assign(result[string], keys, value);\n } else {\n result = result || [];\n result[index] = hash_assign(result[index], keys, value);\n }\n }\n\n return result;\n} // Object/hash encoding serializer.\n\n\nfunction hash_serializer(result, key, value) {\n var matches = key.match(brackets); // Has brackets? Use the recursive assignment function to walk the keys,\n // construct any missing objects in the result tree and make the assignment\n // at the end of the chain.\n\n if (matches) {\n var keys = parse_keys(key);\n hash_assign(result, keys, value);\n } else {\n // Non bracket notation can make assignments directly.\n var existing = result[key]; // If the value has been assigned already (for instance when a radio and\n // a checkbox have the same name attribute) convert the previous value\n // into an array before pushing into it.\n //\n // NOTE: If this requirement were removed all hash creation and\n // assignment could go through `hash_assign`.\n\n if (existing) {\n if (!Array.isArray(existing)) {\n result[key] = [existing];\n }\n\n result[key].push(value);\n } else {\n result[key] = value;\n }\n }\n\n return result;\n} // urlform encoding serializer\n\n\nfunction str_serialize(result, key, value) {\n // encode newlines as \\r\\n cause the html spec says so\n value = value.replace(/(\\r)?\\n/g, '\\r\\n');\n value = encodeURIComponent(value); // spaces should be '+' rather than '%20'.\n\n value = value.replace(/%20/g, '+');\n return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + value;\n}\n\nmodule.exports = serialize;","import _extends from '@babel/runtime/helpers/esm/extends';\nvar r,\n B = r || (r = {});\nB.Pop = \"POP\";\nB.Push = \"PUSH\";\nB.Replace = \"REPLACE\";\nvar C = \"production\" !== process.env.NODE_ENV ? function (b) {\n return Object.freeze(b);\n} : function (b) {\n return b;\n};\n\nfunction D(b, h) {\n if (!b) {\n \"undefined\" !== typeof console && console.warn(h);\n\n try {\n throw Error(h);\n } catch (e) {}\n }\n}\n\nfunction E(b) {\n b.preventDefault();\n b.returnValue = \"\";\n}\n\nfunction F() {\n var b = [];\n return {\n get length() {\n return b.length;\n },\n\n push: function push(h) {\n b.push(h);\n return function () {\n b = b.filter(function (e) {\n return e !== h;\n });\n };\n },\n call: function call(h) {\n b.forEach(function (e) {\n return e && e(h);\n });\n }\n };\n}\n\nfunction H() {\n return Math.random().toString(36).substr(2, 8);\n}\n\nfunction I(b) {\n var h = b.pathname;\n h = void 0 === h ? \"/\" : h;\n var e = b.search;\n e = void 0 === e ? \"\" : e;\n b = b.hash;\n b = void 0 === b ? \"\" : b;\n e && \"?\" !== e && (h += \"?\" === e.charAt(0) ? e : \"?\" + e);\n b && \"#\" !== b && (h += \"#\" === b.charAt(0) ? b : \"#\" + b);\n return h;\n}\n\nfunction J(b) {\n var h = {};\n\n if (b) {\n var e = b.indexOf(\"#\");\n 0 <= e && (h.hash = b.substr(e), b = b.substr(0, e));\n e = b.indexOf(\"?\");\n 0 <= e && (h.search = b.substr(e), b = b.substr(0, e));\n b && (h.pathname = b);\n }\n\n return h;\n}\n\nfunction createBrowserHistory(b) {\n function h() {\n var c = p.location,\n a = m.state || {};\n return [a.idx, C({\n pathname: c.pathname,\n search: c.search,\n hash: c.hash,\n state: a.usr || null,\n key: a.key || \"default\"\n })];\n }\n\n function e(c) {\n return \"string\" === typeof c ? c : I(c);\n }\n\n function x(c, a) {\n void 0 === a && (a = null);\n return C(_extends({\n pathname: q.pathname,\n hash: \"\",\n search: \"\"\n }, \"string\" === typeof c ? J(c) : c, {\n state: a,\n key: H()\n }));\n }\n\n function z(c) {\n t = c;\n c = h();\n v = c[0];\n q = c[1];\n d.call({\n action: t,\n location: q\n });\n }\n\n function A(c, a) {\n function f() {\n A(c, a);\n }\n\n var l = r.Push,\n k = x(c, a);\n\n if (!g.length || (g.call({\n action: l,\n location: k,\n retry: f\n }), !1)) {\n var n = [{\n usr: k.state,\n key: k.key,\n idx: v + 1\n }, e(k)];\n k = n[0];\n n = n[1];\n\n try {\n m.pushState(k, \"\", n);\n } catch (G) {\n p.location.assign(n);\n }\n\n z(l);\n }\n }\n\n function y(c, a) {\n function f() {\n y(c, a);\n }\n\n var l = r.Replace,\n k = x(c, a);\n g.length && (g.call({\n action: l,\n location: k,\n retry: f\n }), 1) || (k = [{\n usr: k.state,\n key: k.key,\n idx: v\n }, e(k)], m.replaceState(k[0], \"\", k[1]), z(l));\n }\n\n function w(c) {\n m.go(c);\n }\n\n void 0 === b && (b = {});\n b = b.window;\n var p = void 0 === b ? document.defaultView : b,\n m = p.history,\n u = null;\n p.addEventListener(\"popstate\", function () {\n if (u) g.call(u), u = null;else {\n var c = r.Pop,\n a = h(),\n f = a[0];\n a = a[1];\n if (g.length) {\n if (null != f) {\n var l = v - f;\n l && (u = {\n action: c,\n location: a,\n retry: function retry() {\n w(-1 * l);\n }\n }, w(l));\n } else \"production\" !== process.env.NODE_ENV ? D(!1, \"You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation.\") : void 0;\n } else z(c);\n }\n });\n var t = r.Pop;\n b = h();\n var v = b[0],\n q = b[1],\n d = F(),\n g = F();\n null == v && (v = 0, m.replaceState(_extends({}, m.state, {\n idx: v\n }), \"\"));\n return {\n get action() {\n return t;\n },\n\n get location() {\n return q;\n },\n\n createHref: e,\n push: A,\n replace: y,\n go: w,\n back: function back() {\n w(-1);\n },\n forward: function forward() {\n w(1);\n },\n listen: function listen(c) {\n return d.push(c);\n },\n block: function block(c) {\n var a = g.push(c);\n 1 === g.length && p.addEventListener(\"beforeunload\", E);\n return function () {\n a();\n g.length || p.removeEventListener(\"beforeunload\", E);\n };\n }\n };\n}\n\n;\n\nfunction createHashHistory(b) {\n function h() {\n var a = J(m.location.hash.substr(1)),\n f = a.pathname,\n l = a.search;\n a = a.hash;\n var k = u.state || {};\n return [k.idx, C({\n pathname: void 0 === f ? \"/\" : f,\n search: void 0 === l ? \"\" : l,\n hash: void 0 === a ? \"\" : a,\n state: k.usr || null,\n key: k.key || \"default\"\n })];\n }\n\n function e() {\n if (t) c.call(t), t = null;else {\n var a = r.Pop,\n f = h(),\n l = f[0];\n f = f[1];\n if (c.length) {\n if (null != l) {\n var k = q - l;\n k && (t = {\n action: a,\n location: f,\n retry: function retry() {\n p(-1 * k);\n }\n }, p(k));\n } else \"production\" !== process.env.NODE_ENV ? D(!1, \"You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation.\") : void 0;\n } else A(a);\n }\n }\n\n function x(a) {\n var f = document.querySelector(\"base\"),\n l = \"\";\n f && f.getAttribute(\"href\") && (f = m.location.href, l = f.indexOf(\"#\"), l = -1 === l ? f : f.slice(0, l));\n return l + \"#\" + (\"string\" === typeof a ? a : I(a));\n }\n\n function z(a, f) {\n void 0 === f && (f = null);\n return C(_extends({\n pathname: d.pathname,\n hash: \"\",\n search: \"\"\n }, \"string\" === typeof a ? J(a) : a, {\n state: f,\n key: H()\n }));\n }\n\n function A(a) {\n v = a;\n a = h();\n q = a[0];\n d = a[1];\n g.call({\n action: v,\n location: d\n });\n }\n\n function y(a, f) {\n function l() {\n y(a, f);\n }\n\n var k = r.Push,\n n = z(a, f);\n \"production\" !== process.env.NODE_ENV ? D(\"/\" === n.pathname.charAt(0), \"Relative pathnames are not supported in hash history.push(\" + JSON.stringify(a) + \")\") : void 0;\n\n if (!c.length || (c.call({\n action: k,\n location: n,\n retry: l\n }), !1)) {\n var G = [{\n usr: n.state,\n key: n.key,\n idx: q + 1\n }, x(n)];\n n = G[0];\n G = G[1];\n\n try {\n u.pushState(n, \"\", G);\n } catch (K) {\n m.location.assign(G);\n }\n\n A(k);\n }\n }\n\n function w(a, f) {\n function l() {\n w(a, f);\n }\n\n var k = r.Replace,\n n = z(a, f);\n \"production\" !== process.env.NODE_ENV ? D(\"/\" === n.pathname.charAt(0), \"Relative pathnames are not supported in hash history.replace(\" + JSON.stringify(a) + \")\") : void 0;\n c.length && (c.call({\n action: k,\n location: n,\n retry: l\n }), 1) || (n = [{\n usr: n.state,\n key: n.key,\n idx: q\n }, x(n)], u.replaceState(n[0], \"\", n[1]), A(k));\n }\n\n function p(a) {\n u.go(a);\n }\n\n void 0 === b && (b = {});\n b = b.window;\n var m = void 0 === b ? document.defaultView : b,\n u = m.history,\n t = null;\n m.addEventListener(\"popstate\", e);\n m.addEventListener(\"hashchange\", function () {\n var a = h()[1];\n I(a) !== I(d) && e();\n });\n var v = r.Pop;\n b = h();\n var q = b[0],\n d = b[1],\n g = F(),\n c = F();\n null == q && (q = 0, u.replaceState(_extends({}, u.state, {\n idx: q\n }), \"\"));\n return {\n get action() {\n return v;\n },\n\n get location() {\n return d;\n },\n\n createHref: x,\n push: y,\n replace: w,\n go: p,\n back: function back() {\n p(-1);\n },\n forward: function forward() {\n p(1);\n },\n listen: function listen(a) {\n return g.push(a);\n },\n block: function block(a) {\n var f = c.push(a);\n 1 === c.length && m.addEventListener(\"beforeunload\", E);\n return function () {\n f();\n c.length || m.removeEventListener(\"beforeunload\", E);\n };\n }\n };\n}\n\n;\n\nfunction createMemoryHistory(b) {\n function h(d, g) {\n void 0 === g && (g = null);\n return C(_extends({\n pathname: t.pathname,\n search: \"\",\n hash: \"\"\n }, \"string\" === typeof d ? J(d) : d, {\n state: g,\n key: H()\n }));\n }\n\n function e(d, g, c) {\n return !q.length || (q.call({\n action: d,\n location: g,\n retry: c\n }), !1);\n }\n\n function x(d, g) {\n u = d;\n t = g;\n v.call({\n action: u,\n location: t\n });\n }\n\n function z(d, g) {\n var c = r.Push,\n a = h(d, g);\n \"production\" !== process.env.NODE_ENV ? D(\"/\" === t.pathname.charAt(0), \"Relative pathnames are not supported in memory history.push(\" + JSON.stringify(d) + \")\") : void 0;\n e(c, a, function () {\n z(d, g);\n }) && (m += 1, p.splice(m, p.length, a), x(c, a));\n }\n\n function A(d, g) {\n var c = r.Replace,\n a = h(d, g);\n \"production\" !== process.env.NODE_ENV ? D(\"/\" === t.pathname.charAt(0), \"Relative pathnames are not supported in memory history.replace(\" + JSON.stringify(d) + \")\") : void 0;\n e(c, a, function () {\n A(d, g);\n }) && (p[m] = a, x(c, a));\n }\n\n function y(d) {\n var g = Math.min(Math.max(m + d, 0), p.length - 1),\n c = r.Pop,\n a = p[g];\n e(c, a, function () {\n y(d);\n }) && (m = g, x(c, a));\n }\n\n void 0 === b && (b = {});\n var w = b;\n b = w.initialEntries;\n w = w.initialIndex;\n var p = (void 0 === b ? [\"/\"] : b).map(function (d) {\n var g = C(_extends({\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: H()\n }, \"string\" === typeof d ? J(d) : d));\n \"production\" !== process.env.NODE_ENV ? D(\"/\" === g.pathname.charAt(0), \"Relative pathnames are not supported in createMemoryHistory({ initialEntries }) (invalid entry: \" + JSON.stringify(d) + \")\") : void 0;\n return g;\n }),\n m = Math.min(Math.max(null == w ? p.length - 1 : w, 0), p.length - 1),\n u = r.Pop,\n t = p[m],\n v = F(),\n q = F();\n return {\n get index() {\n return m;\n },\n\n get action() {\n return u;\n },\n\n get location() {\n return t;\n },\n\n createHref: function createHref(d) {\n return \"string\" === typeof d ? d : I(d);\n },\n push: z,\n replace: A,\n go: y,\n back: function back() {\n y(-1);\n },\n forward: function forward() {\n y(1);\n },\n listen: function listen(d) {\n return v.push(d);\n },\n block: function block(d) {\n return q.push(d);\n }\n };\n}\n\n;\nexport { r as Action, createBrowserHistory, createHashHistory, createMemoryHistory, I as createPath, J as parsePath };","'use strict';\n\nvar reactIs = require('react-is');\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * html2canvas 1.3.2 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.html2canvas = factory());\n})(this, function () {\n 'use strict';\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\n\n /* global Reflect, Promise */\n\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n }\n\n var _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n };\n\n function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n }\n\n function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n }\n\n function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || from);\n }\n\n var Bounds =\n /** @class */\n function () {\n function Bounds(left, top, width, height) {\n this.left = left;\n this.top = top;\n this.width = width;\n this.height = height;\n }\n\n Bounds.prototype.add = function (x, y, w, h) {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n };\n\n Bounds.fromClientRect = function (context, clientRect) {\n return new Bounds(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);\n };\n\n Bounds.fromDOMRectList = function (context, domRectList) {\n var domRect = domRectList[0];\n return domRect ? new Bounds(domRect.x + context.windowBounds.left, domRect.y + context.windowBounds.top, domRect.width, domRect.height) : Bounds.EMPTY;\n };\n\n Bounds.EMPTY = new Bounds(0, 0, 0, 0);\n return Bounds;\n }();\n\n var parseBounds = function parseBounds(context, node) {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n };\n\n var parseDocumentSize = function parseDocumentSize(document) {\n var body = document.body;\n var documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(\"Unable to get document size\");\n }\n\n var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));\n var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));\n return new Bounds(0, 0, width, height);\n };\n /*\n * css-line-break 2.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\n\n\n var toCodePoints$1 = function toCodePoints$1(str) {\n var codePoints = [];\n var i = 0;\n var length = str.length;\n\n while (i < length) {\n var value = str.charCodeAt(i++);\n\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n var extra = str.charCodeAt(i++);\n\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n\n return codePoints;\n };\n\n var fromCodePoint$1 = function fromCodePoint$1() {\n var codePoints = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n\n if (String.fromCodePoint) {\n return String.fromCodePoint.apply(String, codePoints);\n }\n\n var length = codePoints.length;\n\n if (!length) {\n return '';\n }\n\n var codeUnits = [];\n var index = -1;\n var result = '';\n\n while (++index < length) {\n var codePoint = codePoints[index];\n\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);\n }\n\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode.apply(String, codeUnits);\n codeUnits.length = 0;\n }\n }\n\n return result;\n };\n\n var chars$2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.\n\n var lookup$2 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n\n for (var i$2 = 0; i$2 < chars$2.length; i$2++) {\n lookup$2[chars$2.charCodeAt(i$2)] = i$2;\n }\n\n var decode$1 = function decode$1(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && typeof Uint8Array.prototype.slice !== 'undefined' ? new ArrayBuffer(bufferLength) : new Array(bufferLength);\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup$2[base64.charCodeAt(i)];\n encoded2 = lookup$2[base64.charCodeAt(i + 1)];\n encoded3 = lookup$2[base64.charCodeAt(i + 2)];\n encoded4 = lookup$2[base64.charCodeAt(i + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n\n return buffer;\n };\n\n var polyUint16Array$1 = function polyUint16Array$1(buffer) {\n var length = buffer.length;\n var bytes = [];\n\n for (var i = 0; i < length; i += 2) {\n bytes.push(buffer[i + 1] << 8 | buffer[i]);\n }\n\n return bytes;\n };\n\n var polyUint32Array$1 = function polyUint32Array$1(buffer) {\n var length = buffer.length;\n var bytes = [];\n\n for (var i = 0; i < length; i += 4) {\n bytes.push(buffer[i + 3] << 24 | buffer[i + 2] << 16 | buffer[i + 1] << 8 | buffer[i]);\n }\n\n return bytes;\n };\n /** Shift size for getting the index-2 table offset. */\n\n\n var UTRIE2_SHIFT_2$1 = 5;\n /** Shift size for getting the index-1 table offset. */\n\n var UTRIE2_SHIFT_1$1 = 6 + 5;\n /**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\n\n var UTRIE2_INDEX_SHIFT$1 = 2;\n /**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\n\n var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;\n /**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\n\n var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1;\n /** Number of entries in a data block. 32=0x20 */\n\n var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;\n /** Mask for getting the lower bits for the in-data-block offset. */\n\n var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;\n var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1;\n /** Count the lengths of both BMP pieces. 2080=0x820 */\n\n var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;\n /**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\n\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 0x800 >> 6;\n /* U+0800 is the first code point after 2-byte UTF-8 */\n\n /**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\n\n var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;\n /**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\n\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 0x10000 >> UTRIE2_SHIFT_1$1;\n /** Number of entries in an index-2 block. 64=0x40 */\n\n var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;\n /** Mask for getting the lower bits for the in-index-2-block offset. */\n\n var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;\n\n var slice16$1 = function slice16$1(view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n };\n\n var slice32$1 = function slice32$1(view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n };\n\n var createTrieFromBase64$1 = function createTrieFromBase64$1(base64) {\n var buffer = decode$1(base64);\n var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);\n var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);\n var headerLength = 24;\n var index = slice16$1(view16, headerLength / 2, view32[4] / 2);\n var data = view32[5] === 2 ? slice16$1(view16, (headerLength + view32[4]) / 2) : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));\n return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);\n };\n\n var Trie$1 =\n /** @class */\n function () {\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n\n\n Trie.prototype.get = function (codePoint) {\n var ix;\n\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || codePoint > 0x0dbff && codePoint <= 0x0ffff) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + (codePoint - 0xd800 >> UTRIE2_SHIFT_2$1)];\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);\n ix = this.index[ix];\n ix += codePoint >> UTRIE2_SHIFT_2$1 & UTRIE2_INDEX_2_MASK$1;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\n return this.data[ix];\n }\n\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n } // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n\n\n return this.errorValue;\n };\n\n return Trie;\n }();\n\n var base64$1 = 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\n /* @flow */\n\n var LETTER_NUMBER_MODIFIER = 50; // Non-tailorable Line Breaking Classes\n\n var BK = 1; // Cause a line break (after)\n\n var CR$1 = 2; // Cause a line break (after), except between CR and LF\n\n var LF$1 = 3; // Cause a line break (after)\n\n var CM = 4; // Prohibit a line break between the character and the preceding character\n\n var NL = 5; // Cause a line break (after)\n\n var WJ = 7; // Prohibit line breaks before and after\n\n var ZW = 8; // Provide a break opportunity\n\n var GL = 9; // Prohibit line breaks before and after\n\n var SP = 10; // Enable indirect line breaks\n\n var ZWJ$1 = 11; // Prohibit line breaks within joiner sequences\n // Break Opportunities\n\n var B2 = 12; // Provide a line break opportunity before and after the character\n\n var BA = 13; // Generally provide a line break opportunity after the character\n\n var BB = 14; // Generally provide a line break opportunity before the character\n\n var HY = 15; // Provide a line break opportunity after the character, except in numeric context\n\n var CB = 16; // Provide a line break opportunity contingent on additional information\n // Characters Prohibiting Certain Breaks\n\n var CL = 17; // Prohibit line breaks before\n\n var CP = 18; // Prohibit line breaks before\n\n var EX = 19; // Prohibit line breaks before\n\n var IN = 20; // Allow only indirect line breaks between pairs\n\n var NS = 21; // Allow only indirect line breaks before\n\n var OP = 22; // Prohibit line breaks after\n\n var QU = 23; // Act like they are both opening and closing\n // Numeric Context\n\n var IS = 24; // Prevent breaks after any and before numeric\n\n var NU = 25; // Form numeric expressions for line breaking purposes\n\n var PO = 26; // Do not break following a numeric expression\n\n var PR = 27; // Do not break in front of a numeric expression\n\n var SY = 28; // Prevent a break before; and allow a break after\n // Other Characters\n\n var AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\n\n var AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\n\n var CJ = 31; // Treat as NS or ID for strict or normal breaking.\n\n var EB = 32; // Do not break from following Emoji Modifier\n\n var EM = 33; // Do not break from preceding Emoji Base\n\n var H2 = 34; // Form Korean syllable blocks\n\n var H3 = 35; // Form Korean syllable blocks\n\n var HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\n\n var ID = 37; // Break before or after; except in some numeric context\n\n var JL = 38; // Form Korean syllable blocks\n\n var JV = 39; // Form Korean syllable blocks\n\n var JT = 40; // Form Korean syllable blocks\n\n var RI$1 = 41; // Keep pairs together. For pairs; break before and after other classes\n\n var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\n\n var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\n var ea_OP = [0x2329, 0xff08];\n var BREAK_MANDATORY = '!';\n var BREAK_NOT_ALLOWED$1 = '×';\n var BREAK_ALLOWED$1 = '÷';\n var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);\n var ALPHABETICS = [AL, HL];\n var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];\n var SPACE$1 = [SP, ZW];\n var PREFIX_POSTFIX = [PR, PO];\n var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);\n var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\n var HYPHEN = [HY, BA];\n\n var codePointsToCharacterClasses = function codePointsToCharacterClasses(codePoints, lineBreak) {\n if (lineBreak === void 0) {\n lineBreak = 'strict';\n }\n\n var types = [];\n var indices = [];\n var categories = [];\n codePoints.forEach(function (codePoint, index) {\n var classType = UnicodeTrie$1.get(codePoint);\n\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ$1) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n } // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n\n\n var prev = types[index - 1];\n\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n\n indices.push(index);\n return types.push(AL);\n }\n\n indices.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n } // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n\n\n if (classType === XX) {\n if (codePoint >= 0x20000 && codePoint <= 0x2fffd || codePoint >= 0x30000 && codePoint <= 0x3fffd) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n return [indices, types, categories];\n };\n\n var isAdjacentWithSpaceIgnored = function isAdjacentWithSpaceIgnored(a, b, currentIndex, classTypes) {\n var current = classTypes[currentIndex];\n\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n var i = currentIndex;\n\n while (i <= classTypes.length) {\n i++;\n var next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n var i = currentIndex;\n\n while (i > 0) {\n i--;\n var prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n var n = currentIndex;\n\n while (n <= classTypes.length) {\n n++;\n var next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n\n return false;\n };\n\n var previousNonSpaceClassType = function previousNonSpaceClassType(currentIndex, classTypes) {\n var i = currentIndex;\n\n while (i >= 0) {\n var type = classTypes[i];\n\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n\n return 0;\n };\n\n var _lineBreakAtIndex = function _lineBreakAtIndex(codePoints, classTypes, indicies, index, forbiddenBreaks) {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED$1;\n }\n\n var currentIndex = index - 1;\n\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED$1;\n }\n\n var beforeIndex = currentIndex - 1;\n var afterIndex = currentIndex + 1;\n var current = classTypes[currentIndex]; // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n\n var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n var next = classTypes[afterIndex];\n\n if (current === CR$1 && next === LF$1) {\n return BREAK_NOT_ALLOWED$1;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n } // LB6 Do not break before hard line breaks.\n\n\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n } // LB7 Do not break before spaces or zero width space.\n\n\n if (SPACE$1.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n } // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n\n\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED$1;\n } // LB8a Do not break after a zero width joiner.\n\n\n if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {\n return BREAK_NOT_ALLOWED$1;\n } // zwj emojis\n\n\n if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {\n return BREAK_NOT_ALLOWED$1;\n } // LB11 Do not break before or after Word joiner and related characters.\n\n\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED$1;\n } // LB12 Do not break after NBSP and related characters.\n\n\n if (current === GL) {\n return BREAK_NOT_ALLOWED$1;\n } // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n\n\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED$1;\n } // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n\n\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n } // LB14 Do not break after ‘[’, even after spaces.\n\n\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED$1;\n } // LB15 Do not break within ‘”[’, even with intervening spaces.\n\n\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED$1;\n } // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n\n\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED$1;\n } // LB17 Do not break within ‘——’, even with intervening spaces.\n\n\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED$1;\n } // LB18 Break after spaces.\n\n\n if (current === SP) {\n return BREAK_ALLOWED$1;\n } // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n\n\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED$1;\n } // LB20 Break before and after unresolved CB.\n\n\n if (next === CB || current === CB) {\n return BREAK_ALLOWED$1;\n } // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n\n\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED$1;\n } // LB21a Don't break after Hebrew + Hyphen.\n\n\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n } // LB21b Don’t break between Solidus and Hebrew letters.\n\n\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED$1;\n } // LB22 Do not break before ellipsis.\n\n\n if (next === IN) {\n return BREAK_NOT_ALLOWED$1;\n } // LB23 Do not break between digits and letters.\n\n\n if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) {\n return BREAK_NOT_ALLOWED$1;\n } // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n\n\n if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) {\n return BREAK_NOT_ALLOWED$1;\n } // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n\n\n if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n } // LB25 Do not break between the following pairs of classes relevant to numbers:\n\n\n if ( // (PR | PO) × ( OP | HY )? NU\n [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) || // ( OP | HY ) × NU\n [OP, HY].indexOf(current) !== -1 && next === NU || // NU ×\t(NU | SY | IS)\n current === NU && [NU, SY, IS].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n } // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n\n\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n var prevIndex = currentIndex;\n\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n\n if (type === NU) {\n return BREAK_NOT_ALLOWED$1;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n } // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n\n\n if ([PR, PO].indexOf(next) !== -1) {\n var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n\n while (prevIndex >= 0) {\n var type = classTypes[prevIndex];\n\n if (type === NU) {\n return BREAK_NOT_ALLOWED$1;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n } // LB26 Do not break a Korean syllable.\n\n\n if (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1 || [JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) {\n return BREAK_NOT_ALLOWED$1;\n } // LB27 Treat a Korean Syllable Block the same as ID.\n\n\n if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) {\n return BREAK_NOT_ALLOWED$1;\n } // LB28 Do not break between alphabetics (“at”).\n\n\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n } // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n\n\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED$1;\n } // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n\n\n if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP && ea_OP.indexOf(codePoints[afterIndex]) === -1 || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) {\n return BREAK_NOT_ALLOWED$1;\n } // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n\n\n if (current === RI$1 && next === RI$1) {\n var i = indicies[currentIndex];\n var count = 1;\n\n while (i > 0) {\n i--;\n\n if (classTypes[i] === RI$1) {\n count++;\n } else {\n break;\n }\n }\n\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED$1;\n }\n } // LB30b Do not break between an emoji base and an emoji modifier.\n\n\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED$1;\n }\n\n return BREAK_ALLOWED$1;\n };\n\n var cssFormattedClasses = function cssFormattedClasses(codePoints, options) {\n if (!options) {\n options = {\n lineBreak: 'normal',\n wordBreak: 'normal'\n };\n }\n\n var _a = codePointsToCharacterClasses(codePoints, options.lineBreak),\n indicies = _a[0],\n classTypes = _a[1],\n isLetterNumber = _a[2];\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map(function (type) {\n return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;\n });\n }\n\n var forbiddenBreakpoints = options.wordBreak === 'keep-all' ? isLetterNumber.map(function (letterNumber, i) {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n }) : undefined;\n return [indicies, classTypes, forbiddenBreakpoints];\n };\n\n var Break =\n /** @class */\n function () {\n function Break(codePoints, lineBreak, start, end) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n Break.prototype.slice = function () {\n return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));\n };\n\n return Break;\n }();\n\n var LineBreaker = function LineBreaker(str, options) {\n var codePoints = toCodePoints$1(str);\n\n var _a = cssFormattedClasses(codePoints, options),\n indicies = _a[0],\n classTypes = _a[1],\n forbiddenBreakpoints = _a[2];\n\n var length = codePoints.length;\n var lastEnd = 0;\n var nextIndex = 0;\n return {\n next: function next() {\n if (nextIndex >= length) {\n return {\n done: true,\n value: null\n };\n }\n\n var lineBreak = BREAK_NOT_ALLOWED$1;\n\n while (nextIndex < length && (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED$1) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {\n var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {\n value: value,\n done: false\n };\n }\n\n return {\n done: true,\n value: null\n };\n }\n };\n }; // https://www.w3.org/TR/css-syntax-3\n\n\n var FLAG_UNRESTRICTED = 1 << 0;\n var FLAG_ID = 1 << 1;\n var FLAG_INTEGER = 1 << 2;\n var FLAG_NUMBER = 1 << 3;\n var LINE_FEED = 0x000a;\n var SOLIDUS = 0x002f;\n var REVERSE_SOLIDUS = 0x005c;\n var CHARACTER_TABULATION = 0x0009;\n var SPACE = 0x0020;\n var QUOTATION_MARK = 0x0022;\n var EQUALS_SIGN = 0x003d;\n var NUMBER_SIGN = 0x0023;\n var DOLLAR_SIGN = 0x0024;\n var PERCENTAGE_SIGN = 0x0025;\n var APOSTROPHE = 0x0027;\n var LEFT_PARENTHESIS = 0x0028;\n var RIGHT_PARENTHESIS = 0x0029;\n var LOW_LINE = 0x005f;\n var HYPHEN_MINUS = 0x002d;\n var EXCLAMATION_MARK = 0x0021;\n var LESS_THAN_SIGN = 0x003c;\n var GREATER_THAN_SIGN = 0x003e;\n var COMMERCIAL_AT = 0x0040;\n var LEFT_SQUARE_BRACKET = 0x005b;\n var RIGHT_SQUARE_BRACKET = 0x005d;\n var CIRCUMFLEX_ACCENT = 0x003d;\n var LEFT_CURLY_BRACKET = 0x007b;\n var QUESTION_MARK = 0x003f;\n var RIGHT_CURLY_BRACKET = 0x007d;\n var VERTICAL_LINE = 0x007c;\n var TILDE = 0x007e;\n var CONTROL = 0x0080;\n var REPLACEMENT_CHARACTER = 0xfffd;\n var ASTERISK = 0x002a;\n var PLUS_SIGN = 0x002b;\n var COMMA = 0x002c;\n var COLON = 0x003a;\n var SEMICOLON = 0x003b;\n var FULL_STOP = 0x002e;\n var NULL = 0x0000;\n var BACKSPACE = 0x0008;\n var LINE_TABULATION = 0x000b;\n var SHIFT_OUT = 0x000e;\n var INFORMATION_SEPARATOR_ONE = 0x001f;\n var DELETE = 0x007f;\n var EOF = -1;\n var ZERO = 0x0030;\n var a = 0x0061;\n var e = 0x0065;\n var f = 0x0066;\n var u = 0x0075;\n var z = 0x007a;\n var A = 0x0041;\n var E = 0x0045;\n var F = 0x0046;\n var U = 0x0055;\n var Z = 0x005a;\n\n var isDigit = function isDigit(codePoint) {\n return codePoint >= ZERO && codePoint <= 0x0039;\n };\n\n var isSurrogateCodePoint = function isSurrogateCodePoint(codePoint) {\n return codePoint >= 0xd800 && codePoint <= 0xdfff;\n };\n\n var isHex = function isHex(codePoint) {\n return isDigit(codePoint) || codePoint >= A && codePoint <= F || codePoint >= a && codePoint <= f;\n };\n\n var isLowerCaseLetter = function isLowerCaseLetter(codePoint) {\n return codePoint >= a && codePoint <= z;\n };\n\n var isUpperCaseLetter = function isUpperCaseLetter(codePoint) {\n return codePoint >= A && codePoint <= Z;\n };\n\n var isLetter = function isLetter(codePoint) {\n return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\n };\n\n var isNonASCIICodePoint = function isNonASCIICodePoint(codePoint) {\n return codePoint >= CONTROL;\n };\n\n var isWhiteSpace = function isWhiteSpace(codePoint) {\n return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\n };\n\n var isNameStartCodePoint = function isNameStartCodePoint(codePoint) {\n return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\n };\n\n var isNameCodePoint = function isNameCodePoint(codePoint) {\n return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\n };\n\n var isNonPrintableCodePoint = function isNonPrintableCodePoint(codePoint) {\n return codePoint >= NULL && codePoint <= BACKSPACE || codePoint === LINE_TABULATION || codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE || codePoint === DELETE;\n };\n\n var isValidEscape = function isValidEscape(c1, c2) {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n };\n\n var isIdentifierStart = function isIdentifierStart(c1, c2, c3) {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n\n return false;\n };\n\n var isNumberStart = function isNumberStart(c1, c2, c3) {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n };\n\n var stringToNumber = function stringToNumber(codePoints) {\n var c = 0;\n var sign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n\n c++;\n }\n\n var integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n var fraction = [];\n\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n var fracd = fraction.length;\n var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n var expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n\n c++;\n }\n\n var exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n };\n\n var LEFT_PARENTHESIS_TOKEN = {\n type: 2\n /* LEFT_PARENTHESIS_TOKEN */\n\n };\n var RIGHT_PARENTHESIS_TOKEN = {\n type: 3\n /* RIGHT_PARENTHESIS_TOKEN */\n\n };\n var COMMA_TOKEN = {\n type: 4\n /* COMMA_TOKEN */\n\n };\n var SUFFIX_MATCH_TOKEN = {\n type: 13\n /* SUFFIX_MATCH_TOKEN */\n\n };\n var PREFIX_MATCH_TOKEN = {\n type: 8\n /* PREFIX_MATCH_TOKEN */\n\n };\n var COLUMN_TOKEN = {\n type: 21\n /* COLUMN_TOKEN */\n\n };\n var DASH_MATCH_TOKEN = {\n type: 9\n /* DASH_MATCH_TOKEN */\n\n };\n var INCLUDE_MATCH_TOKEN = {\n type: 10\n /* INCLUDE_MATCH_TOKEN */\n\n };\n var LEFT_CURLY_BRACKET_TOKEN = {\n type: 11\n /* LEFT_CURLY_BRACKET_TOKEN */\n\n };\n var RIGHT_CURLY_BRACKET_TOKEN = {\n type: 12\n /* RIGHT_CURLY_BRACKET_TOKEN */\n\n };\n var SUBSTRING_MATCH_TOKEN = {\n type: 14\n /* SUBSTRING_MATCH_TOKEN */\n\n };\n var BAD_URL_TOKEN = {\n type: 23\n /* BAD_URL_TOKEN */\n\n };\n var BAD_STRING_TOKEN = {\n type: 1\n /* BAD_STRING_TOKEN */\n\n };\n var CDO_TOKEN = {\n type: 25\n /* CDO_TOKEN */\n\n };\n var CDC_TOKEN = {\n type: 24\n /* CDC_TOKEN */\n\n };\n var COLON_TOKEN = {\n type: 26\n /* COLON_TOKEN */\n\n };\n var SEMICOLON_TOKEN = {\n type: 27\n /* SEMICOLON_TOKEN */\n\n };\n var LEFT_SQUARE_BRACKET_TOKEN = {\n type: 28\n /* LEFT_SQUARE_BRACKET_TOKEN */\n\n };\n var RIGHT_SQUARE_BRACKET_TOKEN = {\n type: 29\n /* RIGHT_SQUARE_BRACKET_TOKEN */\n\n };\n var WHITESPACE_TOKEN = {\n type: 31\n /* WHITESPACE_TOKEN */\n\n };\n var EOF_TOKEN = {\n type: 32\n /* EOF_TOKEN */\n\n };\n\n var Tokenizer =\n /** @class */\n function () {\n function Tokenizer() {\n this._value = [];\n }\n\n Tokenizer.prototype.write = function (chunk) {\n this._value = this._value.concat(toCodePoints$1(chunk));\n };\n\n Tokenizer.prototype.read = function () {\n var tokens = [];\n var token = this.consumeToken();\n\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n\n return tokens;\n };\n\n Tokenizer.prototype.consumeToken = function () {\n var codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n\n case NUMBER_SIGN:\n var c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n var value = this.consumeName();\n return {\n type: 5\n /* HASH_TOKEN */\n ,\n value: value,\n flags: flags\n };\n }\n\n break;\n\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n\n break;\n\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n\n break;\n\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n break;\n\n case COMMA:\n return COMMA_TOKEN;\n\n case HYPHEN_MINUS:\n var e1 = codePoint;\n var e2 = this.peekCodePoint(0);\n var e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n break;\n\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n\n while (true) {\n var c = this.consumeCodePoint();\n\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n\n break;\n\n case COLON:\n return COLON_TOKEN;\n\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n\n case LESS_THAN_SIGN:\n if (this.peekCodePoint(0) === EXCLAMATION_MARK && this.peekCodePoint(1) === HYPHEN_MINUS && this.peekCodePoint(2) === HYPHEN_MINUS) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n\n break;\n\n case COMMERCIAL_AT:\n var a1 = this.peekCodePoint(0);\n var a2 = this.peekCodePoint(1);\n var a3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(a1, a2, a3)) {\n var value = this.consumeName();\n return {\n type: 7\n /* AT_KEYWORD_TOKEN */\n ,\n value: value\n };\n }\n\n break;\n\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n break;\n\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n\n break;\n\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n\n case u:\n case U:\n var u1 = this.peekCodePoint(0);\n var u2 = this.peekCodePoint(1);\n\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n\n break;\n\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n\n break;\n\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return {\n type: 6\n /* DELIM_TOKEN */\n ,\n value: fromCodePoint$1(codePoint)\n };\n };\n\n Tokenizer.prototype.consumeCodePoint = function () {\n var value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n };\n\n Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {\n this._value.unshift(codePoint);\n };\n\n Tokenizer.prototype.peekCodePoint = function (delta) {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n };\n\n Tokenizer.prototype.consumeUnicodeRangeToken = function () {\n var digits = [];\n var codePoint = this.consumeCodePoint();\n\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n\n var questionMarks = false;\n\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) {\n return digit === QUESTION_MARK ? ZERO : digit;\n })), 16);\n var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) {\n return digit === QUESTION_MARK ? F : digit;\n })), 16);\n return {\n type: 30\n /* UNICODE_RANGE_TOKEN */\n ,\n start: start_1,\n end: end\n };\n }\n\n var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);\n\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n var endDigits = [];\n\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n\n var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);\n return {\n type: 30\n /* UNICODE_RANGE_TOKEN */\n ,\n start: start,\n end: end\n };\n } else {\n return {\n type: 30\n /* UNICODE_RANGE_TOKEN */\n ,\n start: start,\n end: start\n };\n }\n };\n\n Tokenizer.prototype.consumeIdentLikeToken = function () {\n var value = this.consumeName();\n\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return {\n type: 19\n /* FUNCTION_TOKEN */\n ,\n value: value\n };\n }\n\n return {\n type: 20\n /* IDENT_TOKEN */\n ,\n value: value\n };\n };\n\n Tokenizer.prototype.consumeUrlToken = function () {\n var value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return {\n type: 22\n /* URL_TOKEN */\n ,\n value: ''\n };\n }\n\n var next = this.peekCodePoint(0);\n\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n var stringToken = this.consumeStringToken(this.consumeCodePoint());\n\n if (stringToken.type === 0\n /* STRING_TOKEN */\n ) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {\n type: 22\n /* URL_TOKEN */\n ,\n value: stringToken.value\n };\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n var codePoint = this.consumeCodePoint();\n\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return {\n type: 22\n /* URL_TOKEN */\n ,\n value: fromCodePoint$1.apply(void 0, value)\n };\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {\n type: 22\n /* URL_TOKEN */\n ,\n value: fromCodePoint$1.apply(void 0, value)\n };\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === QUOTATION_MARK || codePoint === APOSTROPHE || codePoint === LEFT_PARENTHESIS || isNonPrintableCodePoint(codePoint)) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n };\n\n Tokenizer.prototype.consumeWhiteSpace = function () {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n };\n\n Tokenizer.prototype.consumeBadUrlRemnants = function () {\n while (true) {\n var codePoint = this.consumeCodePoint();\n\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n };\n\n Tokenizer.prototype.consumeStringSlice = function (count) {\n var SLICE_STACK_SIZE = 60000;\n var value = '';\n\n while (count > 0) {\n var amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));\n count -= amount;\n }\n\n this._value.shift();\n\n return value;\n };\n\n Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {\n var value = '';\n var i = 0;\n\n do {\n var codePoint = this._value[i];\n\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return {\n type: 0\n /* STRING_TOKEN */\n ,\n value: value\n };\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n var next = this._value[i + 1];\n\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint$1(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n };\n\n Tokenizer.prototype.consumeNumber = function () {\n var repr = [];\n var type = FLAG_INTEGER;\n var c1 = this.peekCodePoint(0);\n\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n\n c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n\n if ((c1 === E || c1 === e) && ((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n };\n\n Tokenizer.prototype.consumeNumericToken = function () {\n var _a = this.consumeNumber(),\n number = _a[0],\n flags = _a[1];\n\n var c1 = this.peekCodePoint(0);\n var c2 = this.peekCodePoint(1);\n var c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n var unit = this.consumeName();\n return {\n type: 15\n /* DIMENSION_TOKEN */\n ,\n number: number,\n flags: flags,\n unit: unit\n };\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return {\n type: 16\n /* PERCENTAGE_TOKEN */\n ,\n number: number,\n flags: flags\n };\n }\n\n return {\n type: 17\n /* NUMBER_TOKEN */\n ,\n number: number,\n flags: flags\n };\n };\n\n Tokenizer.prototype.consumeEscapedCodePoint = function () {\n var codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n var hex = fromCodePoint$1(codePoint);\n\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint$1(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n var hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n };\n\n Tokenizer.prototype.consumeName = function () {\n var result = '';\n\n while (true) {\n var codePoint = this.consumeCodePoint();\n\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint$1(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint$1(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n };\n\n return Tokenizer;\n }();\n\n var Parser =\n /** @class */\n function () {\n function Parser(tokens) {\n this._tokens = tokens;\n }\n\n Parser.create = function (value) {\n var tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n };\n\n Parser.parseValue = function (value) {\n return Parser.create(value).parseComponentValue();\n };\n\n Parser.parseValues = function (value) {\n return Parser.create(value).parseComponentValues();\n };\n\n Parser.prototype.parseComponentValue = function () {\n var token = this.consumeToken();\n\n while (token.type === 31\n /* WHITESPACE_TOKEN */\n ) {\n token = this.consumeToken();\n }\n\n if (token.type === 32\n /* EOF_TOKEN */\n ) {\n throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");\n }\n\n this.reconsumeToken(token);\n var value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === 31\n /* WHITESPACE_TOKEN */\n );\n\n if (token.type === 32\n /* EOF_TOKEN */\n ) {\n return value;\n }\n\n throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\");\n };\n\n Parser.prototype.parseComponentValues = function () {\n var values = [];\n\n while (true) {\n var value = this.consumeComponentValue();\n\n if (value.type === 32\n /* EOF_TOKEN */\n ) {\n return values;\n }\n\n values.push(value);\n values.push();\n }\n };\n\n Parser.prototype.consumeComponentValue = function () {\n var token = this.consumeToken();\n\n switch (token.type) {\n case 11\n /* LEFT_CURLY_BRACKET_TOKEN */\n :\n case 28\n /* LEFT_SQUARE_BRACKET_TOKEN */\n :\n case 2\n /* LEFT_PARENTHESIS_TOKEN */\n :\n return this.consumeSimpleBlock(token.type);\n\n case 19\n /* FUNCTION_TOKEN */\n :\n return this.consumeFunction(token);\n }\n\n return token;\n };\n\n Parser.prototype.consumeSimpleBlock = function (type) {\n var block = {\n type: type,\n values: []\n };\n var token = this.consumeToken();\n\n while (true) {\n if (token.type === 32\n /* EOF_TOKEN */\n || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n };\n\n Parser.prototype.consumeFunction = function (functionToken) {\n var cssFunction = {\n name: functionToken.value,\n values: [],\n type: 18\n /* FUNCTION */\n\n };\n\n while (true) {\n var token = this.consumeToken();\n\n if (token.type === 32\n /* EOF_TOKEN */\n || token.type === 3\n /* RIGHT_PARENTHESIS_TOKEN */\n ) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n };\n\n Parser.prototype.consumeToken = function () {\n var token = this._tokens.shift();\n\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n };\n\n Parser.prototype.reconsumeToken = function (token) {\n this._tokens.unshift(token);\n };\n\n return Parser;\n }();\n\n var isDimensionToken = function isDimensionToken(token) {\n return token.type === 15\n /* DIMENSION_TOKEN */\n ;\n };\n\n var isNumberToken = function isNumberToken(token) {\n return token.type === 17\n /* NUMBER_TOKEN */\n ;\n };\n\n var isIdentToken = function isIdentToken(token) {\n return token.type === 20\n /* IDENT_TOKEN */\n ;\n };\n\n var isStringToken = function isStringToken(token) {\n return token.type === 0\n /* STRING_TOKEN */\n ;\n };\n\n var isIdentWithValue = function isIdentWithValue(token, value) {\n return isIdentToken(token) && token.value === value;\n };\n\n var nonWhiteSpace = function nonWhiteSpace(token) {\n return token.type !== 31\n /* WHITESPACE_TOKEN */\n ;\n };\n\n var nonFunctionArgSeparator = function nonFunctionArgSeparator(token) {\n return token.type !== 31\n /* WHITESPACE_TOKEN */\n && token.type !== 4\n /* COMMA_TOKEN */\n ;\n };\n\n var parseFunctionArgs = function parseFunctionArgs(tokens) {\n var args = [];\n var arg = [];\n tokens.forEach(function (token) {\n if (token.type === 4\n /* COMMA_TOKEN */\n ) {\n if (arg.length === 0) {\n throw new Error(\"Error parsing function args, zero tokens for arg\");\n }\n\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== 31\n /* WHITESPACE_TOKEN */\n ) {\n arg.push(token);\n }\n });\n\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n };\n\n var isEndingTokenFor = function isEndingTokenFor(token, type) {\n if (type === 11\n /* LEFT_CURLY_BRACKET_TOKEN */\n && token.type === 12\n /* RIGHT_CURLY_BRACKET_TOKEN */\n ) {\n return true;\n }\n\n if (type === 28\n /* LEFT_SQUARE_BRACKET_TOKEN */\n && token.type === 29\n /* RIGHT_SQUARE_BRACKET_TOKEN */\n ) {\n return true;\n }\n\n return type === 2\n /* LEFT_PARENTHESIS_TOKEN */\n && token.type === 3\n /* RIGHT_PARENTHESIS_TOKEN */\n ;\n };\n\n var isLength = function isLength(token) {\n return token.type === 17\n /* NUMBER_TOKEN */\n || token.type === 15\n /* DIMENSION_TOKEN */\n ;\n };\n\n var isLengthPercentage = function isLengthPercentage(token) {\n return token.type === 16\n /* PERCENTAGE_TOKEN */\n || isLength(token);\n };\n\n var parseLengthPercentageTuple = function parseLengthPercentageTuple(tokens) {\n return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\n };\n\n var ZERO_LENGTH = {\n type: 17\n /* NUMBER_TOKEN */\n ,\n number: 0,\n flags: FLAG_INTEGER\n };\n var FIFTY_PERCENT = {\n type: 16\n /* PERCENTAGE_TOKEN */\n ,\n number: 50,\n flags: FLAG_INTEGER\n };\n var HUNDRED_PERCENT = {\n type: 16\n /* PERCENTAGE_TOKEN */\n ,\n number: 100,\n flags: FLAG_INTEGER\n };\n\n var getAbsoluteValueForTuple = function getAbsoluteValueForTuple(tuple, width, height) {\n var x = tuple[0],\n y = tuple[1];\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n };\n\n var getAbsoluteValue = function getAbsoluteValue(token, parent) {\n if (token.type === 16\n /* PERCENTAGE_TOKEN */\n ) {\n return token.number / 100 * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number;\n // TODO use correct font-size\n\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n };\n\n var DEG = 'deg';\n var GRAD = 'grad';\n var RAD = 'rad';\n var TURN = 'turn';\n var angle = {\n name: 'angle',\n parse: function parse(_context, value) {\n if (value.type === 15\n /* DIMENSION_TOKEN */\n ) {\n switch (value.unit) {\n case DEG:\n return Math.PI * value.number / 180;\n\n case GRAD:\n return Math.PI / 200 * value.number;\n\n case RAD:\n return value.number;\n\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(\"Unsupported angle type\");\n }\n };\n\n var isAngle = function isAngle(value) {\n if (value.type === 15\n /* DIMENSION_TOKEN */\n ) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n\n return false;\n };\n\n var parseNamedSide = function parseNamedSide(tokens) {\n var sideOrCorner = tokens.filter(isIdentToken).map(function (ident) {\n return ident.value;\n }).join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n\n case 'to top':\n case 'bottom':\n return deg(0);\n\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n\n case 'to right':\n case 'left':\n return deg(90);\n\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n\n case 'to bottom':\n case 'top':\n return deg(180);\n\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n };\n\n var deg = function deg(_deg) {\n return Math.PI * _deg / 180;\n };\n\n var color$1 = {\n name: 'color',\n parse: function parse(context, value) {\n if (value.type === 18\n /* FUNCTION */\n ) {\n var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n\n if (typeof colorFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported color function \\\"\" + value.name + \"\\\"\");\n }\n\n return colorFunction(context, value.values);\n }\n\n if (value.type === 5\n /* HASH_TOKEN */\n ) {\n if (value.value.length === 3) {\n var r = value.value.substring(0, 1);\n var g = value.value.substring(1, 2);\n var b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n\n if (value.value.length === 4) {\n var r = value.value.substring(0, 1);\n var g = value.value.substring(1, 2);\n var b = value.value.substring(2, 3);\n var a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n\n if (value.value.length === 6) {\n var r = value.value.substring(0, 2);\n var g = value.value.substring(2, 4);\n var b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n\n if (value.value.length === 8) {\n var r = value.value.substring(0, 2);\n var g = value.value.substring(2, 4);\n var b = value.value.substring(4, 6);\n var a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n\n if (value.type === 20\n /* IDENT_TOKEN */\n ) {\n var namedColor = COLORS[value.value.toUpperCase()];\n\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n };\n\n var isTransparent = function isTransparent(color) {\n return (0xff & color) === 0;\n };\n\n var asString = function asString(color) {\n var alpha = 0xff & color;\n var blue = 0xff & color >> 8;\n var green = 0xff & color >> 16;\n var red = 0xff & color >> 24;\n return alpha < 255 ? \"rgba(\" + red + \",\" + green + \",\" + blue + \",\" + alpha / 255 + \")\" : \"rgb(\" + red + \",\" + green + \",\" + blue + \")\";\n };\n\n var pack = function pack(r, g, b, a) {\n return (r << 24 | g << 16 | b << 8 | Math.round(a * 255) << 0) >>> 0;\n };\n\n var getTokenColorValue = function getTokenColorValue(token, i) {\n if (token.type === 17\n /* NUMBER_TOKEN */\n ) {\n return token.number;\n }\n\n if (token.type === 16\n /* PERCENTAGE_TOKEN */\n ) {\n var max = i === 3 ? 1 : 255;\n return i === 3 ? token.number / 100 * max : Math.round(token.number / 100 * max);\n }\n\n return 0;\n };\n\n var rgb = function rgb(_context, args) {\n var tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n var _a = tokens.map(getTokenColorValue),\n r = _a[0],\n g = _a[1],\n b = _a[2];\n\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n var _b = tokens.map(getTokenColorValue),\n r = _b[0],\n g = _b[1],\n b = _b[2],\n a = _b[3];\n\n return pack(r, g, b, a);\n }\n\n return 0;\n };\n\n function hue2rgb(t1, t2, hue) {\n if (hue < 0) {\n hue += 1;\n }\n\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n }\n\n var hsl = function hsl(context, args) {\n var tokens = args.filter(nonFunctionArgSeparator);\n var hue = tokens[0],\n saturation = tokens[1],\n lightness = tokens[2],\n alpha = tokens[3];\n var h = (hue.type === 17\n /* NUMBER_TOKEN */\n ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n\n var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var t1 = l * 2 - t2;\n var r = hue2rgb(t1, t2, h + 1 / 3);\n var g = hue2rgb(t1, t2, h);\n var b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n };\n\n var SUPPORTED_COLOR_FUNCTIONS = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n };\n\n var parseColor = function parseColor(context, value) {\n return color$1.parse(context, Parser.create(value).parseComponentValue());\n };\n\n var COLORS = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n };\n var BACKGROUND_CLIP;\n\n (function (BACKGROUND_CLIP) {\n BACKGROUND_CLIP[BACKGROUND_CLIP[\"BORDER_BOX\"] = 0] = \"BORDER_BOX\";\n BACKGROUND_CLIP[BACKGROUND_CLIP[\"PADDING_BOX\"] = 1] = \"PADDING_BOX\";\n BACKGROUND_CLIP[BACKGROUND_CLIP[\"CONTENT_BOX\"] = 2] = \"CONTENT_BOX\";\n })(BACKGROUND_CLIP || (BACKGROUND_CLIP = {}));\n\n var backgroundClip = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n return tokens.map(function (token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n };\n var backgroundColor = {\n name: \"background-color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3\n /* TYPE_VALUE */\n ,\n format: 'color'\n };\n\n var parseColorStop = function parseColorStop(context, args) {\n var color = color$1.parse(context, args[0]);\n var stop = args[1];\n return stop && isLengthPercentage(stop) ? {\n color: color,\n stop: stop\n } : {\n color: color,\n stop: null\n };\n };\n\n var processColorStops = function processColorStops(stops, lineLength) {\n var first = stops[0];\n var last = stops[stops.length - 1];\n\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n var processStops = [];\n var previous = 0;\n\n for (var i = 0; i < stops.length; i++) {\n var stop_1 = stops[i].stop;\n\n if (stop_1 !== null) {\n var absoluteValue = getAbsoluteValue(stop_1, lineLength);\n\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n var gapBegin = null;\n\n for (var i = 0; i < processStops.length; i++) {\n var stop_2 = processStops[i];\n\n if (stop_2 === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n var gapLength = i - gapBegin;\n var beforeGap = processStops[gapBegin - 1];\n var gapValue = (stop_2 - beforeGap) / (gapLength + 1);\n\n for (var g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n\n gapBegin = null;\n }\n }\n\n return stops.map(function (_a, i) {\n var color = _a.color;\n return {\n color: color,\n stop: Math.max(Math.min(1, processStops[i] / lineLength), 0)\n };\n });\n };\n\n var getAngleFromCorner = function getAngleFromCorner(corner, width, height) {\n var centerX = width / 2;\n var centerY = height / 2;\n var x = getAbsoluteValue(corner[0], width) - centerX;\n var y = centerY - getAbsoluteValue(corner[1], height);\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n };\n\n var calculateGradientDirection = function calculateGradientDirection(angle, width, height) {\n var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var halfLineLength = lineLength / 2;\n var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n };\n\n var distance = function distance(a, b) {\n return Math.sqrt(a * a + b * b);\n };\n\n var findCorner = function findCorner(width, height, x, y, closest) {\n var corners = [[0, 0], [0, height], [width, 0], [width, height]];\n return corners.reduce(function (stat, corner) {\n var cx = corner[0],\n cy = corner[1];\n var d = distance(x - cx, y - cy);\n\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n }, {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }).optimumCorner;\n };\n\n var calculateRadius = function calculateRadius(gradient, x, y, width, height) {\n var rx = 0;\n var ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n\n var _a = findCorner(width, height, x, y, true),\n cx = _a[0],\n cy = _a[1];\n\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n\n var _b = findCorner(width, height, x, y, false),\n cx = _b[0],\n cy = _b[1];\n\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n };\n\n var linearGradient = function linearGradient(context, tokens) {\n var angle$1 = deg(180);\n var stops = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n if (i === 0) {\n var firstToken = arg[0];\n\n if (firstToken.type === 20\n /* IDENT_TOKEN */\n && firstToken.value === 'to') {\n angle$1 = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle$1 = angle.parse(context, firstToken);\n return;\n }\n }\n\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n return {\n angle: angle$1,\n stops: stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n };\n\n var prefixLinearGradient = function prefixLinearGradient(context, tokens) {\n var angle$1 = deg(180);\n var stops = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n if (i === 0) {\n var firstToken = arg[0];\n\n if (firstToken.type === 20\n /* IDENT_TOKEN */\n && ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {\n angle$1 = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n return {\n angle: angle$1,\n stops: stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n };\n\n var webkitGradient = function webkitGradient(context, tokens) {\n var angle = deg(180);\n var stops = [];\n var type = CSSImageType.LINEAR_GRADIENT;\n var shape = CSSRadialShape.CIRCLE;\n var size = CSSRadialExtent.FARTHEST_CORNER;\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var firstToken = arg[0];\n\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === 18\n /* FUNCTION */\n ) {\n if (firstToken.name === 'from') {\n var color = color$1.parse(context, firstToken.values[0]);\n stops.push({\n stop: ZERO_LENGTH,\n color: color\n });\n } else if (firstToken.name === 'to') {\n var color = color$1.parse(context, firstToken.values[0]);\n stops.push({\n stop: HUNDRED_PERCENT,\n color: color\n });\n } else if (firstToken.name === 'color-stop') {\n var values = firstToken.values.filter(nonFunctionArgSeparator);\n\n if (values.length === 2) {\n var color = color$1.parse(context, values[1]);\n var stop_1 = values[0];\n\n if (isNumberToken(stop_1)) {\n stops.push({\n stop: {\n type: 16\n /* PERCENTAGE_TOKEN */\n ,\n number: stop_1.number * 100,\n flags: stop_1.flags\n },\n color: color\n });\n }\n }\n }\n }\n });\n return type === CSSImageType.LINEAR_GRADIENT ? {\n angle: (angle + deg(180)) % deg(360),\n stops: stops,\n type: type\n } : {\n size: size,\n shape: shape,\n stops: stops,\n position: position,\n type: type\n };\n };\n\n var CLOSEST_SIDE = 'closest-side';\n var FARTHEST_SIDE = 'farthest-side';\n var CLOSEST_CORNER = 'closest-corner';\n var FARTHEST_CORNER = 'farthest-corner';\n var CIRCLE = 'circle';\n var ELLIPSE = 'ellipse';\n var COVER = 'cover';\n var CONTAIN = 'contain';\n\n var radialGradient = function radialGradient(context, tokens) {\n var shape = CSSRadialShape.CIRCLE;\n var size = CSSRadialExtent.FARTHEST_CORNER;\n var stops = [];\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var isColorStop = true;\n\n if (i === 0) {\n var isAtPosition_1 = false;\n isColorStop = arg.reduce(function (acc, token) {\n if (isAtPosition_1) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n\n case 'at':\n isAtPosition_1 = true;\n return false;\n\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n return {\n size: size,\n shape: shape,\n stops: stops,\n position: position,\n type: CSSImageType.RADIAL_GRADIENT\n };\n };\n\n var prefixRadialGradient = function prefixRadialGradient(context, tokens) {\n var shape = CSSRadialShape.CIRCLE;\n var size = CSSRadialExtent.FARTHEST_CORNER;\n var stops = [];\n var position = [];\n parseFunctionArgs(tokens).forEach(function (arg, i) {\n var isColorStop = true;\n\n if (i === 0) {\n isColorStop = arg.reduce(function (acc, token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce(function (acc, token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n var colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n return {\n size: size,\n shape: shape,\n stops: stops,\n position: position,\n type: CSSImageType.RADIAL_GRADIENT\n };\n };\n\n var CSSImageType;\n\n (function (CSSImageType) {\n CSSImageType[CSSImageType[\"URL\"] = 0] = \"URL\";\n CSSImageType[CSSImageType[\"LINEAR_GRADIENT\"] = 1] = \"LINEAR_GRADIENT\";\n CSSImageType[CSSImageType[\"RADIAL_GRADIENT\"] = 2] = \"RADIAL_GRADIENT\";\n })(CSSImageType || (CSSImageType = {}));\n\n var isLinearGradient = function isLinearGradient(background) {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n };\n\n var isRadialGradient = function isRadialGradient(background) {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n };\n\n var CSSRadialShape;\n\n (function (CSSRadialShape) {\n CSSRadialShape[CSSRadialShape[\"CIRCLE\"] = 0] = \"CIRCLE\";\n CSSRadialShape[CSSRadialShape[\"ELLIPSE\"] = 1] = \"ELLIPSE\";\n })(CSSRadialShape || (CSSRadialShape = {}));\n\n var CSSRadialExtent;\n\n (function (CSSRadialExtent) {\n CSSRadialExtent[CSSRadialExtent[\"CLOSEST_SIDE\"] = 0] = \"CLOSEST_SIDE\";\n CSSRadialExtent[CSSRadialExtent[\"FARTHEST_SIDE\"] = 1] = \"FARTHEST_SIDE\";\n CSSRadialExtent[CSSRadialExtent[\"CLOSEST_CORNER\"] = 2] = \"CLOSEST_CORNER\";\n CSSRadialExtent[CSSRadialExtent[\"FARTHEST_CORNER\"] = 3] = \"FARTHEST_CORNER\";\n })(CSSRadialExtent || (CSSRadialExtent = {}));\n\n var image = {\n name: 'image',\n parse: function parse(context, value) {\n if (value.type === 22\n /* URL_TOKEN */\n ) {\n var image_1 = {\n url: value.value,\n type: CSSImageType.URL\n };\n context.cache.addImage(value.value);\n return image_1;\n }\n\n if (value.type === 18\n /* FUNCTION */\n ) {\n var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n\n if (typeof imageFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported image function \\\"\" + value.name + \"\\\"\");\n }\n\n return imageFunction(context, value.values);\n }\n\n throw new Error(\"Unsupported image type \" + value.type);\n }\n };\n\n function isSupportedImage(value) {\n return !(value.type === 20\n /* IDENT_TOKEN */\n && value.value === 'none') && (value.type !== 18\n /* FUNCTION */\n || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]);\n }\n\n var SUPPORTED_IMAGE_FUNCTIONS = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n };\n var backgroundImage = {\n name: 'background-image',\n initialValue: 'none',\n type: 1\n /* LIST */\n ,\n prefix: false,\n parse: function parse(context, tokens) {\n if (tokens.length === 0) {\n return [];\n }\n\n var first = tokens[0];\n\n if (first.type === 20\n /* IDENT_TOKEN */\n && first.value === 'none') {\n return [];\n }\n\n return tokens.filter(function (value) {\n return nonFunctionArgSeparator(value) && isSupportedImage(value);\n }).map(function (value) {\n return image.parse(context, value);\n });\n }\n };\n var backgroundOrigin = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n return tokens.map(function (token) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return 1\n /* PADDING_BOX */\n ;\n\n case 'content-box':\n return 2\n /* CONTENT_BOX */\n ;\n }\n }\n\n return 0\n /* BORDER_BOX */\n ;\n });\n }\n };\n var backgroundPosition = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: 1\n /* LIST */\n ,\n prefix: false,\n parse: function parse(_context, tokens) {\n return parseFunctionArgs(tokens).map(function (values) {\n return values.filter(isLengthPercentage);\n }).map(parseLengthPercentageTuple);\n }\n };\n var BACKGROUND_REPEAT;\n\n (function (BACKGROUND_REPEAT) {\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"REPEAT\"] = 0] = \"REPEAT\";\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"NO_REPEAT\"] = 1] = \"NO_REPEAT\";\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"REPEAT_X\"] = 2] = \"REPEAT_X\";\n BACKGROUND_REPEAT[BACKGROUND_REPEAT[\"REPEAT_Y\"] = 3] = \"REPEAT_Y\";\n })(BACKGROUND_REPEAT || (BACKGROUND_REPEAT = {}));\n\n var backgroundRepeat = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n return parseFunctionArgs(tokens).map(function (values) {\n return values.filter(isIdentToken).map(function (token) {\n return token.value;\n }).join(' ');\n }).map(parseBackgroundRepeat);\n }\n };\n\n var parseBackgroundRepeat = function parseBackgroundRepeat(value) {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n };\n\n var BACKGROUND_SIZE;\n\n (function (BACKGROUND_SIZE) {\n BACKGROUND_SIZE[\"AUTO\"] = \"auto\";\n BACKGROUND_SIZE[\"CONTAIN\"] = \"contain\";\n BACKGROUND_SIZE[\"COVER\"] = \"cover\";\n })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));\n\n var backgroundSize = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n return parseFunctionArgs(tokens).map(function (values) {\n return values.filter(isBackgroundSizeInfoToken);\n });\n }\n };\n\n var isBackgroundSizeInfoToken = function isBackgroundSizeInfoToken(value) {\n return isIdentToken(value) || isLengthPercentage(value);\n };\n\n var borderColorForSide = function borderColorForSide(side) {\n return {\n name: \"border-\" + side + \"-color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3\n /* TYPE_VALUE */\n ,\n format: 'color'\n };\n };\n\n var borderTopColor = borderColorForSide('top');\n var borderRightColor = borderColorForSide('right');\n var borderBottomColor = borderColorForSide('bottom');\n var borderLeftColor = borderColorForSide('left');\n\n var borderRadiusForSide = function borderRadiusForSide(side) {\n return {\n name: \"border-radius-\" + side,\n initialValue: '0 0',\n prefix: false,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));\n }\n };\n };\n\n var borderTopLeftRadius = borderRadiusForSide('top-left');\n var borderTopRightRadius = borderRadiusForSide('top-right');\n var borderBottomRightRadius = borderRadiusForSide('bottom-right');\n var borderBottomLeftRadius = borderRadiusForSide('bottom-left');\n var BORDER_STYLE;\n\n (function (BORDER_STYLE) {\n BORDER_STYLE[BORDER_STYLE[\"NONE\"] = 0] = \"NONE\";\n BORDER_STYLE[BORDER_STYLE[\"SOLID\"] = 1] = \"SOLID\";\n BORDER_STYLE[BORDER_STYLE[\"DASHED\"] = 2] = \"DASHED\";\n BORDER_STYLE[BORDER_STYLE[\"DOTTED\"] = 3] = \"DOTTED\";\n BORDER_STYLE[BORDER_STYLE[\"DOUBLE\"] = 4] = \"DOUBLE\";\n })(BORDER_STYLE || (BORDER_STYLE = {}));\n\n var borderStyleForSide = function borderStyleForSide(side) {\n return {\n name: \"border-\" + side + \"-style\",\n initialValue: 'solid',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, style) {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n\n case 'dashed':\n return BORDER_STYLE.DASHED;\n\n case 'dotted':\n return BORDER_STYLE.DOTTED;\n\n case 'double':\n return BORDER_STYLE.DOUBLE;\n }\n\n return BORDER_STYLE.SOLID;\n }\n };\n };\n\n var borderTopStyle = borderStyleForSide('top');\n var borderRightStyle = borderStyleForSide('right');\n var borderBottomStyle = borderStyleForSide('bottom');\n var borderLeftStyle = borderStyleForSide('left');\n\n var borderWidthForSide = function borderWidthForSide(side) {\n return {\n name: \"border-\" + side + \"-width\",\n initialValue: '0',\n type: 0\n /* VALUE */\n ,\n prefix: false,\n parse: function parse(_context, token) {\n if (isDimensionToken(token)) {\n return token.number;\n }\n\n return 0;\n }\n };\n };\n\n var borderTopWidth = borderWidthForSide('top');\n var borderRightWidth = borderWidthForSide('right');\n var borderBottomWidth = borderWidthForSide('bottom');\n var borderLeftWidth = borderWidthForSide('left');\n var color = {\n name: \"color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3\n /* TYPE_VALUE */\n ,\n format: 'color'\n };\n var direction = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, direction) {\n switch (direction) {\n case 'rtl':\n return 1\n /* RTL */\n ;\n\n case 'ltr':\n default:\n return 0\n /* LTR */\n ;\n }\n }\n };\n var display = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n return tokens.filter(isIdentToken).reduce(function (bit, token) {\n return bit | parseDisplayValue(token.value);\n }, 0\n /* NONE */\n );\n }\n };\n\n var parseDisplayValue = function parseDisplayValue(display) {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return 2\n /* BLOCK */\n ;\n\n case 'inline':\n return 4\n /* INLINE */\n ;\n\n case 'run-in':\n return 8\n /* RUN_IN */\n ;\n\n case 'flow':\n return 16\n /* FLOW */\n ;\n\n case 'flow-root':\n return 32\n /* FLOW_ROOT */\n ;\n\n case 'table':\n return 64\n /* TABLE */\n ;\n\n case 'flex':\n case '-webkit-flex':\n return 128\n /* FLEX */\n ;\n\n case 'grid':\n case '-ms-grid':\n return 256\n /* GRID */\n ;\n\n case 'ruby':\n return 512\n /* RUBY */\n ;\n\n case 'subgrid':\n return 1024\n /* SUBGRID */\n ;\n\n case 'list-item':\n return 2048\n /* LIST_ITEM */\n ;\n\n case 'table-row-group':\n return 4096\n /* TABLE_ROW_GROUP */\n ;\n\n case 'table-header-group':\n return 8192\n /* TABLE_HEADER_GROUP */\n ;\n\n case 'table-footer-group':\n return 16384\n /* TABLE_FOOTER_GROUP */\n ;\n\n case 'table-row':\n return 32768\n /* TABLE_ROW */\n ;\n\n case 'table-cell':\n return 65536\n /* TABLE_CELL */\n ;\n\n case 'table-column-group':\n return 131072\n /* TABLE_COLUMN_GROUP */\n ;\n\n case 'table-column':\n return 262144\n /* TABLE_COLUMN */\n ;\n\n case 'table-caption':\n return 524288\n /* TABLE_CAPTION */\n ;\n\n case 'ruby-base':\n return 1048576\n /* RUBY_BASE */\n ;\n\n case 'ruby-text':\n return 2097152\n /* RUBY_TEXT */\n ;\n\n case 'ruby-base-container':\n return 4194304\n /* RUBY_BASE_CONTAINER */\n ;\n\n case 'ruby-text-container':\n return 8388608\n /* RUBY_TEXT_CONTAINER */\n ;\n\n case 'contents':\n return 16777216\n /* CONTENTS */\n ;\n\n case 'inline-block':\n return 33554432\n /* INLINE_BLOCK */\n ;\n\n case 'inline-list-item':\n return 67108864\n /* INLINE_LIST_ITEM */\n ;\n\n case 'inline-table':\n return 134217728\n /* INLINE_TABLE */\n ;\n\n case 'inline-flex':\n return 268435456\n /* INLINE_FLEX */\n ;\n\n case 'inline-grid':\n return 536870912\n /* INLINE_GRID */\n ;\n }\n\n return 0\n /* NONE */\n ;\n };\n\n var FLOAT;\n\n (function (FLOAT) {\n FLOAT[FLOAT[\"NONE\"] = 0] = \"NONE\";\n FLOAT[FLOAT[\"LEFT\"] = 1] = \"LEFT\";\n FLOAT[FLOAT[\"RIGHT\"] = 2] = \"RIGHT\";\n FLOAT[FLOAT[\"INLINE_START\"] = 3] = \"INLINE_START\";\n FLOAT[FLOAT[\"INLINE_END\"] = 4] = \"INLINE_END\";\n })(FLOAT || (FLOAT = {}));\n\n var float = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, float) {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n\n case 'right':\n return FLOAT.RIGHT;\n\n case 'inline-start':\n return FLOAT.INLINE_START;\n\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n\n return FLOAT.NONE;\n }\n };\n var letterSpacing = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: 0\n /* VALUE */\n ,\n parse: function parse(_context, token) {\n if (token.type === 20\n /* IDENT_TOKEN */\n && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === 17\n /* NUMBER_TOKEN */\n ) {\n return token.number;\n }\n\n if (token.type === 15\n /* DIMENSION_TOKEN */\n ) {\n return token.number;\n }\n\n return 0;\n }\n };\n var LINE_BREAK;\n\n (function (LINE_BREAK) {\n LINE_BREAK[\"NORMAL\"] = \"normal\";\n LINE_BREAK[\"STRICT\"] = \"strict\";\n })(LINE_BREAK || (LINE_BREAK = {}));\n\n var lineBreak = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, lineBreak) {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n };\n var lineHeight = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: 4\n /* TOKEN_VALUE */\n\n };\n\n var computeLineHeight = function computeLineHeight(token, fontSize) {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === 17\n /* NUMBER_TOKEN */\n ) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n };\n\n var listStyleImage = {\n name: 'list-style-image',\n initialValue: 'none',\n type: 0\n /* VALUE */\n ,\n prefix: false,\n parse: function parse(context, token) {\n if (token.type === 20\n /* IDENT_TOKEN */\n && token.value === 'none') {\n return null;\n }\n\n return image.parse(context, token);\n }\n };\n var LIST_STYLE_POSITION;\n\n (function (LIST_STYLE_POSITION) {\n LIST_STYLE_POSITION[LIST_STYLE_POSITION[\"INSIDE\"] = 0] = \"INSIDE\";\n LIST_STYLE_POSITION[LIST_STYLE_POSITION[\"OUTSIDE\"] = 1] = \"OUTSIDE\";\n })(LIST_STYLE_POSITION || (LIST_STYLE_POSITION = {}));\n\n var listStylePosition = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, position) {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n };\n var LIST_STYLE_TYPE;\n\n (function (LIST_STYLE_TYPE) {\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"NONE\"] = -1] = \"NONE\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DISC\"] = 0] = \"DISC\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CIRCLE\"] = 1] = \"CIRCLE\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"SQUARE\"] = 2] = \"SQUARE\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DECIMAL\"] = 3] = \"DECIMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_DECIMAL\"] = 4] = \"CJK_DECIMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DECIMAL_LEADING_ZERO\"] = 5] = \"DECIMAL_LEADING_ZERO\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_ROMAN\"] = 6] = \"LOWER_ROMAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"UPPER_ROMAN\"] = 7] = \"UPPER_ROMAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_GREEK\"] = 8] = \"LOWER_GREEK\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_ALPHA\"] = 9] = \"LOWER_ALPHA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"UPPER_ALPHA\"] = 10] = \"UPPER_ALPHA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ARABIC_INDIC\"] = 11] = \"ARABIC_INDIC\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ARMENIAN\"] = 12] = \"ARMENIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"BENGALI\"] = 13] = \"BENGALI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CAMBODIAN\"] = 14] = \"CAMBODIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_EARTHLY_BRANCH\"] = 15] = \"CJK_EARTHLY_BRANCH\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_HEAVENLY_STEM\"] = 16] = \"CJK_HEAVENLY_STEM\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"CJK_IDEOGRAPHIC\"] = 17] = \"CJK_IDEOGRAPHIC\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DEVANAGARI\"] = 18] = \"DEVANAGARI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ETHIOPIC_NUMERIC\"] = 19] = \"ETHIOPIC_NUMERIC\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"GEORGIAN\"] = 20] = \"GEORGIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"GUJARATI\"] = 21] = \"GUJARATI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"GURMUKHI\"] = 22] = \"GURMUKHI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"HEBREW\"] = 22] = \"HEBREW\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"HIRAGANA\"] = 23] = \"HIRAGANA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"HIRAGANA_IROHA\"] = 24] = \"HIRAGANA_IROHA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"JAPANESE_FORMAL\"] = 25] = \"JAPANESE_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"JAPANESE_INFORMAL\"] = 26] = \"JAPANESE_INFORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KANNADA\"] = 27] = \"KANNADA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KATAKANA\"] = 28] = \"KATAKANA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KATAKANA_IROHA\"] = 29] = \"KATAKANA_IROHA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KHMER\"] = 30] = \"KHMER\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KOREAN_HANGUL_FORMAL\"] = 31] = \"KOREAN_HANGUL_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KOREAN_HANJA_FORMAL\"] = 32] = \"KOREAN_HANJA_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"KOREAN_HANJA_INFORMAL\"] = 33] = \"KOREAN_HANJA_INFORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LAO\"] = 34] = \"LAO\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"LOWER_ARMENIAN\"] = 35] = \"LOWER_ARMENIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"MALAYALAM\"] = 36] = \"MALAYALAM\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"MONGOLIAN\"] = 37] = \"MONGOLIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"MYANMAR\"] = 38] = \"MYANMAR\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"ORIYA\"] = 39] = \"ORIYA\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"PERSIAN\"] = 40] = \"PERSIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"SIMP_CHINESE_FORMAL\"] = 41] = \"SIMP_CHINESE_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"SIMP_CHINESE_INFORMAL\"] = 42] = \"SIMP_CHINESE_INFORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TAMIL\"] = 43] = \"TAMIL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TELUGU\"] = 44] = \"TELUGU\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"THAI\"] = 45] = \"THAI\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TIBETAN\"] = 46] = \"TIBETAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TRAD_CHINESE_FORMAL\"] = 47] = \"TRAD_CHINESE_FORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"TRAD_CHINESE_INFORMAL\"] = 48] = \"TRAD_CHINESE_INFORMAL\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"UPPER_ARMENIAN\"] = 49] = \"UPPER_ARMENIAN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DISCLOSURE_OPEN\"] = 50] = \"DISCLOSURE_OPEN\";\n LIST_STYLE_TYPE[LIST_STYLE_TYPE[\"DISCLOSURE_CLOSED\"] = 51] = \"DISCLOSURE_CLOSED\";\n })(LIST_STYLE_TYPE || (LIST_STYLE_TYPE = {}));\n\n var listStyleType = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, type) {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n };\n\n var marginForSide = function marginForSide(side) {\n return {\n name: \"margin-\" + side,\n initialValue: '0',\n prefix: false,\n type: 4\n /* TOKEN_VALUE */\n\n };\n };\n\n var marginTop = marginForSide('top');\n var marginRight = marginForSide('right');\n var marginBottom = marginForSide('bottom');\n var marginLeft = marginForSide('left');\n var OVERFLOW;\n\n (function (OVERFLOW) {\n OVERFLOW[OVERFLOW[\"VISIBLE\"] = 0] = \"VISIBLE\";\n OVERFLOW[OVERFLOW[\"HIDDEN\"] = 1] = \"HIDDEN\";\n OVERFLOW[OVERFLOW[\"SCROLL\"] = 2] = \"SCROLL\";\n OVERFLOW[OVERFLOW[\"CLIP\"] = 3] = \"CLIP\";\n OVERFLOW[OVERFLOW[\"AUTO\"] = 4] = \"AUTO\";\n })(OVERFLOW || (OVERFLOW = {}));\n\n var overflow = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n return tokens.filter(isIdentToken).map(function (overflow) {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n\n case 'scroll':\n return OVERFLOW.SCROLL;\n\n case 'clip':\n return OVERFLOW.CLIP;\n\n case 'auto':\n return OVERFLOW.AUTO;\n\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n };\n var overflowWrap = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, overflow) {\n switch (overflow) {\n case 'break-word':\n return \"break-word\"\n /* BREAK_WORD */\n ;\n\n case 'normal':\n default:\n return \"normal\"\n /* NORMAL */\n ;\n }\n }\n };\n\n var paddingForSide = function paddingForSide(side) {\n return {\n name: \"padding-\" + side,\n initialValue: '0',\n prefix: false,\n type: 3\n /* TYPE_VALUE */\n ,\n format: 'length-percentage'\n };\n };\n\n var paddingTop = paddingForSide('top');\n var paddingRight = paddingForSide('right');\n var paddingBottom = paddingForSide('bottom');\n var paddingLeft = paddingForSide('left');\n var TEXT_ALIGN;\n\n (function (TEXT_ALIGN) {\n TEXT_ALIGN[TEXT_ALIGN[\"LEFT\"] = 0] = \"LEFT\";\n TEXT_ALIGN[TEXT_ALIGN[\"CENTER\"] = 1] = \"CENTER\";\n TEXT_ALIGN[TEXT_ALIGN[\"RIGHT\"] = 2] = \"RIGHT\";\n })(TEXT_ALIGN || (TEXT_ALIGN = {}));\n\n var textAlign = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, textAlign) {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n };\n var POSITION;\n\n (function (POSITION) {\n POSITION[POSITION[\"STATIC\"] = 0] = \"STATIC\";\n POSITION[POSITION[\"RELATIVE\"] = 1] = \"RELATIVE\";\n POSITION[POSITION[\"ABSOLUTE\"] = 2] = \"ABSOLUTE\";\n POSITION[POSITION[\"FIXED\"] = 3] = \"FIXED\";\n POSITION[POSITION[\"STICKY\"] = 4] = \"STICKY\";\n })(POSITION || (POSITION = {}));\n\n var position = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, position) {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n\n case 'absolute':\n return POSITION.ABSOLUTE;\n\n case 'fixed':\n return POSITION.FIXED;\n\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n };\n var textShadow = {\n name: 'text-shadow',\n initialValue: 'none',\n type: 1\n /* LIST */\n ,\n prefix: false,\n parse: function parse(context, tokens) {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map(function (values) {\n var shadow = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n var c = 0;\n\n for (var i = 0; i < values.length; i++) {\n var token = values[i];\n\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n\n c++;\n } else {\n shadow.color = color$1.parse(context, token);\n }\n }\n\n return shadow;\n });\n }\n };\n var TEXT_TRANSFORM;\n\n (function (TEXT_TRANSFORM) {\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"NONE\"] = 0] = \"NONE\";\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"LOWERCASE\"] = 1] = \"LOWERCASE\";\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"UPPERCASE\"] = 2] = \"UPPERCASE\";\n TEXT_TRANSFORM[TEXT_TRANSFORM[\"CAPITALIZE\"] = 3] = \"CAPITALIZE\";\n })(TEXT_TRANSFORM || (TEXT_TRANSFORM = {}));\n\n var textTransform = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, textTransform) {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n };\n var transform$1 = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: 0\n /* VALUE */\n ,\n parse: function parse(_context, token) {\n if (token.type === 20\n /* IDENT_TOKEN */\n && token.value === 'none') {\n return null;\n }\n\n if (token.type === 18\n /* FUNCTION */\n ) {\n var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n\n if (typeof transformFunction === 'undefined') {\n throw new Error(\"Attempting to parse an unsupported transform function \\\"\" + token.name + \"\\\"\");\n }\n\n return transformFunction(token.values);\n }\n\n return null;\n }\n };\n\n var matrix = function matrix(args) {\n var values = args.filter(function (arg) {\n return arg.type === 17\n /* NUMBER_TOKEN */\n ;\n }).map(function (arg) {\n return arg.number;\n });\n return values.length === 6 ? values : null;\n }; // doesn't support 3D transforms at the moment\n\n\n var matrix3d = function matrix3d(args) {\n var values = args.filter(function (arg) {\n return arg.type === 17\n /* NUMBER_TOKEN */\n ;\n }).map(function (arg) {\n return arg.number;\n });\n var a1 = values[0],\n b1 = values[1];\n values[2];\n values[3];\n var a2 = values[4],\n b2 = values[5];\n values[6];\n values[7];\n values[8];\n values[9];\n values[10];\n values[11];\n var a4 = values[12],\n b4 = values[13];\n values[14];\n values[15];\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n };\n\n var SUPPORTED_TRANSFORM_FUNCTIONS = {\n matrix: matrix,\n matrix3d: matrix3d\n };\n var DEFAULT_VALUE = {\n type: 16\n /* PERCENTAGE_TOKEN */\n ,\n number: 50,\n flags: FLAG_INTEGER\n };\n var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];\n var transformOrigin = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n var origins = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n };\n var VISIBILITY;\n\n (function (VISIBILITY) {\n VISIBILITY[VISIBILITY[\"VISIBLE\"] = 0] = \"VISIBLE\";\n VISIBILITY[VISIBILITY[\"HIDDEN\"] = 1] = \"HIDDEN\";\n VISIBILITY[VISIBILITY[\"COLLAPSE\"] = 2] = \"COLLAPSE\";\n })(VISIBILITY || (VISIBILITY = {}));\n\n var visibility = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, visibility) {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n };\n var WORD_BREAK;\n\n (function (WORD_BREAK) {\n WORD_BREAK[\"NORMAL\"] = \"normal\";\n WORD_BREAK[\"BREAK_ALL\"] = \"break-all\";\n WORD_BREAK[\"KEEP_ALL\"] = \"keep-all\";\n })(WORD_BREAK || (WORD_BREAK = {}));\n\n var wordBreak = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, wordBreak) {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n };\n var zIndex = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: 0\n /* VALUE */\n ,\n parse: function parse(_context, token) {\n if (token.type === 20\n /* IDENT_TOKEN */\n ) {\n return {\n auto: true,\n order: 0\n };\n }\n\n if (isNumberToken(token)) {\n return {\n auto: false,\n order: token.number\n };\n }\n\n throw new Error(\"Invalid z-index number parsed\");\n }\n };\n var time = {\n name: 'time',\n parse: function parse(_context, value) {\n if (value.type === 15\n /* DIMENSION_TOKEN */\n ) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n\n case 'ms':\n return value.number;\n }\n }\n\n throw new Error(\"Unsupported time type\");\n }\n };\n var opacity = {\n name: 'opacity',\n initialValue: '1',\n type: 0\n /* VALUE */\n ,\n prefix: false,\n parse: function parse(_context, token) {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n return 1;\n }\n };\n var textDecorationColor = {\n name: \"text-decoration-color\",\n initialValue: 'transparent',\n prefix: false,\n type: 3\n /* TYPE_VALUE */\n ,\n format: 'color'\n };\n var textDecorationLine = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n return tokens.filter(isIdentToken).map(function (token) {\n switch (token.value) {\n case 'underline':\n return 1\n /* UNDERLINE */\n ;\n\n case 'overline':\n return 2\n /* OVERLINE */\n ;\n\n case 'line-through':\n return 3\n /* LINE_THROUGH */\n ;\n\n case 'none':\n return 4\n /* BLINK */\n ;\n }\n\n return 0\n /* NONE */\n ;\n }).filter(function (line) {\n return line !== 0\n /* NONE */\n ;\n });\n }\n };\n var fontFamily = {\n name: \"font-family\",\n initialValue: '',\n prefix: false,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n var accumulator = [];\n var results = [];\n tokens.forEach(function (token) {\n switch (token.type) {\n case 20\n /* IDENT_TOKEN */\n :\n case 0\n /* STRING_TOKEN */\n :\n accumulator.push(token.value);\n break;\n\n case 17\n /* NUMBER_TOKEN */\n :\n accumulator.push(token.number.toString());\n break;\n\n case 4\n /* COMMA_TOKEN */\n :\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n\n return results.map(function (result) {\n return result.indexOf(' ') === -1 ? result : \"'\" + result + \"'\";\n });\n }\n };\n var fontSize = {\n name: \"font-size\",\n initialValue: '0',\n prefix: false,\n type: 3\n /* TYPE_VALUE */\n ,\n format: 'length'\n };\n var fontWeight = {\n name: 'font-weight',\n initialValue: 'normal',\n type: 0\n /* VALUE */\n ,\n prefix: false,\n parse: function parse(_context, token) {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n };\n var fontVariant = {\n name: 'font-variant',\n initialValue: 'none',\n type: 1\n /* LIST */\n ,\n prefix: false,\n parse: function parse(_context, tokens) {\n return tokens.filter(isIdentToken).map(function (token) {\n return token.value;\n });\n }\n };\n var FONT_STYLE;\n\n (function (FONT_STYLE) {\n FONT_STYLE[\"NORMAL\"] = \"normal\";\n FONT_STYLE[\"ITALIC\"] = \"italic\";\n FONT_STYLE[\"OBLIQUE\"] = \"oblique\";\n })(FONT_STYLE || (FONT_STYLE = {}));\n\n var fontStyle = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: 2\n /* IDENT_VALUE */\n ,\n parse: function parse(_context, overflow) {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n\n case 'italic':\n return FONT_STYLE.ITALIC;\n\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n };\n\n var contains = function contains(bit, value) {\n return (bit & value) !== 0;\n };\n\n var content = {\n name: 'content',\n initialValue: 'none',\n type: 1\n /* LIST */\n ,\n prefix: false,\n parse: function parse(_context, tokens) {\n if (tokens.length === 0) {\n return [];\n }\n\n var first = tokens[0];\n\n if (first.type === 20\n /* IDENT_TOKEN */\n && first.value === 'none') {\n return [];\n }\n\n return tokens;\n }\n };\n var counterIncrement = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n if (tokens.length === 0) {\n return null;\n }\n\n var first = tokens[0];\n\n if (first.type === 20\n /* IDENT_TOKEN */\n && first.value === 'none') {\n return null;\n }\n\n var increments = [];\n var filtered = tokens.filter(nonWhiteSpace);\n\n for (var i = 0; i < filtered.length; i++) {\n var counter = filtered[i];\n var next = filtered[i + 1];\n\n if (counter.type === 20\n /* IDENT_TOKEN */\n ) {\n var increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({\n counter: counter.value,\n increment: increment\n });\n }\n }\n\n return increments;\n }\n };\n var counterReset = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n if (tokens.length === 0) {\n return [];\n }\n\n var resets = [];\n var filtered = tokens.filter(nonWhiteSpace);\n\n for (var i = 0; i < filtered.length; i++) {\n var counter = filtered[i];\n var next = filtered[i + 1];\n\n if (isIdentToken(counter) && counter.value !== 'none') {\n var reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({\n counter: counter.value,\n reset: reset\n });\n }\n }\n\n return resets;\n }\n };\n var duration = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: 1\n /* LIST */\n ,\n parse: function parse(context, tokens) {\n return tokens.filter(isDimensionToken).map(function (token) {\n return time.parse(context, token);\n });\n }\n };\n var quotes = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n if (tokens.length === 0) {\n return null;\n }\n\n var first = tokens[0];\n\n if (first.type === 20\n /* IDENT_TOKEN */\n && first.value === 'none') {\n return null;\n }\n\n var quotes = [];\n var filtered = tokens.filter(isStringToken);\n\n if (filtered.length % 2 !== 0) {\n return null;\n }\n\n for (var i = 0; i < filtered.length; i += 2) {\n var open_1 = filtered[i].value;\n var close_1 = filtered[i + 1].value;\n quotes.push({\n open: open_1,\n close: close_1\n });\n }\n\n return quotes;\n }\n };\n\n var getQuote = function getQuote(quotes, depth, open) {\n if (!quotes) {\n return '';\n }\n\n var quote = quotes[Math.min(depth, quotes.length - 1)];\n\n if (!quote) {\n return '';\n }\n\n return open ? quote.open : quote.close;\n };\n\n var boxShadow = {\n name: 'box-shadow',\n initialValue: 'none',\n type: 1\n /* LIST */\n ,\n prefix: false,\n parse: function parse(context, tokens) {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map(function (values) {\n var shadow = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n var c = 0;\n\n for (var i = 0; i < values.length; i++) {\n var token = values[i];\n\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n } else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else if (c === 2) {\n shadow.blur = token;\n } else {\n shadow.spread = token;\n }\n\n c++;\n } else {\n shadow.color = color$1.parse(context, token);\n }\n }\n\n return shadow;\n });\n }\n };\n var PAINT_ORDER_LAYER;\n\n (function (PAINT_ORDER_LAYER) {\n PAINT_ORDER_LAYER[PAINT_ORDER_LAYER[\"FILL\"] = 0] = \"FILL\";\n PAINT_ORDER_LAYER[PAINT_ORDER_LAYER[\"STROKE\"] = 1] = \"STROKE\";\n PAINT_ORDER_LAYER[PAINT_ORDER_LAYER[\"MARKERS\"] = 2] = \"MARKERS\";\n })(PAINT_ORDER_LAYER || (PAINT_ORDER_LAYER = {}));\n\n var paintOrder = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: 1\n /* LIST */\n ,\n parse: function parse(_context, tokens) {\n var DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n var layers = [];\n tokens.filter(isIdentToken).forEach(function (token) {\n switch (token.value) {\n case 'stroke':\n layers.push(PAINT_ORDER_LAYER.STROKE);\n break;\n\n case 'fill':\n layers.push(PAINT_ORDER_LAYER.FILL);\n break;\n\n case 'markers':\n layers.push(PAINT_ORDER_LAYER.MARKERS);\n break;\n }\n });\n DEFAULT_VALUE.forEach(function (value) {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n return layers;\n }\n };\n var webkitTextStrokeColor = {\n name: \"-webkit-text-stroke-color\",\n initialValue: 'currentcolor',\n prefix: false,\n type: 3\n /* TYPE_VALUE */\n ,\n format: 'color'\n };\n var webkitTextStrokeWidth = {\n name: \"-webkit-text-stroke-width\",\n initialValue: '0',\n type: 0\n /* VALUE */\n ,\n prefix: false,\n parse: function parse(_context, token) {\n if (isDimensionToken(token)) {\n return token.number;\n }\n\n return 0;\n }\n };\n\n var CSSParsedDeclaration =\n /** @class */\n function () {\n function CSSParsedDeclaration(context, declaration) {\n var _a, _b;\n\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n var overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);\n this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform$1, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n }\n\n CSSParsedDeclaration.prototype.isVisible = function () {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n };\n\n CSSParsedDeclaration.prototype.isTransparent = function () {\n return isTransparent(this.backgroundColor);\n };\n\n CSSParsedDeclaration.prototype.isTransformed = function () {\n return this.transform !== null;\n };\n\n CSSParsedDeclaration.prototype.isPositioned = function () {\n return this.position !== POSITION.STATIC;\n };\n\n CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {\n return this.isPositioned() && !this.zIndex.auto;\n };\n\n CSSParsedDeclaration.prototype.isFloating = function () {\n return this.float !== FLOAT.NONE;\n };\n\n CSSParsedDeclaration.prototype.isInlineLevel = function () {\n return contains(this.display, 4\n /* INLINE */\n ) || contains(this.display, 33554432\n /* INLINE_BLOCK */\n ) || contains(this.display, 268435456\n /* INLINE_FLEX */\n ) || contains(this.display, 536870912\n /* INLINE_GRID */\n ) || contains(this.display, 67108864\n /* INLINE_LIST_ITEM */\n ) || contains(this.display, 134217728\n /* INLINE_TABLE */\n );\n };\n\n return CSSParsedDeclaration;\n }();\n\n var CSSParsedPseudoDeclaration =\n /** @class */\n function () {\n function CSSParsedPseudoDeclaration(context, declaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n\n return CSSParsedPseudoDeclaration;\n }();\n\n var CSSParsedCounterDeclaration =\n /** @class */\n function () {\n function CSSParsedCounterDeclaration(context, declaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n\n return CSSParsedCounterDeclaration;\n }(); // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n var parse = function parse(context, descriptor, style) {\n var tokenizer = new Tokenizer();\n var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n var parser = new Parser(tokenizer.read());\n\n switch (descriptor.type) {\n case 2\n /* IDENT_VALUE */\n :\n var token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n\n case 0\n /* VALUE */\n :\n return descriptor.parse(context, parser.parseComponentValue());\n\n case 1\n /* LIST */\n :\n return descriptor.parse(context, parser.parseComponentValues());\n\n case 4\n /* TOKEN_VALUE */\n :\n return parser.parseComponentValue();\n\n case 3\n /* TYPE_VALUE */\n :\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n\n case 'color':\n return color$1.parse(context, parser.parseComponentValue());\n\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n\n case 'length':\n var length_1 = parser.parseComponentValue();\n return isLength(length_1) ? length_1 : ZERO_LENGTH;\n\n case 'length-percentage':\n var value_1 = parser.parseComponentValue();\n return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;\n\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n\n break;\n }\n };\n\n var elementDebuggerAttribute = 'data-html2canvas-debug';\n\n var getElementDebugType = function getElementDebugType(element) {\n var attribute = element.getAttribute(elementDebuggerAttribute);\n\n switch (attribute) {\n case 'all':\n return 1\n /* ALL */\n ;\n\n case 'clone':\n return 2\n /* CLONE */\n ;\n\n case 'parse':\n return 3\n /* PARSE */\n ;\n\n case 'render':\n return 4\n /* RENDER */\n ;\n\n default:\n return 0\n /* NONE */\n ;\n }\n };\n\n var isDebugging = function isDebugging(element, type) {\n var elementType = getElementDebugType(element);\n return elementType === 1\n /* ALL */\n || type === elementType;\n };\n\n var ElementContainer =\n /** @class */\n function () {\n function ElementContainer(context, element) {\n this.context = context;\n this.textNodes = [];\n this.elements = [];\n this.flags = 0;\n\n if (isDebugging(element, 3\n /* PARSE */\n )) {\n debugger;\n }\n\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some(function (duration) {\n return duration > 0;\n })) {\n element.style.animationDuration = '0s';\n }\n\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n\n this.bounds = parseBounds(this.context, element);\n\n if (isDebugging(element, 4\n /* RENDER */\n )) {\n this.flags |= 16\n /* DEBUG_RENDER */\n ;\n }\n }\n\n return ElementContainer;\n }();\n /*\n * text-segmentation 1.0.2 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\n\n\n var base64 = 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\n /*\n * utrie 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\n\n var chars$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.\n\n var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n\n for (var i$1 = 0; i$1 < chars$1.length; i$1++) {\n lookup$1[chars$1.charCodeAt(i$1)] = i$1;\n }\n\n var decode = function decode(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && typeof Uint8Array.prototype.slice !== 'undefined' ? new ArrayBuffer(bufferLength) : new Array(bufferLength);\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup$1[base64.charCodeAt(i)];\n encoded2 = lookup$1[base64.charCodeAt(i + 1)];\n encoded3 = lookup$1[base64.charCodeAt(i + 2)];\n encoded4 = lookup$1[base64.charCodeAt(i + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n\n return buffer;\n };\n\n var polyUint16Array = function polyUint16Array(buffer) {\n var length = buffer.length;\n var bytes = [];\n\n for (var i = 0; i < length; i += 2) {\n bytes.push(buffer[i + 1] << 8 | buffer[i]);\n }\n\n return bytes;\n };\n\n var polyUint32Array = function polyUint32Array(buffer) {\n var length = buffer.length;\n var bytes = [];\n\n for (var i = 0; i < length; i += 4) {\n bytes.push(buffer[i + 3] << 24 | buffer[i + 2] << 16 | buffer[i + 1] << 8 | buffer[i]);\n }\n\n return bytes;\n };\n /** Shift size for getting the index-2 table offset. */\n\n\n var UTRIE2_SHIFT_2 = 5;\n /** Shift size for getting the index-1 table offset. */\n\n var UTRIE2_SHIFT_1 = 6 + 5;\n /**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\n\n var UTRIE2_INDEX_SHIFT = 2;\n /**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\n\n var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n /**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\n\n var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n /** Number of entries in a data block. 32=0x20 */\n\n var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n /** Mask for getting the lower bits for the in-data-block offset. */\n\n var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n /** Count the lengths of both BMP pieces. 2080=0x820 */\n\n var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n /**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\n\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6;\n /* U+0800 is the first code point after 2-byte UTF-8 */\n\n /**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\n\n var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n /**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\n\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n /** Number of entries in an index-2 block. 64=0x40 */\n\n var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n /** Mask for getting the lower bits for the in-index-2-block offset. */\n\n var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\n var slice16 = function slice16(view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n };\n\n var slice32 = function slice32(view, start, end) {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n };\n\n var createTrieFromBase64 = function createTrieFromBase64(base64, _byteLength) {\n var buffer = decode(base64);\n var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n var headerLength = 24;\n var index = slice16(view16, headerLength / 2, view32[4] / 2);\n var data = view32[5] === 2 ? slice16(view16, (headerLength + view32[4]) / 2) : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n };\n\n var Trie =\n /** @class */\n function () {\n function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n\n\n Trie.prototype.get = function (codePoint) {\n var ix;\n\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || codePoint > 0x0dbff && codePoint <= 0x0ffff) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 0xd800 >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n } // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n\n\n return this.errorValue;\n };\n\n return Trie;\n }();\n /*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\n\n\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.\n\n var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n var Prepend = 1;\n var CR = 2;\n var LF = 3;\n var Control = 4;\n var Extend = 5;\n var SpacingMark = 7;\n var L = 8;\n var V = 9;\n var T = 10;\n var LV = 11;\n var LVT = 12;\n var ZWJ = 13;\n var Extended_Pictographic = 14;\n var RI = 15;\n\n var toCodePoints = function toCodePoints(str) {\n var codePoints = [];\n var i = 0;\n var length = str.length;\n\n while (i < length) {\n var value = str.charCodeAt(i++);\n\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n var extra = str.charCodeAt(i++);\n\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n\n return codePoints;\n };\n\n var fromCodePoint = function fromCodePoint() {\n var codePoints = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n\n if (String.fromCodePoint) {\n return String.fromCodePoint.apply(String, codePoints);\n }\n\n var length = codePoints.length;\n\n if (!length) {\n return '';\n }\n\n var codeUnits = [];\n var index = -1;\n var result = '';\n\n while (++index < length) {\n var codePoint = codePoints[index];\n\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);\n }\n\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode.apply(String, codeUnits);\n codeUnits.length = 0;\n }\n }\n\n return result;\n };\n\n var UnicodeTrie = createTrieFromBase64(base64);\n var BREAK_NOT_ALLOWED = '×';\n var BREAK_ALLOWED = '÷';\n\n var codePointToClass = function codePointToClass(codePoint) {\n return UnicodeTrie.get(codePoint);\n };\n\n var _graphemeBreakAtIndex = function _graphemeBreakAtIndex(_codePoints, classTypes, index) {\n var prevIndex = index - 2;\n var prev = classTypes[prevIndex];\n var current = classTypes[index - 1];\n var next = classTypes[index]; // GB3 Do not break between a CR and LF\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n } // GB4 Otherwise, break before and after controls.\n\n\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n } // GB5\n\n\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n } // Do not break Hangul syllable sequences.\n // GB6\n\n\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n } // GB7\n\n\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n } // GB8\n\n\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n } // GB9 Do not break before extending characters or ZWJ.\n\n\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n } // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n\n\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n } // GB9a\n\n\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n } // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n\n\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n } // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n\n\n if (current === RI && next === RI) {\n var countRI = 0;\n\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n return BREAK_ALLOWED;\n };\n\n var GraphemeBreaker = function GraphemeBreaker(str) {\n var codePoints = toCodePoints(str);\n var length = codePoints.length;\n var index = 0;\n var lastEnd = 0;\n var classTypes = codePoints.map(codePointToClass);\n return {\n next: function next() {\n if (index >= length) {\n return {\n done: true,\n value: null\n };\n }\n\n var graphemeBreak = BREAK_NOT_ALLOWED;\n\n while (index < length && (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) {}\n\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return {\n value: value,\n done: false\n };\n }\n\n return {\n done: true,\n value: null\n };\n }\n };\n };\n\n var splitGraphemes = function splitGraphemes(str) {\n var breaker = GraphemeBreaker(str);\n var graphemes = [];\n var bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n\n return graphemes;\n };\n\n var testRangeBounds = function testRangeBounds(document) {\n var TEST_HEIGHT = 123;\n\n if (document.createRange) {\n var range = document.createRange();\n\n if (range.getBoundingClientRect) {\n var testElement = document.createElement('boundtest');\n testElement.style.height = TEST_HEIGHT + \"px\";\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n range.selectNode(testElement);\n var rangeBounds = range.getBoundingClientRect();\n var rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n var testIOSLineBreak = function testIOSLineBreak(document) {\n var testElement = document.createElement('boundtest');\n testElement.style.width = '50px';\n testElement.style.display = 'block';\n testElement.style.fontSize = '12px';\n testElement.style.letterSpacing = '0px';\n testElement.style.wordSpacing = '0px';\n document.body.appendChild(testElement);\n var range = document.createRange();\n testElement.innerHTML = typeof ''.repeat === 'function' ? '👨'.repeat(10) : '';\n var node = testElement.firstChild;\n var textList = toCodePoints$1(node.data).map(function (i) {\n return fromCodePoint$1(i);\n });\n var offset = 0;\n var prev = {}; // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n\n var supports = textList.every(function (text, i) {\n range.setStart(node, offset);\n range.setEnd(node, offset + text.length);\n var rect = range.getBoundingClientRect();\n offset += text.length;\n var boundAhead = rect.x > prev.x || rect.y > prev.y;\n prev = rect;\n\n if (i === 0) {\n return true;\n }\n\n return boundAhead;\n });\n document.body.removeChild(testElement);\n return supports;\n };\n\n var testCORS = function testCORS() {\n return typeof new Image().crossOrigin !== 'undefined';\n };\n\n var testResponseType = function testResponseType() {\n return typeof new XMLHttpRequest().responseType === 'string';\n };\n\n var testSVG = function testSVG(document) {\n var img = new Image();\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return false;\n }\n\n img.src = \"data:image/svg+xml,\";\n\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n } catch (e) {\n return false;\n }\n\n return true;\n };\n\n var isGreenPixel = function isGreenPixel(data) {\n return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n };\n\n var testForeignObject = function testForeignObject(document) {\n var canvas = document.createElement('canvas');\n var size = 100;\n canvas.width = size;\n canvas.height = size;\n var ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return Promise.reject(false);\n }\n\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n var img = new Image();\n var greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n var svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n return loadSerializedSVG$1(svg).then(function (img) {\n ctx.drawImage(img, 0, 0);\n var data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n var node = document.createElement('div');\n node.style.backgroundImage = \"url(\" + greenImageSrc + \")\";\n node.style.height = size + \"px\"; // Firefox 55 does not render inline tags\n\n return isGreenPixel(data) ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node)) : Promise.reject(false);\n }).then(function (img) {\n ctx.drawImage(img, 0, 0); // Edge does not render background-images\n\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n }).catch(function () {\n return false;\n });\n };\n\n var createForeignObjectSVG = function createForeignObjectSVG(width, height, x, y, node) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n var foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n foreignObject.appendChild(node);\n return svg;\n };\n\n var loadSerializedSVG$1 = function loadSerializedSVG$1(svg) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n\n img.onload = function () {\n return resolve(img);\n };\n\n img.onerror = reject;\n img.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(svg));\n });\n };\n\n var FEATURES = {\n get SUPPORT_RANGE_BOUNDS() {\n var value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {\n value: value\n });\n return value;\n },\n\n get SUPPORT_WORD_BREAKING() {\n var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', {\n value: value\n });\n return value;\n },\n\n get SUPPORT_SVG_DRAWING() {\n var value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {\n value: value\n });\n return value;\n },\n\n get SUPPORT_FOREIGNOBJECT_DRAWING() {\n var value = typeof Array.from === 'function' && typeof window.fetch === 'function' ? testForeignObject(document) : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {\n value: value\n });\n return value;\n },\n\n get SUPPORT_CORS_IMAGES() {\n var value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', {\n value: value\n });\n return value;\n },\n\n get SUPPORT_RESPONSE_TYPE() {\n var value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', {\n value: value\n });\n return value;\n },\n\n get SUPPORT_CORS_XHR() {\n var value = ('withCredentials' in new XMLHttpRequest());\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {\n value: value\n });\n return value;\n }\n\n };\n\n var TextBounds =\n /** @class */\n function () {\n function TextBounds(text, bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n\n return TextBounds;\n }();\n\n var parseTextBounds = function parseTextBounds(context, value, styles, node) {\n var textList = breakText(value, styles);\n var textBounds = [];\n var offset = 0;\n textList.forEach(function (text) {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n if (!FEATURES.SUPPORT_WORD_BREAKING) {\n textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, createRange(node, offset, text.length).getClientRects())));\n } else {\n textBounds.push(new TextBounds(text, getRangeBounds(context, node, offset, text.length)));\n }\n } else {\n var replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n node = replacementNode;\n }\n } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n\n offset += text.length;\n });\n return textBounds;\n };\n\n var getWrapperBounds = function getWrapperBounds(context, node) {\n var ownerDocument = node.ownerDocument;\n\n if (ownerDocument) {\n var wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n var parentNode = node.parentNode;\n\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n var bounds = parseBounds(context, wrapper);\n\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n\n return bounds;\n }\n }\n\n return Bounds.EMPTY;\n };\n\n var createRange = function createRange(node, offset, length) {\n var ownerDocument = node.ownerDocument;\n\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n\n var range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range;\n };\n\n var getRangeBounds = function getRangeBounds(context, node, offset, length) {\n return Bounds.fromClientRect(context, createRange(node, offset, length).getBoundingClientRect());\n };\n\n var breakText = function breakText(value, styles) {\n return styles.letterSpacing !== 0 ? splitGraphemes(value) : breakWords(value, styles);\n }; // https://drafts.csswg.org/css-text/#word-separator\n\n\n var wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n\n var breakWords = function breakWords(str, styles) {\n var breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === \"break-word\"\n /* BREAK_WORD */\n ? 'break-word' : styles.wordBreak\n });\n var words = [];\n var bk;\n\n var _loop_1 = function _loop_1() {\n if (bk.value) {\n var value = bk.value.slice();\n var codePoints = toCodePoints$1(value);\n var word_1 = '';\n codePoints.forEach(function (codePoint) {\n if (wordSeparators.indexOf(codePoint) === -1) {\n word_1 += fromCodePoint$1(codePoint);\n } else {\n if (word_1.length) {\n words.push(word_1);\n }\n\n words.push(fromCodePoint$1(codePoint));\n word_1 = '';\n }\n });\n\n if (word_1.length) {\n words.push(word_1);\n }\n }\n };\n\n while (!(bk = breaker.next()).done) {\n _loop_1();\n }\n\n return words;\n };\n\n var TextContainer =\n /** @class */\n function () {\n function TextContainer(context, node, styles) {\n this.text = transform(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(context, this.text, styles, node);\n }\n\n return TextContainer;\n }();\n\n var transform = function transform(text, _transform) {\n switch (_transform) {\n case TEXT_TRANSFORM.LOWERCASE:\n return text.toLowerCase();\n\n case TEXT_TRANSFORM.CAPITALIZE:\n return text.replace(CAPITALIZE, capitalize);\n\n case TEXT_TRANSFORM.UPPERCASE:\n return text.toUpperCase();\n\n default:\n return text;\n }\n };\n\n var CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\n var capitalize = function capitalize(m, p1, p2) {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n\n return m;\n };\n\n var ImageElementContainer =\n /** @class */\n function (_super) {\n __extends(ImageElementContainer, _super);\n\n function ImageElementContainer(context, img) {\n var _this = _super.call(this, context, img) || this;\n\n _this.src = img.currentSrc || img.src;\n _this.intrinsicWidth = img.naturalWidth;\n _this.intrinsicHeight = img.naturalHeight;\n\n _this.context.cache.addImage(_this.src);\n\n return _this;\n }\n\n return ImageElementContainer;\n }(ElementContainer);\n\n var CanvasElementContainer =\n /** @class */\n function (_super) {\n __extends(CanvasElementContainer, _super);\n\n function CanvasElementContainer(context, canvas) {\n var _this = _super.call(this, context, canvas) || this;\n\n _this.canvas = canvas;\n _this.intrinsicWidth = canvas.width;\n _this.intrinsicHeight = canvas.height;\n return _this;\n }\n\n return CanvasElementContainer;\n }(ElementContainer);\n\n var SVGElementContainer =\n /** @class */\n function (_super) {\n __extends(SVGElementContainer, _super);\n\n function SVGElementContainer(context, img) {\n var _this = _super.call(this, context, img) || this;\n\n var s = new XMLSerializer();\n var bounds = parseBounds(context, img);\n img.setAttribute('width', bounds.width + \"px\");\n img.setAttribute('height', bounds.height + \"px\");\n _this.svg = \"data:image/svg+xml,\" + encodeURIComponent(s.serializeToString(img));\n _this.intrinsicWidth = img.width.baseVal.value;\n _this.intrinsicHeight = img.height.baseVal.value;\n\n _this.context.cache.addImage(_this.svg);\n\n return _this;\n }\n\n return SVGElementContainer;\n }(ElementContainer);\n\n var LIElementContainer =\n /** @class */\n function (_super) {\n __extends(LIElementContainer, _super);\n\n function LIElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n\n _this.value = element.value;\n return _this;\n }\n\n return LIElementContainer;\n }(ElementContainer);\n\n var OLElementContainer =\n /** @class */\n function (_super) {\n __extends(OLElementContainer, _super);\n\n function OLElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n\n _this.start = element.start;\n _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n return _this;\n }\n\n return OLElementContainer;\n }(ElementContainer);\n\n var CHECKBOX_BORDER_RADIUS = [{\n type: 15\n /* DIMENSION_TOKEN */\n ,\n flags: 0,\n unit: 'px',\n number: 3\n }];\n var RADIO_BORDER_RADIUS = [{\n type: 16\n /* PERCENTAGE_TOKEN */\n ,\n flags: 0,\n number: 50\n }];\n\n var reformatInputBounds = function reformatInputBounds(bounds) {\n if (bounds.width > bounds.height) {\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n } else if (bounds.width < bounds.height) {\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n }\n\n return bounds;\n };\n\n var getInputValue = function getInputValue(node) {\n var value = node.type === PASSWORD ? new Array(node.value.length + 1).join(\"\\u2022\") : node.value;\n return value.length === 0 ? node.placeholder || '' : value;\n };\n\n var CHECKBOX = 'checkbox';\n var RADIO = 'radio';\n var PASSWORD = 'password';\n var INPUT_COLOR = 0x2a2a2aff;\n\n var InputElementContainer =\n /** @class */\n function (_super) {\n __extends(InputElementContainer, _super);\n\n function InputElementContainer(context, input) {\n var _this = _super.call(this, context, input) || this;\n\n _this.type = input.type.toLowerCase();\n _this.checked = input.checked;\n _this.value = getInputValue(input);\n\n if (_this.type === CHECKBOX || _this.type === RADIO) {\n _this.styles.backgroundColor = 0xdededeff;\n _this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 0xa5a5a5ff;\n _this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1;\n _this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle = BORDER_STYLE.SOLID;\n _this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n _this.styles.backgroundOrigin = [0\n /* BORDER_BOX */\n ];\n _this.bounds = reformatInputBounds(_this.bounds);\n }\n\n switch (_this.type) {\n case CHECKBOX:\n _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS;\n break;\n\n case RADIO:\n _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS;\n break;\n }\n\n return _this;\n }\n\n return InputElementContainer;\n }(ElementContainer);\n\n var SelectElementContainer =\n /** @class */\n function (_super) {\n __extends(SelectElementContainer, _super);\n\n function SelectElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n\n var option = element.options[element.selectedIndex || 0];\n _this.value = option ? option.text || '' : '';\n return _this;\n }\n\n return SelectElementContainer;\n }(ElementContainer);\n\n var TextareaElementContainer =\n /** @class */\n function (_super) {\n __extends(TextareaElementContainer, _super);\n\n function TextareaElementContainer(context, element) {\n var _this = _super.call(this, context, element) || this;\n\n _this.value = element.value;\n return _this;\n }\n\n return TextareaElementContainer;\n }(ElementContainer);\n\n var IFrameElementContainer =\n /** @class */\n function (_super) {\n __extends(IFrameElementContainer, _super);\n\n function IFrameElementContainer(context, iframe) {\n var _this = _super.call(this, context, iframe) || this;\n\n _this.src = iframe.src;\n _this.width = parseInt(iframe.width, 10) || 0;\n _this.height = parseInt(iframe.height, 10) || 0;\n _this.backgroundColor = _this.styles.backgroundColor;\n\n try {\n if (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.documentElement) {\n _this.tree = parseTree(context, iframe.contentWindow.document.documentElement); // http://www.w3.org/TR/css3-background/#special-backgrounds\n\n var documentBackgroundColor = iframe.contentWindow.document.documentElement ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor) : COLORS.TRANSPARENT;\n var bodyBackgroundColor = iframe.contentWindow.document.body ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor) : COLORS.TRANSPARENT;\n _this.backgroundColor = isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? _this.styles.backgroundColor : bodyBackgroundColor : documentBackgroundColor;\n }\n } catch (e) {}\n\n return _this;\n }\n\n return IFrameElementContainer;\n }(ElementContainer);\n\n var LIST_OWNERS = ['OL', 'UL', 'MENU'];\n\n var parseNodeTree = function parseNodeTree(context, node, parent, root) {\n for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n\n if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n } else if (isElementNode(childNode)) {\n if (isSlotElement(childNode) && childNode.assignedNodes) {\n childNode.assignedNodes().forEach(function (childNode) {\n return parseNodeTree(context, childNode, parent, root);\n });\n } else {\n var container = createContainer(context, childNode);\n\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= 4\n /* CREATES_REAL_STACKING_CONTEXT */\n ;\n } else if (createsStackingContext(container.styles)) {\n container.flags |= 2\n /* CREATES_STACKING_CONTEXT */\n ;\n }\n\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= 8\n /* IS_LIST_OWNER */\n ;\n }\n\n parent.elements.push(container);\n childNode.slot;\n\n if (childNode.shadowRoot) {\n parseNodeTree(context, childNode.shadowRoot, container, root);\n } else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) {\n parseNodeTree(context, childNode, container, root);\n }\n }\n }\n }\n }\n };\n\n var createContainer = function createContainer(context, element) {\n if (isImageElement(element)) {\n return new ImageElementContainer(context, element);\n }\n\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(context, element);\n }\n\n if (isSVGElement(element)) {\n return new SVGElementContainer(context, element);\n }\n\n if (isLIElement(element)) {\n return new LIElementContainer(context, element);\n }\n\n if (isOLElement(element)) {\n return new OLElementContainer(context, element);\n }\n\n if (isInputElement(element)) {\n return new InputElementContainer(context, element);\n }\n\n if (isSelectElement(element)) {\n return new SelectElementContainer(context, element);\n }\n\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(context, element);\n }\n\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(context, element);\n }\n\n return new ElementContainer(context, element);\n };\n\n var parseTree = function parseTree(context, element) {\n var container = createContainer(context, element);\n container.flags |= 4\n /* CREATES_REAL_STACKING_CONTEXT */\n ;\n parseNodeTree(context, element, container, container);\n return container;\n };\n\n var createsRealStackingContext = function createsRealStackingContext(node, container, root) {\n return container.styles.isPositionedWithZIndex() || container.styles.opacity < 1 || container.styles.isTransformed() || isBodyElement(node) && root.styles.isTransparent();\n };\n\n var createsStackingContext = function createsStackingContext(styles) {\n return styles.isPositioned() || styles.isFloating();\n };\n\n var isTextNode = function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE;\n };\n\n var isElementNode = function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n };\n\n var isHTMLElementNode = function isHTMLElementNode(node) {\n return isElementNode(node) && typeof node.style !== 'undefined' && !isSVGElementNode(node);\n };\n\n var isSVGElementNode = function isSVGElementNode(element) {\n return _typeof(element.className) === 'object';\n };\n\n var isLIElement = function isLIElement(node) {\n return node.tagName === 'LI';\n };\n\n var isOLElement = function isOLElement(node) {\n return node.tagName === 'OL';\n };\n\n var isInputElement = function isInputElement(node) {\n return node.tagName === 'INPUT';\n };\n\n var isHTMLElement = function isHTMLElement(node) {\n return node.tagName === 'HTML';\n };\n\n var isSVGElement = function isSVGElement(node) {\n return node.tagName === 'svg';\n };\n\n var isBodyElement = function isBodyElement(node) {\n return node.tagName === 'BODY';\n };\n\n var isCanvasElement = function isCanvasElement(node) {\n return node.tagName === 'CANVAS';\n };\n\n var isImageElement = function isImageElement(node) {\n return node.tagName === 'IMG';\n };\n\n var isIFrameElement = function isIFrameElement(node) {\n return node.tagName === 'IFRAME';\n };\n\n var isStyleElement = function isStyleElement(node) {\n return node.tagName === 'STYLE';\n };\n\n var isScriptElement = function isScriptElement(node) {\n return node.tagName === 'SCRIPT';\n };\n\n var isTextareaElement = function isTextareaElement(node) {\n return node.tagName === 'TEXTAREA';\n };\n\n var isSelectElement = function isSelectElement(node) {\n return node.tagName === 'SELECT';\n };\n\n var isSlotElement = function isSlotElement(node) {\n return node.tagName === 'SLOT';\n };\n\n var CounterState =\n /** @class */\n function () {\n function CounterState() {\n this.counters = {};\n }\n\n CounterState.prototype.getCounterValue = function (name) {\n var counter = this.counters[name];\n\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n\n return 1;\n };\n\n CounterState.prototype.getCounterValues = function (name) {\n var counter = this.counters[name];\n return counter ? counter : [];\n };\n\n CounterState.prototype.pop = function (counters) {\n var _this = this;\n\n counters.forEach(function (counter) {\n return _this.counters[counter].pop();\n });\n };\n\n CounterState.prototype.parse = function (style) {\n var _this = this;\n\n var counterIncrement = style.counterIncrement;\n var counterReset = style.counterReset;\n var canReset = true;\n\n if (counterIncrement !== null) {\n counterIncrement.forEach(function (entry) {\n var counter = _this.counters[entry.counter];\n\n if (counter && entry.increment !== 0) {\n canReset = false;\n\n if (!counter.length) {\n counter.push(1);\n }\n\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n\n var counterNames = [];\n\n if (canReset) {\n counterReset.forEach(function (entry) {\n var counter = _this.counters[entry.counter];\n counterNames.push(entry.counter);\n\n if (!counter) {\n counter = _this.counters[entry.counter] = [];\n }\n\n counter.push(entry.reset);\n });\n }\n\n return counterNames;\n };\n\n return CounterState;\n }();\n\n var ROMAN_UPPER = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n };\n var ARMENIAN = {\n integers: [9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\n values: ['Ք', 'Փ', 'Ւ', 'Ց', 'Ր', 'Տ', 'Վ', 'Ս', 'Ռ', 'Ջ', 'Պ', 'Չ', 'Ո', 'Շ', 'Ն', 'Յ', 'Մ', 'Ճ', 'Ղ', 'Ձ', 'Հ', 'Կ', 'Ծ', 'Խ', 'Լ', 'Ի', 'Ժ', 'Թ', 'Ը', 'Է', 'Զ', 'Ե', 'Դ', 'Գ', 'Բ', 'Ա']\n };\n var HEBREW = {\n integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\n values: ['י׳', 'ט׳', 'ח׳', 'ז׳', 'ו׳', 'ה׳', 'ד׳', 'ג׳', 'ב׳', 'א׳', 'ת', 'ש', 'ר', 'ק', 'צ', 'פ', 'ע', 'ס', 'נ', 'מ', 'ל', 'כ', 'יט', 'יח', 'יז', 'טז', 'טו', 'י', 'ט', 'ח', 'ז', 'ו', 'ה', 'ד', 'ג', 'ב', 'א']\n };\n var GEORGIAN = {\n integers: [10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\n values: ['ჵ', 'ჰ', 'ჯ', 'ჴ', 'ხ', 'ჭ', 'წ', 'ძ', 'ც', 'ჩ', 'შ', 'ყ', 'ღ', 'ქ', 'ფ', 'ჳ', 'ტ', 'ს', 'რ', 'ჟ', 'პ', 'ო', 'ჲ', 'ნ', 'მ', 'ლ', 'კ', 'ი', 'თ', 'ჱ', 'ზ', 'ვ', 'ე', 'დ', 'გ', 'ბ', 'ა']\n };\n\n var createAdditiveCounter = function createAdditiveCounter(value, min, max, symbols, fallback, suffix) {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n\n return symbols.integers.reduce(function (string, integer, index) {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n\n return string;\n }, '') + suffix;\n };\n\n var createCounterStyleWithSymbolResolver = function createCounterStyleWithSymbolResolver(value, codePointRangeLength, isNumeric, resolver) {\n var string = '';\n\n do {\n if (!isNumeric) {\n value--;\n }\n\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n\n return string;\n };\n\n var createCounterStyleFromRange = function createCounterStyleFromRange(value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {\n var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n return (value < 0 ? '-' : '') + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {\n return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);\n }) + suffix);\n };\n\n var createCounterStyleFromSymbols = function createCounterStyleFromSymbols(value, symbols, suffix) {\n if (suffix === void 0) {\n suffix = '. ';\n }\n\n var codePointRangeLength = symbols.length;\n return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) {\n return symbols[Math.floor(codePoint % codePointRangeLength)];\n }) + suffix;\n };\n\n var CJK_ZEROS = 1 << 0;\n var CJK_TEN_COEFFICIENTS = 1 << 1;\n var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\n var CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\n var createCJKCounter = function createCJKCounter(value, numbers, multipliers, negativeSign, suffix, flags) {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n }\n\n var tmp = Math.abs(value);\n var string = suffix;\n\n if (tmp === 0) {\n return numbers[0] + string;\n }\n\n for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\n var coefficient = tmp % 10;\n\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS)) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n } else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n\n tmp = Math.floor(tmp / 10);\n }\n\n return (value < 0 ? negativeSign : '') + string;\n };\n\n var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\n var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\n var JAPANESE_NEGATIVE = 'マイナス';\n var KOREAN_NEGATIVE = '마이너스';\n\n var createCounterText = function createCounterText(value, type, appendSuffix) {\n var defaultSuffix = appendSuffix ? '. ' : '';\n var cjkSuffix = appendSuffix ? '、' : '';\n var koreanSuffix = appendSuffix ? ', ' : '';\n var spaceSuffix = appendSuffix ? ' ' : '';\n\n switch (type) {\n case LIST_STYLE_TYPE.DISC:\n return '•' + spaceSuffix;\n\n case LIST_STYLE_TYPE.CIRCLE:\n return '◦' + spaceSuffix;\n\n case LIST_STYLE_TYPE.SQUARE:\n return '◾' + spaceSuffix;\n\n case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? \"0\" + string : string;\n\n case LIST_STYLE_TYPE.CJK_DECIMAL:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n\n case LIST_STYLE_TYPE.LOWER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();\n\n case LIST_STYLE_TYPE.UPPER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n\n case LIST_STYLE_TYPE.LOWER_GREEK:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n\n case LIST_STYLE_TYPE.LOWER_ALPHA:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n\n case LIST_STYLE_TYPE.UPPER_ALPHA:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n\n case LIST_STYLE_TYPE.ARABIC_INDIC:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.ARMENIAN:\n case LIST_STYLE_TYPE.UPPER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n\n case LIST_STYLE_TYPE.LOWER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();\n\n case LIST_STYLE_TYPE.BENGALI:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.CAMBODIAN:\n case LIST_STYLE_TYPE.KHMER:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n\n case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n\n case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n\n case LIST_STYLE_TYPE.JAPANESE_FORMAL:\n return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n\n case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);\n\n case LIST_STYLE_TYPE.DEVANAGARI:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.GEORGIAN:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n\n case LIST_STYLE_TYPE.GUJARATI:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.GURMUKHI:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.HEBREW:\n return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n\n case LIST_STYLE_TYPE.HIRAGANA:\n return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');\n\n case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');\n\n case LIST_STYLE_TYPE.KANNADA:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.KATAKANA:\n return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);\n\n case LIST_STYLE_TYPE.KATAKANA_IROHA:\n return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);\n\n case LIST_STYLE_TYPE.LAO:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.MONGOLIAN:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.MYANMAR:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.ORIYA:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.PERSIAN:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.TAMIL:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.TELUGU:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.THAI:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.TIBETAN:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n\n case LIST_STYLE_TYPE.DECIMAL:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\n };\n\n var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\n var DocumentCloner =\n /** @class */\n function () {\n function DocumentCloner(context, element, options) {\n this.context = context;\n this.options = options;\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement);\n }\n\n DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {\n var _this = this;\n\n var iframe = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(\"Unable to find iframe window\");\n }\n\n var scrollX = ownerDocument.defaultView.pageXOffset;\n var scrollY = ownerDocument.defaultView.pageYOffset;\n var cloneWindow = iframe.contentWindow;\n var documentClone = cloneWindow.document;\n /* Chrome doesn't detect relative background-images assigned in inline \n * \";\n * var result = util.encodeHTMLEntity(htmlEntityString);\n * //\"<script> alert('test');</script><a href='test'>\"\n */\n\n\n function encodeHTMLEntity(html) {\n var entities = {\n '\"': 'quot',\n '&': 'amp',\n '<': 'lt',\n '>': 'gt',\n '\\'': '#39'\n };\n return html.replace(/[<>&\"']/g, function (m0) {\n return entities[m0] ? '&' + entities[m0] + ';' : m0;\n });\n }\n /**\n * Return whether the string capable to transform into plain string is in the given string or not.\n * @param {String} string - test string\n * @memberof tui.util\n * @returns {boolean}\n */\n\n\n function hasEncodableString(string) {\n return /[<>&\"']/.test(string);\n }\n /**\n * Return duplicate charters\n * @param {string} operandStr1 The operand string\n * @param {string} operandStr2 The operand string\n * @private\n * @memberof tui.util\n * @returns {string}\n * @example\n * //-- #1. Get Module --//\n * var util = require('tui-code-snippet'); // node, commonjs\n * var util = tui.util; // distribution file\n *\n * //-- #2. Use property --//\n * util.getDuplicatedChar('fe dev', 'nhn entertainment'); // 'e'\n * util.getDuplicatedChar('fdsa', 'asdf'); // 'asdf'\n */\n\n\n function getDuplicatedChar(operandStr1, operandStr2) {\n var i = 0;\n var len = operandStr1.length;\n var pool = {};\n var dupl, key;\n\n for (; i < len; i += 1) {\n key = operandStr1.charAt(i);\n pool[key] = 1;\n }\n\n for (i = 0, len = operandStr2.length; i < len; i += 1) {\n key = operandStr2.charAt(i);\n\n if (pool[key]) {\n pool[key] += 1;\n }\n }\n\n pool = collection.filter(pool, function (item) {\n return item > 1;\n });\n pool = object.keys(pool).sort();\n dupl = pool.join('');\n return dupl;\n }\n\n module.exports = {\n decodeHTMLEntity: decodeHTMLEntity,\n encodeHTMLEntity: encodeHTMLEntity,\n hasEncodableString: hasEncodableString,\n getDuplicatedChar: getDuplicatedChar\n };\n /***/\n },\n /* 8 */\n\n /***/\n function (module, exports) {\n /**\n * @fileoverview collections of some technic methods.\n * @author NHN.\n * FE Development Lab \n */\n 'use strict';\n\n var tricks = {};\n var aps = Array.prototype.slice;\n /**\n * Creates a debounced function that delays invoking fn until after delay milliseconds has elapsed\n * since the last time the debouced function was invoked.\n * @param {function} fn The function to debounce.\n * @param {number} [delay=0] The number of milliseconds to delay\n * @memberof tui.util\n * @returns {function} debounced function.\n * @example\n * //-- #1. Get Module --//\n * var util = require('tui-code-snippet'); // node, commonjs\n * var util = tui.util; // distribution file\n *\n * //-- #2. Use property --//\n * function someMethodToInvokeDebounced() {}\n *\n * var debounced = util.debounce(someMethodToInvokeDebounced, 300);\n *\n * // invoke repeatedly\n * debounced();\n * debounced();\n * debounced();\n * debounced();\n * debounced();\n * debounced(); // last invoke of debounced()\n *\n * // invoke someMethodToInvokeDebounced() after 300 milliseconds.\n */\n\n function debounce(fn, delay) {\n var timer, args;\n /* istanbul ignore next */\n\n delay = delay || 0;\n\n function debounced() {\n // eslint-disable-line require-jsdoc\n args = aps.call(arguments);\n window.clearTimeout(timer);\n timer = window.setTimeout(function () {\n fn.apply(null, args);\n }, delay);\n }\n\n return debounced;\n }\n /**\n * return timestamp\n * @memberof tui.util\n * @returns {number} The number of milliseconds from Jan. 1970 00:00:00 (GMT)\n */\n\n\n function timestamp() {\n return Number(new Date());\n }\n /**\n * Creates a throttled function that only invokes fn at most once per every interval milliseconds.\n *\n * You can use this throttle short time repeatedly invoking functions. (e.g MouseMove, Resize ...)\n *\n * if you need reuse throttled method. you must remove slugs (e.g. flag variable) related with throttling.\n * @param {function} fn function to throttle\n * @param {number} [interval=0] the number of milliseconds to throttle invocations to.\n * @memberof tui.util\n * @returns {function} throttled function\n * @example\n * //-- #1. Get Module --//\n * var util = require('tui-code-snippet'); // node, commonjs\n * var util = tui.util; // distribution file\n *\n * //-- #2. Use property --//\n * function someMethodToInvokeThrottled() {}\n *\n * var throttled = util.throttle(someMethodToInvokeThrottled, 300);\n *\n * // invoke repeatedly\n * throttled(); // invoke (leading)\n * throttled();\n * throttled(); // invoke (near 300 milliseconds)\n * throttled();\n * throttled();\n * throttled(); // invoke (near 600 milliseconds)\n * // ...\n * // invoke (trailing)\n *\n * // if you need reuse throttled method. then invoke reset()\n * throttled.reset();\n */\n\n\n function throttle(fn, interval) {\n var base;\n var isLeading = true;\n\n var tick = function tick(_args) {\n fn.apply(null, _args);\n base = null;\n };\n\n var debounced, stamp, args;\n /* istanbul ignore next */\n\n interval = interval || 0;\n debounced = tricks.debounce(tick, interval);\n\n function throttled() {\n // eslint-disable-line require-jsdoc\n args = aps.call(arguments);\n\n if (isLeading) {\n tick(args);\n isLeading = false;\n return;\n }\n\n stamp = tricks.timestamp();\n base = base || stamp; // pass array directly because `debounce()`, `tick()` are already use\n // `apply()` method to invoke developer's `fn` handler.\n //\n // also, this `debounced` line invoked every time for implements\n // `trailing` features.\n\n debounced(args);\n\n if (stamp - base >= interval) {\n tick(args);\n }\n }\n\n function reset() {\n // eslint-disable-line require-jsdoc\n isLeading = true;\n base = null;\n }\n\n throttled.reset = reset;\n return throttled;\n }\n\n tricks.timestamp = timestamp;\n tricks.debounce = debounce;\n tricks.throttle = throttle;\n module.exports = tricks;\n /***/\n },\n /* 9 */\n\n /***/\n function (module, exports, __webpack_require__) {\n /**\n * @fileoverview This module has some functions for handling object as collection.\n * @author NHN.\n * FE Development Lab \n */\n 'use strict';\n\n var object = __webpack_require__(1);\n\n var collection = __webpack_require__(4);\n\n var type = __webpack_require__(2);\n\n var ms7days = 7 * 24 * 60 * 60 * 1000;\n /**\n * Check if the date has passed 7 days\n * @param {number} date - milliseconds\n * @returns {boolean}\n * @ignore\n */\n\n function isExpired(date) {\n var now = new Date().getTime();\n return now - date > ms7days;\n }\n /**\n * Send hostname on DOMContentLoaded.\n * To prevent hostname set tui.usageStatistics to false.\n * @param {string} appName - application name\n * @param {string} trackingId - GA tracking ID\n * @ignore\n */\n\n\n function sendHostname(appName, trackingId) {\n var url = 'https://www.google-analytics.com/collect';\n var hostname = location.hostname;\n var hitType = 'event';\n var eventCategory = 'use';\n var applicationKeyForStorage = 'TOAST UI ' + appName + ' for ' + hostname + ': Statistics';\n var date = window.localStorage.getItem(applicationKeyForStorage); // skip if the flag is defined and is set to false explicitly\n\n if (!type.isUndefined(window.tui) && window.tui.usageStatistics === false) {\n return;\n } // skip if not pass seven days old\n\n\n if (date && !isExpired(date)) {\n return;\n }\n\n window.localStorage.setItem(applicationKeyForStorage, new Date().getTime());\n setTimeout(function () {\n if (document.readyState === 'interactive' || document.readyState === 'complete') {\n imagePing(url, {\n v: 1,\n t: hitType,\n tid: trackingId,\n cid: hostname,\n dp: hostname,\n dh: appName,\n el: appName,\n ec: eventCategory\n });\n }\n }, 1000);\n }\n /**\n * Request image ping.\n * @param {String} url url for ping request\n * @param {Object} trackingInfo infos for make query string\n * @returns {HTMLElement}\n * @memberof tui.util\n * @example\n * //-- #1. Get Module --//\n * var util = require('tui-code-snippet'); // node, commonjs\n * var util = tui.util; // distribution file\n *\n * //-- #2. Use property --//\n * util.imagePing('https://www.google-analytics.com/collect', {\n * v: 1,\n * t: 'event',\n * tid: 'trackingid',\n * cid: 'cid',\n * dp: 'dp',\n * dh: 'dh'\n * });\n */\n\n\n function imagePing(url, trackingInfo) {\n var queryString = collection.map(object.keys(trackingInfo), function (key, index) {\n var startWith = index === 0 ? '' : '&';\n return startWith + key + '=' + trackingInfo[key];\n }).join('');\n var trackingElement = document.createElement('img');\n trackingElement.src = url + '?' + queryString;\n trackingElement.style.display = 'none';\n document.body.appendChild(trackingElement);\n document.body.removeChild(trackingElement);\n return trackingElement;\n }\n\n module.exports = {\n imagePing: imagePing,\n sendHostname: sendHostname\n };\n /***/\n },\n /* 10 */\n\n /***/\n function (module, exports) {\n /**\n * @fileoverview This module detects the kind of well-known browser and version.\n * @author NHN.\n * FE Development Lab \n */\n 'use strict';\n /**\n * This object has an information that indicate the kind of browser.
    \n * The list below is a detectable browser list.\n * - ie8 ~ ie11\n * - chrome\n * - firefox\n * - safari\n * - edge\n * @memberof tui.util\n * @example\n * //-- #1. Get Module --//\n * var util = require('tui-code-snippet'); // node, commonjs\n * var util = tui.util; // distribution file\n *\n * //-- #2. Use property --//\n * util.browser.chrome === true; // chrome\n * util.browser.firefox === true; // firefox\n * util.browser.safari === true; // safari\n * util.browser.msie === true; // IE\n * util.browser.edge === true; // edge\n * util.browser.others === true; // other browser\n * util.browser.version; // browser version\n */\n\n var browser = {\n chrome: false,\n firefox: false,\n safari: false,\n msie: false,\n edge: false,\n others: false,\n version: 0\n };\n\n if (window && window.navigator) {\n detectBrowser();\n }\n /**\n * Detect the browser.\n * @private\n */\n\n\n function detectBrowser() {\n var nav = window.navigator;\n var appName = nav.appName.replace(/\\s/g, '_');\n var userAgent = nav.userAgent;\n var rIE = /MSIE\\s([0-9]+[.0-9]*)/;\n var rIE11 = /Trident.*rv:11\\./;\n var rEdge = /Edge\\/(\\d+)\\./;\n var versionRegex = {\n firefox: /Firefox\\/(\\d+)\\./,\n chrome: /Chrome\\/(\\d+)\\./,\n safari: /Version\\/([\\d.]+).*Safari\\/(\\d+)/\n };\n var key, tmp;\n var detector = {\n Microsoft_Internet_Explorer: function Microsoft_Internet_Explorer() {\n // eslint-disable-line camelcase\n var detectedVersion = userAgent.match(rIE);\n\n if (detectedVersion) {\n // ie8 ~ ie10\n browser.msie = true;\n browser.version = parseFloat(detectedVersion[1]);\n } else {\n // no version information\n browser.others = true;\n }\n },\n Netscape: function Netscape() {\n // eslint-disable-line complexity\n var detected = false;\n\n if (rIE11.exec(userAgent)) {\n browser.msie = true;\n browser.version = 11;\n detected = true;\n } else if (rEdge.exec(userAgent)) {\n browser.edge = true;\n browser.version = userAgent.match(rEdge)[1];\n detected = true;\n } else {\n for (key in versionRegex) {\n if (versionRegex.hasOwnProperty(key)) {\n tmp = userAgent.match(versionRegex[key]);\n\n if (tmp && tmp.length > 1) {\n // eslint-disable-line max-depth\n browser[key] = detected = true;\n browser.version = parseFloat(tmp[1] || 0);\n break;\n }\n }\n }\n }\n\n if (!detected) {\n browser.others = true;\n }\n }\n };\n var fn = detector[appName];\n\n if (fn) {\n detector[appName]();\n }\n }\n\n module.exports = browser;\n /***/\n },\n /* 11 */\n\n /***/\n function (module, exports, __webpack_require__) {\n /**\n * @fileoverview This module has some methods for handling popup-window\n * @author NHN.\n * FE Development Lab \n */\n 'use strict';\n\n var collection = __webpack_require__(4);\n\n var type = __webpack_require__(2);\n\n var func = __webpack_require__(5);\n\n var browser = __webpack_require__(10);\n\n var object = __webpack_require__(1);\n\n var popupId = 0;\n /**\n * Popup management class\n * @constructor\n * @memberof tui.util\n * @example\n * // node, commonjs\n * var popup = require('tui-code-snippet').popup;\n * @example\n * // distribution file, script\n * \n * \n * \n */\n\n function CustomEvents() {\n /**\n * @type {HandlerItem[]}\n */\n this.events = null;\n /**\n * only for checking specific context event was binded\n * @type {object[]}\n */\n\n this.contexts = null;\n }\n /**\n * Mixin custom events feature to specific constructor\n * @param {function} func - constructor\n * @example\n * //-- #1. Get Module --//\n * var CustomEvents = require('tui-code-snippet').CustomEvents; // node, commonjs\n * var CustomEvents = tui.util.CustomEvents; // distribution file\n *\n * //-- #2. Use property --//\n * var model;\n * function Model() {\n * this.name = '';\n * }\n * CustomEvents.mixin(Model);\n *\n * model = new Model();\n * model.on('change', function() { this.name = 'model'; }, this);\n * model.fire('change');\n * alert(model.name); // 'model';\n */\n\n\n CustomEvents.mixin = function (func) {\n object.extend(func.prototype, CustomEvents.prototype);\n };\n /**\n * Get HandlerItem object\n * @param {function} handler - handler function\n * @param {object} [context] - context for handler\n * @returns {HandlerItem} HandlerItem object\n * @private\n */\n\n\n CustomEvents.prototype._getHandlerItem = function (handler, context) {\n var item = {\n handler: handler\n };\n\n if (context) {\n item.context = context;\n }\n\n return item;\n };\n /**\n * Get event object safely\n * @param {string} [eventName] - create sub event map if not exist.\n * @returns {(object|array)} event object. if you supplied `eventName`\n * parameter then make new array and return it\n * @private\n */\n\n\n CustomEvents.prototype._safeEvent = function (eventName) {\n var events = this.events;\n var byName;\n\n if (!events) {\n events = this.events = {};\n }\n\n if (eventName) {\n byName = events[eventName];\n\n if (!byName) {\n byName = [];\n events[eventName] = byName;\n }\n\n events = byName;\n }\n\n return events;\n };\n /**\n * Get context array safely\n * @returns {array} context array\n * @private\n */\n\n\n CustomEvents.prototype._safeContext = function () {\n var context = this.contexts;\n\n if (!context) {\n context = this.contexts = [];\n }\n\n return context;\n };\n /**\n * Get index of context\n * @param {object} ctx - context that used for bind custom event\n * @returns {number} index of context\n * @private\n */\n\n\n CustomEvents.prototype._indexOfContext = function (ctx) {\n var context = this._safeContext();\n\n var index = 0;\n\n while (context[index]) {\n if (ctx === context[index][0]) {\n return index;\n }\n\n index += 1;\n }\n\n return -1;\n };\n /**\n * Memorize supplied context for recognize supplied object is context or\n * name: handler pair object when off()\n * @param {object} ctx - context object to memorize\n * @private\n */\n\n\n CustomEvents.prototype._memorizeContext = function (ctx) {\n var context, index;\n\n if (!type.isExisty(ctx)) {\n return;\n }\n\n context = this._safeContext();\n index = this._indexOfContext(ctx);\n\n if (index > -1) {\n context[index][1] += 1;\n } else {\n context.push([ctx, 1]);\n }\n };\n /**\n * Forget supplied context object\n * @param {object} ctx - context object to forget\n * @private\n */\n\n\n CustomEvents.prototype._forgetContext = function (ctx) {\n var context, contextIndex;\n\n if (!type.isExisty(ctx)) {\n return;\n }\n\n context = this._safeContext();\n contextIndex = this._indexOfContext(ctx);\n\n if (contextIndex > -1) {\n context[contextIndex][1] -= 1;\n\n if (context[contextIndex][1] <= 0) {\n context.splice(contextIndex, 1);\n }\n }\n };\n /**\n * Bind event handler\n * @param {(string|{name:string, handler:function})} eventName - custom\n * event name or an object {eventName: handler}\n * @param {(function|object)} [handler] - handler function or context\n * @param {object} [context] - context for binding\n * @private\n */\n\n\n CustomEvents.prototype._bindEvent = function (eventName, handler, context) {\n var events = this._safeEvent(eventName);\n\n this._memorizeContext(context);\n\n events.push(this._getHandlerItem(handler, context));\n };\n /**\n * Bind event handlers\n * @param {(string|{name:string, handler:function})} eventName - custom\n * event name or an object {eventName: handler}\n * @param {(function|object)} [handler] - handler function or context\n * @param {object} [context] - context for binding\n * //-- #1. Get Module --//\n * var CustomEvents = require('tui-code-snippet').CustomEvents; // node, commonjs\n * var CustomEvents = tui.util.CustomEvents; // distribution file\n *\n * //-- #2. Use property --//\n * // # 2.1 Basic Usage\n * CustomEvents.on('onload', handler);\n *\n * // # 2.2 With context\n * CustomEvents.on('onload', handler, myObj);\n *\n * // # 2.3 Bind by object that name, handler pairs\n * CustomEvents.on({\n * 'play': handler,\n * 'pause': handler2\n * });\n *\n * // # 2.4 Bind by object that name, handler pairs with context object\n * CustomEvents.on({\n * 'play': handler\n * }, myObj);\n */\n\n\n CustomEvents.prototype.on = function (eventName, handler, context) {\n var self = this;\n\n if (type.isString(eventName)) {\n // [syntax 1, 2]\n eventName = eventName.split(R_EVENTNAME_SPLIT);\n collection.forEach(eventName, function (name) {\n self._bindEvent(name, handler, context);\n });\n } else if (type.isObject(eventName)) {\n // [syntax 3, 4]\n context = handler;\n collection.forEach(eventName, function (func, name) {\n self.on(name, func, context);\n });\n }\n };\n /**\n * Bind one-shot event handlers\n * @param {(string|{name:string,handler:function})} eventName - custom\n * event name or an object {eventName: handler}\n * @param {function|object} [handler] - handler function or context\n * @param {object} [context] - context for binding\n */\n\n\n CustomEvents.prototype.once = function (eventName, handler, context) {\n var self = this;\n\n if (type.isObject(eventName)) {\n context = handler;\n collection.forEach(eventName, function (func, name) {\n self.once(name, func, context);\n });\n return;\n }\n\n function onceHandler() {\n // eslint-disable-line require-jsdoc\n handler.apply(context, arguments);\n self.off(eventName, onceHandler, context);\n }\n\n this.on(eventName, onceHandler, context);\n };\n /**\n * Splice supplied array by callback result\n * @param {array} arr - array to splice\n * @param {function} predicate - function return boolean\n * @private\n */\n\n\n CustomEvents.prototype._spliceMatches = function (arr, predicate) {\n var i = 0;\n var len;\n\n if (!type.isArray(arr)) {\n return;\n }\n\n for (len = arr.length; i < len; i += 1) {\n if (predicate(arr[i]) === true) {\n arr.splice(i, 1);\n len -= 1;\n i -= 1;\n }\n }\n };\n /**\n * Get matcher for unbind specific handler events\n * @param {function} handler - handler function\n * @returns {function} handler matcher\n * @private\n */\n\n\n CustomEvents.prototype._matchHandler = function (handler) {\n var self = this;\n return function (item) {\n var needRemove = handler === item.handler;\n\n if (needRemove) {\n self._forgetContext(item.context);\n }\n\n return needRemove;\n };\n };\n /**\n * Get matcher for unbind specific context events\n * @param {object} context - context\n * @returns {function} object matcher\n * @private\n */\n\n\n CustomEvents.prototype._matchContext = function (context) {\n var self = this;\n return function (item) {\n var needRemove = context === item.context;\n\n if (needRemove) {\n self._forgetContext(item.context);\n }\n\n return needRemove;\n };\n };\n /**\n * Get matcher for unbind specific hander, context pair events\n * @param {function} handler - handler function\n * @param {object} context - context\n * @returns {function} handler, context matcher\n * @private\n */\n\n\n CustomEvents.prototype._matchHandlerAndContext = function (handler, context) {\n var self = this;\n return function (item) {\n var matchHandler = handler === item.handler;\n var matchContext = context === item.context;\n var needRemove = matchHandler && matchContext;\n\n if (needRemove) {\n self._forgetContext(item.context);\n }\n\n return needRemove;\n };\n };\n /**\n * Unbind event by event name\n * @param {string} eventName - custom event name to unbind\n * @param {function} [handler] - handler function\n * @private\n */\n\n\n CustomEvents.prototype._offByEventName = function (eventName, handler) {\n var self = this;\n var forEach = collection.forEachArray;\n var andByHandler = type.isFunction(handler);\n\n var matchHandler = self._matchHandler(handler);\n\n eventName = eventName.split(R_EVENTNAME_SPLIT);\n forEach(eventName, function (name) {\n var handlerItems = self._safeEvent(name);\n\n if (andByHandler) {\n self._spliceMatches(handlerItems, matchHandler);\n } else {\n forEach(handlerItems, function (item) {\n self._forgetContext(item.context);\n });\n self.events[name] = [];\n }\n });\n };\n /**\n * Unbind event by handler function\n * @param {function} handler - handler function\n * @private\n */\n\n\n CustomEvents.prototype._offByHandler = function (handler) {\n var self = this;\n\n var matchHandler = this._matchHandler(handler);\n\n collection.forEach(this._safeEvent(), function (handlerItems) {\n self._spliceMatches(handlerItems, matchHandler);\n });\n };\n /**\n * Unbind event by object(name: handler pair object or context object)\n * @param {object} obj - context or {name: handler} pair object\n * @param {function} handler - handler function\n * @private\n */\n\n\n CustomEvents.prototype._offByObject = function (obj, handler) {\n var self = this;\n var matchFunc;\n\n if (this._indexOfContext(obj) < 0) {\n collection.forEach(obj, function (func, name) {\n self.off(name, func);\n });\n } else if (type.isString(handler)) {\n matchFunc = this._matchContext(obj);\n\n self._spliceMatches(this._safeEvent(handler), matchFunc);\n } else if (type.isFunction(handler)) {\n matchFunc = this._matchHandlerAndContext(handler, obj);\n collection.forEach(this._safeEvent(), function (handlerItems) {\n self._spliceMatches(handlerItems, matchFunc);\n });\n } else {\n matchFunc = this._matchContext(obj);\n collection.forEach(this._safeEvent(), function (handlerItems) {\n self._spliceMatches(handlerItems, matchFunc);\n });\n }\n };\n /**\n * Unbind custom events\n * @param {(string|object|function)} eventName - event name or context or\n * {name: handler} pair object or handler function\n * @param {(function)} handler - handler function\n * @example\n * //-- #1. Get Module --//\n * var CustomEvents = require('tui-code-snippet').CustomEvents; // node, commonjs\n * var CustomEvents = tui.util.CustomEvents; // distribution file\n *\n * //-- #2. Use property --//\n * // # 2.1 off by event name\n * CustomEvents.off('onload');\n *\n * // # 2.2 off by event name and handler\n * CustomEvents.off('play', handler);\n *\n * // # 2.3 off by handler\n * CustomEvents.off(handler);\n *\n * // # 2.4 off by context\n * CustomEvents.off(myObj);\n *\n * // # 2.5 off by context and handler\n * CustomEvents.off(myObj, handler);\n *\n * // # 2.6 off by context and event name\n * CustomEvents.off(myObj, 'onload');\n *\n * // # 2.7 off by an Object. that is {eventName: handler}\n * CustomEvents.off({\n * 'play': handler,\n * 'pause': handler2\n * });\n *\n * // # 2.8 off the all events\n * CustomEvents.off();\n */\n\n\n CustomEvents.prototype.off = function (eventName, handler) {\n if (type.isString(eventName)) {\n // [syntax 1, 2]\n this._offByEventName(eventName, handler);\n } else if (!arguments.length) {\n // [syntax 8]\n this.events = {};\n this.contexts = [];\n } else if (type.isFunction(eventName)) {\n // [syntax 3]\n this._offByHandler(eventName);\n } else if (type.isObject(eventName)) {\n // [syntax 4, 5, 6]\n this._offByObject(eventName, handler);\n }\n };\n /**\n * Fire custom event\n * @param {string} eventName - name of custom event\n */\n\n\n CustomEvents.prototype.fire = function (eventName) {\n // eslint-disable-line\n this.invoke.apply(this, arguments);\n };\n /**\n * Fire a event and returns the result of operation 'boolean AND' with all\n * listener's results.\n *\n * So, It is different from {@link CustomEvents#fire}.\n *\n * In service code, use this as a before event in component level usually\n * for notifying that the event is cancelable.\n * @param {string} eventName - Custom event name\n * @param {...*} data - Data for event\n * @returns {boolean} The result of operation 'boolean AND'\n * @example\n * var map = new Map();\n * map.on({\n * 'beforeZoom': function() {\n * // It should cancel the 'zoom' event by some conditions.\n * if (that.disabled && this.getState()) {\n * return false;\n * }\n * return true;\n * }\n * });\n *\n * if (this.invoke('beforeZoom')) { // check the result of 'beforeZoom'\n * // if true,\n * // doSomething\n * }\n */\n\n\n CustomEvents.prototype.invoke = function (eventName) {\n var events, args, index, item;\n\n if (!this.hasListener(eventName)) {\n return true;\n }\n\n events = this._safeEvent(eventName);\n args = Array.prototype.slice.call(arguments, 1);\n index = 0;\n\n while (events[index]) {\n item = events[index];\n\n if (item.handler.apply(item.context, args) === false) {\n return false;\n }\n\n index += 1;\n }\n\n return true;\n };\n /**\n * Return whether at least one of the handlers is registered in the given\n * event name.\n * @param {string} eventName - Custom event name\n * @returns {boolean} Is there at least one handler in event name?\n */\n\n\n CustomEvents.prototype.hasListener = function (eventName) {\n return this.getListenerLength(eventName) > 0;\n };\n /**\n * Return a count of events registered.\n * @param {string} eventName - Custom event name\n * @returns {number} number of event\n */\n\n\n CustomEvents.prototype.getListenerLength = function (eventName) {\n var events = this._safeEvent(eventName);\n\n return events.length;\n };\n\n module.exports = CustomEvents;\n /***/\n },\n /* 17 */\n\n /***/\n function (module, exports, __webpack_require__) {\n /**\n * @fileoverview This module provides a Enum Constructor.\n * @author NHN.\n * FE Development Lab \n * @example\n * // node, commonjs\n * var Enum = require('tui-code-snippet').Enum;\n * @example\n * // distribution file, script\n * \n * \n * \n * \n *