{"version":3,"sources":["webpack:///./node_modules/bluebird/js/browser/bluebird.js","webpack:///./node_modules/ag-grid/dist/lib/context/context.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/mousetrap/plugins/global-bind/mousetrap-global-bind.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/https-browserify/index.js","webpack:///./node_modules/stream-http/lib/request.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/to-arraybuffer/index.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/builtin-status-codes/browser.js","webpack:///./node_modules/node-libs-browser/node_modules/punycode/punycode.js","webpack:///./node_modules/url/util.js","webpack:///./node_modules/querystring-es3/index.js","webpack:///./node_modules/querystring-es3/decode.js","webpack:///./node_modules/querystring-es3/encode.js","webpack:///./node_modules/flatpickr/dist/esm/index.js","webpack:///./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/flatpickr/dist/l10n/fr.js","webpack:///./node_modules/jquery-ui/ui/i18n/datepicker-fr-CA.js","webpack:///./node_modules/jquery-ui/ui/keycode.js","webpack:///./node_modules/blueimp-load-image/js/index.js","webpack:///./node_modules/blueimp-load-image/js/load-image-fetch.js","webpack:///./node_modules/blueimp-load-image/js/load-image-exif-map.js","webpack:///./node_modules/blueimp-load-image/js/load-image-iptc-map.js","webpack:///./node_modules/blueimp-load-image/js/load-image-orientation.js","webpack:///./node_modules/compressorjs/dist/compressor.js","webpack:///./node_modules/imask/dist/imask.js","webpack:///./node_modules/ag-grid/dist/lib/dragAndDrop/dragAndDropService.js","webpack:///./node_modules/mousetrap-global-bind/mousetrap-global-bind.js","webpack:///./node_modules/ts-keycode-enum/dist/js/Key.enum.js","webpack:///./node_modules/signature_pad/dist/signature_pad.mjs","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/fabric-with-gestures/dist/fabric.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/babel-polyfill/lib/index.js","webpack:///./node_modules/core-js/shim.js","webpack:///./node_modules/core-js/modules/es6.symbol.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_enum-keys.js","webpack:///./node_modules/core-js/modules/es6.object.create.js","webpack:///./node_modules/core-js/modules/es6.object.define-property.js","webpack:///./node_modules/core-js/modules/es6.object.define-properties.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.object.keys.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack:///./node_modules/core-js/modules/es6.object.freeze.js","webpack:///./node_modules/core-js/modules/es6.object.seal.js","webpack:///./node_modules/core-js/modules/es6.object.prevent-extensions.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-extensible.js","webpack:///./node_modules/core-js/modules/es6.object.assign.js","webpack:///./node_modules/core-js/modules/es6.object.is.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.function.bind.js","webpack:///./node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/core-js/modules/es6.function.has-instance.js","webpack:///./node_modules/core-js/modules/es6.parse-int.js","webpack:///./node_modules/core-js/modules/es6.parse-float.js","webpack:///./node_modules/core-js/modules/es6.number.constructor.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.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/ag-grid/dist/lib/valueService/valueService.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/ag-grid/dist/lib/entities/rowNode.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.string.from-code-point.js","webpack:///./node_modules/core-js/modules/es6.string.raw.js","webpack:///./node_modules/core-js/modules/es6.string.trim.js","webpack:///./node_modules/ag-grid/dist/lib/selectionController.js","webpack:///./node_modules/core-js/modules/es6.string.iterator.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.includes.js","webpack:///./node_modules/core-js/modules/es6.string.repeat.js","webpack:///./node_modules/core-js/modules/es6.string.starts-with.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/ag-grid/dist/lib/filter/filterManager.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.italics.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./node_modules/core-js/modules/es6.string.small.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.date.now.js","webpack:///./node_modules/core-js/modules/es6.date.to-json.js","webpack:///./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack:///./node_modules/core-js/modules/_date-to-iso-string.js","webpack:///./node_modules/core-js/modules/es6.date.to-string.js","webpack:///./node_modules/core-js/modules/es6.date.to-primitive.js","webpack:///./node_modules/core-js/modules/_date-to-primitive.js","webpack:///./node_modules/core-js/modules/es6.array.is-array.js","webpack:///./node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/core-js/modules/es6.array.of.js","webpack:///./node_modules/core-js/modules/es6.array.join.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/es6.array.slice.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/core-js/modules/es6.array.for-each.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/es6.array.map.js","webpack:///./node_modules/core-js/modules/es6.array.filter.js","webpack:///./node_modules/core-js/modules/es6.array.some.js","webpack:///./node_modules/core-js/modules/es6.array.every.js","webpack:///./node_modules/core-js/modules/es6.array.reduce.js","webpack:///./node_modules/core-js/modules/es6.array.reduce-right.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/es6.array.index-of.js","webpack:///./node_modules/core-js/modules/es6.array.last-index-of.js","webpack:///./node_modules/core-js/modules/es6.array.copy-within.js","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/core-js/modules/es6.array.find-index.js","webpack:///./node_modules/core-js/modules/es6.array.species.js","webpack:///./node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///./node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es6.regexp.match.js","webpack:///./node_modules/core-js/modules/_cof.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.promise.js","webpack:///./node_modules/core-js/modules/es6.weak-set.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.int8-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/_to-integer.js","webpack:///./node_modules/core-js/modules/es6.typed.int16-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint32-array.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.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/_strict-method.js","webpack:///./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack:///./node_modules/core-js/modules/es6.reflect.get.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.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.js","webpack:///./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack:///./node_modules/flatpickr/dist/esm/types/options.js","webpack:///./node_modules/core-js/modules/es7.array.includes.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.string.at.js","webpack:///./node_modules/core-js/modules/es7.string.pad-start.js","webpack:///./node_modules/core-js/modules/es7.string.pad-end.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.string.match-all.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.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/es7.object.values.js","webpack:///./node_modules/core-js/modules/es7.object.entries.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.lookup-getter.js","webpack:///./node_modules/core-js/modules/es7.object.lookup-setter.js","webpack:///./node_modules/core-js/modules/es7.map.to-json.js","webpack:///./node_modules/core-js/modules/es7.set.to-json.js","webpack:///./node_modules/ag-grid/dist/lib/valueService/expressionService.js","webpack:///./node_modules/core-js/modules/es7.map.of.js","webpack:///./node_modules/core-js/modules/es7.set.of.js","webpack:///./node_modules/core-js/modules/es7.weak-map.of.js","webpack:///./node_modules/core-js/modules/es7.weak-set.of.js","webpack:///./node_modules/core-js/modules/es7.map.from.js","webpack:///./node_modules/core-js/modules/es7.set.from.js","webpack:///./node_modules/core-js/modules/es7.weak-map.from.js","webpack:///./node_modules/core-js/modules/es7.weak-set.from.js","webpack:///./node_modules/core-js/modules/es7.global.js","webpack:///./node_modules/core-js/modules/es7.system.global.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/rowRenderer.js","webpack:///./node_modules/core-js/modules/es7.error.is-error.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.isubh.js","webpack:///./node_modules/core-js/modules/es7.math.imulh.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.umulh.js","webpack:///./node_modules/core-js/modules/es7.math.signbit.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.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.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.asap.js","webpack:///./node_modules/core-js/modules/es7.observable.js","webpack:///./node_modules/core-js/modules/web.timers.js","webpack:///./node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/fn/regexp/escape.js","webpack:///./node_modules/core-js/modules/core.regexp.escape.js","webpack:///./node_modules/core-js/modules/_replacer.js","webpack:///./node_modules/intl/index.js","webpack:///./node_modules/intl/lib/core.js","webpack:///./node_modules/ag-grid-enterprise/main.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rendering/detail/detailCellRenderer.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rowModels/serverSide/serverSideRowModel.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rowModels/serverSide/serverSideCache.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rowModels/serverSide/serverSideBlock.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnsSelect/horizontalResizeComp.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnDrop/headerColumnDropComp.js","webpack:///./node_modules/ag-grid-aurelia/main.js","webpack:///./node_modules/ag-grid-aurelia/lib/aureliaFrameworkComponentWrapper.js","webpack:///./node_modules/ag-grid-aurelia/lib/aureliaCellRendererComponent.js","webpack:///./node_modules/ag-grid-aurelia/lib/aureliaComponentFactory.js","webpack:///./node_modules/xlsx/xlsx.js","webpack:///./node_modules/core-js/modules/_object-sap.js","webpack:///./node_modules/xlsx/jszip.js","webpack:///./node_modules/fullcalendar/dist/locale/fr.js","webpack:///./node_modules/fullcalendar/dist/locale/fr-ca.js","webpack:///./node_modules/fullcalendar/dist/locale/en-ca.js","webpack:///./node_modules/froala-editor/js/froala_editor.min.js","webpack:///./node_modules/froala-editor/js/languages/fr.js","webpack:///./node_modules/froala-editor/js/plugins/align.min.js","webpack:///./node_modules/froala-editor/js/plugins/lists.min.js","webpack:///./node_modules/froala-editor/js/plugins/fullscreen.min.js","webpack:///./node_modules/froala-editor/js/plugins/font_family.min.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/froala-editor/js/plugins/font_size.min.js","webpack:///./node_modules/froala-editor/js/plugins/char_counter.min.js","webpack:///./node_modules/a-simple-switch/src/javascript/Switch.js","webpack:///./node_modules/a-simple-switch/src/javascript/index.js","webpack:///./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/componentRecipes.js","webpack:///./node_modules/ag-grid/dist/lib/focusedCellController.js","webpack:///./node_modules/blueimp-load-image/js/load-image.js","webpack:///./node_modules/core-js/modules/_typed-array.js","webpack:///./node_modules/core-js/modules/_metadata.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/ag-grid/dist/lib/entities/gridCell.js","webpack:///./node_modules/ag-grid/dist/lib/sortController.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/i18next-http-backend/esm/utils.js","webpack:///./node_modules/ag-grid/dist/lib/eventKeys.js","webpack:///./node_modules/ag-grid/dist/lib/entities/columnGroup.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/componentResolver.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/beans.js","webpack:///./node_modules/ag-grid/dist/lib/utils.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/paginationProxy.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/pinnedRowModel.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/underscore/modules/restArguments.js","webpack:///./node_modules/underscore/modules/isObject.js","webpack:///./node_modules/underscore/modules/isNull.js","webpack:///./node_modules/underscore/modules/isUndefined.js","webpack:///./node_modules/underscore/modules/isBoolean.js","webpack:///./node_modules/underscore/modules/isElement.js","webpack:///./node_modules/underscore/modules/_tagTester.js","webpack:///./node_modules/underscore/modules/isString.js","webpack:///./node_modules/underscore/modules/isNumber.js","webpack:///./node_modules/underscore/modules/isDate.js","webpack:///./node_modules/underscore/modules/isRegExp.js","webpack:///./node_modules/underscore/modules/isError.js","webpack:///./node_modules/underscore/modules/isSymbol.js","webpack:///./node_modules/underscore/modules/isArrayBuffer.js","webpack:///./node_modules/underscore/modules/isFunction.js","webpack:///./node_modules/underscore/modules/_hasObjectTag.js","webpack:///./node_modules/underscore/modules/_stringTagBug.js","webpack:///./node_modules/underscore/modules/isDataView.js","webpack:///./node_modules/underscore/modules/isArray.js","webpack:///./node_modules/underscore/modules/_has.js","webpack:///./node_modules/underscore/modules/isArguments.js","webpack:///./node_modules/underscore/modules/isFinite.js","webpack:///./node_modules/underscore/modules/isNaN.js","webpack:///./node_modules/underscore/modules/constant.js","webpack:///./node_modules/underscore/modules/_createSizePropertyCheck.js","webpack:///./node_modules/underscore/modules/_shallowProperty.js","webpack:///./node_modules/underscore/modules/_getByteLength.js","webpack:///./node_modules/underscore/modules/_isBufferLike.js","webpack:///./node_modules/underscore/modules/isTypedArray.js","webpack:///./node_modules/underscore/modules/_getLength.js","webpack:///./node_modules/underscore/modules/_collectNonEnumProps.js","webpack:///./node_modules/underscore/modules/keys.js","webpack:///./node_modules/underscore/modules/isEmpty.js","webpack:///./node_modules/underscore/modules/isMatch.js","webpack:///./node_modules/underscore/modules/underscore.js","webpack:///./node_modules/underscore/modules/_toBufferView.js","webpack:///./node_modules/underscore/modules/isEqual.js","webpack:///./node_modules/underscore/modules/allKeys.js","webpack:///./node_modules/underscore/modules/_methodFingerprint.js","webpack:///./node_modules/underscore/modules/isMap.js","webpack:///./node_modules/underscore/modules/isWeakMap.js","webpack:///./node_modules/underscore/modules/isSet.js","webpack:///./node_modules/underscore/modules/isWeakSet.js","webpack:///./node_modules/underscore/modules/values.js","webpack:///./node_modules/underscore/modules/pairs.js","webpack:///./node_modules/underscore/modules/invert.js","webpack:///./node_modules/underscore/modules/functions.js","webpack:///./node_modules/underscore/modules/_createAssigner.js","webpack:///./node_modules/underscore/modules/extend.js","webpack:///./node_modules/underscore/modules/extendOwn.js","webpack:///./node_modules/underscore/modules/defaults.js","webpack:///./node_modules/underscore/modules/_baseCreate.js","webpack:///./node_modules/underscore/modules/create.js","webpack:///./node_modules/underscore/modules/clone.js","webpack:///./node_modules/underscore/modules/tap.js","webpack:///./node_modules/underscore/modules/toPath.js","webpack:///./node_modules/underscore/modules/_toPath.js","webpack:///./node_modules/underscore/modules/_deepGet.js","webpack:///./node_modules/underscore/modules/get.js","webpack:///./node_modules/underscore/modules/has.js","webpack:///./node_modules/underscore/modules/identity.js","webpack:///./node_modules/underscore/modules/matcher.js","webpack:///./node_modules/underscore/modules/property.js","webpack:///./node_modules/underscore/modules/_optimizeCb.js","webpack:///./node_modules/underscore/modules/_baseIteratee.js","webpack:///./node_modules/underscore/modules/iteratee.js","webpack:///./node_modules/underscore/modules/_cb.js","webpack:///./node_modules/underscore/modules/mapObject.js","webpack:///./node_modules/underscore/modules/noop.js","webpack:///./node_modules/underscore/modules/propertyOf.js","webpack:///./node_modules/underscore/modules/times.js","webpack:///./node_modules/underscore/modules/random.js","webpack:///./node_modules/underscore/modules/now.js","webpack:///./node_modules/underscore/modules/_createEscaper.js","webpack:///./node_modules/underscore/modules/_escapeMap.js","webpack:///./node_modules/underscore/modules/escape.js","webpack:///./node_modules/underscore/modules/unescape.js","webpack:///./node_modules/underscore/modules/_unescapeMap.js","webpack:///./node_modules/underscore/modules/templateSettings.js","webpack:///./node_modules/underscore/modules/template.js","webpack:///./node_modules/underscore/modules/result.js","webpack:///./node_modules/underscore/modules/uniqueId.js","webpack:///./node_modules/underscore/modules/chain.js","webpack:///./node_modules/underscore/modules/_executeBound.js","webpack:///./node_modules/underscore/modules/partial.js","webpack:///./node_modules/underscore/modules/bind.js","webpack:///./node_modules/underscore/modules/_isArrayLike.js","webpack:///./node_modules/underscore/modules/_flatten.js","webpack:///./node_modules/underscore/modules/bindAll.js","webpack:///./node_modules/underscore/modules/memoize.js","webpack:///./node_modules/underscore/modules/delay.js","webpack:///./node_modules/underscore/modules/defer.js","webpack:///./node_modules/underscore/modules/throttle.js","webpack:///./node_modules/underscore/modules/debounce.js","webpack:///./node_modules/underscore/modules/wrap.js","webpack:///./node_modules/underscore/modules/negate.js","webpack:///./node_modules/underscore/modules/compose.js","webpack:///./node_modules/underscore/modules/after.js","webpack:///./node_modules/underscore/modules/before.js","webpack:///./node_modules/underscore/modules/once.js","webpack:///./node_modules/underscore/modules/findKey.js","webpack:///./node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack:///./node_modules/underscore/modules/findIndex.js","webpack:///./node_modules/underscore/modules/findLastIndex.js","webpack:///./node_modules/underscore/modules/sortedIndex.js","webpack:///./node_modules/underscore/modules/_createIndexFinder.js","webpack:///./node_modules/underscore/modules/indexOf.js","webpack:///./node_modules/underscore/modules/lastIndexOf.js","webpack:///./node_modules/underscore/modules/find.js","webpack:///./node_modules/underscore/modules/findWhere.js","webpack:///./node_modules/underscore/modules/each.js","webpack:///./node_modules/underscore/modules/map.js","webpack:///./node_modules/underscore/modules/_createReduce.js","webpack:///./node_modules/underscore/modules/reduce.js","webpack:///./node_modules/underscore/modules/reduceRight.js","webpack:///./node_modules/underscore/modules/filter.js","webpack:///./node_modules/underscore/modules/reject.js","webpack:///./node_modules/underscore/modules/every.js","webpack:///./node_modules/underscore/modules/some.js","webpack:///./node_modules/underscore/modules/contains.js","webpack:///./node_modules/underscore/modules/invoke.js","webpack:///./node_modules/underscore/modules/pluck.js","webpack:///./node_modules/underscore/modules/where.js","webpack:///./node_modules/underscore/modules/max.js","webpack:///./node_modules/underscore/modules/min.js","webpack:///./node_modules/underscore/modules/sample.js","webpack:///./node_modules/underscore/modules/shuffle.js","webpack:///./node_modules/underscore/modules/sortBy.js","webpack:///./node_modules/underscore/modules/_group.js","webpack:///./node_modules/underscore/modules/groupBy.js","webpack:///./node_modules/underscore/modules/indexBy.js","webpack:///./node_modules/underscore/modules/countBy.js","webpack:///./node_modules/underscore/modules/partition.js","webpack:///./node_modules/underscore/modules/toArray.js","webpack:///./node_modules/underscore/modules/size.js","webpack:///./node_modules/underscore/modules/_keyInObj.js","webpack:///./node_modules/underscore/modules/pick.js","webpack:///./node_modules/underscore/modules/omit.js","webpack:///./node_modules/underscore/modules/initial.js","webpack:///./node_modules/underscore/modules/first.js","webpack:///./node_modules/underscore/modules/rest.js","webpack:///./node_modules/underscore/modules/last.js","webpack:///./node_modules/underscore/modules/compact.js","webpack:///./node_modules/underscore/modules/flatten.js","webpack:///./node_modules/underscore/modules/difference.js","webpack:///./node_modules/underscore/modules/without.js","webpack:///./node_modules/underscore/modules/uniq.js","webpack:///./node_modules/underscore/modules/union.js","webpack:///./node_modules/underscore/modules/intersection.js","webpack:///./node_modules/underscore/modules/unzip.js","webpack:///./node_modules/underscore/modules/zip.js","webpack:///./node_modules/underscore/modules/object.js","webpack:///./node_modules/underscore/modules/range.js","webpack:///./node_modules/underscore/modules/chunk.js","webpack:///./node_modules/underscore/modules/_chainResult.js","webpack:///./node_modules/underscore/modules/mixin.js","webpack:///./node_modules/underscore/modules/underscore-array-methods.js","webpack:///./node_modules/underscore/modules/index-default.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/flatpickr/dist/esm/l10n/default.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/columnUtils.js","webpack:///./node_modules/ag-grid/dist/lib/entities/originalColumnGroup.js","webpack:///./node_modules/ag-grid/dist/lib/valueService/valueCache.js","webpack:///./node_modules/ag-grid/dist/lib/gridOptionsWrapper.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellComp.js","webpack:///./node_modules/ag-grid/dist/lib/widgets/popupService.js","webpack:///./node_modules/ag-grid/dist/lib/gridPanel/scrollVisibleService.js","webpack:///./node_modules/ag-grid/dist/lib/misc/animationFrameService.js","webpack:///./node_modules/jquery/dist/jquery.js-exposed?28a1","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_string-trim.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/i18next/dist/es/logger.js","webpack:///./node_modules/i18next/dist/es/EventEmitter.js","webpack:///./node_modules/i18next/dist/es/utils.js","webpack:///./node_modules/i18next/dist/es/ResourceStore.js","webpack:///./node_modules/i18next/dist/es/postProcessor.js","webpack:///./node_modules/i18next/dist/es/Translator.js","webpack:///./node_modules/i18next/dist/es/LanguageUtils.js","webpack:///./node_modules/i18next/dist/es/PluralResolver.js","webpack:///./node_modules/i18next/dist/es/Interpolator.js","webpack:///./node_modules/i18next/dist/es/BackendConnector.js","webpack:///./node_modules/i18next/dist/es/CacheConnector.js","webpack:///./node_modules/i18next/dist/es/defaults.js","webpack:///./node_modules/i18next/dist/es/i18next.js","webpack:///./node_modules/i18next/dist/es/index.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/balancedColumnTreeBuilder.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/autoWidthCalculator.js","webpack:///./node_modules/ag-grid/dist/lib/dragAndDrop/dragService.js","webpack:///./node_modules/ag-grid/dist/lib/environment.js","webpack:///./node_modules/ag-grid/dist/lib/gridCore.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/valueFormatterService.js","webpack:///./node_modules/ag-grid/dist/lib/gridPanel/mouseEventService.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/columnHoverService.js","webpack:///./node_modules/ag-grid/dist/lib/widgets/touchListener.js","webpack:///./node_modules/fullcalendar/dist/fullcalendar.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dom.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/blueimp-load-image/js/load-image-meta.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_flags.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/aggregation/aggFuncService.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/ag-grid/dist/lib/csvCreator.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/displayedGroupCreator.js","webpack:///./node_modules/ag-grid/dist/lib/templateService.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/rowComp.js","webpack:///./node_modules/ag-grid/dist/lib/filter/baseFilter.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/features/setLeftFeature.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/columnAnimationService.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditorFactory.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellRendererFactory.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellRendererService.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/heightScaler.js","webpack:///./node_modules/underscore/modules/_setup.js","webpack:///./node_modules/ag-grid/dist/lib/alignedGridsService.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/horizontalResizeService.js","webpack:///./node_modules/ag-grid/dist/lib/widgets/agCheckbox.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/cache/rowNodeBlock.js","webpack:///./node_modules/ag-grid/main.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/core-js/modules/_is-regexp.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_typed.js","webpack:///./node_modules/core-js/modules/_object-forced-pam.js","webpack:///./node_modules/core-js/modules/_set-collection-of.js","webpack:///./node_modules/core-js/modules/_set-collection-from.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rendering/virtualList.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rangeController.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/clipboardService.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/menu/menuItemComponent.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnDrop/abstractColumnDropPanel.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnDrop/pivotColumnsPanel.js","webpack:///./node_modules/ag-grid/dist/lib/eventService.js","webpack:///./node_modules/i18next-http-backend/esm/getFetch.cjs","webpack:///./node_modules/urijs/src/URI.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/ag-grid/dist/lib/components/componentUtil.js","webpack:///./node_modules/ag-grid/dist/lib/gridSerializer.js","webpack:///./node_modules/ag-grid/dist/lib/entities/gridRow.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/checkboxSelectionComponent.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/componentProvider.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditors/textCellEditor.js","webpack:///./node_modules/ag-grid/dist/lib/filter/dateFilter.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditors/popupEditorWrapper.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellRenderers/animateSlideCellRenderer.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellRenderers/animateShowChangeCellRenderer.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellRenderers/groupCellRenderer.js","webpack:///./node_modules/ag-grid/dist/lib/styling/stylingService.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/hoverFeature.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditors/selectCellEditor.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/agComponentUtils.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/componentMetadataProvider.js","webpack:///./node_modules/ag-grid/dist/lib/gridPanel/gridPanel.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/autoHeightCalculator.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/headerRootComp.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/cssClassApplier.js","webpack:///./node_modules/ag-grid/dist/lib/cellNavigationService.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/groupInstanceIdCreator.js","webpack:///./node_modules/ag-grid/dist/lib/downloader.js","webpack:///./node_modules/ag-grid/dist/lib/grid.js","webpack:///./node_modules/ag-grid/dist/lib/rowNodes/selectableService.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/cache/rowNodeCache.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/clientSide/changedPath.js","webpack:///./node_modules/select2/dist/js/select2.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/columnController.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_wks-define.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_string-ws.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_string-repeat.js","webpack:///./node_modules/core-js/modules/_math-sign.js","webpack:///./node_modules/core-js/modules/_math-expm1.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_string-context.js","webpack:///./node_modules/core-js/modules/_fails-is-regexp.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/_create-property.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_array-fill.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/core-js/modules/_task.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/_typed-buffer.js","webpack:///./node_modules/ag-grid/dist/lib/events.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnsSelect/columnSelectComp.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnsSelect/columnSelectHeaderComp.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rowStages/pivotStage.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rowStages/pivotColDefService.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/licenseManager.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/license/md5.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/menu/menuList.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/menu/menuItemMapper.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnDrop/rowGroupColumnsPanel.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/excelXmlFactory.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bn-bd.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/flatpickr/dist/esm/utils/index.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-mx.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/ag-grid/dist/lib/gridApi.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/columnApi.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/ag-grid/dist/lib/widgets/component.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/urijs/src/punycode.js","webpack:///./node_modules/urijs/src/IPv6.js","webpack:///./node_modules/urijs/src/SecondLevelDomains.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/uuid/v4.js","webpack:///./node_modules/util/util.js","webpack:///./node_modules/ag-grid-aurelia/lib/editorViewModels.js","webpack:///./node_modules/ag-grid/dist/lib/propertyKeys.js","webpack:///./node_modules/ag-grid/dist/lib/filter/floatingFilter.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditors/popupTextCellEditor.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditors/popupSelectCellEditor.js","webpack:///./node_modules/ag-grid/dist/lib/constants.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/cellEditors/largeTextCellEditor.js","webpack:///./node_modules/ag-grid/dist/lib/filter/textFilter.js","webpack:///./node_modules/ag-grid/dist/lib/filter/numberFilter.js","webpack:///./node_modules/ag-grid/dist/lib/resizeObserver.js","webpack:///./node_modules/ag-grid/dist/lib/gridPanel/navigationService.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/headerContainer.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/headerRowComp.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/header/headerWrapperComp.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/bodyDropTarget.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/moveColumnController.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/bodyDropPivotTarget.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/autoGroupColService.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/clientSide/immutableService.js","webpack:///./node_modules/ag-grid/dist/lib/components/colDefUtil.js","webpack:///./node_modules/ag-grid/dist/lib/columnController/columnKeyCreator.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/standardMenu.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/clientSide/filterStage.js","webpack:///./node_modules/ag-grid/dist/lib/rowNodes/filterService.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/clientSide/sortStage.js","webpack:///./node_modules/ag-grid/dist/lib/rowNodes/sortService.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/clientSide/flattenStage.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/infinite/infiniteRowModel.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/cache/rowNodeBlockLoader.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/clientSide/clientSideRowModel.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/clientSide/clientSideNodeManager.js","webpack:///./node_modules/ag-grid/dist/lib/baseFrameworkFactory.js","webpack:///./node_modules/ag-grid/dist/lib/xmlFactory.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dates.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/json-stringify-safe/stringify.js","webpack:///./node_modules/hammerjs/hammer.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/mousetrap/mousetrap.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/stream-http/index.js","webpack:///./node_modules/stream-http/lib/capability.js","webpack:///./node_modules/stream-http/lib/response.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/url/url.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/jquery-ui/ui/widgets/datepicker.js","webpack:///./node_modules/jquery-ui/ui/version.js","webpack:///./node_modules/ag-grid/dist/lib/entities/column.js","webpack:///./node_modules/blueimp-load-image/js/load-image-scale.js","webpack:///./node_modules/blueimp-load-image/js/load-image-exif.js","webpack:///./node_modules/blueimp-load-image/js/load-image-iptc.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_wks-ext.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/core-js/modules/_bind.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/core-js/modules/_parse-int.js","webpack:///./node_modules/core-js/modules/_parse-float.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/modules/_a-number-value.js","webpack:///./node_modules/core-js/modules/_is-integer.js","webpack:///./node_modules/core-js/modules/_math-log1p.js","webpack:///./node_modules/core-js/modules/_math-fround.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_array-reduce.js","webpack:///./node_modules/core-js/modules/_array-copy-within.js","webpack:///./node_modules/core-js/modules/_iter-step.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/_perform.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/core-js/modules/_to-index.js","webpack:///./node_modules/core-js/modules/_own-keys.js","webpack:///./node_modules/core-js/modules/_flatten-into-array.js","webpack:///./node_modules/core-js/modules/_string-pad.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/core-js/modules/_collection-to-json.js","webpack:///./node_modules/core-js/modules/_array-from-iterable.js","webpack:///./node_modules/core-js/modules/_math-scale.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnsSelect/columnContainerComp.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnsSelect/toolPanelGroupComp.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnsSelect/toolPanelColumnComp.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rowStages/aggregationStage.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rowStages/groupStage.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/setFilter/setFilter.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/setFilter/setFilterModel.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/setFilter/setFilterListItem.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/statusBar/statusBar.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/statusBar/statusItem.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/enterpriseBoot.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rendering/richSelect/richSelectCellEditor.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rendering/richSelect/richSelectRow.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/menu/enterpriseMenu.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnDrop/columnComponent.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/menu/contextMenu.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rowModels/viewport/viewportRowModel.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/toolPanelComp.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/toolPanelColumnComp.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnDrop/pivotModePanel.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/columnDrop/valueColumnsPanel.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/toolPanel/toolPanelSelectComp.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/pivotCompFactory.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/rowGroupCompFactory.js","webpack:///./node_modules/ag-grid-enterprise/dist/lib/excelCreator.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/ag-grid-aurelia/lib/aureliaFrameworkFactory.js","webpack:///./node_modules/ag-grid-aurelia/lib/agUtils.js","webpack:///./node_modules/xlsx/dist/cpexcel.js","webpack:///./node_modules/i18next-http-backend/esm/request.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/ag-grid/dist/lib/widgets/componentAnnotations.js","webpack:///./node_modules/i18next-http-backend/esm/index.js","webpack:///./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/toastr/toastr.js","webpack:///./node_modules/jquery/dist/jquery.js-exposed","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/lodash.clonedeep/index.js","webpack:///./node_modules/urijs/src/URITemplate.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/uuid/lib/rng-browser.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/ag-grid/dist/lib/logger.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/rowDragComp.js","webpack:///./node_modules/ag-grid/dist/lib/filter/floatingFilterWrapper.js","webpack:///./node_modules/ag-grid/dist/lib/misc/linkedList.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/overlays/overlayWrapperComponent.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/header/headerComp.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/headerGroup/headerGroupComp.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/overlays/loadingOverlayComponent.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/overlays/noRowsOverlayComponent.js","webpack:///./node_modules/ag-grid/dist/lib/rendering/rowContainerComponent.js","webpack:///./node_modules/ag-grid/dist/lib/gridPanel/rowDragFeature.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/header/selectAllFeature.js","webpack:///./node_modules/ag-grid/dist/lib/headerRendering/headerGroup/headerGroupWrapperComp.js","webpack:///./node_modules/ag-grid/dist/lib/entities/defaultColumnTypes.js","webpack:///./node_modules/ag-grid/dist/lib/components/agGridNg1.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/infinite/infiniteCache.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/infinite/infiniteBlock.js","webpack:///./node_modules/ag-grid/dist/lib/valueService/changeDetectionService.js","webpack:///./node_modules/ag-grid/dist/lib/rowModels/pagination/paginationComp.js","webpack:///./node_modules/ag-grid/dist/lib/components/agGridWebComponent.js","webpack:///./node_modules/ag-grid/dist/lib/layout/tabbedLayout.js","webpack:///./node_modules/ag-grid/dist/lib/layout/verticalStack.js","webpack:///./node_modules/ag-grid/dist/lib/misc/simpleHttpRequest.js","webpack:///./node_modules/ag-grid/dist/lib/functions.js","webpack:///./node_modules/ag-grid/dist/lib/components/framework/frameworkComponentWrapper.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/ag-grid/dist/lib/context/beanStub.js","webpack:///./node_modules/ag-grid-aurelia/lib/agGridAurelia.js","webpack:///./node_modules/ag-grid-aurelia/lib/agGridColumn.js","webpack:///./node_modules/ag-grid-aurelia/lib/agTemplate.js","webpack:///./node_modules/ag-grid-aurelia/main.js?5856"],"names":["e","define","module","exports","t","n","r","s","o","u","a","_dereq_","i","f","Error","code","l","call","length","Promise","SomePromiseArray","_SomePromiseArray","any","promises","ret","promise","setHowMany","setUnwrap","init","prototype","this","firstLineError","schedule","Queue","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","self","drainQueues","_drainQueues","_schedule","_drainQueue","queue","_drainQueueStep","fn","shift","_settlePromises","receiver","arg","setScheduler","prev","hasCustomScheduler","haveItemsQueued","fatalError","isNode","process","stderr","write","stack","exit","throwLater","arguments","setTimeout","invokeLater","push","_queueTick","invoke","settlePromises","_pushOne","_reset","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","context","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","target","bindingRejected","bind","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","undefined","_setOnCancel","obj","_boundTo","_isBound","value","resolve","old","bluebird","noConflict","cr","Object","create","callerCache","getterCache","util","canEvaluate","caller","methodName","message","classString","toString","TypeError","ensureMethod","pop","apply","namedGetter","indexedGetter","index","Math","max","isIdentifier","args","slice","get","propertyName","getter","maybeGetter","getGetter","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancel","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","parent","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","isArray","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","NEXT_FILTER","getKeys","keys","instances","cb","boundTo","predicateLoop","item","matchesPredicate","isObject","j","key","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","enableAsyncHooks","disableAsyncHooks","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","deferUnhandledRejectionCheck","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","env","warnings","wForgottenReturn","unhandledRejectionCheck","_notifyUnhandledRejection","unhandledRejectionClear","defineProperty","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","warn","onPossiblyUnhandledRejection","_getContext","contextBind","onUnhandledRejectionHandled","disableLongStackTraces","config","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","legacyHandlers","unhandledrejection","before","global","onunhandledrejection","after","rejectionhandled","onrejectionhandled","fireDomEvent","dispatch","legacy","dispatchEvent","CustomEvent","event","name","toLowerCase","domEvent","detail","cancelable","Event","document","createEvent","initCustomEvent","fireGlobalEvent","emit","method","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","reject","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","opts","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","nodeSupportsAsyncResource","asyncHooks","cur","handler","isFulfilled","error","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","join","formatAndLogError","cleanStack","line","isTraceLine","test","isInternalFrame","shouldIgnore","charAt","replace","split","stackFramesAsArray","title","isSoft","console","String","log","localHandler","localEventFired","formatNonError","str","JSON","stringify","maxChars","substr","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","matches","match","fileName","parseInt","_promisesCreated","uncycle","inherits","nodes","stackToIndex","node","cycleEdgeNode","currentChildLength","stacks","current","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","splice","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","err","indexOf","isTTY","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","result","info","deprecated","replacement","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","_value","PromiseReduce","reduce","PromiseAll","all","promiseAllThis","each","mapSeries","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","constructor","CancellationError","TimeoutError","AggregateError","RangeError","methods","Array","configurable","writable","enumerable","level","OperationalError","cause","indent","lines","errorTypes","RejectionError","isES5","getDescriptor","getOwnPropertyDescriptor","names","getOwnPropertyNames","getPrototypeOf","propertyIsWritable","prop","descriptor","set","has","hasOwnProperty","proto","ObjectKeys","desc","PromiseMap","map","filter","options","catchFilter","PassThroughHandlerContext","type","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","then","lastly","tap","tapCatch","handlerOrPredicate","len","catchInstances","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","concat","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","next","_promiseRejected","_run","_rejectCallback","done","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","last","spread","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","isFinite","_init$","_init","values","_values","preservedValues","callback","_totalResolved","_resolve","booleans","_resolveFromSyncValue","attempt","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","spreadAdapter","val","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","setReflectHandler","getDomain","domain","getContextDomain","AsyncResource","getContextAsyncHooks","getContext","errors","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","v","deferReject","fillTypes","p","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","is","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_setNoAsyncGuarantee","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","x","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","Symbol","toStringTag","defer","pending","version","toFastProperties","b","c","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","Map","toResolutionValue","getActualLength","shouldCopyValues","isResolved","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","RegExp","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","Es6Map","mapToEntries","size","extractEntry","forEach","PropertiesPromiseArray","entries","isMap","_isMap","props","castValue","entriesToMap","keyOffset","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","src","srcIndex","dst","dstIndex","arrayMove","race","array","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","div","toggleScheduled","div2","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","setImmediate","ProcessNextTick","nextTick","isRecentNode","nativePromise","window","navigator","standalone","cordova","documentElement","createElement","attributes","classList","toggle","observe","disconnect","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","allSettled","CANCELLATION","_howMany","_unwrap","_initialized","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","count","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","__isCancelled","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","HandleWrapper","handle","clearTimeout","afterValue","delay","ms","successClear","failureClear","timeout","handleWrapper","afterTimeout","NULL","dispose","resources","iterator","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","data","_data","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","resource","doDispose","_unsetDisposable","d","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","Function","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","ignore","from","to","ArrayFrom","itResult","it","hasEnvVariables","runInAsyncScope","versions","Number","supportsAsync","P","utils_1","params","logger","beans","componentsMappedByName","destroyed","contextParams","setupComponents","createBeans","Utils","mapObject","beanEntry","beanInstance","wireBeans","_this","components","componentMeta","addComponent","classUpperCase","componentName","toUpperCase","theClass","createComponent","element","afterPreCreateCallback","nodeName","newComponent","wireBean","bean","autoWireBeans","methodWireBeans","preConstruct","exists","postConstruct","createBeanEntry","overrideBeans","iterateObject","constructorParamsMeta","__agBeanMetaData","autowireMethods","agConstructor","constructorParams","getBeansForParameters","newInstance","getBeanName","Bean","metaData","beanName","autoWireBean","methodWireBean","currentBean","_loop_1","currentConstructor","agClassAttributes","beanName_1","this_1","attribute","otherBean","lookupBeanInstance","optional","attributeName","state_1","constructorString","substring","autowiredMethods","wireParams","initParams","parameters","beansList","paramIndex","otherBeanName","wiringBean","seed","postConstructMethods","preConstructMethods","getBean","destroy","preDestroyMethods","autowiredFunc","classPrototype","methodOrAttributeName","getOrCreateProps","PreConstruct","PostConstruct","PreDestroy","classConstructor","Autowired","propertyKey","Optional","Qualifier","dP","createDesc","object","hide","SRC","$toString","TO_STRING","TPL","inspectSource","O","safe","isFunction","$export","fails","defined","quot","createHTML","string","tag","S","p1","NAME","exec","F","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","browser","argv","on","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","Mousetrap","_globalCallbacks","_originalStopCallback","stopCallback","combo","sequence","paused","bindGlobal","action","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","Uint8Array","start","end","num","output","read","buffer","offset","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","NaN","Infinity","pow","rt","abs","isNaN","floor","LN2","http","url","https","validateParams","parse","protocol","request","response","stream","toArrayBuffer","IncomingMessage","rStates","readyStates","ClientRequest","preferBinary","Writable","_opts","_body","_headers","auth","setHeader","Buffer","headers","useFetch","mode","capability","abortController","overrideMimeType","_mode","fetch","mozchunkedarraybuffer","msstream","arraybuffer","vbArray","decideMode","_fetchTimer","_onFinish","lowerName","unsafeHeaders","getHeader","header","removeHeader","_destroyed","headersObj","body","blobConstructor","Blob","headersList","keyName","signal","controller","AbortController","_fetchAbortController","requestTimeout","abort","credentials","withCredentials","_fetchResponse","_connect","xhr","_xhr","XMLHttpRequest","open","responseType","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","onerror","send","status","statusValid","_write","chunk","encoding","flushHeaders","setNoDelay","setSocketKeepAlive","BufferList","instance","Constructor","_classCallCheck","head","tail","entry","unshift","clear","alloc","allocUnsafe","copy","inspect","custom","localStorage","warned","PassThrough","Transform","_transform","buf","byteOffset","isBuffer","arrayCopy","source","root","nodeType","freeGlobal","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","fromCharCode","mapDomain","ucs2decode","extra","counter","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","baseMinusTMin","decode","out","basic","oldi","w","baseMinusT","codePoint","inputLength","bias","lastIndexOf","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","isString","isNull","isNullOrUndefined","qs","sep","eq","regexp","maxKeys","kstr","vstr","idx","decodeURIComponent","xs","stringifyPrimitive","objectKeys","ks","encodeURIComponent","res","FlatpickrInstance","instanceConfig","assign","flatpickr","defaultConfig","l10n","bindToInstance","setCalendarWidth","weekNumbers","showMonths","noCalendar","requestAnimationFrame","calendarContainer","style","visibility","display","daysContainer","daysWidth","days","offsetWidth","width","weekWrapper","removeProperty","updateTime","selectedDates","defaultDate","minDate","Date","getTime","defaults","setHours","hours","minutes","seconds","getMilliseconds","latestSelectedDateObj","preventDefault","isKeyDown","eventTarget","amPM","textContent","min","parseFloat","getAttribute","step","curValue","which","newValue","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","hour","limitMinHours","minTime","minDateHasTime","maxTime","maxDate","maxDateHasTime","getHours","getMinutes","getSeconds","setHoursFromDate","dateObj","date","isMobile","time_24hr","onYearInput","year","changeYear","ev","el","addEventListener","_handlers","remove","removeEventListener","triggerChange","triggerEvent","jumpToDate","jumpDate","jumpTo","parseDate","now","oldYear","currentYear","oldMonth","currentMonth","getFullYear","getMonth","errorHandler","buildMonthSwitch","redraw","timeIncrement","className","contains","inputElem","parentNode","firstChild","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","getDate","$i","setAttribute","formatDate","ariaDateFormat","todayDateElem","add","tabIndex","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","getWeek","focusOnDayElem","targetNode","focus","onMouseOver","getFirstAvailableDay","startMonth","endMonth","month","children","startIndex","endIndex","focusOnDay","dayFocused","isInView","activeElement","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","getDay","firstDayOfWeek","prevMonthDays","utils","getDaysInMonth","daysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","appendChild","dayNum","dayContainer","buildDays","frag","setMonth","monthSelectorType","shouldBuildMonth","monthsDropdownContainer","innerHTML","shorthandCurrentMonth","selected","buildMonth","container","monthNavFragment","monthElement","monthAriaLabel","selectedMonth","yearInput","tabindex","yearElement","getElementsByTagName","yearAriaLabel","disabled","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","weekdays","shorthand","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","elem","appendTo","documentClick","isOpen","inline","isCalendarElement","isInput","altInput","path","lostFocus","relatedTarget","isIgnored","ignoredFocusElements","timeContainer","close","newYear","newYearNum","isNewYear","timeless","_a","dateToCheck","enable","disable","bool","onBlur","setDate","altFormat","dateFormat","onKeyDown","wrap","allowInput","allowKeydown","allowInlineKeydown","keyCode","blur","isTimeObj","focusAndClose","selectDate","ctrlKey","stopPropagation","currentYearElement","enableTime","elems","pluginElements","shiftKey","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","DAY","dayElem","timestamp","outOfRange","onResize","static","positionCalendar","minMaxDateSetter","inverseDateObj","removeAttribute","getInputElem","querySelector","setupLocale","locale","l10ns","default","K","dataset","customPositionElement","position","positionElement","_positionElement","calendarHeight","acc","offsetHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","getBoundingClientRect","distanceFromBottom","innerHeight","bottom","showOnTop","top","pageYOffset","left","pageXOffset","isCenter","isRight","right","rightMost","centerMost","doc","editableSheet","styleSheets","sheet","cssRules","createStyleSheet","getDocumentStyleSheet","bodyWidth","centerLeft","centerBefore","centerAfter","centerIndex","centerStyle","insertRule","userAgent","msMaxTouchPoints","day","selectedDate","shouldChangeMonth","selectedIndex","sort","closeOnSelect","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","removeChild","wrapper","lastChild","insertBefore","_type","click","wasOpen","select","option","CALLBACKS","format","setSelectedDate","clickOpens","inputDate","dates","conjunction","rangeSeparator","allowInvalidPreload","parseDateRules","rule","hooks","initEvent","getDateStr","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","userConfig","formats","_enable","_disable","timeMode","defaultDateFormat","enableSeconds","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","disableMobile","plugins","pluginConf","altInputClass","parseConfig","placeholder","required","nextSibling","setupInputs","preloadedDate","setupDates","yr","fragment","prevArrow","nextArrow","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","weekAbbreviation","buildWeeks","rContainer","separator","hourInput","hourAriaLabel","minuteInput","minuteAriaLabel","military2ampm","hourIncrement","minuteIncrement","secondInput","defaultHour","toggleTitle","buildTime","animate","customAppend","build","evt","querySelectorAll","inputType","setupMobile","debouncedResize","ontouchstart","capture","selText","bindEvents","isSafari","_flatpickr","nodeList","HTMLElement","HTMLCollection","NodeList","selector","Node","en","localize","setDefaults","compareDates","jQuery","fp_incr","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","merge","assignValue","extend","trim","fp","French","longhand","months","ordinal","nth","scrollTitle","fr","factory","datepicker","regional","closeText","prevText","nextText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","firstDay","isRTL","showMonthAfterYear","yearSuffix","$","ui","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","loadImage","Request","fetchBlob","hasMetaOption","blob","catch","ProgressEvent","req","onload","onabort","ExifMap","tags","stringValues","ExposureProgram","MeteringMode","LightSource","Flash","SensingMethod","SceneCaptureType","SceneType","CustomRendered","WhiteBalance","GainControl","Contrast","Saturation","Sharpness","SubjectDistanceRange","FileSource","ComponentsConfiguration","Orientation","getText","id","exifMapPrototype","getAll","IptcMap","iptcMapPrototype","originalHasCanvasOption","hasCanvasOption","originalHasMetaOption","originalTransformCoordinates","transformCoordinates","originalGetTransformedOptions","getTransformedOptions","testImageURL","img","orientation","height","canvas","styleWidth","styleHeight","translate","scale","rotate","PI","newOptions","exif","maxWidth","maxHeight","minWidth","minHeight","sourceWidth","sourceHeight","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread2","_defineProperty","getOwnPropertyDescriptors","defineProperties","_defineProperties","_createClass","protoProps","staticProps","_extends","canvasToBlob","CanvasPrototype","HTMLCanvasElement","hasBlobConstructor","Boolean","hasArrayBufferViewSupport","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","dataURIPattern","dataURLtoBlob","atob","dataURI","mediaType","isBase64","dataString","byteString","arrayBuffer","intArray","bb","append","getBlob","toBlob","mozGetAsFile","quality","toDataURL","msToBlob","DEFAULTS","strict","checkOrientation","resize","mimeType","convertTypes","convertSize","beforeDraw","drew","WINDOW","isPositiveNumber","toArray","REGEXP_IMAGE_TYPE","isImageType","imageTypeToExtension","extension","getStringFromCharCode","dataView","getUint8","btoa","arrayBufferToDataURL","chunks","chunkSize","subarray","resetAndGetOrientation","DataView","littleEndian","app1Start","ifdStart","tiffOffset","endianness","getUint16","firstIFDOffset","getUint32","_offset","setUint16","parseOrientation","scaleX","scaleY","REGEXP_DECIMALS","normalizeDecimalNumber","times","round","getAdjustedSizes","_ref","aspectRatio","isValidWidth","isValidHeight","adjustedWidth","ArrayBuffer$1","FileReader","URL","webkitURL","REGEXP_EXTENSION","AnotherCompressor","Compressor","file","image","Image","aborted","load","createObjectURL","reader","onloadend","readAsArrayBuffer","readAsDataURL","_this2","draw","naturalWidth","naturalHeight","crossOrigin","alt","_ref2","_this3","_ref2$rotate","_ref2$scaleX","_ref2$scaleY","is90DegreesRotated","resizable","_ref3","_ref4","_ref5","_getAdjustedSizes","_getAdjustedSizes2","_getAdjustedSizes3","_getAdjustedSizes4","_getAdjustedSizes4$wi","_getAdjustedSizes4$he","destX","destY","destWidth","destHeight","srcX","srcY","srcWidth","srcHeight","_getAdjustedSizes5","contain","cover","_ref6","fillStyle","fillRect","save","drawImage","restore","_ref7","revokeObjectURL","lastModified","lastModifiedDate","complete","_defined","_has","_iobject","propertyIsEnumerable","_cof","_toIobject","ceil","_toInteger","_toLength","min$1","createCommonjsModule","IS_INCLUDES","_global","__g","SHARED","store","px","random","_uid","shared","arrayIndexOf","$this","fromIndex","_toAbsoluteIndex","IE_PROTO","_sharedKey","_enumBugKeys","_objectKeys","_objectKeysInternal","_core","core","__e","_isObject","_anObject","_fails","_descriptors","document$1","_ie8DomDefine","Attributes","valueOf","_toPrimitive","_objectDp","_hide","bitmap","_propertyDesc","_redefine","_ctx","that","_aFunction","own","exp","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","B","expProto","U","W","R","KEY","_export","_toObject","_stringRepeat","repeat","_stringPad","maxLength","fillString","stringLength","fillStr","intMaxLength","fillLen","stringFiller","_userAgent","padStart","padEnd","_typeof","classCallCheck","createClass","property","subClass","superClass","setPrototypeOf","__proto__","possibleConstructorReturn","ReferenceError","setter","slicedToArray","_arr","_n","_d","_e","_s","_i","sliceIterator","toConsumableArray","arr2","conform","fallback","DIRECTION","indexInDirection","pos","direction","escapeRegExp","objectIncludes","arrA","arrB","dateA","dateB","regexpA","regexpB","g","ActionDetails","cursorPos","oldValue","oldSelection","startChangePos","insertedCount","removedCount","ChangeDetails","details","inserted","overflow","rawInserted","_rawInserted","Masked","_update","isInitialized","withValueRefresh","reset","_append","_appendTail","doCommit","fromPos","toPos","extractInput","oldValueLength","consistentValue","clone","doPrepare","ci","doValidate","aggregateDetails","consistentAppended","ch","appendDetails","aggregate","_refreshing","unmasked","unmaskedValue","prepare","validate","commit","deleteCount","removeDirection","tailPos","_extractTail","nearestInputPos","appendWithTail","raw","maskedClass","mask","IMask","MaskedRegExp","MaskedPattern","MaskedDate","MaskedNumber","MaskedDynamic","MaskedFunction","createMask","PatternDefinition","_masked","isHollow","isRawInput","TYPES","INPUT","FIXED","PatternGroup","masked","mapDefIndexToPos","RangeGroup","maxlen","_from","_to","_maxLength","minstr","maxstr","search","_matchFrom","Range","Enum","enums","group","ChunksTailDetails","firstChunk","stop","lastChunk","_Masked","definitions","_rebuildMask","defs","_charDefs","_groupDefs","pattern","unmaskingBlock","optionalBlock","stopAlign","_loop","groups","gNames","gName","char","unmasking","STOP_CHAR","ESCAPE_CHAR","_loop2","_babelHelpers$get","_len","_key","every","g$$1","defIndex","isHiddenHollow","hiddenHollowsBefore","di","def","_appendChunks","_appendPlaceholder","mapPosToDefIndex","resolved","skipped","chres","lazy","placeholderChar","_len2","_key2","_chunks$ci","fromDef","_extractInputChunks","toDefIndex","_this4","fromDefIndex","stopDefIndices","stops","maxDefIndex","initialDefIndex","initialDef","firstInputIndex","firstFilledInputIndex","firstVisibleHollowIndex","nextdi","nextDef","_nextDef","groupsByName","_this5","Definition","Group","_MaskedPattern","GET_DEFAULT_GROUPS","Y","valid","isComplete","isDateExist","_str$split","_str$split2","MaskElement","selectionStart","selectionEnd","_unsafeSelect","handlers","_unsafeSelectionStart","_unsafeSelectionEnd","HTMLMaskElement","_MaskElement","setSelectionRange","_toggleEventHandler","EVENTS_MAP","selectionChange","drop","InputMask","_listeners","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","alignCursor","alignCursorFriendly","_bindEvents","unbindEvents","_selection","newUnmaskedValue","isChanged","_fireChangeEvents","updateOptions","updateControl","_delayUpdateCursor","_abortUpdateCursor","_changingCursorPos","_cursorChanging","hIndex","removed","updateCursor","_unbindEvents","typedValue","isActive","_updateRegExps","midInput","mid","allowNegative","radix","_numberRegExpInput","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","_babelHelpers$get2","previousValue","_insertThousandsSeparators","beforeTailPos","nextPos","number","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","signed","currentMask","compiledMasks","_currentMask","_applyDispatch","appended","inputValue","rawInputValue","oldMask","doDispatch","currentMaskIndex","cm","_currentMask2","_currentMask3","_currentMask4","_len3","_key3","_currentMask5","_len4","_key4","inputs","i1","i2","__decorate","decorators","Reflect","decorate","__metadata","metadata","__param","decorator","DragSourceType","VDirection","HDirection","logger_1","context_1","gridOptionsWrapper_1","dragService_1","columnController_1","environment_1","DragAndDropService","dragSourceAndParamsList","dropTargets","DragAndDropService_1","ePinnedIcon","createIcon","gridOptionsWrapper","ePlusIcon","eHiddenIcon","eMoveIcon","eLeftIcon","eRightIcon","eGroupIcon","eAggregateIcon","ePivotIcon","eDropNotAllowedIcon","setBeans","loggerFactory","getStringType","RowDrag","HeaderCell","ToolPanel","addDragSource","dragSource","allowTouch","eElement","dragStartPixels","onDragStart","onDragStop","onDragging","dragService","removeDragSource","sourceAndParams","find","removeFromArray","nudge","dragging","eventLastTime","mouseEvent","dragItem","dragItemCallback","lastDropTarget","dragSourceDropTarget","dragStarted","createGhost","dragStopped","draggingEvent","createDropTargetEvent","removeGhost","fromNudge","hDirection","workOutHDirection","vDirection","workOutVDirection","positionGhost","dropTarget","isMouseOnDropTarget","leaveLastTargetIfExists","enterDragTargetIfExists","dragEnterEvent","onDragEnter","setGhostIcon","getIconName","dragLeaveEvent","onDragLeave","getAllContainersFromDropTarget","containers","getContainer","secondaryContainers","getSecondaryContainers","allContainers","mouseOverTarget","eContainer","rect","horizontalFit","clientX","verticalFit","clientY","isInterestedIn","addDropTarget","Left","Right","Up","Down","y","ghostHeight","eGhost","browserWidth","getBodyWidth","browserHeight","getBodyHeight","pageY","pageX","usrDocument","getDocument","windowScrollY","scrollTop","windowScrollX","scrollLeft","clientWidth","clientHeight","eGhostParent","loadTemplate","GHOST_TEMPLATE","addCssClass","environment","getTheme","eGhostIcon","dragItemName","iconName","shake","eIcon","removeAllChildren","ICON_ADD","ICON_PINNED","ICON_MOVE","ICON_LEFT","ICON_RIGHT","ICON_GROUP","ICON_AGGREGATE","ICON_PIVOT","ICON_NOT_ALLOWED","addOrRemoveCssClass","GridOptionsWrapper","DragService","Environment","ColumnController","LoggerFactory","unbindGlobal","unbind","Key","Point","time","Bezier","startPoint","control1","control2","endPoint","SignaturePad","velocityFilterWeight","throttle","minDistance","_strokeMoveUpdate","func","wait","previous","later","leading","remaining","trailing","_strokeUpdate","dotSize","penColor","backgroundColor","onBegin","onEnd","_canvas","_handleMouseDown","_mouseButtonDown","_strokeBegin","_handleMouseMove","_handleMouseUp","_strokeEnd","_handleTouchStart","targetTouches","touch","changedTouches","_handleTouchMove","_handleTouchEnd","velocityFrom","distanceTo","sqrt","equals","other","py","cx","_point","cy","xdiff","ydiff","c1","c2","clearRect","_isEmpty","fromDataURL","dataUrl","ratio","devicePixelRatio","_toSVG","_handleMouseEvents","_handleTouchEvents","isEmpty","point","_createPoint","lastPointGroup","lastPoint","isLastPointTooClose","_addPoint","curve","widths","_drawCurve","canDrawCurve","points","_drawDot","msTouchAction","touchAction","_lastVelocity","_lastWidth","_calculateCurveControlPoints","c3","_calculateCurveWidths","s1","s2","s3","dx1","dy1","dx2","dy2","m1","m2","l1","l2","tx","ty","velocity","newWidth","_strokeWidth","_drawPoint","moveTo","arc","startWidth","endWidth","widthDelta","drawSteps","beginPath","tt","ttt","uu","uuu","closePath","fill","_fromData","pointGroups","drawCurve","drawDot","rawPoint","_addPoint2","maxX","maxY","svg","createElementNS","setAttributeNS","attr","toFixed","circle","dummy","childNodes","cloneNode","fromData","toData","atan2","PiBy180","PiBy2","couldUseAttachEvent","touchEvents","parseEl","supportsOpacity","supportsFilters","reOpacity","setOpacity","degreesToRadians","radiansToDegrees","multipleSpacesRegex","fabric","HTMLDocument","Document","implementation","createHTMLDocument","virtualWindow","JSDOM","features","FetchExternalResources","jsdomImplForWrapper","implForWrapper","nodeCanvas","Canvas","DOMParser","isTouchSupported","maxTouchPoints","isLikelyNode","SHARED_ATTRIBUTES","DPI","reNum","commaWsp","rePathCommand","reNonWord","fontPaths","iMatrix","svgNS","perfLimitSizeTotal","maxCacheSideLimit","minCacheSideLimit","charWidthsCache","textureSize","disableStyleCopyPaste","enableGLFiltering","webkitDevicePixelRatio","mozDevicePixelRatio","browserShadowBlurConstant","arcToSegmentsCache","boundsOfCurveCache","cachesBoundsOfCurve","forceGLPutImageData","initFilterBackend","isWebglSupported","maxTextureSize","WebglFilterBackend","tileSize","Canvas2dFilterBackend","eventjs","modifyEventListener","modifySelectors","configure","conf","eventListenersAgumented","augmentEventListeners","selectorsAugmented","augmentSelectors","listener","eventManager","returnFalse","cancelBubble","cancelBubbleCount","prevent","preventManipulation","contentEditable","getEventSupport","isSupported","temp","trigger","fromOverwrite","param","eventjs_stallOnReady","interval","setInterval","clearInterval","createError","events","n0","length0","createBatchCommands","n1","length1","useCapture","getID","Gesture","_gestureHandlers","wrappers","useCall","gesture","proxy","eventId","eventList","getEventList","pointerDefs","pointerDetect","supports","msPointerEnabled","msPointer","mouse","types","uniqueID","createPointerEvent","preventRecord","eventName","pts","getCoords","pt","pointers","newEvent","originalEvent","oldListener","augmentEventListener","recall","HTMLDivElement","pointerSetup","ownerDocument","minFingers","fingers","maxFingers","enabled","defaultListener","onPointerDown","onPointerMove","onPointerUp","pause","opt","move","up","resume","tracker","sp","isMouse","isMSPointer","isTouch","pointerStart","addTouchStart","sid","bbox","track","offsetX","offsetY","x1","y1","rotation","startTime","moveTime","isTouchStart","touches","identifier","ids","rid","getBoundingBox","pointerEnd","gestureFingers","pointerId","getCoord","pX","pY","metaKeys","agent","mac","getPropertyAsFloat","getPropertyValue","bcr","getComputedStyle","border","x2","y2","scrollBodyLeft","scrollBodyTop","metaTrackerReset","fnKey","metaKey","escKey","altKey","metaTracker","WebKitMutationObserver","MozMutationObserver","DOMAttrModifiedSupported","attachEvent","mutations","subtree","attrName","pointer","newbbox","state","dbltap","dblclick","time0","time1","pointer0","pointer1","ax","ay","dragElement","drag","monitor","RAD_DEG","getCentroid","centroidx","centroidy","sids","distance","dx","dy","angle","DEG2","DEG1","pointerdown","pointermove","pointerup","isPointerEmitter","isDown","acceleration","accelerationIncludingGravity","onDeviceMotion","lastShake","gravity","z","alpha","letter","ACCELERATION","DELTA","span","swipe","snap","threshold","velocity1","degree1","endx","endy","xdist","ydist","degree2","velocity2","longpress","driftDeviance","wheelPreventElasticBounce","preventElasticBounce","wheel","wheelDelta","scrollHeight","onMouseWheel","copyGLTo2DDrawImage","gl","pipelineState","glCanvas","targetCanvas","sourceY","copyGLTo2DPutImageData","dWidth","destinationWidth","dHeight","destinationHeight","numBytes","u8","imageBuffer","u8Clamped","Uint8ClampedArray","readPixels","RGBA","UNSIGNED_BYTE","imgData","ImageData","putImageData","onOrientationChange","DeviceOrientationEvent","_removeEventListener","__eventListeners","eventListener","Observable","fire","listenersForEvent","Collection","_objects","_onObjectAdded","renderOnAddRemove","requestRenderAll","insertAt","nonSplicing","objects","somethingRemoved","_onObjectRemoved","forEachObject","getObjects","complexity","memo","CommonMethods","_setOptions","_initGradient","filler","colorStops","Gradient","_initPattern","Pattern","_setObject","_set","cos","sin","getRandomInt","degrees","radians","rotatePoint","origin","subtractEquals","rotateVector","addEquals","vector","transformPoint","ignoreOffset","makeBoundingBoxFromPoints","transform","xPoints","minX","yPoints","minY","invertTransform","fractionDigits","parseUnit","fontSize","unit","Text","DEFAULT_SVG_FONT_SIZE","falseFunction","getKlass","namespace","camelize","resolveNamespace","getSvgAttributes","createImage","onLoadCallback","loadImageInDom","enlivenObjects","reviver","enlivenedObjects","numLoadedObjects","numTotalObjects","onLoaded","fromObject","enlivenPatterns","patterns","numLoadedPatterns","numPatterns","enlivenedPatterns","groupSVGElements","elements","centerPoint","sourcePath","populateWithProperties","destination","properties","drawDashedLine","da","rot","dc","createCanvasElement","copyCanvasElement","newCanvas","canvasEl","multiplyTransformMatrices","is2x2","qrDecompose","denom","skewX","skewY","translateX","translateY","calcRotateMatrix","theta","calcDimensionsMatrix","scaleMatrix","flipX","flipY","multiply","tan","composeMatrix","matrix","resetObjectTransform","saveObjectTransform","isTransparent","tolerance","_isTransparent","imageData","getImageData","parsePreserveAspectRatioAttribute","align","meetOrSlice","aspectRatioAttrs","alignX","alignY","clearFabricFontCache","fontFamily","limitDimsByArea","ar","maximumArea","roughWidth","perfLimitSizeY","capValue","findScaleToFit","findScaleToCover","matrixToSVG","NUM_FRACTION_DIGITS","removeTransformFromObject","inverted","finalTransform","calcOwnMatrix","applyTransformToObject","addTransformToObject","center","setPositionByOrigin","sizeAfterTransform","dimX","dimY","transformMatrix","_join","commandLengths","h","repeatedCommands","M","segmentToBezier","th2","th3","cosTh","sinTh","rx","ry","cx1","cy1","mT","fromX","fromY","costh2","sinth2","costh3","sinth3","toX","toY","arcToSegments","large","sweep","rotateX","th","rx2","ry2","py2","px2","pl","mTheta","calcVectorAngle","dtheta","segments","mDelta","ux","uy","vx","vy","ta","tb","getBoundsOfCurve","x0","y0","x3","y3","argsString","t1","t2","b2ac","sqrtb2ac","tvalues","bounds","mt","jlen","fromArcToBeziers","fx","fy","coords","segsNorm","calcLineLength","getPointOnCubicBezierIterator","p1x","p1y","p2x","p2y","p3x","p3y","p4x","p4y","pct","CB2","CB3","c4","CB4","getTangentCubicIterator","invT","tangentX","tangentY","getPointOnQuadraticBezierIterator","QB2","QB3","getTangentQuadraticIterator","pathIterator","perc","tempP","tmpLen","findPercentageForDistance","segInfo","nextLen","lastPerc","nextStep","angleFinder","getPathSegmentsInfo","tempInfo","totalLength","command","parsePath","pathString","currentPath","coordsStr","re","rNumber","rNumberCommaWsp","rFlagCommaWsp","regArcArgumentSequence","coordsParsed","commandLength","repeatedCommand","klen","makePathSimpler","converted","controlX","controlY","destinationPath","fromArcToBeizers","getPointOnPath","infos","segPercent","segment","lerp","getBoundsOfArc","bound","segs","drawArc","bezier","bezierCurveTo","byProperty","condition","value1","value2","deep","Element","getWholeChar","character","capitalize","firstLetterOnly","escapeXml","graphemeSplit","textstring","chr","graphemes","emptyFunction","IS_DONTENUM_BUGGY","addMethods","klass","superclass","Subclass","callSuper","parentMethod","superClassMethod","initialize","subclasses","getPointer","scroll","getScrollLeftTop","_evt","touchProp","getTouchInfo","isTouchEvent","pointerType","opacity","es","currentStyle","hasLayout","zoom","setStyle","styles","elementStyle","cssText","styleFloat","_slice","sliceCanConvertNodelists","getElementStyle","selectProp","arrayLike","makeElement","tagName","htmlFor","docElement","host","defaultView","makeElementUnselectable","onselectstart","unselectable","makeElementSelectable","setImageSmoothing","imageSmoothingEnabled","webkitImageSmoothingEnabled","mozImageSmoothingEnabled","msImageSmoothingEnabled","oImageSmoothingEnabled","getById","getElementById","addClass","wrapElement","replaceChild","getElementOffset","docElem","scrollLeftTop","box","offsetAttributes","borderLeftWidth","borderTopWidth","paddingLeft","paddingTop","clientLeft","clientTop","getNodeCanvas","impl","_image","cleanUpJsdomNode","_currentSrc","_attributes","_classList","emptyFn","onComplete","addParamToUrl","defaultEasing","_requestAnimFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","_cancelAnimFrame","cancelAnimationFrame","requestAnimFrame","duration","finish","onChange","easing","startValue","endValue","byValue","onStart","tick","ticktime","currentTime","timePerc","valuePerc","cancelAnimFrame","calculateColor","begin","animateColor","fromColor","toColor","startColor","Color","getSource","endColor","originalOnComplete","originalOnChange","colorEasing","normalize","asin","elastic","easeInBounce","easeOutBounce","ease","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInOutBounce","attributesMap","colorAttributes","stroke","fSize","cPath","normalizeAttr","normalizeValue","parentAttributes","parseTransformAttribute","visible","fillIndex","strokeIndex","getSvgRegex","_getMultipleNodes","nodeNames","nodeArray","elementMatchesRule","selectors","firstMatching","parentMatching","selectorMatches","doesSomeParentMatch","matcher","classNames","elementById","nodelist","svgValidTagNamesRegEx","svgViewBoxElementsRegEx","svgInvalidAncestorsRegEx","svgValidParentsRegEx","gradientDefs","clipPaths","skewMatrix","reTransformList","reTransform","attributeValue","matrices","operation","translateMatrix","rotateMatrix","multiplierX","multiplierY","combinedMatrix","reViewBoxAttrValue","applyViewboxTransform","viewBoxWidth","viewBoxHeight","viewBoxAttr","widthAttr","heightAttr","preserveAspectRatio","missingViewBox","missingDimAttr","toBeParsed","parsedDim","widthDiff","heightDiff","recursivelyParseGradientsXlink","gradient","xlinkAttr","referencedGradient","hasAttribute","referenceClone","parseSVGDocument","parsingOptions","xlinkAttribute","attrs","xlink","el2","currentTrans","oldLength","el3","nodeValue","parseUseDirectives","svgUid","__uid","descendants","selectNodes","hasAncestorWithNodeName","getGradientDefs","getCSSRules","parseElements","reFontDeclaration","parseFontDeclaration","oStyle","fontStyle","fontWeight","lineHeight","elList","parseAttributes","parentFontSize","ownAttributes","cssAttrs","getGlobalStylesForElement","parseStyleAttribute","normalizedAttr","normalizedValue","normalizedStyle","font","mergedAttrs","setAlpha","getAlpha","toRgba","_setStrokeFillOpacity","ElementsParser","pair","parseStyleString","parseStyleObject","parsePointsAttribute","parsedPoints","allRules","styleContents","ruleObj","propertyValuePairs","_rule","loadSVGFromURL","xml","responseXML","results","_options","allElements","loadSVGFromString","parseFromString","regexUrl","numElements","createObjects","createObject","findTag","fromElement","createCallback","checkIfDone","resolveGradient","_originalElement","_removeTransformMatrix","resolveClipPath","extractPropertyDefinition","storage","regex","gradientDef","opacityAttr","createClipPathCallback","_newObj","fillRule","clipRule","usingElement","objTransformInv","gTransform","clipPath","calcTransformMatrix","clipPathTag","clipPathOwner","scalarAdd","scalar","scalarAddEquals","subtract","scalarSubtract","scalarSubtractEquals","multiplyEquals","divide","divideEquals","lt","lte","gt","gte","distanceFrom","midPointFrom","setXY","setX","setY","setFromPoint","swap","Intersection","appendPoint","appendPoints","intersectLineLine","a1","a2","b1","b2","uaT","ubT","uB","ua","ub","intersectLinePolygon","inter","intersectPolygonPolygon","points1","points2","intersectPolygonRectangle","r1","r2","topRight","bottomLeft","inter1","inter2","inter3","inter4","_tryParsingColor","setSource","hue2rgb","colorNameMap","sourceFromHex","sourceFromRgb","sourceFromHsl","_rgbToHsl","_source","toRgb","toHsl","hsl","toHsla","toHex","toHexa","toGrayscale","average","currentAlpha","toBlackWhite","overlayWith","otherColor","otherSource","reRGBa","reHSLa","reHex","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","fromRgb","fromSource","fromRgba","fromHsl","fromHsla","fromHex","isShortNotation","isRGBa","oColor","scaleMap","skewMap","controls","TOP","BOTTOM","CENTER","opposite","findCornerQuadrant","fabricObject","control","cornerAngle","fireEvent","canvasOptions","scaleIsProportional","eventData","uniformIsToggled","uniScaleKey","uniformScaling","isTransformCentered","originX","originY","scalingIsForbidden","by","scaleProportionally","lockX","lockScalingX","lockY","lockScalingY","commonEventInfo","wrapWithFixedAnchor","actionHandler","getCenterPoint","constraint","translateToOriginPoint","actionPerformed","wrapWithFireEvent","getLocalPoint","corner","getZoom","padding","localPoint","toLocalPoint","targetHasOneFlip","compensateScaleForSkew","oppositeSkew","scaleToCompensate","axis","reference","_getTransformedDimensions","skewObjectX","newSkew","dimNoSkew","totalSkewSize","currentSkew","hasSkewed","dimBeforeSkewing","skewObjectY","scaleObject","newPoint","dim","signX","signY","forbidScaling","gestureScale","lockScalingFlip","original","oldScaleX","oldScaleY","scaleCursorStyleHandler","skewCursorStyleHandler","notAllowed","lockSkewingY","lockSkewingX","scaleSkewCursorStyleHandler","altActionKey","rotationWithSnapping","pivotPoint","lockRotation","hasRotated","lastAngle","ey","ex","curAngle","snapAngle","snapThreshold","rightAngleLocked","leftAngleLocked","scalingEqually","scalingX","scalingY","scalingYOrSkewingX","skewHandlerX","scalingXOrSkewingY","skewHandlerY","changeWidth","strokePadding","strokeWidth","strokeUniform","multiplier","oldWidth","finalHandler","dragHandler","newLeft","newTop","moveX","moveY","scaleOrSkewActionName","isAlternative","rotationStyleHandler","cursorStyle","controlsUtils","renderCircleControl","styleOverride","xSize","sizeX","cornerSize","ySize","sizeY","transparentCorners","cornerStrokeColor","myLeft","myTop","cornerColor","strokeStyle","lineWidth","renderSquareControl","xSizeBy2","ySizeBy2","strokeRect","Control","actionName","touchSizeX","touchSizeY","withConnection","mouseDownHandler","mouseUpHandler","getActionHandler","getMouseDownHandler","getMouseUpHandler","cursorStyleHandler","getActionName","getVisibility","controlKey","objectVisibility","_controlsVisibility","setVisibility","positionHandler","finalMatrix","calcCornerCoords","objectAngle","objectCornerSize","centerX","centerY","cosHalfOffset","sinHalfOffset","cosHalfOffsetComp","sinHalfOffsetComp","controlTriangleAngle","cornerHypotenuse","newTheta","newThetaComp","tl","tr","bl","br","render","cornerStyle","getColorStop","colorAlpha","keyValuePairs","gradientTransform","gradientUnits","addColorStop","toObject","propertiesToInclude","toSVG","markup","commonAttributes","needsSwap","withViewport","additionalTransform","pathOffset","reverse","minRadius","percentageShift","colorStop","toLive","createLinearGradient","createRadialGradient","svgOptions","colorStopEls","getLinearCoords","getRadialCoords","propValue","finalValue","__convertPercentUnitsToValues","patternTransform","setOptions","patternSource","patternWidth","patternHeight","patternOffsetX","patternOffsetY","patternImgSrc","createPattern","Shadow","affectStroke","includeDefaultValues","nonScaling","_parseShadow","shadow","shadowStr","offsetsAndBlur","reOffsetsAndBlur","fBoxX","fBoxY","StaticCanvas","CANVAS_INIT_ERROR","renderAndResetBound","renderAndReset","requestRenderAllBound","_initStatic","backgroundImage","overlayColor","overlayImage","stateful","controlsAboveOverlay","allowTouchScrolling","viewportTransform","backgroundVpt","overlayVpt","enableRetinaScaling","vptCoords","skipOffscreen","_createLowerCanvas","_initOptions","interactive","_initRetinaScaling","setOverlayImage","setBackgroundImage","setBackgroundColor","setOverlayColor","calcOffset","_isRetinaScaling","getRetinaScaling","scaleRatio","__initRetinaScaling","lowerCanvasEl","contextContainer","upperCanvasEl","contextTop","__setBgOverlayImage","__setBgOverlayColor","_createCanvasElement","_applyCanvasStyle","getWidth","getHeight","setWidth","setDimensions","setHeight","dimensions","cssValue","cssOnly","_setBackstoreDimension","hasLostContext","backstoreOnly","_setCssDimension","_isCurrentlyDrawing","freeDrawingBrush","_setBrushStyles","cacheCanvasEl","wrapperEl","setViewportTransform","vpt","activeObject","_activeObject","backgroundObject","overlayObject","setCoords","calcViewportBoundaries","zoomToPoint","setZoom","absolutePan","relativePan","getElement","setupState","clearContext","_hasITextHandlers","_mouseUpITextHandler","_iTextInstances","renderAll","canvasToDrawOn","renderCanvas","isRendering","iVpt","cancelRequestedRender","_renderBackground","_renderObjects","drawControls","shouldCache","_transformDone","renderCache","forClipping","drawClipPathOnCanvas","_renderOverlay","globalCompositeOperation","zoomX","zoomY","_cacheCanvas","cacheTranslationX","cacheTranslationY","_renderBackgroundOrOverlay","needsVpt","lineTo","getCenter","centerObjectH","_centerObject","centerObjectV","centerObject","viewportCenterObject","vpCenter","getVpCenter","viewportCenterObjectH","viewportCenterObjectV","toDatalessJSON","toDatalessObject","_toObjectMethod","_toObjects","__serializeBgOverlay","excludeFromExport","originalValue","bgImage","overlay","background","svgViewportTransformation","_setSVGPreamble","_setSVGHeader","clipPathId","_setSVGBgOverlayColor","_setSVGBgOverlayImage","_setSVGObjects","suppressPreamble","viewBox","createSVGFontFacesMarkup","createSVGRefElementsMarkup","createSVGClipPathMarkup","toClipPathSVG","shouldTransform","row","rowIndex","charIndex","fontList","_setSVGObject","finalWidth","finalHeight","sendToBack","objs","activeSelection","bringToFront","sendBackwards","intersecting","newIdx","objsMoved","_findNewLowerIndex","intersectsWithObject","isContainedWithinObject","bringForward","_findNewUpperIndex","DataURLExporter","EMPTY_JSON","setLineDash","createPNGStream","createJPEGStream","BaseBrush","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeDashArray","limitedToCanvasSize","lineCap","miterLimit","lineJoin","_saveAndTransform","_setShadow","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","needsFullRender","_resetShadow","_isOutSideCanvas","PencilBrush","decimate","_points","_drawSegment","p2","midPoint","quadraticCurveTo","onMouseDown","_isMainEvent","_prepareForDrawing","_captureDrawingPath","_render","onMouseMove","oldEnd","onMouseUp","_finalizeAndAddPath","pointerPoint","convertPointsToSVGPath","multSignX","multSignY","manyPoints","createPath","pathData","Path","decimatePoints","adjustedDistance","newPoints","CircleBrush","addPoint","dot","radius","originalRenderOnAddRemove","circles","Circle","circleRadius","circleColor","SprayBrush","density","dotWidth","dotWidthVariance","randomOpacity","optimizeOverlapping","sprayChunks","addSprayChunk","sprayChunkPoints","rects","ilen","sprayChunk","Rect","_getOptimizedRects","uniqueRects","uniqueRectsArray","globalAlpha","PatternBrush","getPatternSrc","patternCanvas","patternCtx","getPatternSrcFunction","getPattern","topLeft","_getLeftTopCoords","supportLineDash","STROKE_OFFSET","_initInteractive","_createCacheCanvas","centeredScaling","centeredRotation","centeredKey","selection","selectionKey","altSelectionKey","selectionColor","selectionDashArray","selectionBorderColor","selectionLineWidth","selectionFullyContained","hoverCursor","moveCursor","defaultCursor","freeDrawingCursor","rotationCursor","notAllowedCursor","containerClass","perPixelTargetFind","targetFindTolerance","skipTargetFind","isDrawingMode","preserveObjectStacking","stopContextMenu","fireRightClick","fireMiddleClick","targets","_hoveredTarget","_hoveredTargets","_currentTransform","_groupSelector","_initWrapperElement","_createUpperCanvas","_initEventListeners","_chooseObjectsToRender","objsToRender","activeGroupObjects","activeObjects","getActiveObjects","contextTopDirty","renderTopLayer","_drawSelection","renderTop","_normalizePointer","invertedM","vptPointer","restorePointerVpt","isTargetTransparent","normalizedPointer","targetRelativeX","targetRelativeY","_cacheContext","contextCache","originalColor","selectionBackgroundColor","_isSelectionKeyPressed","_shouldClearSelection","evented","selectable","_shouldCenterTransform","centerTransform","_getOriginFromCorner","_getActionFromCorner","alreadySelected","_setupCurrentTransform","__corner","lastX","lastY","_beforeTransform","setCursor","cursor","groupSelector","aleft","atop","_setLineDash","findTarget","skipGroup","activeTarget","activeTargetSubs","aObjects","shouldLookForActive","_findTargetCorner","_searchPossibleTargets","_checkTarget","globalPointer","containsPoint","isEditing","subTarget","objToCheck","pointerToUse","subTargetCheck","ignoreZoom","_absolutePointer","_pointer","cssScale","boundsWidth","boundsHeight","retinaScaling","lowerCanvasClass","_copyCanvasStyle","fromEl","toEl","getSelectionContext","getSelectionElement","getActiveObject","active","_discardActiveObject","_fireSelectionEvents","oldObjects","somethingChanged","added","oldObject","deselected","updated","setActiveObject","currentActives","_setActiveObject","onSelect","onDeselect","discardActiveObject","removeListeners","_renderControls","originalProperties","_realizeGroupTransformOnObject","_unwindGroupTransformOnObject","originalValues","clearContextTop","addEventOptions","passive","checkClick","button","mainTouchId","addOrRemove","_getEventPrefix","enablePointerEvents","functor","eventjsFunctor","canvasElement","eventTypePrefix","_onResize","_onMouseDown","_onMouseMove","_onMouseOut","_onMouseEnter","_onMouseWheel","_onContextMenu","_onDoubleClick","_onDragOver","_onDragEnter","_onDragLeave","_onTouchStart","_onGesture","_onDrag","_onOrientationChange","_onShake","_onLongPress","_onMouseUp","_onTouchEnd","eventsBound","_simpleEventHandler","__onTransformGesture","__onDrag","__onMouseWheel","hiddenTextarea","__onOrientationChange","__onShake","__onLongPress","_fireEnterLeaveEvents","_cacheTransformEventData","_handleEvent","_resetTransformEventData","getPointerId","isPrimary","__onMouseDown","__onMouseUp","_willAddMouseDown","__onMouseMove","_shouldRender","shouldRender","isClick","_onMouseUpInDrawingMode","_finalizeCurrentTransform","targetWasActive","_maybeGroupObjects","activeOn","isMoving","_setCursorFromEvent","eventType","subTargets","absolutePointer","currentTarget","currentSubTargets","_scaling","hasStateChanged","_addEventOptions","_fire","_onMouseDownInDrawingMode","_onMouseMoveInDrawingMode","_previousPointer","shouldGroup","_shouldGroup","_handleGrouping","saveState","_transformObject","_fireOverOutEvents","fireSyntheticInOutEvents","oldTarget","evtOut","canvasEvtOut","evtIn","canvasEvtIn","_draggedoverTarget","inOpt","outOpt","inFires","targetChanged","previousTarget","nextTarget","_performTransformAction","getCornerCursor","_updateActiveSelection","_createActiveSelection","currentActiveObjects","removeWithUpdate","addWithUpdate","_createGroup","groupObjects","exitEditing","ActiveSelection","_groupSelectedObjects","aGroup","_collectObjects","currentObject","selectionX1Y1","selectionX2Y2","allowIntersect","intersectsWithRect","isContainedWithinRect","toCanvasElement","cropping","scaledWidth","scaledHeight","originalWidth","originalHeight","newZoom","vp","originalInteractive","newVp","originalRetina","originalContextTop","loadFromJSON","json","serialized","_enlivenObjects","_setBgOverlay","enlivenedCanvasClip","__setupCanvas","loaded","cbIfLoaded","__setBgOverlay","enlivedObject","_toDataURL","_toDataURLWithMultiplier","toDataURLWithMultiplier","cloneWithoutData","backgroundImageOpacity","backgroundImageStretch","__gesturesParams","__gesturesRenderer","_scaleObjectBy","_rotateObjectByAngle","supportsLineDash","objectCaching","touchCornerSize","borderColor","borderDashArray","cornerDashArray","strokeDashOffset","borderOpacityWhenMoving","borderScaleFactor","minScaleLimit","hasControls","hasBorders","lockMovementX","lockMovementY","statefullCache","noScaleCache","dirty","paintFirst","stateProperties","cacheProperties","colorProperties","absolutePositioned","_cacheProperties","_updateCacheCanvas","_limitCacheSize","dims","limitedDims","capped","_getCacheCanvasDimensions","objectScale","getTotalObjectScaling","neededX","neededY","drawingWidth","drawingHeight","minCacheSize","dimensionsChanged","cacheWidth","cacheHeight","zoomChanged","shouldRedraw","additionalWidth","additionalHeight","shouldResizeCanvas","canvasWidth","canvasHeight","sizeGrowing","setTransform","needFullTransform","_removeDefaultValues","getObjectScaling","retina","getObjectOpacity","shouldConstrainValue","groupNeedsUpdate","_constrainScale","isOnACache","setOnGroup","getViewportTransform","isNotVisible","isOnScreen","_setupCompositeOperation","drawSelectionBackground","_setOpacity","drawCacheOnCanvas","_removeCacheCanvas","drawObject","propertySet","isCacheDirty","hasStroke","hasFill","needsItsOwnCache","ownCaching","willDrawShadow","drawClipPathOnCache","originalFill","originalStroke","_setClippingProperties","_drawClipPath","skipCanvas","_getNonTransformedDimensions","_removeShadow","_setStrokeStyles","decl","lineDashOffset","gradientTrasnform","_applyPatternForTransformedGradient","_applyPatternGradientTransform","_setFillStyles","dashArray","alternative","drawBorders","forActiveSelection","drawBordersInGroup","scaling","multX","multY","_renderPaintInOrder","_renderStroke","_renderFill","_renderDashedStroke","pCtx","pCanvas","_findCenterFromElement","_assignTransformMatrixProps","preserveAspectRatioOptions","cropX","cropY","offsetLeft","offsetTop","objectForm","_fromObject","cloneAsImage","origParams","originalGroup","originalShadow","withoutTransform","withoutShadow","boundingRect","getBoundingRect","shadowOffset","originalCanvas","isType","shouldCenterOrigin","_setOriginToCenter","_resetOrigin","centerH","viewportCenterH","centerV","viewportCenterV","viewportCenter","getLocalPointer","pClicked","objectLeftTop","createAccessors","extraParam","enlivedProps","originXOffset","originYOffset","translateToGivenOrigin","fromOriginX","fromOriginY","toOriginX","toOriginY","translateToCenterPoint","leftTop","getPointByOrigin","adjustPosition","offsetFrom","offsetTo","hypotFull","getScaledWidth","xFull","yFull","_originalOriginX","_originalOriginY","originPoint","multiplyMatrices","oCoords","aCoords","lineCoords","ownMatrixCache","matrixCache","_getCoords","absolute","calculate","calcACoords","calcLineCoords","pointTL","pointBR","otherCoords","_getImageLines","_findCrossPoints","_containsCenterOfCanvas","isPartiallyOnScreen","topline","rightline","bottomline","leftline","xi","iLine","xcount","lineKey","getScaledHeight","scaleToWidth","boundingRectFactor","scaleToHeight","calcCoords","calcOCoords","cosP","sinP","cosPSinP","cosPMinusSinP","_calcRotateMatrix","_calcTranslateMatrix","startMatrix","_calculateCurrentDimensions","forEachControl","skipCorners","_setCornerCoords","transformMatrixKey","cache","tMatrix","_calcDimensionsTransformMatrix","flipping","noSkew","_finalizeDimensions","getSvgColorString","getSvgStyles","skipShadow","getSvgFilter","getSvgSpanStyles","useWhiteSpace","term","textDecoration","getSvgTextDecoration","deltaY","decoration","getSvgCommons","getSvgTransform","full","_setSVGBg","textBgRects","_getFillAttributes","_createBaseSVGMarkup","_createBaseClipPathSVGMarkup","objectMarkup","commonPieces","clipPathMarkup","noStyle","styleInfo","shadowInfo","withShadow","vectorEffect","absoluteClipPath","addPaintOrder","originalSet","saveProps","tmpObj","_isEqual","origValue","firstPass","dashedPropertySet","forTouch","isControlVisible","touchCorner","controlObject","wh","shouldStroke","setControlVisible","setControlsVisibility","FX_DURATION","fxCenterObjectH","callbacks","empty","fxCenterObjectV","fxRemove","skipCallbacks","propsToAnimate","_animate","propPair","propIsColor","valueProgress","timeProgress","coordProps","makeEdgeToOriginGetter","propertyNames","originValues","axis1","axis2","dimension","nearest","farthest","Line","_setWidthHeight","_getLeftToOriginX","_getTopToOriginY","calcLinePoints","origStrokeStyle","xMult","yMult","ATTRIBUTE_NAMES","parsedAttributes","pi","startAngle","endAngle","setRadius","svgString","startX","startY","endX","endY","largeFlag","getRadiusX","getRadiusY","Triangle","widthBy2","heightBy2","piBy2","Ellipse","getRx","getRy","_initRxRy","isRounded","Polyline","_setPositionDimensions","correctLeftTop","calcDim","_calcDimensions","fromSVG","diffX","diffY","commonRender","fromElementGenerator","_class","Polygon","_toString","fromArray","_renderPathCommands","subpathStartX","subpathStartY","_getOffsetTransform","digits","aX","aY","pathUrl","useSetOnGroup","isAlreadyGrouped","_updateObjectsACoords","_calcBounds","_updateObjectsCoords","_updateObjectCoords","objectLeft","objectTop","nested","_restoreObjectsState","_includeDefaultValues","objsToObject","originalDefaults","_obj","ownCache","groupMatrix","realizeTransform","parentMatrix","toActiveSelection","ungroupOnCanvas","setObjectsCoords","onlyWidthHeight","iLen","jLen","_getBounds","minXY","maxXY","enlivedClipPath","toGroup","newGroup","childrenOverride","srcFromAttribute","_lastScaleX","_lastScaleY","_filterScalingX","_filterScalingY","minimumScaleTrigger","cacheKey","imageSmoothing","filters","_initElement","_element","setElement","removeTexture","_initConfig","applyFilters","resizeFilter","applyResizeFilters","backend","filterBackend","evictCachesForKey","getCrossOrigin","getOriginalSize","_stroke","filterObj","getSrc","hasCrop","strokeSvg","imageMarkup","imageRendering","getSvgSrc","origFill","filtered","setSrc","minimumScale","elementToFilter","_filteredEl","isNeutralState","imgElement","_needsResize","elementToDraw","elWidth","elHeight","sX","sY","sW","sH","maxDestW","maxDestH","_resetWidthHeight","CSS_CANVAS","_initFilters","pAR","rWidth","rHeight","pWidth","pHeight","_object","resizeFilters","fromURL","imgOptions","_getAngleValueForStraighten","straighten","fxStraighten","straightenObject","fxStraightenObject","testPrecision","precision","fragmentSource","fragmentShader","createShader","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","setupGLContext","captureGPUInfo","getParameter","MAX_TEXTURE_SIZE","precisions","webGlPrecision","createWebGLCanvas","aPosition","Float32Array","chooseFastestCopyGLTo2DMethod","canUseImageData","canMeasurePerf","performance","canUseArrayBuffer","canUseUint8Clamped","copyGLTo2D","drawImageTime","testContext","glOptions","premultipliedAlpha","depth","stencil","antialias","clearColor","cachedTexture","getCachedTexture","sourceTexture","createTexture","targetTexture","originalTexture","passes","webgl","programCache","pass","tempFbo","createFramebuffer","bindFramebuffer","FRAMEBUFFER","applyTo","resizeCanvasIfNeeded","bindTexture","TEXTURE_2D","deleteTexture","deleteFramebuffer","clearWebGLCaches","textureCache","textureImageSource","texture","texParameteri","TEXTURE_MAG_FILTER","NEAREST","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","texImage2D","uniqueId","gpuInfo","renderer","vendor","ext","getExtension","UNMASKED_RENDERER_WEBGL","UNMASKED_VENDOR_WEBGL","sourceElement","originalEl","originalImageData","BaseFilter","vertexSource","createProgram","vertexShader","VERTEX_SHADER","getShaderInfoLog","program","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","attributeLocations","getAttributeLocations","uniformLocations","getUniformLocations","uStepW","getUniformLocation","uStepH","getAttribLocation","sendAttributeData","aPositionData","attributeLocation","createBuffer","bindBuffer","ARRAY_BUFFER","enableVertexAttribArray","vertexAttribPointer","FLOAT","bufferData","STATIC_DRAW","_setupFrameBuffer","framebufferTexture2D","COLOR_ATTACHMENT0","_swapTextures","main","mainParameter","applyToWebGL","applyTo2d","retrieveShader","shader","useProgram","uniform1f","sendUniformData","viewport","drawArrays","TRIANGLE_STRIP","bindAdditionalTexture","textureUnit","activeTexture","TEXTURE0","unbindAdditionalTexture","getMainParameter","setMainParameter","createHelpLayer","helpLayer","mainP","ColorMatrix","colorsOnly","uColorMatrix","uConstants","constants","uniformMatrix4fv","uniform4fv","Brightness","brightness","uBrightness","Convolute","opaque","Convolute_3_1","Convolute_3_0","Convolute_5_1","Convolute_5_0","Convolute_7_1","Convolute_7_0","Convolute_9_1","Convolute_9_0","dstOff","scx","scy","srcOff","wt","weights","side","halfSide","sw","sh","createImageData","alphaFac","uMatrix","uOpaque","uHalfSize","uSize","uniform1fv","Grayscale","lightness","luminosity","uMode","uniform1i","Invert","invert","uInvert","Noise","noise","rand","uNoise","uSeed","Pixelate","blocksize","_j","_iLen","_jLen","uBlocksize","RemoveColor","useAlpha","lowC","highC","uLow","uHigh","Brownie","Vintage","Kodachrome","Technicolor","Polaroid","Sepia","BlackWhite","BlendColor","screen","diff","lighten","darken","exclusion","tint","buildSource","tg","alpha1","uColor","BlendImage","TEXTURE1","calculateMatrix","canvas1","blendData","blendImage","uTransformMatrix","uImage","uniformMatrix3fv","Resize","resizeType","lanczosLobes","uDelta","uTaps","uniform2fv","horizontal","taps","filterWindow","getFilterWindow","generateShader","tempScale","getTaps","lobeFunction","lanczosCreate","offsets","fragmentSourceTOP","dW","dH","lobes","xx","rcpScaleX","rcpScaleY","newData","oW","oH","sliceByTwo","hermiteFastResize","bilinearFiltering","lanczosResize","tmpCanvas","mult","doneW","doneH","stepW","stepH","dX","dY","srcData","destImg","destData","lanczos","ratioX","ratioY","rcpRatioX","rcpRatioY","range2X","range2Y","cacheLanc","icenter","weight","fX","fY","xDiff","yDiff","chnl","origPix","w4","pixels","destImage","destPixels","ratioW","ratioH","ratioWHalf","ratioHHalf","img2","data2","weightsAlpha","gxR","gxG","gxB","gxA","yy","w0","contrast","contrastF","uContrast","saturation","adjust","uSaturation","Blur","simpleBlur","canvas2","blurLayer1","blurLayer2","percent","ctx1","ctx2","nSamples","newImageData","chooseRightDelta","blurScale","Gamma","gamma","rInv","gInv","bInv","rVals","gVals","bVals","uGamma","uniform3fv","Composed","subFilters","HueRotation","rad","aThird","aThirdSqtSin","OneMinusCos","additionalProps","_dimensionAffectingProps","_reNewline","_reSpacesAndTabs","_reSpaceAndTab","_reWords","underline","overline","linethrough","textAlign","superscript","baseline","subscript","textBackgroundColor","_fontSizeFraction","_fontSizeMult","charSpacing","_measuringContext","_styleProperties","__charBounds","CACHE_FONT_SIZE","MIN_TEXT_WIDTH","text","__skipDimension","setPathInfo","initDimensions","segmentsInfo","getMeasuringContext","_splitText","newLines","_splitTextIntoLines","textLines","_textLines","graphemeLines","_unwrappedTextLines","_unwrappedLines","_text","graphemeText","_clearCache","calcTextWidth","cursorWidth","calcTextHeight","enlargeSpaces","diffSpace","currentLineWidth","numberOfSpaces","accumulatedSpace","charBound","spaces","isEndOfWrapping","getLineWidth","kernedWidth","lineIndex","missingNewlineOffset","_setTextStyles","_renderTextLinesBackground","_renderTextDecoration","_renderText","_renderTextStroke","_renderTextFill","charStyle","forMeasuring","textBaseline","_getFontDeclaration","_renderTextLine","_renderChars","styleHas","heightOfLine","lineLeftOffset","lastColor","charBox","currentColor","drawStart","leftOffset","_getLeftOffset","lineTopOffset","_getTopOffset","boxStart","boxWidth","getHeightOfLine","_getLineLeftOffset","getValueOfPropertyAt","renderLeft","getFontCache","cacheProp","_measureChar","_char","previousChar","prevCharStyle","coupleWidth","previousWidth","fontCache","couple","stylesAreEqual","fontMultiplier","measureText","getHeightOfChar","measureLine","lineInfo","_measureLine","_getWidthOfCharSpacing","grapheme","prevGrapheme","graphemeInfo","startingPoint","totalPathLength","lineBounds","positionInPath","_getGraphemeBox","_setGraphemeOnPath","numOfSpaces","centerPosition","skipLeft","getCompleteStyleDeclaration","prevStyle","previousBox","__lineHeights","_renderTextCommon","lineHeights","isEmptyStyles","actualStyle","nextStyle","timeToRender","drawingLeft","isJustify","charsToRender","shortCut","isLtr","_renderChar","_hasStyleChanged","_applyPatternGradientTransformText","handleFiller","fillOffsets","strokeOffsets","_getStyleDeclaration","fullDecl","shouldFill","fillText","strokeText","setSuperscript","_setScript","setSubscript","schema","loc","get2DCursorLocation","setSelectionStyles","thisStyle","_hasStyleChangedForSvg","lineDiff","__lineWidths","_shouldClearDimensionCache","shouldClear","_forceClearCache","_size","_dy","lastDecoration","currentDecoration","currentFill","lastFill","topOffset","styleObject","family","fontIsGeneric","genericFonts","newLine","newText","additionalProperties","needsDims","isAddingPath","parsedAnchor","textAnchor","originalStrokeWidth","textHeightScaleFactor","scaledDiff","textHeight","offX","objectCopy","textInstance","pathInstance","p3","cleanStyle","letterCount","stylePropertyValue","stylesCount","allStyleObjectPropertiesMatch","graphemeCount","removeStyle","lineNum","charNum","_extendStyles","_getLineStyle","_setLineStyle","_setStyleDeclaration","skipWrapping","getSelectionStyles","getStyleAtPosition","lineStyle","_deleteStyleDeclaration","_deleteLineStyle","parseDecoration","IText","editable","editingBorderColor","cursorColor","cursorDelay","cursorDuration","caching","_reSpace","_currentCursorOpacity","_selectionDirection","_abortCursorAnimation","__widthOfSpace","inCompositionMode","initBehavior","setSelectionStart","_updateAndFire","setSelectionEnd","_fireSelectionChanged","_updateTextarea","initDelayedCursor","cursorOffsetCache","renderCursorOrSelection","skipRestore","_clearTextArea","boundaries","_getCursorBoundaries","renderCursor","renderSelection","_getCursorBoundariesOffsets","cursorPosition","cursorLocation","charHeight","__isMousedown","startLine","endLine","startChar","endChar","realLineHeight","lineOffset","boxEnd","drawWidth","drawHeight","extraTop","compositionColor","getCurrentCharFontSize","cp","_getCurrentCharIndex","getCurrentCharColor","initAddedHandler","initRemovedHandler","initCursorSelectionHandlers","initDoubleClickSimulation","mouseMoveHandler","_initCanvasHandlers","_removeCanvasHandlers","_tick","_currentTickState","_animateCursor","targetOpacity","completeMethod","tickState","isAborted","_onTickComplete","_cursorTimeout1","_currentTickCompleteState","restart","abortCursorAnimation","_cursorTimeout2","selectAll","getSelectedText","findWordBoundaryLeft","startFrom","findWordBoundaryRight","findLineBoundaryLeft","findLineBoundaryRight","searchWordBoundary","selectWord","newSelectionStart","newSelectionEnd","selectLine","enterEditing","exitEditingOnOthers","initHiddenTextarea","_saveEditingProps","_setEditingProps","_textBeforeEdit","initMouseMoveHandler","getSelectionStartFromPointer","currentStart","currentEnd","__selectionStartOnMouseDown","restartCursorIfNeeded","fromStringToGraphemeSelection","smallerTextStart","graphemeStart","smallerTextEnd","fromGraphemeToStringSelection","newSelection","updateTextareaPosition","updateFromTextArea","_calcTextareaPosition","desiredPosition","compositionStart","upperCanvas","upperCanvasWidth","upperCanvasHeight","_savedProps","_restoreEditingProps","isTextChanged","_removeExtraneousStyles","removeStyleFromTo","styleObj","cursorStart","cursorEnd","lineStart","charStart","lineEnd","charEnd","shiftLineStyles","numericChar","clonedStyles","numericLine","insertNewlineStyleObject","qty","copiedStyle","currentCharStyle","newLineStyles","somethingAdded","isEndOfLine","numIndex","styleCarriedOver","insertCharStyleObject","quantity","currentLineStyles","currentLineStylesCloned","numericIndex","newStyle","insertNewStyleBlock","insertedText","cursorLoc","addedLines","linesLength","setSelectionStartEndWithShift","setSelectionInBoundaries","__lastClickTime","__lastLastClickTime","__lastPointer","__newClickTime","newPointer","isTripleClick","_stopEvent","__lastIsEditing","__lastSelected","initMousedownHandler","initMouseupHandler","initClicks","doubleClickHandler","tripleClickHandler","_mouseDownHandler","setCursorByClick","_mouseDownHandlerBefore","currentActive","mouseOffset","prevWidth","_getNewSelectionStartFromOffset","distanceBtwLastCharAndCursor","distanceBtwNextCharAndCursor","onKeyUp","onInput","paste","onCompositionStart","onCompositionUpdate","onCompositionEnd","_clickHandlerInitialized","onClick","keysMap","keysMapRtl","ctrlKeysMapUp","ctrlKeysMapDown","keyMap","stopImmediatePropagation","_copyDone","fromPaste","removedText","removeFrom","removeTo","charCount","nextCharCount","charDiff","textareaSelection","backDelete","copiedText","copiedTextStyle","compositionEnd","_getClipboardData","clipboardData","_getWidthBeforeCursor","widthBeforeCursor","getDownCursorOffset","selectionProp","_getSelectionForOffset","indexOnOtherLine","_getIndexOnLine","getUpCursorOffset","textBeforeCursor","charWidth","foundMatch","widthOfCharsOnLine","indexOnLine","leftEdge","rightEdge","offsetFromLeftEdge","moveCursorDown","_moveCursorUpOrDown","moveCursorUp","moveCursorWithShift","moveCursorWithoutShift","moveCursorLeft","_moveCursorLeftOrRight","_move","_moveLeft","_moveRight","moveCursorLeftWithoutShift","change","moveCursorLeftWithShift","moveCursorRight","moveCursorRightWithShift","moveCursorRightWithoutShift","changed","removeChars","insertChars","_getSVGLeftTopOffsets","textAndBg","_getSVGTextAndBg","textTop","textLeft","_wrapSVGTextAndBg","lineTop","textSpans","textTopOffset","textLeftOffset","_setSVGTextLineBg","_setSVGTextLineText","_createTextCharSpan","styleDecl","shouldUseWhitespace","styleProps","fillStyles","dySpan","_pushTextBgRect","fillColor","_getSVGLineTopOffset","lastHeight","Textbox","dynamicMinWidth","__cachedLines","_wordJoiners","splitByGrapheme","_styleMap","_generateStyleMap","textInfo","realLineCount","realLineCharCount","isWrapping","nextOffset","shouldLimit","mapNextLine","_wrapText","desiredWidth","_wrapLine","_measureWord","word","charOffset","_line","reservedSpace","words","infix","wordWidth","infixWidth","largestWordWidth","lineJustStarted","additionalSpace","getMinWidth","linesToKeep","scaleSkewStyleHandler","scaleStyleHandler","objectControls","ml","mr","mb","mtr","textBoxControls","___setBgOverlay","__setSVGBgOverlayColor","__createBaseSVGMarkup","erasable","getEraser","eraser","eraserToSVG","eraserMarkup","_groupToObject","isErasing","_isErasing","EraserBrush","_ready","_drawOverlayOnTop","_renderBound","hideObject","_originalOpacity","restoreObjectVisibility","prepareCanvasBackgroundForLayer","layer","erasablesOnLayer","prepareCanvasOverlayForLayer","renderOverlayOnTop","restoreCanvasDrawables","prepareCollectionTraversal","collection","restoreCollectionTraversal","prepareCanvasObjectsForLayer","restoreCanvasObjectsFromLayer","prepareCanvasForLayer","restoreCanvasFromLayer","renderBottomLayer","renderOverlay","_addPathToObjectEraser","clipObject","desiredTransform","applyEraserToCanvas","drawables","drawable","IObject","originalModule","webpackPolyfill","pIE","toIObject","toPrimitive","IE8_DOM_DEFINE","gOPD","_babelPolyfill","DESCRIPTORS","redefine","META","$fails","setToStringTag","uid","wks","wksExt","wksDefine","enumKeys","anObject","_create","gOPNExt","$GOPD","$GOPS","$DP","$keys","gOPN","$Symbol","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","ObjectProto","USE_NATIVE","QObject","findChild","setSymbolDesc","D","protoDesc","_k","isSymbol","$defineProperty","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","gOPS","getSymbols","$getPrototypeOf","meta","onFreeze","$freeze","$seal","$preventExtensions","$isFrozen","$isSealed","$isExtensible","classof","FProto","nameRE","HAS_INSTANCE","FunctionProto","$parseInt","$parseFloat","cof","inheritIfRequired","$trim","NUMBER","$Number","Base","BROKEN_COF","TRIM","toNumber","argument","third","maxCode","first","toInteger","aNumberValue","$toFixed","ERROR","ZERO","numToString","$toPrecision","toPrecision","EPSILON","_isFinite","isInteger","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","expressionService_1","events_1","eventService_1","valueCache_1","ValueService","initialised","cellExpressions","isEnableCellExpressions","getValue","column","rowNode","forFilter","ignoreAggData","colDef","getColDef","field","colId","getId","groupDataExists","groupData","aggDataExists","aggData","filterValueGetter","executeValueGetter","valueGetter","getValueUsingField","isFieldContainsDots","cellValueGetter","setValue","colKey","columnController","getPrimaryColumn","missing","newValueHandler","valueSetter","valueWasDifferent","api","getApi","columnApi","getColumnApi","expressionService","evaluate","setValueUsingField","resetQuickFilterAggregateText","valueCache","onDataChanged","onCellValueChanged","Events","EVENT_CELL_VALUE_CHANGED","rowPinned","eventService","fieldPieces","fieldPiece","valueFromCache","getValueCallback","otherColumn","getKeyForNode","col","keyCreator","doOnce","ExpressionService","EventService","ValueCache","log1p","$acosh","acosh","MAX_VALUE","$asinh","asinh","$atanh","atanh","cbrt","clz32","LOG2E","cosh","$expm1","expm1","fround","hypot","sum","aLen","larg","$imul","imul","UINT16","xn","yn","xl","yl","selectionController_1","valueService_1","columnApi_1","constants_1","gridApi_1","RowNode","childrenMapped","setData","oldData","updateDataOnDetailNode","checkRowSelectable","createDataChangedEvent","dispatchLocalEvent","detailNode","update","EVENT_DATA_CHANGED","createLocalRowEvent","updateData","getRowIndexString","Constants","PINNED_TOP","PINNED_BOTTOM","createDaemonNode","oldNode","daemon","setDataAndId","setId","selectionController","syncInRowNode","isRowSelectableFunc","getIsRowSelectableFunc","shouldInvokeIsRowSelectable","setRowSelectable","newVal","EVENT_SELECTABLE_CHANGED","getRowNodeId","getRowNodeIdFunc","isPixelInRange","pixel","rowTop","rowHeight","clearRowTop","oldRowTop","setRowTop","setFirstChild","EVENT_FIRST_CHILD_CHANGED","setLastChild","EVENT_LAST_CHILD_CHANGED","setChildIndex","childIndex","EVENT_CHILD_INDEX_CHANGED","EVENT_TOP_CHANGED","setDragging","EVENT_DRAGGING_CHANGED","setAllChildrenCount","allChildrenCount","EVENT_ALL_CHILDREN_COUNT_CHANGED","setRowHeight","EVENT_HEIGHT_CHANGED","setRowIndex","EVENT_ROW_INDEX_CHANGED","setUiLevel","uiLevel","EVENT_UI_LEVEL_CHANGED","setExpanded","expanded","EVENT_EXPANDED_CHANGED","createGlobalRowEvent","EVENT_ROW_GROUP_OPENED","mainEventService","isGroupIncludeFooter","gridApi","redrawRows","rowNodes","setDataValue","valueService","dispatchCellChangedEvent","setGroupValue","getGridColumn","getColId","setAggData","newAggData","colIds","getAllKeysInObjects","hasChildren","childrenAfterGroup","isEmptyFillerNode","missingOrEmpty","cellChangedEvent","EVENT_CELL_CHANGED","quickFilterAggregateText","isExpandable","master","isSelected","footer","sibling","depthFirstSearch","calculateSelectedFromChildren","newSelectedValue","atLeastOneSelected","atLeastOneDeSelected","atLeastOneMixed","selectThisNode","setSelectedInitialValue","setSelected","clearSelection","suppressFinishActions","setSelectedParams","rangeSelect","isRowPinned","groupSelectsChildren","isGroupSelectsChildren","groupSelectsFiltered","newRowClicked","getLastSelectedNode","allowMultiSelect","isRowSelectionMulti","doRowRangeSelection","updatedCount","selectChildNodes","clearOtherNodes","updateGroupsFromChildrenSelections","event_1","EVENT_SELECTION_CHANGED","setLastSelectedNode","groupsSelectChildren","lastSelectedNode","rowModel","getNodesInRangeForSelection","isParentOfNode","potentialParent","EVENT_ROW_SELECTED","childrenAfterFilter","onMouseEnter","EVENT_MOUSE_ENTER","onMouseLeave","EVENT_MOUSE_LEAVE","getFirstChildOfFirstChild","rowGroupColumn","nodeToSwapIn","currentRowNode","isCandidate","foundFirstChildPath","parentRowNode","SelectionController","ColumnApi","GridApi","log10","LOG10E","log2","sinh","tanh","trunc","toAbsoluteIndex","$fromCodePoint","fromCodePoint","toLength","callSite","tpl","context_2","context_3","context_4","isRowModelDefault","EVENT_ROW_DATA_CHANGED","onRowSelected","getSelectedNodes","selectedNodes","getSelectedRows","selectedRows","removeGroupsFromSelection","getType","ROW_MODEL_TYPE_CLIENT_SIDE","getTopLevelNodes","getNodeForIdIfSelected","rowNodeToKeepSelected","groupsToRefresh","otherRowNode","syncInOldRowNode","syncInNewRowNode","getBestCostNodeSelection","topLevelNodes","traverse","setRowModel","nodeId","deselectAllRowNodes","justFiltered","rowModelClientSide","forEachNodeAfterFilter","selectAllRowNodes","clientSideRowModel","forEachNode","selectNode","tryMulti","deselectIndex","getRow","deselectNode","selectIndex","$at","iterated","_t","codePointAt","ENDS_WITH","$endsWith","endsWith","searchString","endPosition","INCLUDES","includes","STARTS_WITH","$startsWith","startsWith","popupService_1","componentResolver_1","FilterManager","allFilters","quickFilter","quickFilterParts","FilterManager_1","onNewRowsLoaded","EVENT_NEW_COLUMNS_LOADED","onNewColumnsLoaded","parseQuickFilter","getQuickFilterText","setQuickFilterParts","checkExternalFilter","setFilterModel","model","allPromises","modelKeys_1","filterWrapper","newModel","setModelOnFilterWrapper","filterPromise","iterateArray","getOrCreateFilterWrapper","whatever","onFilterChanged","setModel","getFilterModel","resolveNow","getModel","isAdvancedFilterPresent","advancedFilterPresent","setAdvancedFilterPresent","atLeastOneActive","isFilterActive","updateFilterFlagInColumns","filterActive","setFilterActive","isAnyFilterPresent","isQuickFilterPresent","externalFilterPresent","doesFilterPass","filterToSkip","colKeys","newFilter","isRowModelInfinite","setQuickFilter","parsedFilter","isExternalFilterPresent","onAnyFilterChanged","EVENT_FILTER_CHANGED","doesRowPassOtherFilters","doesRowPassFilter","doesRowPassQuickFilterNoCache","filterPart","columns","getAllColumnsForQuickFilter","filterPasses","part","getQuickFilterTextForColumn","doesRowPassQuickFilterCache","aggregateRowForQuickFilter","doesRowPassQuickFilter","usingCache","isCacheQuickFilter","doesExternalFilterPass","valueAfterCallback","stringParts","QUICK_FILTER_SEPARATOR","createValueGetter","getFilterComponent","cachedFilter","createFilterWrapper","createFilterInstance","$scope","isEnterprise","sanitisedColDef","cloneObject","EVENT_FILTER_MODIFIED","filterChangedCallback","filterModifiedCallback","doesRowPassOtherFilter","componentResolver","createAgGridComponent","scope","compiledElement","guiPromise","external","isAngularCompileFilters","$new","putIntoGui","eFilterGui","guiFromFilter","getGui","$compile","$apply","destroyFilter","disposeFilterWrapper","$destroy","PopupService","ComponentResolver","toISOString","pv","$toISOString","lz","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","DateProto","INVALID_DATE","hint","isArrayIter","createProperty","getIterFn","iter","C","mapfn","mapping","iterFn","of","arrayJoin","html","arraySlice","upTo","cloned","aFunction","$sort","comparefn","$forEach","STRICT","callbackfn","SPECIES","$map","$filter","$some","$every","$reduce","reduceRight","$indexOf","$native","NEGATIVE_ZERO","searchElement","copyWithin","$find","forced","findIndex","isRegExp","$flags","$RegExp","re1","re2","CORRECT_NEW","tiRE","piRE","fiU","advanceStringIndex","regExpExec","MATCH","$match","maybeCallNative","fullUnicode","unicode","A","matchStr","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","searchValue","replaceValue","functionalReplace","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","getSubstitution","sameValue","SEARCH","$search","previousLastIndex","speciesConstructor","callRegExpExec","regexpExec","$min","$push","MAX_UINT32","SUPPORTS_Y","SPLIT","$split","internalSplit","lastLength","ignoreCase","multiline","sticky","lastLastIndex","splitLimit","separatorCopy","splitter","unicodeMatching","lim","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","LIBRARY","anInstance","forOf","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","PROMISE","v8","$Promise","newPromiseCapability","FakePromise","PromiseRejectionEvent","isThenable","notify","isReject","chain","_c","_v","ok","reaction","exited","_h","onHandleUnhandled","enter","onUnhandled","unhandled","isUnhandled","$reject","_w","$resolve","onFulfilled","onRejected","$$reject","iterable","$index","alreadyCalled","weak","WEAK_SET","$typed","$ArrayBuffer","$DataView","$isView","ABV","$slice","VIEW","CONSTR","fin","viewS","viewT","setUint8","rApply","fApply","thisArgument","argumentsList","L","rConstruct","construct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","deleteProperty","Enumerate","enumerate","getProto","isExtensible","preventExtensions","V","existingDescriptor","ownDesc","setProto","HOOKS","autoFillDefaultTime","defaultMinute","defaultSeconds","givenDate","week1","onClose","onDayCreate","onDestroy","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","$includes","flattenIntoArray","arraySpeciesCreate","flatMap","sourceLen","flatten","depthArg","FORCED","at","$pad","WEBKIT_BUG","getFlags","RegExpProto","$RegExpStringIterator","_r","matchAll","getDesc","$values","$entries","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","expressionToFunctionCache","expressionOrFunc","expression","evaluateExpression","createExpressionFunction","javaScriptFunction","columnGroup","functionBody","createFunctionBody","theFunction","extendStatics","__extends","templateService_1","rowComp_1","cellComp_1","gridCore_1","focusedCellController_1","cellNavigationService_1","gridCell_1","beanStub_1","paginationProxy_1","pinnedRowModel_1","beans_1","animationFrameService_1","heightScaler_1","RowRenderer","_super","rowCompsByIndex","floatingTopRowComps","floatingBottomRowComps","refreshInProgress","agWire","registerGridComp","gridPanel","rowContainers","getRowContainers","addDestroyableEventListener","EVENT_PAGINATION_CHANGED","onPageLoaded","EVENT_PINNED_ROW_DATA_CHANGED","onPinnedRowDataChanged","EVENT_DISPLAYED_COLUMNS_CHANGED","onDisplayedColumnsChanged","EVENT_BODY_SCROLL","redrawAfterScroll","EVENT_BODY_HEIGHT_CHANGED","redrawAfterModelUpdate","refreshEvent","EVENT_MODEL_UPDATED","keepRenderedRows","newPage","onModelUpdated","getAllCellsForColumn","eCells","rowComp","eCell","getCellForCol","refreshFloatingRowComps","refreshFloatingRows","pinnedRowModel","getPinnedTopRowData","floatingTopPinnedLeft","floatingTopPinnedRight","floatingTop","floatingTopFullWidth","getPinnedBottomRowData","floatingBottomPinnedLeft","floatingBottomPinnedRight","floatingBottom","floatingBottomFullWith","rowComps","pinnedLeftContainerComp","pinnedRightContainerComp","bodyContainerComp","fullWidthContainerComp","RowComp","flushContainers","recycleRows","onlyBody","getRenderedIndexesForRowNodes","renderedRow","getRowNode","indexesToRemove","removeRowComps","getCellToRestoreFocusToAfterRefresh","focusedCell","suppressKeepFocus","focusedCellController","getFocusCellToUseAfterRefresh","domData","getDomData","CellComp","DOM_DATA_KEY_CELL_COMP","getLockOnRefresh","sizeContainerToPageHeight","scrollToTopIfNewData","isAnimateRows","rowsToRecycle","binRowComps","restoreFocusedCell","releaseLockOnRefresh","scrollToTop","suppressScrollToTop","isSuppressScrollOnNewData","containerHeight","paginationProxy","getCurrentPageHeight","heightScaler","setModelHeight","realHeight","getUiContainerHeight","fullWidth","pinnedLeft","pinnedRight","gridCell","setFocusedCell","floating","stopEditing","forEachRowComp","forEachCellComp","addRenderedRowListener","flashCells","forEachCellCompFiltered","cellComp","flashCell","refreshCells","refreshCellParams","forceRefresh","force","refreshCell","getCellRendererInstances","cellRenderer","getCellRenderer","getCellEditorInstances","cellEditor","getCellEditor","getEditingCells","gridCellDef","getGridCell","getGridCellDef","rowIdsMap","colIdsMap","normal","processRow","getColumn","rowIndexesToRemove","rowsToRemove","indexToRemove","removeRowCompsNotToDraw","indexesToDraw","indexesToDrawMap","existingIndexes","indexesNotToDraw","calculateIndexesToDraw","createArrayOfNumbers","firstRenderedRow","lastRenderedRow","indexStr","keepRowBecauseEditing","afterScroll","workOutFirstAndLastRowsToRender","nextVmTurnFunctions","createOrUpdateRowComp","pushAll","getAndClearNextVMTurnFunctions","executeNextVMTurn","isSuppressAnimationFrame","taskQueue","addP2Task","destroyRowComps","checkAngularCompile","rowContainerComp","flushRowTemplates","afterFlush","pinningLeft","isPinningLeft","pinningRight","isPinningRight","isEmbedFullWidthRows","redrawFullWidthEmbeddedRows","isFullWidth","createRowComp","ensureDomOrder","rowCompsMap","delayedFuncs","getAndClearDelayedDestroyFunctions","executeInAWhile","isAngularCompileRows","newFirst","newLast","isRowsToRender","pageFirstRow","getPageFirstRow","pageLastRow","getPageLastRow","pixelOffset","getPixelOffset","heightOffset","getOffset","bodyVRange","getVScrollPosition","realPixelTop","realPixelBottom","getRowIndexAtPixel","getRowBuffer","firstDiffers","lastDiffers","EVENT_VIEWPORT_CHANGED","firstRow","lastRow","getFirstVirtualRenderedRow","getLastVirtualRenderedRow","rowHasFocus","isRowNodeFocused","rowIsEditing","isRowPresent","useAnimationFrameForCreate","getRenderedNodes","renderedRows","navigateToNextCell","previousCell","allowUserOverride","nextCell","cellNavigationService","getNextCellToFocus","isGroupUseEntireRow","userFunc","getNavigateToNextCellFunc","nextCellDef","previousCellDef","GridCell","ensureCellVisible","rangeController","setRangeToCell","ensureIndexVisible","isPinned","ensureColumnVisible","horizontallyScrollHeaderCenterAndFloatingCenter","animationFrameService","flushAllFrames","startEditingCell","keyPress","charPress","cell","getComponentForCell","startRowOrCellEdit","rowComponent","getRenderedCellForColumn","onTabKeyDown","previousRenderedCell","keyboardEvent","backwards","moveToCellAfter","tabToNextCell","getFocusedCell","renderedCell","isFullRowEdit","moveToNextEditingRow","moveToNextEditingCell","moveToNextCellNotEditing","nextRenderedCell","findNextCellToFocusOn","foundCell","startEditingIfEnabled","focusCell","moveEditToNextCellOrRow","pGridCell","nGridCell","setFocusOutOnEditor","setFocusInOnEditor","pRow","getRenderedRow","nRow","startRowEditing","startEditing","getNextTabbedCell","getTabToNextCellFunc","editing","isCellEditable","nextCellComp","isSuppressNavigable","gridCell_2","PaginationProxy","GridCore","TemplateService","PinnedRowModel","FocusedCellController","CellNavigationService","Beans","HeightScaler","AnimationFrameService","BeanStub","clamp","lower","upper","DEG_PER_RAD","RAD_PER_DEG","fscale","inLow","inHigh","outLow","outHigh","iaddh","$x0","$y0","isubh","imulh","$u","$v","u0","v0","u1","v1","umulh","signbit","onFinally","promiseCapability","toMetaKey","ordinaryDefineOwnMetadata","defineMetadata","metadataKey","metadataValue","targetKey","getOrCreateMetadataMap","deleteMetadata","metadataMap","targetMetadata","ordinaryHasOwnMetadata","ordinaryGetOwnMetadata","ordinaryGetMetadata","MetadataKey","getMetadata","Set","ordinaryOwnMetadataKeys","ordinaryMetadataKeys","oKeys","pKeys","getMetadataKeys","getOwnMetadata","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","encodingOrOffset","fromArrayLike","fromArrayBuffer","isEncoding","actual","fromString","checked","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","INSPECT_MAX_BYTES","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","list","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","bytes","checkOffset","checkInt","objectWriteUInt16","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","stringtrim","base64clean","getOwnMetadataKeys","ordinaryHasMetadata","hasMetadata","hasOwnMetadata","$metadata","asap","OBSERVABLE","redefineAll","RETURN","getMethod","cleanupSubscription","subscription","cleanup","subscriptionClosed","_o","closeSubscription","Subscription","observer","subscriber","SubscriptionObserver","unsubscribe","$Observable","_f","subscribe","observable","items","MSIE","boundArgs","$task","clearImmediate","$iterators","Iterators","ITERATOR","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","runtime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","skipTempReset","rootRecord","rval","exception","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","escape","$re","regExp","IntlPolyfill","Intl","__applyLocaleSensitivePrototypes","REACT_ELEMENT_TYPE","jsx","for","defaultProps","childrenLength","propName","childArray","$$typeof","ref","_owner","defineProperty$1","selfGlobal","babelHelpers$1","asyncToGenerator","gen","defineEnumerableProperties","descs","interopRequireDefault","__esModule","interopRequireWildcard","newObj","newArrowCheck","innerThis","boundThis","objectDestructuringEmpty","objectWithoutProperties","slicedToArrayLoose","_step","_iterator","taggedTemplateLiteral","strings","taggedTemplateLiteralLoose","temporalRef","undef","temporalUndefined","typeof","extends","instanceof","hasInstance","realDefineProp","sentinel","es3","hop","arrIndexOf","objCreate","arrSlice","arrConcat","arrPush","arrJoin","arrShift","fnBind","thisObj","internals","secret","Record","List","createRegExpRestore","disableRegExpRestore","regExpCache","lastMatch","leftContext","esc","lm","reg","exprStr","expr","getInternalProperties","__getInternalProperties","variant","singleton","privateuse","expBCP47Syntax","expVariantDupes","expSingletonDupes","expExtSequences","defaultLocale","redundantTags","subtags","BU","DD","FX","TP","YD","ZR","heploc","iw","ji","jw","mo","ayx","bjd","ccq","cjr","cka","cmk","drh","drw","gav","hrr","ibi","kgh","lcq","mst","myt","sca","tie","tkk","tlw","tnf","ybd","yma","extLang","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","aed","aen","afb","afg","ajp","apc","apd","arb","arq","ars","ary","arz","ase","asf","asp","asq","asw","auz","avl","ayh","ayl","ayn","ayp","bbz","bfi","bfk","bjn","bog","bqn","bqy","btj","bve","bvl","bvu","bzs","cdo","cds","cjy","cmn","coa","cpx","csc","csd","cse","csf","csg","csl","csn","csq","csr","czh","czo","doq","dse","dsl","dup","ecs","esl","esn","eso","eth","fcs","fse","fsl","fss","gan","gds","gom","gse","gsg","gsm","gss","gus","hab","haf","hak","hds","hji","hks","hos","hps","hsh","hsn","icl","ils","inl","ins","ise","isg","isr","jak","jax","jcs","jhs","jls","jos","jsl","jus","kgi","knn","kvb","kvk","kvr","kxd","lbs","lce","lcf","liw","lls","lsg","lsl","lso","lsp","lst","lsy","ltg","lvs","lzh","mdl","meo","mfa","mfb","mfs","mnp","mqg","mre","msd","msi","msr","mui","mzc","mzg","mzy","nan","nbs","ncs","nsi","nsl","nsp","nsr","nzs","okl","orn","ors","pel","pga","pks","prl","prz","psc","psd","pse","psg","psl","pso","psp","psr","pys","rms","rsi","rsl","sdl","sfb","sfs","sgg","sgx","shu","slf","sls","sqk","sqs","ssh","ssp","ssr","svk","swc","swh","swl","syy","tmw","tse","tsm","tsq","tss","tsy","tza","ugn","ugy","ukl","uks","urk","uzn","uzs","vgt","vkk","vkt","vsi","vsl","vsv","wuu","xki","xmm","xms","yds","ysl","yue","zib","zlm","zmi","zsl","zsm","toLatinUpperCase","IsStructurallyValidLanguageTag","CanonicalizeLanguageTag","_max","expCurrencyCode","expUnicodeExSeq","CanonicalizeLocaleList","locales","seen","Pk","kValue","BestAvailableLocale","availableLocales","candidate","LookupMatcher","requestedLocales","availableLocale","noExtensionsLocale","extensionIndex","ResolveLocale","relevantExtensionKeys","localeData","BestFitMatcher","foundLocale","extensionSubtags","extensionSubtagsLength","supportedExtension","keyLocaleData","supportedExtensionAddition","keyPos","requestedValue","optionsValue","privateIndex","preExtension","postExtension","LookupSupportedLocales","subset","SupportedLocales","localeMatcher","BestFitSupportedLocales","GetOption","GetNumberOption","minimum","maximum","ll","currencyMinorUnits","BHD","BYR","XOF","BIF","XAF","CLF","CLP","KMF","DJF","XPF","GNF","ISK","IQD","JPY","JOD","KRW","KWD","LYD","OMR","PYG","RWF","TND","UGX","UYI","VUV","VND","NumberFormatConstructor","InitializeNumberFormat","NumberFormat","numberFormat","regexpRestore","dataLocale","normalized","cDigits","currency","CurrencyDigits","cd","mnid","mnfd","mxfd","mnsd","minimumSignificantDigits","mxsd","maximumSignificantDigits","stylePatterns","positivePattern","negativePattern","GetFormatNumber","bf","FormatNumber","FormatNumberToParts","PartitionNumberPattern","nums","ild","latn","beginIndex","nextIndex","literal","_n2","ToRawPrecision","ToRawFixed","numSys","integer","fraction","decimalSepIndex","groupSepSymbol","pgSize","primaryGroupSize","sgSize","secondaryGroupSize","integerGroup","decimalSepSymbol","decimal","infinity","plusSignSymbol","plusSign","minusSignSymbol","minusSign","percentSignSymbol","percentSign","currencies","_literal","_literal2","minPrecision","maxPrecision","log10Floor","LN10","cut","minInteger","minFraction","maxFraction","int","arab","arabext","bali","beng","deva","fullwide","gujr","guru","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","expDTComponents","expPatternTrimmer","unwantedDTCs","dtKeys","tmKeys","isDateFormatOnly","isTimeFormatOnly","joinDateAndTimeFormats","dateFormatObj","timeFormatObj","computeFinalPatterns","formatObj","pattern12","extendedPattern","$0","expDTComponentsMeta","era","quarter","week","weekday","hour12","minute","second","timeZoneName","createDateTimeFormat","skeleton","originalPattern","validSyntheticProps","numeric","narrow","short","long","dateWidths","resolveDateString","ca","component","gregory","alts","DateTimeFormatConstructor","InitializeDateTimeFormat","DateTimeFormat","dateTimeFormat","ToDateTimeOptions","tz","timeZone","dateTimeComponents","bestFormat","dataLocaleData","availableFormats","timeFormats","dateFormats","computed","timeRelatedFormats","dateRelatedFormats","medium","createDateTimeFormats","ToDateTimeFormats","removalPenalty","additionPenalty","longLessPenalty","longMorePenalty","shortLessPenalty","shortMorePenalty","bestScore","score","optionsProp","formatProp","optionsPropIndex","formatPropIndex","BasicFormatMatcher","_hr","optionsPropNames","_bestFormat","generateSyntheticFormat","patternPenalty","hour12Penalty","_property","BestFitFormatMatcher","_prop","hr12","hourNo0","GetFormatDateTime","opt2","needDefaults","FormatDateTime","CreateDateTimeParts","nf","useGrouping","nf2","minimumIntegerDigits","tm","calendars","fv","FormatToPartsDateTime","ls","__localeSensitiveProtos","toLocaleString","toLocaleDateString","toLocaleTimeString","nu","setDefaultLocale","addLocaleData","columnSelectComp_1","ColumnSelectComp","toolPanelColumnComp_1","ToolPanelColumnComp","toolPanelGroupComp_1","ToolPanelGroupComp","aggregationStage_1","AggregationStage","groupStage_1","GroupStage","setFilter_1","SetFilter","setFilterModel_1","SetFilterModel","statusBar_1","StatusBar","statusItem_1","StatusItem","clipboardService_1","ClipboardService","enterpriseBoot_1","EnterpriseBoot","enterpriseMenu_1","EnterpriseMenu","menuItemComponent_1","MenuItemComponent","menuList_1","MenuList","rangeController_1","RangeController","rowGroupColumnsPanel_1","RowGroupColumnsPanel","contextMenu_1","ContextMenuFactory","viewportRowModel_1","ViewportRowModel","richSelectCellEditor_1","RichSelectCellEditor","richSelectRow_1","RichSelectRow","virtualList_1","VirtualList","abstractColumnDropPanel_1","AbstractColumnDropPanel","pivotColumnsPanel_1","PivotColumnsPanel","toolPanelComp_1","ToolPanelComp","licenseManager_1","LicenseManager","pivotStage_1","PivotStage","pivotColDefService_1","PivotColDefService","pivotModePanel_1","PivotModePanel","aggFuncService_1","AggFuncService","md5_1","MD5","setFilterListItem_1","SetFilterListItem","columnComponent_1","ColumnComponent","valueColumnsPanel_1","ValuesColumnPanel","pivotCompFactory_1","PivotCompFactory","rowGroupCompFactory_1","RowGroupCompFactory","excelCreator_1","ExcelCreator","excelXmlFactory_1","ExcelXmlFactory","main_1","enterpriseMenu_2","rangeController_2","clipboardService_2","groupStage_2","aggregationStage_2","enterpriseBoot_2","statusBar_2","contextMenu_2","viewportRowModel_2","pivotColumnsPanel_2","toolPanelComp_2","rowGroupCompFactory_2","licenseManager_2","md5_2","pivotStage_2","pivotColDefService_2","aggFuncService_2","pivotCompFactory_2","menuItemMapper_1","excelCreator_2","excelXmlFactory_2","serverSideRowModel_1","columnSelectHeaderComp_1","columnContainerComp_1","horizontalResizeComp_1","toolPanelSelectComp_1","toolPanelColumnComp_2","headerColumnDropComp_1","rowModelTypes","serverSide","ServerSideRowModel","Grid","setEnterpriseBeans","EnterpriseMenuFactory","MenuItemMapper","setEnterpriseComponents","ColumnSelectHeaderComp","ColumnContainerComp","HorizontalResizeComp","HeaderColumnDropComp","ToolPanelSelectComp","DetailCellRenderer","rowId","masterGridApi","selectAndSetTemplate","eDetailGrid","addThemeToDetailGrid","createDetailsGrid","registerDetailWithMaster","loadRowData","detailGridOptions","doLayout","theme","gridInfo","addDetailGridInfo","detailGridInfo","addDestroyFunc","removeDetailGridInfo","paramsAny","template","setTemplate","TEMPLATE","templateFunc","gridOptions","seedBeanInstances","agGridReact","frameworkComponentWrapper","getDetailRowData","successCallback","setRowData","rowData","RefSelector","Component","ag_grid_1","serverSideCache_1","getRowHeightAsNumber","addEventListeners","datasource","getServerSideDatasource","setDatasource","destroyDatasource","EVENT_COLUMN_ROW_GROUP_CHANGED","onColumnRowGroupChanged","onRowGroupOpened","EVENT_COLUMN_PIVOT_MODE_CHANGED","onPivotModeChanged","EVENT_COLUMN_EVERYTHING_CHANGED","onColumnEverything","EVENT_COLUMN_VALUE_CHANGED","onValueChanged","EVENT_COLUMN_PIVOT_CHANGED","onColumnPivotChanged","EVENT_SORT_CHANGED","onSortChanged","isLastRowFound","cacheExists","rootNode","childrenCache","isMaxRowFound","isSuppressEnterpriseResetOnNewColumns","findChangedColumnsInSort","newSortModel","oldSortModel","allColsInBothSorts","sortModel","sm","oldSortItem","newSortItem","differentSorts","differentIndexes","extractSortModel","cacheParams","changedColumnsInSort","rowGroupColIds","getRowGroupColumns","serverSideCache","sortingWithValueCol","isSortingWithValueColumn","isServerSideSortingAlwaysResets","refreshCacheAfterSort","createNodeCache","isPurgeClosedRowNodes","updateRowIndexesAndBounds","modelUpdatedEvent","createNewRowNodeBlockLoader","createCacheParams","rowDataChangedEvent","destroyRowNodeBlockLoader","maxConcurrentRequests","getMaxConcurrentDatasourceRequests","rowNodeBlockLoader","RowNodeBlockLoader","toValueObjects","aggFunc","getAggFunc","getDisplayNameForColumn","rowGroupColumnVos","valueColumnVos","getValueColumns","pivotColumnVos","getPivotColumns","dynamicRowHeight","isDynamicRowHeight","maxBlocksInCache","getMaxBlocksInCache","isAutoRowHeightActive","valueCols","rowGroupCols","pivotCols","pivotMode","isPivotMode","filterModel","filterManager","lastAccessedSequence","NumberSequence","overflowSize","initialRowCount","blockSize","getCacheBlockSize","ServerSideCache","RowNodeCache","EVENT_CACHE_UPDATED","onCacheUpdated","resetRowTops","setDisplayIndexes","numberSequence","forEachNodeDeep","getDisplayIndexEnd","getRowCount","getRowBounds","ROW_MODEL_TYPE_SERVER_SIDE","executeOnCache","route","cacheToPurge","getChildCache","purgeCache","removeFromCache","checkBlockToLoad","addToCache","firstInRange","lastInRange","getRowNodesInRange","getBlockState","sortController","getSortModel","autoGroupIndex","individualGroupCols","individualGroupCol","valueColIds","sortColId","SortController","serverSideBlock_1","displayIndexStart","displayIndexEnd","cacheTop","blockHeights","lastBlock","blockFound","forEachBlockInOrder","block","isDisplayIndexInBlock","getVirtualRowCount","isBlockBefore","nextRowTop","nextRowIndex","getBlockTop","getBlockHeight","rowsBetween","destroyBlock","lastAllowedIndex","clearRowTops","displayIndexSeq","peek","lastBlockId","currentBlock","blockId","blocksSkippedCount","rowsSkippedCount","skip","blockToAddId","lastVisitedRow","rowsNotAccountedFor","displayRowIndex","dontCreateBlock","isDisplayIndexInCache","beforeBlock","displayIndexStart_1","blockNumber","getBlockNumber","cachedBlockHeight","localIndex","createBlock","displayIndex","newBlock","ServerSideBlock","displayIndexSequence","postCreateBlock","nextKey","nextServerSideCache","forEachNodeShallow","keyListForNextLevel","itemsToDeleteById","idForNodeFunc","deletedCount","startRow","getStartRow","endRow","getEndRow","deletedCountFromThisBlock","getRowUsingLocalIndex","setDirty","newIndex","blockToInsert","getBlock","setRowNode","setBlankRowNode","hack_setVirtualRowCount","EVENT_ROW_DATA_UPDATED","indexToInsert","newNodes","forEachBlockInReverseOrder","moveItemsDown","insertItems","moveFromIndex","moveCount","indexOfLastRowToMove","currentRowIndex","indexOfNodeWeWant","nodeForThisIndex","pageStartRow","pageEndRow","newRowNodes","dataItem","newRowNode","setNewData","shouldPurgeCache","groupField","rowGroupBlock","sortingByGroup","isGroupLevel","nextCache","pageNumber","parentCache","groupLevel","leafGroup","createNodeIdPrefix","nodeIdPrefix","createIdForIndex","getNodeIdPrefix","bottomPointer","virtualRowCount","topPointer","midPointer","groupColVo","rowRenderer","stub","idToUse","getRowHeightForNode","setGroupDataIntoRowNode","setChildCountIntoRowNode","getChildCount","getChildCountFunc","getGroupDisplayColumns","isRowGroupDisplayed","groupValue","loadFromDatasource","createLoadParams","getRows","createBlankRowNode","createGroupKeys","groupNode","blockTop","blockHeight","forEachRowNode","groupKeys","pageLoaded","getVersion","failCallback","pageLoadFailed","getDisplayIndexStart","getGroupField","RowNodeBlock","finishedWithResizeFunc","horizontalResizeService","addResizeBar","eResizeBar","onResizeStart","onResizing","onResizeEnd","startingWidth","componentToResize","HorizontalResizeService","setGui","createNorthPanel","onRowGroupChanged","topPanelGui","dropPanelVisibleListener","onDropPanelVisible","rowGroupComp","rowGroupCompFactory","pivotComp","pivotCompFactory","EVENT_VISIBLE_CHANGED","bothVisible","isVisible","rowGroupPanelShow","getRowGroupPanelShow","ALWAYS","setVisible","ONLY_WHEN_GROUPING","grouping","isRowGroupEmpty","PLATFORM","AgGridAurelia","AgGridColumn","AgCellTemplate","AgEditorTemplate","AgFullWidthRowTemplate","AgFilterTemplate","AureliaCellRendererComponent","AureliaComponentFactory","AureliaFrameworkFactory","BaseAureliaEditor","globalResources","aurelia_framework_1","AureliaFrameworkComponentWrapper","_viewCompiler","createWrapper","DynamicComponent","_viewResources","_container","hasMethod","getFrameworkComponentInstance","callMethod","componentRef","addMethod","BaseGuiComponent","setContainer","setViewResources","viewResources","autoinject","transient","TaskQueue","ViewCompiler","BaseComponentWrapper","viewCompiler","_taskQueue","_params","bindingContext","viewFactory","compile","_view","controllers","viewModel","queueMicroTask","attached","returnToCache","refresh","editorVm","view","createRendererFromTemplate","componentFactory","CellRendererComponent","createEditorFromTemplate","CellEditor","afterGuiAttached","isPopup","isCancelBeforeStart","isCancelAfterEnd","focusIn","focusOut","XLSX","current_codepage","current_ansi","cptable","VALID_ANSI","CS2CP","set_ansi","set_cp","reset_cp","char_codes","debom","utf16leread","utf16beread","_getchar","Base64","e1","e2","e3","e4","has_buf","new_raw_buf","enc","s2a","s2ab","a2s","_chr","ab2a","bconcat","bufs","chr0","chr1","SSF","make_ssf","_strrev","pad0","pad_","rpad_","p2_32","pad0r","pad0r1","pad0r2","isgeneral","init_table","table_fmt","frac","mixed","sgn","P_2","P_1","Q_2","Q_1","Q","parse_date_code","dow","dout","H","date1904","basedate","dnthresh","base1904","datenum_local","epoch","getTimezoneOffset","general_fmt_int","_general_int","general_fmt_num","gnr1","gnr2","gnr4","gnr5","gnr6","gfn5","toExponential","gfn2","gfn3","gfn4","general_fmt","write_date","fmt","ss0","ss","outl","commaify","_general_num","_general","write_num","pct1","write_num_exp","period","ee","fakee","$$","$1","$2","$3","frac1","dec1","closeparen","phone","hashq","cc","rnd","dd","dec","write_num_flt","ffmt","write_num_cm","sfmt","write_num_pct","ri","ff","aval","den","rr","myn","myd","write_num_f1","carry","oa","lres","rres","flr","write_num_exp2","write_num_int","write_num_cm2","write_num_pct2","write_num_f2","split_fmt","in_str","_split","abstime","fmt_is_date","eval_fmt","flen","dt","hr","ssm","bt","jj","nstr","myv","ostr","vv","decpt","lasti","retval","is_date","_eval","cfregex","cfregex2","chkcond","thresh","dateNF","table","lat","choose_fmt","load_entry","_table","get_table","load_table","tbl","XLMLFormatMap","SSFImplicit","dateNFregex","_fs","CFB","fs","dirname","filename","get_fs","mver","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","ssz","fat_addrs","prep_blob","mv","chk","HEADER_SIGNATURE","HEADER_CLSID","read_shift","check_get_mver","check_shifts","dir_cnt","sectors","nsectors","sectorify","sleuth_fat","sector_list","sl","chkd","buf_chain","modulus","addr","__readInt32LE","__toBuffer","make_sector_list","ENDOFCHAIN","Paths","FileIndex","FullPaths","files","mini","minifat_store","sector","namelen","__utf16le","clsid","ct","read_date","get_sector_list","content","get_mfat_entry","read_directory","FI","FP","dad","build_full_paths","payload","MSSZ","new_buf","cnt","__readUInt32LE","init_cfb","cfb","CLSID","nm","rebuild_cfb","seed_cfb","gc","_file","Z","namecmp","elt","mini_size","fat_size","mfat_cnt","fat_base","fat_cnt","difat_cnt","write_shift","HEADER_SIG","chainit","consts","DIFSECT","FATSECT","_nm","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","UCFullPaths","UCPaths","UCPath","readFileSync","read_file","writeFileSync","writeFile","cfb_new","cfb_add","unsafe","fpath","cfb_gc","cfb_del","cfb_mov","old_name","new_name","ReadShift","CheckField","blobify","a2u","write_dl","fname","utf8write","IE_SaveFile","msSaveBlob","saveAs","chrome","downloads","download","href","File","Folder","o2","evert_key","evert","evert_num","datenum","numdate","setTime","parse_isodur","sec","good_pd_date","good_pd","fixdate","setFullYear","cc2str","fuzzynum","fuzzydate","getYear","jszip","safe_split_regex","getdatastr","asNodeBuffer","asBinary","getContent","getdata","getdatabin","safegetzipfile","zip","getzipfile","getzipdata","getzipstr","resolve_path","JSZipSync","XML_HEADER","attregexg","tagregex","nsregex","nsregex2","parsexmltag","skip_root","strip_ns","encregex","coderegex","encodings","rencoding","unescapexml","decregex","charegex","escapexml","escapexmltag","htmlcharegex","escapehtml","xlml_fixstr","entregex","entrepl","xlml_unfixstr","parsexmlbool","utf8read","orig","utf8readb","ww","corpus","utf8readc","mtcache","entities","vt_cache","matchtag","htmldecode","vtregex","vtvregex","vtmregex","parseVector","baseType","WTF","wtregex","writetag","wxt_helper","writextag","write_w3cdtf","XMLNS","XLMLNS","__lpp4","___lpp4","___toBuffer","__readUInt16LE","___utf16le","__hexlify","___hexlify","__utf8","__readUInt8","___utf8","__lpstr","___lpstr","__cpstr","___cpstr","__lpwstr","___lpwstr","__double","___double","__8lpp4","___8lpp4","read_double_le","is_buf","__readInt16LE","__readInt32BE","oI","oR","oo","__writeUInt16LE","WriteShift","__writeUInt32LE","bs","av","write_double_le","__writeInt32LE","hexstr","fld","parsenoop","sz","recordhopper","tmpbyte","cntbyte","RT","tgt","XLSBRecordEnum","buf_array","blksz","newblk","curbuf","endbuf","_bufs","write_record","ba","XLSBRE","shift_cell_xls","cRel","rRel","biff","shift_range_xls","encode_cell_xls","encode_cell","cstr","fix_row","encode_range_xls","encode_row","encode_col","decode_row","rowstr","decode_col","colstr","split_cell","decode_cell","splt","decode_range","encode_range","cs","ce","safe_decode_range","safe_format_cell","XF","numFmtId","format_cell","sheet_to_workbook","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","dense","ws","_R","_C","_origin","_range","__R","__C","cellStubs","cellDates","aoa_to_sheet","write_UInt32LE","parse_XLWideString","cchCharacters","write_XLWideString","_null","parse_StrRun","ich","ifnt","parse_RichStr","rgsStrRun","dwSizeStrRun","_crypto","crypto","rc4","md5","hex","createHash","digest","make_offcrypto","parse_BrtCommentText","write_BrtCommentText","write_StrRun","parse_XLSBCell","iStyleRef","write_XLSBCell","parse_XLSBCodeName","write_XLSBCodeName","parse_XLNullableWideString","write_XLNullableWideString","parse_XLNameWideString","parse_RelID","write_RelID","parse_RkNumber","fX100","fInt","RK","parse_RfX","parse_UncheckedRfX","write_UncheckedRfX","parse_Xnum","write_Xnum","BErr","RBErr","write_BrtColor","auto","nTS","rgb","parse_ClipboardFormatOrString","VT_STRING","VT_CUSTOM","DocSummaryPIDDSI","VT_VECTOR","SummaryPIDSI","SpecialProperties","DocSummaryRE","SummaryRE","CountryEnum","XLSFillPattern","XLSIcv","ct2type","CT_LIST","workbooks","xlsx","xlsm","xlsb","xlam","xltx","strs","comments","charts","dialogs","macros","type2ct","evert_arr","CT","CTYPE_XML_ROOT","xsd","xsi","CTYPE_DEFAULTS","rels","RELS","WB","SHEET","HLINK","VML","VBA","get_rels_path","parse_rels","currentFilePath","hash","rel","Type","Id","TargetMode","canonictarget","RELS_ROOT","write_rels","add_rels","rId","relobj","write_rdf_type","write_meta_ods","CORE_PROPS","CORE_PROPS_REGEX","parse_core_props","CORE_PROPS_XML_ROOT","dcterms","dcmitype","cp_doit","EXT_PROPS","load_props_pairs","HP","hp","Worksheets","NamedRanges","DefinedNames","Chartsheets","ChartNames","EXT_PROPS_XML_ROOT","vt","CUST_PROPS","custregex","CUST_PROPS_XML_ROOT","write_cust_props","pid","write_vt","XLMLDocPropsMap","Title","Subject","Author","Keywords","Comments","LastAuthor","RevNumber","Application","LastPrinted","CreatedDate","ModifiedDate","Category","Manager","Company","AppVersion","ContentStatus","Identifier","Language","evert_XLMLDPM","xlml_set_prop","Props","parse_FILETIME","dwLowDateTime","dwHighDateTime","parse_lpstr","pad","parse_lpwstr","parse_VtStringBase","stringType","parse_VtString","parse_VtVecUnalignedLpstr","parse_VtVecUnalignedLpstrValue","parse_VtHeadingPair","parse_TypedPropertyValue","parse_VtVecHeadingPair","cElements","parse_VtVecHeadingPairValue","parse_dictionary","CodePage","dict","parse_BLOB","Size","parse_ClipboardData","parse_VtUnalignedString","write_TypedPropertyValue","write_FILETIME","parse_PropertySet","PIDSI","start_addr","NumProps","Dictionary","DictObj","PropID","Offset","PropH","piddsi","oldpos","parsebool","XLSPSSkip","guess_property_type","write_PropertySet","RE","hdr","piao","pr","pio","pinfo","parse_PropertySetStream","NumSets","FMTID0","FMTID1","Offset0","Offset1","SystemIdentifier","PSet1","PSet0","FMTID","write_PropertySetStream","entries2","clsid2","ps0","ps1","parsenoop2","writebool","parseuint16","writeuint16","parseuint16a","parslurp","parse_ShortXLUnicodeString","cch","parse_XLUnicodeRichExtendedString","cbExtRst","fExtSt","fRichSt","cRun","parse_XLUnicodeStringNoCch","parse_XLUnicodeString","parse_XLUnicodeString2","write_XLUnicodeString","parse_HyperlinkMoniker","parse_URLMoniker","ansiPath","parse_FileMoniker","parse_HyperlinkString","write_Hyperlink","hl","parse_LongRGBA","parse_LongRGB","parse_XLSCell","ixfe","write_XLSCell","parse_XTI","parse_RkRec","parse_Ref8U","rwFirst","rwLast","write_Ref8U","parse_RefU","parse_Ref","parse_FtCmo","ot","parse_FtSkip","FtTab","cf","fSharedNote","parse_BOF","BIFFVer","write_BOF","wb","bookType","write_BoundSheet8","hs","parse_DefaultRowHeight","miyRw","Unsynced","DyZero","ExAsc","ExDsc","write_Format","b5","parse_BIFF2Format","parse_Dimensions","write_XF","ixfeP","parse_BoolErr","parse_Bes","write_BoolErr","os","write_Bes","parse_XLHeaderFooter","parse_ExternName","fBuiltIn","fWantAdvise","fWantPict","fOle","fOleLink","fIcon","sbcch","udfName","parse_AddinUdf","Name","XLSLblBuiltIn","parse_Lbl","chKey","cce","itab","npflen","rgce","rgcb","parse_Rgce","parse_RgbExtra","parse_NameParsedFormula","parse_ExternSheet","parse_BIFF5ExternSheet","parse_Array","parse_ArrayParsedFormula","parse_BIFF5OT","write_HLink","write_HLinkTooltip","TT","Tooltip","parse_ColInfo","cellStyles","colFirst","colLast","coldx","cchName","parse_Blank","parse_Scl","parse_String","DBF","dbf_codepage_map","dbf_to_sheet","ft","vfp","l7","nrow","fpos","rlen","current_cp","fields","hend","sheetRows","dbf_to_aoa","_RLEN","to_workbook","to_sheet","from_sheet","aoa","sheet_to_json","hcnt","coltypes","guess","_guess","hf","hb","rout","SYLK","sylk_to_aoa_str","records","rj","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","C_seen_K","C_seen_X","codepage","formula","rc_to_a1","F_seen","hidden","wch","process_col","hpt","hpx","pt2px","sylk_to_sheet","aoasht","sylk_to_aoa","write_ws_cell_sylk","a1_to_rc","preamble","RS","rec","wpx","width2px","px2char","rows","px2pt","write_ws_rows_sylk","coord","DIF","dif_to_aoa_str","dif_to_sheet","dif_to_aoa","push_field","push_value","sheet_to_dif","topic","ETH","eth_to_sheet","eth_to_aoa","sheet_to_eth_data","PRN","set_text_arr","guess_seps","guess_sep_weights","dsv_to_sheet_str","instr","guess_sep","sepcc","_re","finish_cell","datestr","timestr","dateNF_fix","cellText","cellNF","outer","prn_to_sheet_str","prn_to_aoa_str","prn_to_sheet","firstbyte","WK_","lotus_to_workbook_buf","sidx","snames","refguess","WK1Enum","WK3Enum","qpro","lotushopper","Rn","vers","parse_cell","parse_LABEL","parse_cell_3","parse_NUMBER_17","v2","parse_NUMBER_27","parse_rs","tregex","rpregex","rregex","rend","nlregex","parse_r","terms","rpr","intro","outro","outline","strike","uval","parse_rpr","rs","sitregex","sirregex","sirphregex","parse_si","cellHTML","sstr0","sstr1","sstr2","SST","straywsregex","write_sst_xml","sst","bookSST","xmlns","Count","uniqueCount","Unique","sitag","write_BrtSSTItem","write_sst_bin","write_BrtBeginSst","_JS2ANSI","parse_CRYPTOVersion","Major","Minor","parse_DataSpaceMapEntry","comps","parse_Primary","parse_TransformInfoHeader","ename","cmode","parse_EncryptionHeader","Flags","AlgID","AlgIDHash","KeySize","ProviderType","CSPName","parse_EncryptionVerifier","Salt","Verifier","VerifierHash","parse_EncInfoStd","parse_EncInfoExt","parse_EncInfoAgl","KeyData","encryptedHmacKey","encryptedHmacValue","encs","uri","crypto_CreatePasswordVerifier_Method1","Password","PasswordArray","PasswordDecoded","PadArray","InitialCode","XorMatrix","XorRor","crypto_CreateXorArray_Method1","byte1","byte2","Byte","password","Temp","PasswordLastChar","PadIndex","XorKey","CurrentElement","Char","CreateXorKey_Method1","Index","ObfuscationArray","crypto_MakeXorDecryptor","XorArrayIndex","XorArray","Data","Value","crypto_DecryptData_Method1","parse_FilePassHeader","Info","EncryptionVersionInfo","EncryptedVerifier","EncryptedVerifierHash","parse_RC4Header","EncryptionHeader","EncryptionVerifier","parse_RC4CryptoHeader","RTF","rtf_to_sheet","rtf_to_sheet_str","rgb2Hex","rgb_tint","H6","L2","rgb2HSL","hex2RGB","X","h6","hsl2RGB","MDW","char2width","cycle_width","collw","find_mdw_colw","_MDW","coll","customWidth","XLMLPatternTypeMap","cellXF_uint","cellXF_bool","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","parse_sty_xml","themes","NumberFmt","formatCode","parse_numFmts","Fonts","bold","italic","condense","vertAlign","scheme","indexed","icv","themeElements","clrScheme","parse_fonts","Fills","patternType","bgColor","fgColor","parse_fills","Borders","diagonalUp","diagonalDown","parse_borders","xf","CellXf","alignment","vertical","textRotation","wrapText","parse_cellXfs","STYLES_XML_ROOT","write_sty_xml","NF","write_numFmts","cellXfs","write_cellXfs","write_BrtFmt","write_BrtFont","grbit","write_FontFlags","sss","charset","STY","rev_XLSBFillPTNames","parse_BrtFill","write_BrtFill","fls","write_BrtXF","write_Blxf","parse_BrtBorder","write_BORDERS_bin","write_BrtBorder","write_STYLES_bin","xfId","builtinId","write_BrtStyle","write_TABLESTYLES_bin","defTableStyle","defPivotStyle","write_BrtBeginTableStyles","write_sty_bin","write_FMTS_bin","write_FONTS_bin","write_FILLS_bin","fontId","fillId","borderId","write_CELLSTYLEXFS_bin","write_CELLXFS_bin","write_DXFS_bin","parse_clrScheme","lastClr","parse_fontScheme","parse_fmtScheme","THEME","clrsregex","fntsregex","fmtsregex","themeltregex","parse_theme_xml","write_theme","parse_themeElements","Themes","themeXLSX","parse_FullColorExt","xclrType","nTintShade","xclrValue","parse_IcvXF","parse_ColorTheme","parse_ExtProp","extType","parse_XFExtGradient","IMG","DRAW","_shapeid","write_comments_vml","csize","joinstyle","gradientshapeok","coordsize","fillcolor","strokecolor","insertCommentsIntoSheet","sheetName","comment","thisCell","encoded","author","CMNT","CMNT_XML_ROOT","write_comments_xml","iauthor","parse_BrtCommentAuthor","write_comments_bin","write_BrtCommentAuthor","write_BrtBeginComment","VBAFMTS","DS","MS","rcregex","rcbase","rcfunc","$4","$5","fstr","crefregex","shift_formula_xlsx","shift_formula_str","_xlfn","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_RgceElfLoc","fQuoted","parse_PtgAttrSpaceType","parse_SerAr","parse_PtgExtraMem","parse_PtgExtraArray","cols","parse_PtgElfLoc","parse_PtgElfNoop","parse_PtgElfCol","parse_PtgElfColS","parse_PtgElfColSV","parse_PtgElfColV","parse_PtgElfLel","parse_PtgElfRadical","parse_PtgElfRadicalLel","parse_PtgElfRadicalS","parse_PtgElfRw","parse_PtgElfRwV","PtgListRT","PtgTypes","iftab","FtabArgc","Ftab","cparams","tab","parsetab","Cetab","nameindex","rl","parse_RgceLocRel_BIFF2","cl","parse_RgceLocRel","area","parse_RgceAreaRel","ixti","parse_PtgNameX_BIFF5","PtgDupes","Ptg18","coltype","Ptg19","bitSemi","bitIf","bitGoto","ptgs","stringify_array","PtgBinOp","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","get_ixti","supbooks","sname","formula_quote_sheet_name","XTI","SID","get_ixti_raw","stringify_formula","nameidx","last_sp","fflen","argc","lbl","XLSXFutureFunctions","externbook","bookidx","lp","rp","sharedf","parsedf","fnd","arrayf","_left","parse_SharedParsedFormula","parse_Formula","parse_FormulaValue","cbf","parse_XLSCellParsedFormula","parse_XLSBParsedFormula","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","ods_to_csf_formula","ods_to_csf_3D","_ssfopts","get_sst_id","col_obj_w","default_margins","margins","get_cell_style","revssf","ssf","applyNumberFormat","safe_format","fmtid","fillid","raw_rgb","check_ws","WS","mergecregex","sheetdataregex","hlinkregex","dimregex","colregex","afregex","marginregex","sheetprregex","svsregex","parse_ws_xml","data1","mtch","sheetPr","parse_ws_xml_sheetpr","ridx","parse_ws_xml_dim","svs","sviewregex","rightToLeft","Views","RTL","parse_ws_xml_sheetviews","seencol","coli","colm","colM","parse_ws_xml_cols","parse_ws_xml_data","afilter","parse_ws_xml_autofilter","merges","_merge","hlink","location","Rel","tooltip","rng","parse_ws_xml_hlinks","margin","parse_ws_xml_margins","tmpref","codeName","CodeName","write_ws_xml_cell","oldt","oldv","Strings","cellregex","rowregex","isregex","refregex","match_v","match_f","sdata","sstr","ftag","cells","cref","tagr","tagc","do_format","rowobj","rowrite","marr","marrlen","xlen","ht","outlineLevel","cellFormula","si","_tag","sheetStubs","WS_XML_ROOT","write_ws_xml","rdata","vbaraw","cname","Workbook","sview","workbookViewId","write_ws_xml_sheetviews","sheetFormat","defaultRowHeight","baseColWidth","outlineLevelRow","_cell","customHeight","write_ws_xml_data","write_ws_xml_protection","relc","numberStoredAsText","sqref","write_row_header","ncolspan","lcs","caddr","write_BrtRowHdr","parse_BrtWsDim","write_BrtWsDim","write_BrtCellRk","ncell","d100","write_RkNumber","parse_BrtMergeCell","write_BrtMergeCell","BrtMarginKeys","write_ws_bin_cell","write_BrtCellIsst","write_BrtCellSt","write_BrtCellReal","write_BrtCellBool","write_BrtCellBlank","write_MERGECELLS","write_BrtBeginMergeCells","write_COLINFOS","write_BrtColInfo","write_IGNOREECS","write_BrtCellIgnoreEC","write_HLINKS","locidx","write_BrtHLink","write_WSVIEWS2","write_BrtBeginWsView","write_SHEETPROTECT","write_BrtSheetProtection","write_ws_bin","write_BrtWsProp","cap","write_CELLTABLE","write_AUTOFILTER","write_BrtMargins","write_LEGACYDRAWING","parse_chart","csheet","nc","parse_numCache","CS","WBPropsDef","WBViewDef","SheetDef","CalcPrDef","push_defaults_array","push_defaults","parse_wb_defaults","WBProps","CalcPr","WBView","badchars","check_ws_name","_good","check_wb","N","codes","cn","wbnsregex","WB_XML_ROOT","write_wb_xml","write_names","Names","workbookPr","sheetId","Hidden","Comment","Sheet","localSheetId","Ref","write_BrtBundleSh","iTabID","strRelID","write_BOOKVIEWS","vistab","write_BrtBookView","write_wb_bin","write_BrtFileVersion","filterPrivacy","write_BrtWbProp","write_BUNDLESHS","parse_wb","R_n","Ptg","parse_wb_bin","dname","dnstart","parse_wb_xml","parse_ws","ai","af","aii","relId","rfx","parse_ws_bin","parse_cs","parse_cs_bin","parse_cs_xml","parse_sty","parse_sty_bin","parse_sst","parse_sst_bin","parse_sst_xml","parse_cmnt","authors","parse_comments_bin","commentList","authtag","cmnttag","authorId","guid","textMatch","parse_comments_xml","parse_cc","parse_cc_bin","parse_cc_xml","parse_xlink","parse_xlink_bin","write_wb","write_ws","write_sst","write_cmnt","attregexg2","attregex2","xlml_parsexmltag","xlml_parsexmltagobj","xlml_set_custprop","Custprops","oval","safe_format_xlml","process_style_xlml","stag","Interior","I","ID","parse_xlml_data","csty","StyleID","interiors","UTC","Formula","ArrayRange","xlml_clean_comment","xlml_normalize","xlmlregex","parse_xlml_xml","opening","ishtml","HTML_","sheetnames","cursheet","sheetname","dtag","didx","fidx","pidx","cstys","wsprops","HRef","HRefScreenTip","MergeAcross","MergeDown","cma","cmd","AutoFitHeight","Height","Format","ssfidx","Width","_col","Span","_NamedRange","_DefinedName","RefersTo","AutoFilter","parse_fods","Margin","pagemargins","Top","Bottom","bookSheets","bookProps","parse_xlml","fix_read_opts","write_props_xlml","xlml_write_docprops","BLACKLIST","xlml_write_custprops","write_name_xlml","write_ws_xlml_cell","mi","write_ws_xlml_row","write_ws_xlml","write_ws_xlml_names","write_ws_xlml_table","scenarios","selectLockedCells","selectUnlockedCells","write_ws_xlml_wsopts","write_xlml","write_sty_xlml","write_names_xlml","parse_compobj","AnsiUserType","AnsiClipboardFormat","parse_ClipboardFormatOrAnsiString","Reserved1","UnicodeClipboardFormat","parse_ClipboardFormatOrUnicodeString","Reserved2","slurp","insitu","XLSRecordEnum","safe_format_xf","make_cell","parse_workbook","lastcell","cmnt","rngC","rngR","temp_val","country","Directory","last_formula","cur_sheet","Preamble","last_cell","cell_valid","XFs","palette","get_rgb","addcell","file_depth","xfd","icvFore","icvBack","process_cell_style","afi","rrtabid","lastuser","winlocked","wtf","last_lbl","last_Rn","BIFF2Fmt","BIFF2FmtTable","FilterDatabases","seen_codepage","RecordType","Date1904","WriteProtect","CalcRefMode","FullCalc","fDialog","ExternCount","tmpri","fakebs8","rknum","rkrec","_fr","_fc","_fe","_arraystart","isst","_ixfe","b4idx","b2idx","cmo","lastobj","TxO","ImData","noteobj","xfe","Encryption","Metadata","Country","PSCLSID","parse_xlscfb","CompObj","WorkbookP","bookVBA","newcfb","newpath","make_vba_xls","DSI","DocSummary","SI","Summary","HeadingPairs","TitlesOfParts","parse_xls_props","bookFiles","write_xlscfb","wbpath","write_biff_buf","Keys","DSEntries","SEntries","CEntries","CEntries2","write_xls_props","vba","fill_vba_xls","ArchID","fItalic","fStrikeout","fOutline","fShadow","fCondense","fExtend","parse_FontFlags","bCharSet","xColorType","bR","bG","bB","parse_BrtColor","ixfeParent","ifmt","defaultThemeVersion","strName","autoCompressPictures","backupFile","checkCompatibility","hidePivotFieldList","promptedSolutions","publishItems","refreshAllConnections","saveExternalLinkValues","showBorderUnselectedTables","showInkAnnotation","showObjects","showPivotChartFilter","updateLinks","fAlwaysCalc","idObj","stAuthor","parse_NoteSh","verificationBytes","verifier","parse_XORObfuscation","dyHeight","fl","Pos","Dim","CurTab","FirstTab","Selected","TabRatio","UserName","fts","parse_BIFF5Obj","parse_FtArray","ccv","rw","rkrecs","lastcol","ixfes","fStyle","alc","fWrap","alcV","fJustLast","trot","cIndent","fShrinkToFit","iReadOrder","fAtrNum","fAtrFnt","fAtrAlc","fAtrBdr","fAtrPat","fAtrProt","dgLeft","dgRight","dgTop","dgBottom","icvLeft","icvRight","grbitDiag","icvTop","icvBottom","icvDiag","dgDiag","fsxButton","parse_CellStyleXF","cmcs","ucnt","extsst","dsst","ctab","virtPath","rgst","texts","accel","parse_ControlInfo","cchText","sVer","targetFrameName","moniker","oleMoniker","fileTime","Loc","parse_Hyperlink","xnum","cUse","wzTooltip","cxfs","crc","cexts","cchComment","themeXML","parse_frtHeader","lcb","XLSRE","write_biff_rec","write_BIFF2Cell","write_ws_biff2_cell","write_BIFF2NUM","write_BIFF2BERR","write_BIFF2LABEL","write_biff2_buf","write_ws_biff2","write_FONTS_biff8","write_Font","write_ws_biff8_cell","write_Number","b8","write_Label","write_ws_biff8","_WB","_sheet","MAX_ROWS","guts","write_Guts","write_Dimensions","write_Window2","write_MergeCells","HL","write_ws_biff8_hlinks","write_FEAT","write_biff8_global","_sheets","_wb","writezeroes","write_WriteAccess","write_RRTabId","write_Window1","safe1904","write_FMTS_biff8","write_CELLXFS_biff8","write_Country","blen","write_biff8_buf","html_to_sheet","mtch2","split_regex","hd","colspan","rowspan","make_html_row","nullcell","make_html_preamble","_BEGIN","_END","_row","BEGIN","_preamble","parse_dom_table","midx","elts","number_formats","parse_content_xml","sheetag","rowtag","NFtag","ctag","textp","textpidx","row_ol","number_format_map","mrange","rowpeat","colpeat","atag","_Ref","creator","creatoridx","isstub","intable","rptR","rpt","nrange","parse_ods","ods","FEtag","parse_manifest","write_styles_ods","write_content_ods","null_cell_xml","_Fref","text_p","_tgt","fods","write_automatic_styles_ods","write_ods","manifest","rdf","write_rdf","write_manifest","write_obj_str","write_sheet_index","write_htm_str","write_csv_str","sheet_to_csv","write_slk_str","write_dif_str","write_prn_str","write_rtf_str","write_txt_str","sheet_to_txt","write_dbf_buf","write_eth_str","fix_opts_func","fix_write_opts","safe_parse_sheet","relsPath","sheetRels","stype","dfile","drelsp","parse_drawing","chartp","crelsp","parse_ds","strip_front_slash","parse_zip","binname","zipentries","links","coreprops","extprops","custprops","calcchains","drawings","TODO","ctext","Extension","ContentType","PartName","calcchain","parse_ct","parse_theme","link","propdata","parse_ext_props","toks","parse_cust_props","deps","bookDeps","wbsheets","wbext","wbrelsi","wbrelsfile","wbrels","safe_parse_wbrels","nmode","dirComments","canonicalpath","sheetNames","parse_comments","Deps","Styles","bin","parse_xlsxcfb","parse_DataSpaceVersionInfo","dsm","parse_DataSpaceMap","seds","parse_DataSpaceDefinition","einfo","parse_EncryptionInfo","decrypt_agile","decrypt_std76","write_zip","vbafmt","write_core_props","_sn","write_ext_props","wsrels","rId1","write_sty","f1","f2","f3","write_ct","read_plaintext","read_prn","readSync","infile","read_binary","bstrify","ab","vu","read_cfb","OLD_WTF","read_wb_ID","read_zip","read_utf16","read_plaintext_raw","write_string_type","bom","write_binary_type","bstr","writeSync","write_stxt_type","write_cfb_type","oopts","compression","generate","write_zip_type","resolve_book_type","isempty","defval","outi","CC","__rowNum__","blankrows","qreg","make_csv_row","FS","txt","endregex","skipHidden","strip","sheet_to_formulae","cmds","sheet_add_json","js","skipHeader","JS","Readable","get_formulae","make_csv","make_json","make_formulae","json_to_sheet","table_to_sheet","table_to_book","sheet_to_html","sheet_to_slk","sheet_to_eth","sheet_to_row_object_array","get_default","ws_get_cell_stub","book_new","book_append_sheet","book_set_sheet_visibility","vis","wb_sheet_idx","cell_set_number_format","cell_set_hyperlink","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","rngstr","to_html","_read","to_csv","BOM","readFile","writeFileAsync","_cb","_keyStr","utf8","chr2","chr3","enc1","enc2","enc3","enc4","CompressedObject","compressedSize","uncompressedSize","crc32","compressionMethod","compressedContent","getCompressedContent","STORE","magic","compress","uncompress","compressInputType","uncompressInputType","DEFLATE","getTypeOf","iTop","DataReader","checkIndex","setIndex","byteAt","readInt","readString","transformTo","readData","lastIndexOfSignature","sig","readDate","dostime","binary","createFolders","string2binary","string2Uint8Array","uint8Array2String","string2Blob","arrayBuffer2Blob","outputType","checkSupport","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","findCompression","USE_TYPEDARRAY","Uint16Array","Uint32Array","pako","deflateRaw","inflateRaw","support","compressions","ZipEntries","zipEntries","decompressed","optimizedBinaryString","fileComment","zipComment","Uint8ArrayReader","NodeBufferReader","signature","nodeBuffer","StringWriter","Uint8ArrayWriter","getRawData","getBinaryData","nodebuffer","dataToString","asUTF8","utf8decode","utf8encode","ZipObject","_initialMetadata","asText","asUint8Array","asArrayBuffer","decToHex","fileAdd","dataType","prepareFileAttrs","parentFolder","folderAdd","lastSlash","generateCompressedObjectFrom","generateZipParts","compressedObject","dosTime","dosDate","utfEncodedFileName","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","extraFields","unicodePathExtraField","unicodeCommentExtraField","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","relativePath","fileClone","folder","newFolder","kids","writer","dirEnd","zipData","localDirLength","centralDirLength","compressionName","zipPart","CENTRAL_DIRECTORY_END","typeName","finalize","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","DATA_DESCRIPTOR","StringReader","uint8array","builder","sig0","sig1","sig2","sig3","_utf8len","utf8border","buf2string","c_len","utf16buf","applyFromCharCode","m_pos","str_len","buf_len","string2buf","nextBoundary","identity","stringToArrayLike","arrayLikeToString","canUseApply","resultStr","arrayLikeToArrayLike","arrayFrom","arrayTo","ZipEntry","jszipProto","loadOptions","checkSignature","expectedSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","versionMadeBy","versionNeeded","zip64ExtensibleData","extraFieldId","extraFieldLength","extraFieldValue","extraDataSize","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","isEncrypted","bitFlag","useUTF8","prepareCompressedContent","previousIndex","compressedFileData","prepareContent","uncompressedFileData","localExtraFieldsLength","fileNameLength","checkCRC32","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","extraReader","upath","findExtraFieldUnicodePath","ucomment","findExtraFieldUnicodeComment","upathField","ucommentField","zlib_deflate","zstream","Deflate","windowBits","memLevel","strategy","gzip","ended","strm","avail_out","deflateInit2","deflateSetHeader","deflate","deflator","next_in","avail_in","Buf8","next_out","onData","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","zlib_inflate","gzheader","Inflate","inflateInit2","Z_OK","inflateGetHeader","inflate","inflator","next_out_utf8","utf8str","Z_FINISH","Z_NO_FLUSH","binstring2buf","Z_STREAM_END","arraySet","inflateEnd","ungzip","TYPED_OK","Int32Array","sources","fnTyped","dest","src_offs","dest_offs","fnUntyped","setTyped","Buf16","Buf32","STR_APPLY_OK","STR_APPLY_UIA_OK","adler","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","crcTable","makeTable","trees","adler32","MAX_MATCH","MIN_LOOKAHEAD","HCRC_STATE","BUSY_STATE","FINISH_STATE","errorCode","rank","zero","flush_pending","pending_buf","pending_out","total_out","flush_block_only","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","total_in","insert","ins_h","hash_shift","hash_mask","deflate_fast","flush","hash_head","bflush","match_length","_tr_tally","max_lazy_match","MIN_MATCH","last_lit","deflate_slow","max_insert","prev_match","match_available","configuration_table","Config","good_length","max_lazy","nice_length","max_chain","DeflateState","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","HEAP_SIZE","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","MAX_BITS","heap","heap_len","heap_max","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","deflateResetKeep","data_type","_tr_init","deflateReset","max_block_size","max_start","deflateInit","old_flush","beg","hcrc","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","_in","_out","dmax","wsize","whave","wnext","hold","bits","lcode","dcode","lmask","dmask","here","op","dist","from_source","lencode","distcode","lenbits","distbits","dolen","dodist","sane","inflate_fast","inflate_table","TYPE","BAD","ZSWAP32","InflateState","havedict","total","wbits","ncode","nlen","ndist","have","work","lendyn","distdyn","back","was","inflateResetKeep","inflateReset","inflateReset2","lenfix","distfix","virgin","fixedtables","inflateInit","put","here_bits","here_op","here_val","last_bits","last_op","last_val","hbuf","order","inf_leave","updatewindow","inflateInfo","MAXBITS","lbase","lext","dbase","dext","lens_index","table_index","incr","low","curr","used","huff","base_index","offs","extra_index","LITERALS","L_CODES","D_CODES","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","_dist_code","_length_code","base_length","base_dist","static_l_desc","static_d_desc","static_bl_desc","StaticTreeDesc","static_tree","extra_bits","extra_base","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","send_bits","send_code","tree","bi_reverse","gen_codes","next_code","init_block","END_BLOCK","bi_windup","smaller","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","build_tree","stree","xbits","gen_bitlen","scan_tree","curlen","prevlen","nextlen","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","static_init_done","stored_len","copy_block","LENGTH_CODES","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","BL_CODES","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","STATIC_TREES","bi_flush","DO_NOT_EXPORT_JSZIP","datepickerLocale","buttonText","allDayHtml","eventLimitText","noEventsMessage","defineLocale","monthsShort","monthsParseExact","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","mm","hh","MM","dayOfMonthOrdinalParse","doy","FE","OPTS_MAPPING","$oel","o_doc","o_win","parentWindow","$el","win","$doc","$win","pluginsEnabled","PLUGINS","initOnClick","MODULES","removeData","originalTarget","ul","edit","ready","VERSION","INSTANCES","closest","_original_html","$box","fullPage","iframe","$iframe","$wp","contentWindow","contents","$head","$html","iframe_document","parents","css","multiLine","toolbarInline","editInPopup","$off","froalaEditor","FroalaEditor","XS","SM","MD","LG","LinkRegExCommon","LinkRegExEnd","LinkRegExTLD","LinkRegExHTTP","LinkRegExAuth","LinkRegExWWW","LinkRegEx","LinkProtocols","MAIL_REGEX","helpers","appName","msie","webkit","safari","DocumentTouch","platform","msMatchesSelector","webkitMatchesSelector","parentElement","isIOS","isMac","isAndroid","isBlackberry","isWindowsPhone","isEmail","getPX","screenSize","sanitizeURL","RGBToHex","HEXtoRGB","isURL","getAlignment","isInViewPort","popups","areVisible","_mousedown","_mouseup","hasFocus","atStart","isCollapsed","defaultTag","markers","blockParent","blockTagsQuery","prepend","MARKERS","_mousemove","isDisabled","hasClass","getButtons","removeClass","_events","$_events","triggerHandler","bindClick","disableBlur","enableBlur","blurActive","chainTrigger","$on","ELEMENT_NODE","BLOCK_TAGS","TEXT_NODE","VOID_ELEMENTS","htmlAllowedEmptyTags","htmlDoNotWrapTags","SIMPLE_ENTER_TAGS","previousSibling","acceptNode","isBlock","deepestParent","rawAttributes","clearAttributes","openTagString","closeTagString","isFirstSibling","isLastSibling","isList","isLink","isElement","isVoid","isEditable","isDeletable","INVISIBLE_SPACE","START_MARKER","END_MARKER","cloneRange","collapse","insertNode","collapsed","ranges","commonAncestorContainer","addRange","replaceWith","isAtStart","isAtEnd","caretPositionFromPoint","createRange","setStart","offsetNode","setEnd","caretRangeFromPoint","startContainer","startOffset","getSelection","removeAllRanges","createTextRange","moveToPoint","duplicate","setEndPoint","place","insertAtPoint","getRangeAt","rangeCount","endContainer","endOffset","setAtEnd","setStartAfter","setEndBefore","edge","createTextNode","setStartBefore","setEndAfter","parentsUntil","selectNodeContents","moveToElementText","atEnd","keepFormatOnDelete","removeAttr","fillEmptyBlocks","cleanEmptyTags","clean","lists","htmlUntouched","getElementsByClassName","outerHTML","endElement","isFull","inEditor","blocks","setAtStart","setBefore","setAfter","rangeElement","htmlAllowedTags","htmlRemoveTags","htmlAllowedAttrs","htmlAllowedStyleProps","htmlAllowComments","HTML5Map","STRIKE","COMMENT_NODE","extractDoctype","extractNodeAttrs","extractNode","innerText","pasteAllowLocalImages","toHTML5","tables","invisibleSpaces","isPreformatted","UNICODE_NBSP","createTreeWalker","NodeFilter","SHOW_TEXT","nextNode","currentNode","normalizeAroundCursor","htmlSimpleAmpersand","htmlIgnoreCSSProperties","htmlExecuteScripts","ENTER_P","ENTER_DIV","ENTER_BR","NO_DELETE_TAGS","createDocumentType","doctype","publicId","systemId","cleanBRs","spellcheck","injectStyle","iframeDefaultStyle","iframeStyle","useClasses","ownerNode","selectorText","wrapInner","inArray","mozilla","not","cloneContents","htmlText","J","insertAfter","positionCaret","emptyBlocks","emptyBlockTagsQuery","cleanWhiteTags","cleanBlankSpaces","getDoctype","getSelected","unwrap","escapeEntities","checkIfEmpty","heightMax","heightMin","outerHeight","syncIframe","language","LANGUAGE","translation","placeholderText","$placeholder","marginTop","marginLeft","paddingRight","marginRight","show","execCommand","$tb","disableDesign","editorClass","typingTimer","requestWithCORS","requestWithCredentials","requestHeaders","iframeStyleFiles","zIndex","disableRightClick","scrollableContainer","drag_support","filereader","formdata","progress","getXHR","sameInstance","cursorLists","_startEnter","_middleEnter","_endEnter","_backspace","_del","tabSpaces","backspace","del","KEYCODE","SHIFT","CTRL","ALT","ESC","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","FF_SEMICOLON","FF_EQUALS","QUESTION_MARK","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","FF_HYPHEN","SEMICOLON","DASH","EQUALS","HYPHEN","SLASH","APOSTROPHE","TILDE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","IME","snapshot","deleteContents","modify","bulkRefresh","undo","saveStep","commands","outdent","toolbarBottom","toolbarStickyOffset","canDo","msGetInputContext","isCharacter","isArrow","forceUndo","isIME","isBrowserAction","accessibility","$f_el","with_kb","saveSelection","nextAll","prevAll","modals","toolbar","showInline","focusEditor","_tiMouseenter","_tiKeydown","onHide","onShow","registerPopup","registerToolbar","focusToolbarElement","focusToolbar","focusContent","focusPopup","focusModal","focusPopupButton","focusModalButton","restoreSelection","matchesSelector","mozMatchesSelector","oMatchesSelector","applyStyle","indentMargin","COMMANDS","toggleClass","strikeThrough","forcedRefresh","redo","insertHR","clearFormatting","RegisterCommand","accessibilityFocus","FEK","cookie","pastePlain","pasteDeniedTags","pasteDeniedAttrs","pasteAllowedStyleProps","setItem","getData","dataTransfer","$sc","previousElementSibling","getItem","wordPaste","cleanEmptyTagsAndDivs","getRtfClipboard","saveCopiedText","shortcutsEnabled","shortcutsHint","SHORTCUTS_MAP","RegisterShortcut","shortcuts","scLoc","scOffset","ecLoc","ecOffset","equal","undo_stack","undo_index","undoing","_content_changed_timer","hideAll","canRedo","dropRedo","ICON_DEFAULT_TEMPLATE","ICON_TEMPLATES","font_awesome","ICONS","DefineIconTemplate","DefineIcon","icon","getTemplate","tooltips","$tooltip","outerWidth","$modal","refreshOnShow","refreshAfterCallback","showOnMobile","displaySelection","defaultSelection","displaySelectionWidth","popup","modal","plugin","toolbarContainer","buttons","popup_buttons","buildList","bindCommands","hideActiveDropdowns","$overlay","$body","POPUP_TEMPLATES","RegisterTemplate","_repositionPopup","exit_flag","_windowResize","_inputFocus","_inputBlur","_editorKeydown","_preventFocus","_editorMouseup","_windowMouseup","_windowKeydown","FocusPopupButton","_doPlaceholder","onRefresh","_stickyElements","forSelection","addSticky","textEdit","toolbarButtons","toolbarButtonsXS","toolbarButtonsSM","toolbarButtonsMD","toolbarSticky","toolbarVisibleWithoutSelection","justify","prependTo","fullscreen","fontFamilySelection","fontFamilyDefaultSelection","grep","asc","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","fontSizeSelection","fontSizeDefaultSelection","charCounterMax","charCounterCount","charCounter","Switch","isMaterial","material","matchSizeToFont","setup","CHECKED_CLASS_NAME","insertAdjacentElement","updateSize","inheritedFontSize","setProperty","trackClicked","checkboxFocused","checkboxBlurred","checkboxToggled","FOCUSED_CLASS_NAME","syncState","_switch","switches","doNothing","monthToStr","monthNumber","revFormat","monthName","shortMonth","setSeconds","unixSeconds","weekNum","weekNumber","ISODate","setMinutes","unixMillSeconds","tokenRegex","ComponentType","floatingFilter_1","floatingFilterWrapper_1","filterManager_1","overlayWrapperComponent_1","ComponentRecipes","ComponentRecipes_1","newDateComponent","newHeaderComponent","newHeaderGroupComponent","getColGroupDef","newFloatingFilterWrapperComponent","defaultFloatingFilterType","suppressFilter","newEmptyFloatingFilterWrapperComponent","filterToFloatingFilterNames","dynamicComponentParams","floatingFilter","floatingFilterWrapperComponentParams","floatingFilterComp","suppressFilterButton","mergeParams","filterComponent","getFilterComponentPrototype","getModelAsString","rawModelFn_1","currentParentModel","createInternalAgGridComponent","ReadModelAsStringFloatingFilterComp","FloatingFilterWrapperComp","newFullWidthGroupRowInnerCellRenderer","newCellRenderer","newInnerCellRenderer","newFullRowGroupRenderer","newOverlayWrapperComponent","OverlayWrapperComponent","newLoadingOverlayComponent","newNoRowsOverlayComponent","getComponentToUse","EmptyFloatingFilterWrapperComp","agSetColumnFilter","agNumberColumnFilter","agDateColumnFilter","agTextColumnFilter","clearFocusedCell","EVENT_COLUMN_GROUP_OPENED","EVENT_COLUMN_MOVED","EVENT_COLUMN_PINNED","EVENT_COLUMN_VISIBLE","onCellFocused","isSuppressFocusAfterRefresh","getGridCellForDomElement","eBrowserCell","ePointer","forceBrowserFocus","makeNull","isCellFocused","isRowFocused","isAnyCellFocused","floatingOrNull","EVENT_CELL_FOCUSED","isInstanceOf","_objectURL","urlAPI","revokeHelper","noRevoke","fileReader","$buffer","propertyDesc","toIndex","createArrayMethod","createArrayIncludes","ArrayIterators","$iterDetect","setSpecies","arrayFill","arrayCopyWithin","SHARED_BUFFER","BYTES_PER_ELEMENT","ArrayProto","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","arrayReduce","arrayReduceRight","arraySort","arrayToString","arrayToLocaleString","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","TYPED_ARRAY","TYPED","WRONG_LENGTH","allocate","LITTLE_ENDIAN","FORCED_SET","toOffset","BYTES","speciesFromList","fromList","addGetter","$from","$of","TO_LOCALE_BUG","$toLocaleString","predicate","middle","$begin","isTAIndex","$getDesc","$setDesc","$TypedArrayPrototype$","CLAMPED","GETTER","SETTER","TypedArray","TAC","TypedArrayPrototype","addElement","$offset","$length","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","keyMetadata","MetadataValue","superCtor","super_","TempCtor","gridRow_1","getGridRow","GridRow","createId","colsMatch","floatingMatch","indexMatch","column_1","SortController_1","progressSort","multiSort","nextDirection","getNextSortDirection","setSortForColumn","Column","SORT_ASC","SORT_DESC","setSort","getSort","sortedAt","setSortedAt","isSuppressMultiSort","clearSortBarThisColumn","dispatchSortChangedEvents","columnToSkip","getPrimaryAndSecondaryAndAutoColumns","columnToClear","sortingOrder","getSortingOrder","DEFAULT_SORTING_ORDER","currentIndex","notInArray","lastItemInArray","columnsWithSorting","getColumnsWithSortingOrdered","setSortModel","isEnableSorting","sortModelProvided","sortForCol","suppressSorting","sortModelEntry","compareColIds","allColumnsIncludingAuto","getSortForRowController","inverter","setDesc","FREEZE","setMeta","NEED","fastKey","getWeak","UNSCOPABLES","hasXMLHttpRequest","makePromise","EVENT_GRID_COLUMNS_CHANGED","EVENT_COLUMN_RESIZED","EVENT_VIRTUAL_COLUMNS_CHANGED","EVENT_RANGE_SELECTION_CHANGED","EVENT_TOOL_PANEL_VISIBLE_CHANGED","EVENT_PASTE_START","EVENT_PASTE_END","EVENT_CELL_CLICKED","EVENT_CELL_DOUBLE_CLICKED","EVENT_CELL_MOUSE_DOWN","EVENT_CELL_CONTEXT_MENU","EVENT_ROW_VALUE_CHANGED","EVENT_CELL_MOUSE_OVER","EVENT_CELL_MOUSE_OUT","EVENT_VIRTUAL_ROW_REMOVED","EVENT_ROW_CLICKED","EVENT_ROW_DOUBLE_CLICKED","EVENT_GRID_READY","EVENT_GRID_SIZE_CHANGED","EVENT_DRAG_STARTED","EVENT_DRAG_STOPPED","EVENT_ROW_EDITING_STARTED","EVENT_ROW_EDITING_STOPPED","EVENT_CELL_EDITING_STARTED","EVENT_CELL_EDITING_STOPPED","EVENT_ANIMATION_QUEUE_EMPTY","EVENT_HEIGHT_SCALE_CHANGED","EVENT_COMPONENT_STATE_CHANGED","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","EVENT_SCROLL_VISIBILITY_CHANGED","EVENT_COLUMN_HOVER_CHANGED","EVENT_FLASH_CELLS","EVENT_ROW_DRAG_ENTER","EVENT_ROW_DRAG_MOVE","EVENT_ROW_DRAG_LEAVE","EVENT_ROW_DRAG_END","EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST","EVENT_COLUMN_PIVOT_CHANGE_REQUEST","EVENT_COLUMN_VALUE_CHANGE_REQUEST","EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST","ColumnGroup","originalColumnGroup","groupId","instanceId","displayedChildren","localEventService","createUniqueId","getParent","setParent","getUniqueId","isEmptyGroup","allLeafColumns","getOriginalColumnGroup","getLeafColumns","allMoving","checkLeft","isEnableRtl","lastChildLeft","getLeft","setLeft","firstChildLeft","getOldLeft","oldLeft","createAgEvent","EVENT_LEFT_CHANGED","getGroupId","getInstanceId","isChildInThisGroupDeepSearch","wantedChild","foundChild","getActualWidth","groupActualWidth","isResizable","groupChild","addChild","getDisplayedChildren","addLeafColumns","getDisplayedLeafColumns","addDisplayedLeafColumns","getDefinition","isPadding","isExpanded","leafColumns","getChildren","getColumnGroupShow","calculateDisplayedColumns","abstractColumn","HEADER_GROUP_SHOW_OPEN","HEADER_GROUP_SHOW_CLOSED","EVENT_DISPLAYED_CHILDREN_CHANGED","ComponentSource","componentProvider_1","agComponentUtils_1","componentMetadataProvider_1","holder","defaultComponentName","dynamicComponentFn","componentNameToUse","hardcodedNameComponent","HardcodedJsComponent","hardcodedJsFunction","HardcodedFwComponent","componentPropertyValue","agComponentUtils","doesImplementIComponent","FRAMEWORK","HARDCODED","dynamicParams","AG_GRID","adaptFunction","dynamicComponentDef","dynamicComponent","resolveByName","componentNameOpt","registeredComponent","componentProvider","retrieve","REGISTERED_BY_NAME","RegisteredComponentSource","REGISTERED","DEFAULT","agGridParams","dynamicCustomParams","customParamsRaw","finalParams","mergeDeep","customParams","holderOpt","mandatory","customInitParamsCb","componentAndParams","newAgGridComponent","deferredInit","initialiseComponent","notRelevant","clazz","internalComponent","componentToUse","FrameworkComponentRaw","thisComponentConfig","componentMetadataProvider","mandatoryMethodList","optionalMethodList","AgComponentUtils","ComponentMetadataProvider","ComponentProvider","rowRenderer_1","columnAnimationService_1","cellEditorFactory_1","cellRendererFactory_1","cellRendererService_1","valueFormatterService_1","stylingService_1","columnHoverService_1","dragAndDropService_1","sortController_1","doingMasterDetail","isMasterDetail","ColumnAnimationService","CellEditorFactory","CellRendererFactory","CellRendererService","ValueFormatterService","StylingService","ColumnHoverService","FUNCTION_STRIP_COMMENTS","FUNCTION_ARGUMENT_NAMES","AG_GRID_STOP_PROPAGATION","Timer","print","HTML_ESCAPES","reUnescapedHtml","doOnceFlags","areEventsNear","pixelCount","shallowCompare","arr1","getNameOfClass","TheClass","funcAsString","fieldContainsDots","getScrollLeft","rtl","isBrowserSafari","isBrowserChrome","scrollWidth","cleanNumber","setScrollLeft","isBrowserFirefox","iterateNamedNodeMap","mappedItem","allValues","parseYyyyMmDdToDate","yyyyMmDd","serializeDateToYyyyMmDd","totalStringSize","asString","getFunctionParameters","fnStr","objToArray","firstMatchingItem","collectionAsArray","toStrings","isNodeOrElement","copyNodeList","childCount","isEventFromPrintableCharacter","pressedChar","charCode","isKeyPressed","KEY_NEW_LINE","printableCharacter","numpadDelWithNumlockOnForEdgeOrIe","isNumpadDelWithNumlockOnForEdgeOrIe","PRINTABLE_CHARACTERS","addChangeListener","missingOrEmptyObject","firstExistingValue","anyExists","existsAndNotEmpty","hasChildNodes","removeElement","cssSelector","removeFromParent","offsetParent","tempDiv","appendHtml","htmlTemplate","removeCssClass","callIfPresent","cssClasses","containsClass","onlyClass","startsWithClass","endsWithClass","getElementAttribute","sortNumberArray","numberArray","removeRepeatsFromArray","thisOneMatches","nextOneMatches","removeAllFromArray","toRemove","insertIntoArray","insertArrayIntoArray","moveInArray","objectsToMove","defaultComparator","valueA","valueB","accentedCompare","valueAMissing","valueBMissing","doQuickCompare","localeCompare","compareArrays","array1","array2","eChild","eChildBefore","insertWithDomOrder","insertTemplateWithDomOrder","toStringOrNull","formatWidth","formatNumberTwoDecimalPlacesAndCommas","formatNumberCommas","prependDC","documentFragment","iconContents","createIconNoSpan","eResult","userProvidedIcon","icons","getIcons","rendererResult","cssClass","iconNameClassMap","addStylesToElement","keyCamelCase","hyphenToCamelCase","isHorizontalScrollShowing","isVerticalScrollShowing","getMaxDivHeight","testUpTo","getScrollbarWidth","msOverflowStyle","widthNoScroll","inner","widthWithScroll","keyToCheck","setHidden","isBrowserIE","isIE","documentMode","isBrowserEdge","isEdge","StyleMedia","anyWindow","pushNotification","isChrome","webstore","isFirefox","InstallTrigger","isUserAgentIPad","isIPad","getTarget","eventNoType","srcElement","isElementInEventPath","getEventPath","createEventPath","addAgGridEventPath","__agGridEventPath","deepPath","composedPath","forEachSnapshotFirst","innerWidth","setCheckboxState","eCheckbox","indeterminate","traverseNodesWithKey","keyParts","recursiveSearchNodes","camelCaseToHyphen","cssStyleObjectToMarkup","stylesToUse","resParts","styleKey","styleValue","styleKeyDashed","isNumeric","toEscape","normalizeWheel","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","debounce","immediate","callNow","stopPropagationForAgGrid","isStopPropagationForAgGrid","funcs","executeAfter","millis","referenceCompare","nextValue","addSafePassiveEventListener","passiveEvents","camelCaseToHumanText","camelCase","eMessage","eBox","sortRowNodesByOrder","rowNodeOrder","nodeA","nodeB","positionA","positionB","aHasIndex","bHasIndex","fuzzyCheckStrings","inputValues","validValues","allSuggestions","fuzzyMatches","invalidInputs","validValue","invalidInput","fuzzySuggestions","thisSuggestions","suggestedValueLeft","suggestedValueRight","leftDifference","string_similarity","rightDifference","get_bigrams","NUMPAD_DEL_NUMLOCK_ON_KEY","NUMPAD_DEL_NUMLOCK_ON_CHARCODE","str1","str2","hit_count","len1","pairs1","pairs2","union","PromiseStatus","initValue","valToReturn","IN_PROGRESS","resolution","listOfWaiters","onDone","onReject","toCombine","combinedValues","remainingToResolve","sourceResolved","firstOneOnly","unmapped","ifNotResolvedValue","ifResolved","RESOLVED","waiter","scrollVisibleService_1","PaginationAutoPageSizeService","onBodyHeightChanged","onScrollVisibilityChanged","checkPageSize","notActive","isPaginationAutoPageSize","bodyHeight","scrollVisibleService","isBodyHorizontalScrollShowing","newPageSize","ScrollVisibleService","currentPage","topRowIndex","bottomRowIndex","isPagination","setIndexesAndBounds","paginationChangedEvent","goToPage","page","topRowBounds","bottomRowBounds","pageSize","totalLastRow","goToPageWithIndex","getTotalRowCount","isLastPageFound","getCurrentPage","goToNextPage","goToPreviousPage","goToFirstPage","goToLastPage","rowCount","lastPage","getPageSize","getTotalPages","totalPages","setPageSize","getPaginationPageSize","totalRowCount","maxRowAllowed","rowNode_1","setPinnedTopRowData","setPinnedBottomRowData","pinnedTopRows","pinnedBottomRows","getRowAtPixel","createNodesFromData","allData","isTop","nextRowTop_1","getPinnedTopTotalHeight","getTotalHeight","getPinnedTopRowCount","getPinnedBottomRowCount","getPinnedTopRow","getPinnedBottomRow","forEachPinnedTopRow","forEachPinnedBottomRow","getPinnedBottomTotalHeight","lastNode","enumBugKeys","dPs","Empty","createDict","iframeDocument","Properties","restArguments","rest","isBoolean","tagTester","Int8Array","hasStringTagBug","isIE11","isDataView","getInt8","isArguments","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","isMatch","_keys","_wrapped","toBufferView","bufferSource","tagDataView","aStack","bStack","deepEq","areArrays","aCtor","bCtor","isEqual","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","pairs","functions","createAssigner","keysFunc","baseCreate","Ctor","extendOwn","interceptor","toPath","deepGet","optimizeCb","argCount","accumulator","baseIteratee","iteratee","currentKey","propertyOf","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","interpolate","noMatch","escapes","escapeChar","bareIdentifier","settings","oldSettings","variable","idCounter","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","callArgs","hasher","memoize","address","throttled","_now","passed","debounced","_args","negate","compose","findKey","createPredicateIndexFinder","high","createIndexFinder","predicateFind","sortedIndex","findLastIndex","findWhere","createReduce","reducer","initial","guard","contextPath","pluck","where","lastComputed","sample","shuffle","sortBy","criteria","behavior","partition","reStrSymbol","keyInObj","pick","compact","otherArrays","difference","uniq","isSorted","arrays","intersection","argsLength","unzip","chainResult","mixin","hiddenKeys","forbiddenField","BREAK","english","hookCallback","setHookCallback","hasOwnProp","isObjectEmpty","createUTC","createLocalOrUTC","utc","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","momentProperties","updateInProgress","copyConfig","_isAMomentObject","_l","_tzm","_isUTC","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","deprecationHandler","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","mom","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","defaultLongDateFormat","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","aliases","addUnitAlias","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","stringGet","stringSet","prioritized","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p4","tokens","addParseToken","addWeekParseToken","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","modMonth","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","dayOfMonth","getSetMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","createUTCDate","setUTCFullYear","firstWeekOffset","fwd","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","meridiemParse","localeFamilies","commonPrefix","minl","normalizeLocale","chooseLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","timeFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","weekdayOverflow","curWeek","GG","createLocal","gg","ISO_8601","RFC_2822","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configFromObject","dayOrDate","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","weeks","isoWeek","milliseconds","_milliseconds","_days","_bubble","isDuration","absRound","dontConvert","lengthDiff","diffs","utcOffset","offsetFromString","chunkOffset","cloneWithOffset","local","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","isAdding","invalid","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","wholeMonthDiff","anchor","keepOffset","toDate","datetime","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","columnGroup_1","originalColumnGroup_1","ColumnUtils","calculateColInitialWidth","getMinColWidth","getColWidth","getOriginalPathForColumn","originalBalancedTree","recursePath","balancedColumnTree","dept","OriginalColumnGroup","depthFirstOriginalTreeSearch","depthFirstAllColumnTreeSearch","depthFirstDisplayedColumnTreeSearch","colGroupDef","expandable","openByDefault","getLevel","setChildren","columnGroupShow","setupExpandable","setExpandable","onColumnVisibilityChanged","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","headerGroupShow","EVENT_EXPANDABLE_CHANGED","cacheVersion","isValueCache","neverExpires","isValueCacheNeverExpires","expire","__cacheVersion","__cacheData","componentUtil_1","propertyKeys_1","colDefUtil_1","eventKeys_1","autoHeightCalculator_1","isTrue","propertyEventService","domDataKey","layoutElements","GridOptionsWrapper_1","checkForDeprecated","suppressPropertyNamesCheck","checkGridOptionsProperties","checkColumnDefProperties","useAsyncEvents","addGlobalListener","globalEventHandler","isSuppressParentsInRowNodes","isRowModelServerSide","isGroupRemoveSingleChildren","isGroupHideOpenParents","PROP_GRID_AUTO_HEIGHT","updateLayoutClasses","columnDefs","userProperties","validProperties","ColDefUtil","ALL_PROPERTIES","FRAMEWORK_PROPERTIES","checkProperties","PropertyKeys","ComponentUtil","getCallbackForEvent","validPropertiesAndExceptions","containerName","docsUrl","invalidProperties","invalidPropertyKeys","invalidPropertyKey","setDomData","enterprise","isRowSelection","rowSelection","isRowDeselection","rowDeselection","isRowMultiSelectWithClick","rowMultiSelectWithClick","isPivotTotals","pivotTotals","getPivotColumnGroupTotals","pivotColumnGroupTotals","getPivotRowTotals","pivotRowTotals","rowModelType","ROW_MODEL_TYPE_INFINITE","isRowModelViewport","ROW_MODEL_TYPE_VIEWPORT","DEPRECATED_ROW_MODEL_TYPE_NORMAL","editType","suppressFocusAfterRefresh","isShowToolPanel","showToolPanel","isToolPanelSuppressValues","toolPanelSuppressValues","isToolPanelSuppressPivots","toolPanelSuppressPivots","isTreeData","isToolPanelSuppressRowGroups","toolPanelSuppressRowGroups","isToolPanelSuppressSideButtons","toolPanelSuppressSideButtons","isToolPanelSuppressPivotMode","toolPanelSuppressPivotMode","isContractColumnSelection","contractColumnSelection","isToolPanelSuppressColumnFilter","toolPanelSuppressColumnFilter","isToolPanelSuppressColumnSelectAll","toolPanelSuppressColumnSelectAll","isToolPanelSuppressColumnExpandAll","toolPanelSuppressColumnExpandAll","isSuppressTouch","suppressTouch","isSuppressRowTransform","suppressRowTransform","suppressAsyncEvents","isEnableCellChangeFlash","enableCellChangeFlash","isSuppressRowHoverHighlight","suppressRowHoverHighlight","isGroupSelectsFiltered","groupHideOpenParents","isGroupMultiAutoColumn","groupMultiAutoColumn","groupRemoveSingleChildren","isGroupRemoveLowestSingleChildren","groupRemoveLowestSingleChildren","groupIncludeFooter","isGroupIncludeTotalFooter","groupIncludeTotalFooter","isGroupSuppressBlankHeader","groupSuppressBlankHeader","isSuppressRowClickSelection","suppressRowClickSelection","isSuppressCellSelection","suppressCellSelection","suppressMultiSort","isMultiSortKeyCtrl","multiSortKey","isGroupSuppressAutoColumn","groupSuppressAutoColumn","isSuppressDragLeaveHidesColumns","suppressDragLeaveHidesColumns","suppressScrollOnNewData","isRowDragManaged","rowDragManaged","isSuppressRowDrag","suppressRowDrag","isGridAutoHeight","gridAutoHeight","isSuppressHorizontalScroll","suppressHorizontalScroll","isSuppressLoadingOverlay","suppressLoadingOverlay","isSuppressNoRowsOverlay","suppressNoRowsOverlay","isSuppressFieldDotNotation","suppressFieldDotNotation","pinnedTopRowData","pinnedBottomRowData","isFunctionsPassive","functionsPassive","isSuppressTabbing","suppressTabbing","isSuppressChangeDetection","suppressChangeDetection","suppressAnimationFrame","quickFilterText","cacheQuickFilter","isUnSortIcon","unSortIcon","isSuppressMenuHide","suppressMenuHide","isEnterMovesDownAfterEdit","enterMovesDownAfterEdit","isEnterMovesDown","enterMovesDown","getRowStyle","rowStyle","getRowClass","rowClass","getRowStyleFunc","getRowClassFunc","rowClassRules","getPopupParent","popupParent","getPostProcessPopupFunc","postProcessPopup","getDoesDataFlowerFunc","doesDataFlower","getPaginationNumberFormatterFunc","paginationNumberFormatter","getDefaultGroupSortComparator","defaultGroupSortComparator","getIsFullWidthCellFunc","isFullWidthCell","getFullWidthCellRendererParams","fullWidthCellRendererParams","embedFullWidthRows","getBusinessKeyForNodeFunc","getBusinessKeyForNode","isDeltaRowDataMode","deltaRowDataMode","isEnsureDomOrder","isEnableColResize","enableColResize","getColResizeDefault","colResizeDefault","isSingleClickEdit","singleClickEdit","isSuppressClickEdit","suppressClickEdit","isStopEditingWhenGridLosesFocus","stopEditingWhenGridLosesFocus","getGroupDefaultExpanded","groupDefaultExpanded","maxConcurrentDatasourceRequests","getCacheOverflowSize","cacheOverflowSize","paginationPageSize","cacheBlockSize","getInfiniteInitialRowCount","infiniteInitialRowCount","purgeClosedRowNodes","isSuppressPaginationPanel","suppressPaginationPanel","getRowData","groupUseEntireRow","enableRtl","getAutoGroupColumnDef","autoGroupColumnDef","isGroupSuppressRow","groupSuppressRow","getPivotPanelShow","pivotPanelShow","angularCompileRows","angularCompileFilters","isAngularCompileHeaders","angularCompileHeaders","isDebug","getColumnDefs","getColumnTypes","columnTypes","getDatasource","getViewportDatasource","viewportDatasource","serverSideDatasource","enableSorting","enableServerSideSorting","isAccentedSort","accentedSort","enableCellExpressions","isEnableGroupEdit","enableGroupEdit","isSuppressMiddleClickScrolls","suppressMiddleClickScrolls","isSuppressPreventDefaultOnMouseWheel","suppressPreventDefaultOnMouseWheel","isSuppressColumnVirtualisation","suppressColumnVirtualisation","isSuppressContextMenu","suppressContextMenu","isAllowContextMenuWithControlKey","allowContextMenuWithControlKey","isSuppressCopyRowsToClipboard","suppressCopyRowsToClipboard","isSuppressClipboardPaste","suppressClipboardPaste","isEnableFilter","enableFilter","enableServerSideFilter","pagination","suppressEnterpriseResetOnNewColumns","getProcessDataFromClipboardFunc","processDataFromClipboard","getBatchUpdateWaitMillis","batchUpdateWaitMillis","BATCH_WAIT_MILLIS","isEnableServerSideFilter","isEnableServerSideSorting","isSuppressMovableColumns","suppressMovableColumns","animateRows","isSuppressColumnMoveAnimation","suppressColumnMoveAnimation","isSuppressAggFuncInHeader","suppressAggFuncInHeader","isSuppressAggAtRootLevel","suppressAggAtRootLevel","isEnableRangeSelection","enableRangeSelection","isSuppressMultiRangeSelection","suppressMultiRangeSelection","paginationAutoPageSize","isRememberGroupStateWhenNewData","rememberGroupStateWhenNewData","getAggFuncs","aggFuncs","getAlignedGrids","alignedGrids","usingMasterDetail","masterDetail","getIsRowMasterFunc","isRowMaster","isRowSelectable","getGroupRowRendererParams","groupRowRendererParams","getOverlayLoadingTemplate","overlayLoadingTemplate","getOverlayNoRowsTemplate","overlayNoRowsTemplate","isSuppressAutoSize","suppressAutoSize","suppressParentsInRowNodes","isEnableStatusBar","enableStatusBar","isAlwaysShowStatusBar","alwaysShowStatusBar","isFunctionsReadOnly","functionsReadOnly","isFloatingFilter","isEnableOldSetFilterModel","enableOldSetFilterModel","getDefaultColDef","defaultColDef","getDefaultColGroupDef","defaultColGroupDef","getDefaultExportParams","defaultExportParams","isSuppressCsvExport","suppressCsvExport","isSuppressExcelExport","suppressExcelExport","isSuppressMakeColumnVisibleAfterUnGroup","suppressMakeColumnVisibleAfterUnGroup","getNodeChildDetailsFunc","getNodeChildDetails","getDataPathFunc","getDataPath","getGroupRowAggNodesFunc","groupRowAggNodes","getContextMenuItemsFunc","getContextMenuItems","getMainMenuItemsFunc","getMainMenuItems","treeData","valueCacheNeverExpires","isAggregateOnlyChangedColumns","aggregateOnlyChangedColumns","getProcessSecondaryColDefFunc","processSecondaryColDef","getProcessSecondaryColGroupDefFunc","processSecondaryColGroupDef","getSendToClipboardFunc","sendToClipboard","getProcessRowPostCreateFunc","processRowPostCreate","getProcessCellForClipboardFunc","processCellForClipboard","getProcessHeaderForClipboardFunc","processHeaderForClipboard","getProcessCellFromClipboardFunc","processCellFromClipboard","getViewportRowModelPageSize","viewportRowModelPageSize","getViewportRowModelBufferSize","viewportRowModelBufferSize","serverSideSortingAlwaysResets","getPostSortFunc","postSort","getClipboardDeliminator","clipboardDeliminator","gridOptionsNoType","addLayoutElement","autoHeight","checkEventDeprecation","getAutoSizePadding","autoSizePadding","getHeaderHeight","headerHeight","specialForNewMaterial","getFloatingFiltersHeight","floatingFiltersHeight","getGroupHeaderHeight","groupHeaderHeight","getPivotHeaderHeight","pivotHeaderHeight","getPivotGroupHeaderHeight","pivotGroupHeaderHeight","minColWidth","MIN_COL_WIDTH","getMaxColWidth","maxColWidth","colWidth","rowBuffer","ROW_BUFFER_SIZE","scrollbarWidth","suppressUnSort","suppressDescSort","groupAggFields","groupHidePivotColumns","onRowDeselected","rowDeselected","rowsAlreadyGrouped","groupAggFunction","checkboxSelection","paginationInitialRowCount","infinitePageSize","infiniteBlockSize","maxPagesInCache","paginationOverflowSize","forPrint","suppressMenuFilterPanel","suppressMenuMainPanel","suppressMenuColumnPanel","suppressUseColIdForGroups","groupColumnDef","slaveGrids","floatingTopRowData","floatingBottomRowData","paginationStartPage","getHeaderCellTemplate","headerCellTemplate","headerCellRenderer","domLayout","layoutInterval","getLocaleTextFunc","localeTextFunc","localeText","callbackMethodName","getDefaultRowHeight","getRowHeight","detailRowHeight","defaultHeight","autoHeightCalculator","getPreferredHeightForRow","getVirtualItemHeight","sassVariableName","getSassVariable","PROP_HEADER_HEIGHT","PROP_GROUP_REMOVE_SINGLE_CHILDREN","PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN","PROP_PIVOT_HEADER_HEIGHT","PROP_SUPPRESS_CLIPBOARD_PASTE","PROP_GROUP_HEADER_HEIGHT","PROP_PIVOT_GROUP_HEADER_HEIGHT","PROP_FLOATING_FILTERS_HEIGHT","PROP_SUPPRESS_ROW_DRAG","PROP_POPUP_PARENT","AutoHeightCalculator","component_1","checkboxSelectionComponent_1","rowDragComp_1","autoHeightCell","editingCell","cellEditorVersion","cellRendererVersion","createGridCellVo","rangeSelectionEnabled","cellFocused","firstRightPinned","isFirstRightPinned","lastLeftPinned","isLastLeftPinned","getCellRangeCount","getValueAndFormat","setUsingWrapper","chooseCellRenderer","setupColSpan","rowSpan","getRowSpan","getCreateTemplate","templateParts","getCellWidth","valueToRender","getInitialValueToRender","valueSanitised","getToolTip","wrapperStartTemplate","wrapperEndTemplate","tooltipSanitised","colIdSanitised","stylesFromColDef","preProcessStylesFromColDef","getInitialCssClasses","stylesForRowSpanning","getStylesForRowSpanning","usingWrapper","getCompId","afterAttached","eGui","eParentRow","addDomData","populateTemplate","attachCellRenderer","angular1Compile","onFlashCells","onColumnHover","onRowIndexChanged","onCellChanged","onLeftChanged","EVENT_WIDTH_CHANGED","onWidthChanged","EVENT_FIRST_RIGHT_PINNED_CHANGED","onFirstRightPinnedChanged","EVENT_LAST_LEFT_PINNED_CHANGED","onLastLeftPinnedChanged","onRangeSelectionChanged","isHovered","columnHoverService","getCellLeft","colsSpanning","result_1","cellId","animateCell","colSpan","onDisplayColumnsChanged","getColSpanningList","getColSpan","pinned","getPinned","getDisplayedColAfter","preProcessClassesFromColDef","preProcessCellClassRules","getRangeClasses","usingCellRenderer","cellRendererGui","templateUrl","templateService","getValueToUse","suppressFlash","suppressCellFlash","valuesDifferent","valuesAreEqual","attemptCellRendererRefresh","replaceContentsAfterRefresh","postProcessStylesFromColDef","postProcessClassesFromColDef","refreshToolTip","postProcessCellClassRules","cssName","fullName","animationFullName","eParentOfValue","putDataIntoCellAfterRefresh","compiledElement_1","processStylesFromColDef","cellStyle","cssToUse","cellStyleParams","cellStyleFunc","processClassesFromColDef","onApplicableClass","stylingService","processStaticCellClasses","valueToUse","createCellRendererParams","newTooltip","val1","val2","equalsMethod","tooltipField","isTooltipFieldContainsDots","valueFormatted","processCellClassRules","onNotApplicableClass","processClassRules","cellClassRules","includeSelectionComponent","includeRowDraggingComponent","cbSelectionIsFunc","rowDraggableIsFunc","rowDrag","cellRendererType","createCellRendererInstance","afterCellRendererCreated","isAlive","formatValue","eGridCell","addRowCompListener","valueFormatterService","lockedClosedGroup","onMouseEvent","onCellClicked","onCellDoubleClicked","onMouseOut","dispatchCellContextMenuEvent","cellContextMenuEvent","onCellContextMenu","cellMouseOutEvent","clearMouseOver","cellMouseOverEvent","setMouseOver","cellDoubleClickedEvent","cellStartedEdit","afterCellEditorCreated","createCellEditorParams","cellEditorFactory","createCellEditor","cellEditorInPopup","setInlineEditingClass","addPopupCellEditor","addInCellEditor","ePopupGui","hideEditorPopup","popupService","addAsModalPopup","onPopupEditorClosed","positionPopupOverComponent","eventSource","ePopup","keepWithinBounds","stopRowOrCellEdit","editingInline","popupEditorShowing","stopEditingAndFocus","parseValue","suppressNavigateAfterEdit","navigateAfterEdit","valueParser","doesUserWantToCancelKeyboardEvent","KEY_ENTER","onEnterKeyDown","KEY_F2","onF2KeyDown","KEY_ESCAPE","onEscapeKeyDown","KEY_TAB","KEY_BACKSPACE","KEY_DELETE","onBackspaceOrDeleteKeyPressed","KEY_DOWN","KEY_UP","KEY_RIGHT","KEY_LEFT","onNavigationKeyPressed","suppressKeyboardEvent","onShiftRangeSelect","extendRangeInDirection","getCellRanges","endCell","onKeyPress","onSpaceKeyPressed","extendRangeToCell","isCellInAnyRange","ctrlKeyPressed","cellMouseDownEvent","isDoubleClickOnIPad","nowMillis","lastIPadMouseClickEvent","cellClickedEvent","doIeFocusHack","getParentRow","setParentRow","detach","newRangeCount","getRefElement","eCellWrapper","addRowDragging","addSelectionCheckbox","rowDraggingComp","RowDragComp","addFeature","cbSelectionComponent","CheckboxSelectionComponent","visibleFunc","fullRowEdit","stopRowEditing","newValueExists","activePopupElements","ePopupParent","gridCore","getRootGui","positionPopupForMenu","sourceRect","parentRect","keepYWithinBounds","xRightPosition","xLeftPosition","positionPopupUnderMouseEvent","positionPopup","callPostProcessPopup","positionPopupUnderComponent","nudgeX","nudgeY","keepXWithinBounds","closeOnEsc","closedCallback","eBody","eWrapper","popupHidden","hidePopupOnKeyboardEvent","hidePopup","hidePopupOnMouseEvent","hidePopupOnTouchEvent","touchEvent","isEventFromCurrentPopup","isEventSameChainAsOriginalEvent","originalClick","mouseEventOrTouch","xMatch","screenX","yMatch","screenY","setScrollsVisible","bodyHorizontalScrollShowing","leftVerticalScrollShowing","rightVerticalScrollShowing","isLeftVerticalScrollShowing","isRightVerticalScrollShowing","linkedList_1","p1Tasks","LinkedList","p2Tasks","ticking","useAnimationFrame","verifyAnimationFrameOn","addP1Task","executeFrame","frameStart","gridPanelNeedsAFrame","noMaxMillis","stopTicking","requestFrame","isQueueEmpty","pna","Duplex","readable","allowHalfOpen","onend","_writableState","onEndNT","highWaterMark","_readableState","_destroy","stat","ARG","tryGet","callee","space","ltrim","rtrim","exporter","ALIAS","FORCE","consoleLogger","_console","_toConsumableArray","Logger","concreteLogger","setDebug","forward","lvl","debugOnly","moduleName","EventEmitter","observers","_cloned","makeString","getLastOfPath","cleanKey","canNotTraverseDeeper","setPath","_getLastOfPath","getPath","_getLastOfPath3","deepExtend","overwrite","_entityMap","_possibleConstructorReturn","_inherits","_defaults","_EventEmitter","ResourceStore","ns","defaultNS","addNamespaces","removeNamespaces","getResource","lng","keySeparator","addResource","silent","addResources","addResourceBundle","pack","removeResourceBundle","hasResourceBundle","getResourceBundle","compatibilityAPI","processors","addPostProcessor","translator","processor","Translator","services","changeLanguage","interpolation","extractFromKey","nsSeparator","namespaces","overloadTranslationOptionHandler","_extractFromKey","appendNamespaceToCIMode","resType","noObject","joinArrays","returnObjects","returnedObjectHandler","extendTranslation","usedDefault","usedKey","isValidLookup","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","saveMissing","missingKeyHandler","backendConnector","appendNamespaceToMissingKey","parseMissingKeyHandler","interpolator","defaultVariables","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessor","extracted","fallbackNS","needsPluralHandling","needsContextHandling","finalKey","finalKeys","pluralSuffix","pluralResolver","getSuffix","contextSeparator","possibleKey","returnNull","returnEmptyString","resourceStore","LanguageUtil","whitelist","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","cleanCode","isWhitelisted","nonExplicitWhitelist","fallbacks","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","createRules","rules","numbers","plurals","PluralResolver","addRule","getRule","needsPlural","noAbs","simplifyPluralSuffix","returnSuffix","compatibilityJSON","Interpolator","escapeValue","iOpts","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","maxReplaces","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","nestingRegexp","replaces","regexSafe","handleFormat","clonedOptions","handleHasOptions","optionsString","_slicedToArray","Connector","queueLoad","languages","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","_name$split","_name$split2","_getLastOfPath2","what","fcName","tried","allowMultiLoading","readMulti","_name$split3","_name$split4","bundle","loadOne","reload","_this6","_this7","_name$split5","_name$split6","fallbackValue","loadLngs","transformOptions","I18n","modules","isClone","_ret","initImmediate","createClassOnDemand","ClassOrObject","preload","pluralSeparator","_format","lu","LanguageUtils","cacheConnector","BackendConnector","CacheConnector","languageDetector","detection","storeApi","_store","loadResources","reloadResources","use","setLng","cacheUserLanguage","detect","getFixedT","fixedT","_translator","_translator2","setDefaultNamespace","loadNamespaces","loadLanguages","preloaded","newLngs","createInstance","cloneInstance","mergedOptions","membersToCopy","i18next","columnUtils_1","columnKeyCreator_1","defaultColumnTypes_1","BalancedColumnTreeBuilder","createForAutoGroups","autoGroupCols","gridBalancedTree","autoColBalancedTree","fakeTreeItem","createAutoGroupTreeItem","nextChild","findDept","autoGroup","createBalancedColumnGroups","abstractColDefs","primaryColumns","columnKeyCreator","ColumnKeyCreator","unbalancedTree","recursivelyCreateColumns","treeDept","findMaxDept","balancedTree","balanceColumnTree","columnUtils","currentDept","columnDept","newChildren","newChild","newColId","getUniqueKey","colGroupDefMerged","createMergedColGroupDef","paddedGroup","treeChildren","maxDeptThisLevel","newDept","abstractColDef","newGroupOrColumn","isColumnGroup","createColumnGroup","createColumn","checkForDeprecatedItems","colDefMerged","mergeColDefs","assignColumnTypes","typeKeys","allColumnTypes","DefaultColumnTypes","typeColDef","colDefNoType","headerGroup","suppressRowGroup","suppressAggregation","headerName","headerWrapperComp_1","AutoWidthCalculator","registerHeaderRootComp","headerRootComp","getPreferredWidthForColumn","eHeaderCell","getHeaderCellForColumn","eDummyContainer","eBodyContainer","getBodyContainer","putRowCellsIntoDummyContainer","cloneItemIntoDummy","dummyContainerWidth","comp","forEachHeaderElement","headerElement","HeaderWrapperComp","headerWrapperComp","eCellClone","eCloneParent","onMouseUpListener","onMouseMoveListener","onTouchEndListener","onTouchUp","onTouchMoveListener","onTouchMove","dragEndFunctions","dragSources","dragSourceAndListener","mouseDownListener","touchEnabled","touchStartListener","setNoSelectToBody","noSelect","includeTouch","mouseListener","touchListener","onTouchStart","currentDragParams","touchLastTime","touchStart","onCommonMove","skipMouseEvent","_alreadyProcessedByDragService","mouseEventLastTime","mouseStartEvent","isEventNearStartEvent","currentEvent","startEvent","requiredPixelDiff","getFirstActiveTouch","touchList","onUpCommon","eventOrTouch","event_2","themeNames","themeClass","HARD_CODED_SIZES","matGridSize","virtualItemHeight","freshGridSize","balhamGridSize","sassVariables","loadSassVariables","themeMatch","eGridDiv","gridPanel_1","componentAnnotations_1","resizeObserver_1","GridCore_1","TEMPLATE_ENTERPRISE","TEMPLATE_NORMAL","instantiate","toolPanelComp","statusBar","registerGridPanel","quickFilterUnregisterFn","$watch","quickFilterOnScope","addRtlSupport","finished","eRootWrapperBody","unsubscribeFromResize","observeResize","onGridSizeChanged","getPreferredWidth","getBodyContainerWidth","getPinnedLeftContainerWidth","getPinnedRightContainerWidth","isToolPanelShowing","ensureNodeVisible","comparator","doingVirtualPaging","comparatorIsAFunction","indexToSelect","GridPanel","formatter","pinnedRowValueFormatter","valueFormatter","refData","MouseEventService","gridInstanceId","MouseEventService_1","gridInstanceSequence","stampDomElementWithGridInstance","GRID_DOM_KEY","getRenderedCellForEvent","isEventFromThisGrid","getGridCellForEvent","selectedColumns","TouchListener","preventMouseClick","destroyFuncs","touching","startListener","moveListener","endListener","onTouchEnd","getActiveTouch","moved","touchStartCopy","touchesMatch","EVENT_LONG_TAP","EVENT_TAP","checkForDoubleTap","lastTapTime","DOUBLE_TAP_MILLIS","event_3","EVENT_DOUBLE_TAP","__WEBPACK_EXTERNAL_MODULE_0__","__WEBPACK_EXTERNAL_MODULE_3__","installedModules","__webpack_require__","moduleId","moment","undistributeHeight","els","getScrollbarWidths","leftRightWidth","bottomWidth","sanitizeScrollbarWidth","_isLeftRtlScrollbars","computeIsLeftRtlScrollbars","compensateScroll","rowEls","scrollbarWidths","uncompensateScroll","disableCursor","enableCursor","distributeHeight","availableHeight","shouldRedistribute","minOffset1","minOffset2","flexEls","flexOffsets","flexHeights","usedHeight","minOffset","naturalOffset","newHeight","matchCellWidths","maxInnerWidth","innerEl","subtractInnerElHeight","outerEl","both","getScrollParent","scrollParent","getOuterRect","getClientRect","getCssFloat","getContentRect","compareByFieldSpec","obj1","obj2","fieldSpec","obj1fallback","obj2fallback","flexibleCompare","computeGreatestUnit","unitsDesc","computeRangeAs","isInt","durationHasTime","dur","isPrimaryMouseButton","getEvX","getEvY","getEvIsTouch","preventSelection","allowSelection","intersectRects","rect1","rect2","constrainPoint","getRectCenter","diffPoints","point1","point2","parseFieldSpecs","specs","compareByFieldSpecs","fieldSpecs","cmp","dayIDs","diffDayTime","stripTime","diffDay","diffByUnit","computeDurationGreatestUnit","durationInput","divideRangeByDuration","divideDurationByDuration","dur1","dur2","months1","months2","multiplyDuration","isNativeDate","isTimeString","hasOwnPropMethod","htmlEscape","mergeProps","propObjs","complexProps","complexObjs","copyOwnProps","name_1","applyAll","removeMatching","testFunc","removeCnt","removeExact","exactVal","isArraysEqual","a0","firstDefined","stripHtmlEntities","cssToStr","cssProps","statements","attrsToStr","capitaliseFirstLetter","compareNumbers","moment_ext_1","UnzonedRange","startInput","endInput","isStart","isEnd","stripZone","startMs","endMs","invertRanges","constraintRange","dateRange","invertedRanges","compareUnzonedRanges","intersect","otherRange","newRange","intersectsWith","containsRange","innerRange","containsDate","constrainDate","getStart","getEnd","range1","range2","tslib_1","ParsableModelMixin_1","Class_1","EventDefParser_1","EventSource","uuid","rawInput","applyProps","normalizeId","timezone","removeEventDefsById","eventDefId","removeAllEventDefs","getPrimitive","parseEventDefs","rawEventDefs","eventDef","eventDefs","parseEventDef","calendarTransform","sourceTransform","eventDataTransform","applyManualStandardProps","rawProps","defineStandardProps","copyVerbatimStandardProps","mixInto","textColor","startEditable","durationEditable","rendering","overlap","allDayDefault","Mixin_1","ListenerMixin","listenTo","getListenerNamespace","stopListeningTo","listenerId","EventDef_1","EventInstance_1","EventDateProfile_1","SingleEventDef","buildInstances","buildInstance","dateProfile","isAllDay","rezone","superSuccess","miscProps","allDay","util_1","ambigDateOfMonthRegex","ambigTimeOrZoneRegex","newMomentProto","oldMomentProto","oldMomentFormat","formatStr","momentExt","makeMoment","parseAsUTC","isAmbigTime","isAmbigZone","ambigMatch","isSingleString","_ambigTime","_ambigZone","_fullCalendar","hasTime","weekCalc","_fullCalendar_weekCalc","dayHours","wasAmbigTime","hasZone","tzo","ComponentFootprint","unzonedRange","toLegacy","msToMoment","EmitterMixin","_prepareIntercept","one","intercept","triggerWith","hasHandlers","Interaction","_getView","Mixin","destClass","mixOver","UnzonedRange_1","EventDateProfile","buildUnzonedRange","forcedAllDay","forceEventDuration","getDefaultEventEnd","isStandardProp","HitDragListener","handleInteractionStart","subjectRect","origPoint","subjectEl","hitsNeeded","computeScrollBounds","origHit","queryHit","subjectCenter","coordAdjust","handleDragStart","hit","handleHitOver","handleDrag","isHitsEqual","handleHitOut","handleDragEnd","handleHitDone","isOrig","handleInteractionEnd","hitsNotNeeded","handleScrollEnd","isDragging","releaseHits","prepareHits","hit0","hit1","isHitPropsWithin","subHit","superHit","internalApiVersion","date_formatting_1","formatRange","queryMostGranularFormatUnit","locale_1","getMomentLocaleData","populateInstanceComputableOptions","util_2","eventDefsToEventInstances","eventFootprintToComponentFootprint","eventInstanceToEventRange","eventInstanceToUnzonedRange","eventRangeToEventFootprint","EmitterMixin_1","ListenerMixin_1","Model_1","Model","Constraints_1","Constraints","DateProfileGenerator_1","DateProfileGenerator","ComponentFootprint_1","BusinessHourGenerator_1","BusinessHourGenerator","EventPeriod_1","EventPeriod","EventManager_1","EventManager","EventDef","EventDefMutation_1","EventDefMutation","EventDefParser","EventInstance","EventRange_1","EventRange","RecurringEventDef_1","RecurringEventDef","SingleEventDef_1","EventDefDateMutation_1","EventDefDateMutation","EventSourceParser_1","EventSourceParser","EventSource_1","ThemeRegistry_1","defineThemeSystem","getThemeSystemClass","EventInstanceGroup_1","EventInstanceGroup","ArrayEventSource_1","ArrayEventSource","FuncEventSource_1","FuncEventSource","JsonFeedEventSource_1","JsonFeedEventSource","EventFootprint_1","EventFootprint","Class","CoordCache_1","CoordCache","Iterator_1","Iterator","DragListener_1","DragListener","HitDragListener_1","MouseFollower_1","MouseFollower","ParsableModelMixin","Popover_1","Popover","Promise_1","TaskQueue_1","RenderQueue_1","RenderQueue","Scroller_1","Scroller","Theme_1","Theme","Component_1","DateComponent_1","DateComponent","InteractiveDateComponent_1","InteractiveDateComponent","Calendar_1","Calendar","View_1","View","ViewRegistry_1","defineView","getViewConfig","DayTableMixin_1","DayTableMixin","BusinessHourRenderer_1","BusinessHourRenderer","EventRenderer_1","EventRenderer","FillRenderer_1","FillRenderer","HelperRenderer_1","HelperRenderer","ExternalDropping_1","ExternalDropping","EventResizing_1","EventResizing","EventPointing_1","EventPointing","EventDragging_1","EventDragging","DateSelecting_1","DateSelecting","DateClicking_1","DateClicking","Interaction_1","StandardInteractionsMixin_1","StandardInteractionsMixin","AgendaView_1","AgendaView","TimeGrid_1","TimeGrid","TimeGridEventRenderer_1","TimeGridEventRenderer","TimeGridFillRenderer_1","TimeGridFillRenderer","TimeGridHelperRenderer_1","TimeGridHelperRenderer","DayGrid_1","DayGrid","DayGridEventRenderer_1","DayGridEventRenderer","DayGridFillRenderer_1","DayGridFillRenderer","DayGridHelperRenderer_1","DayGridHelperRenderer","BasicView_1","BasicView","BasicViewDateProfileGenerator_1","BasicViewDateProfileGenerator","MonthView_1","MonthView","MonthViewDateProfileGenerator_1","MonthViewDateProfileGenerator","ListView_1","ListView","ListEventPointing_1","ListEventPointing","ListEventRenderer_1","ListEventRenderer","eventInstances","eventInstance","eventRange","eventFootprint","componentFootprint","getAllEventRanges","sliceNormalRenderRanges","sliceRenderRanges","isInverse","sliceInverseRenderRanges","slicedRange","slicedEventRanges","unzonedRanges","ownerDef","getEventDef","hasInverseRendering","explicitEventDef","PromiseStub","deferred","Deferred","attachImmediatelyResolvingThen","attachImmediatelyRejectingThen","onResolve","optionsManager","processIconOverride","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","isPlainObject","iconClasses","applyIconOverridePrefix","iconOverridePrefix","getClass","classes","getIconClass","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","exportHooks","touchMouseIgnoreWait","globalEmitter","neededCount","GlobalEmitter","isTouching","mouseIgnoreDepth","needed","unneeded","touchstart","handleTouchStart","touchcancel","handleTouchCancel","touchend","handleTouchEnd","mousedown","handleMouseDown","mousemove","handleMouseMove","mouseup","handleMouseUp","handleClick","selectstart","handleSelectStart","contextmenu","handleContextMenu","handleTouchMoveProxy","handleTouchMove","handleScrollProxy","handleScroll","stopTouch","shouldIgnoreMouse","skipMouseIgnore","startTouchMouseIgnore","viewHash","views","viewName","viewConfig","options_1","localeOptionHash","dpComputableOptions","dpOptions","today","monthYearFormat","momComputableOptions","dayOfMonthFormat","momOptions","fcOptions","mediumTimeFormat","smallTimeFormat","extraSmallTimeFormat","hourFormat","noMeridiemTimeFormat","instanceComputableOptions","smallDayDateFormat","weekFormat","weekNumberTitle","smallWeekFormat","localeCode","newFcOptions","mergeOptions","globalDefaults","dpLocaleCode","jqDatePicker","englishDefaults","titleRangeSeparator","defaultTimedEventDuration","defaultAllDayEventDuration","nextDayThreshold","columnHeader","weekends","weekNumberCalculation","scrollTime","showNonCurrentDates","lazyFetching","startParam","endParam","timezoneParam","prevYear","nextYear","allDayText","agendaEventMinHeight","dragOpacity","dragRevertDuration","dragScroll","unselectAuto","dropAccept","eventOrder","eventLimit","eventLimitClick","dayPopoverFormat","handleWindowResize","windowResizeDelay","longPressDelay","rtlDefaults","buttonIcons","themeButtonIcons","complexOptions","optionObjs","getEventLegacy","members","SubClass","eventInput","generateId","rawId","getRendering","hasBgRendering","getConstraint","getOverlap","isStartExplicitlyEditable","isDurationExplicitlyEditable","isExplicitlyEditable","_id","applyMiscProps","sourceClasses","registerClass","EventSourceClass","createFromRawProps","largeUnit","dateMutation","defMutation","dateProps","standardProps","verbatimStandardProps","createFromDiff","mutateSingle","origDateProfile","buildNewDateProfile","setDateMutation","clearEnd","forceTimed","forceAllDay","dateProfile0","dateProfile1","dateDelta","endDelta","mutation","subtractDates","date1","date0","setDateDelta","setEndDelta","eventDateProfile","shouldRezone","startDelta","applyTimezone","setStartDelta","overflowX","overflowY","renderEl","applyOverflow","scrollEl","lockOverflow","getScrollTop","setScrollTop","getClientWidth","getClientHeight","GlobalEmitter_1","segSelector","dateSelectingClass","dateClicking","dateClickingClass","dateSelecting","eventPointingClass","eventPointing","eventDraggingClass","eventDragging","eventResizingClass","eventResizing","externalDroppingClass","externalDropping","bindToEl","bindAllSegHandlersToEl","endInteractions","executeEventUnrender","bindGlobalHandlers","bindToDocument","unbindGlobalHandlers","unbindFromDocument","bindDateHandlerToEl","eventInteraction","bindSegHandlerToEl","segEl","seg","shouldIgnoreEventPointing","shouldIgnoreTouch","selectedEvent","isResizing","canStartSelection","canStartResize","isEventDefDraggable","footprint","isEventDefResizable","canStartDrag","isEventDefSelected","interaction","isEventDefStartEditable","isEventDefGenerallyEditable","isEventDefResizableFromStart","isEventDefResizableFromEnd","diffDates","isEventInstanceGroupAllowed","eventInstanceGroup","eventFootprints","eventRangesToEventFootprints","validUnzonedRange","constraints","isExternalInstanceGroupAllowed","isSelectionFootprintAllowed","viewSpec","batchRenderDepth","initRenderQueue","initHiddenDays","dateProfileGenerator","dateProfileGeneratorClass","bindBaseRenderHandlers","eventOrderSpecs","renderQueue","onRenderQueueStart","onRenderQueueStop","startBatchRender","stopBatchRender","freezeContentHeight","addScroll","queryScroll","updateViewSize","popScroll","thawContentHeight","requestRender","actionType","whenSizeUpdated","isRunning","computeTitle","currentRangeUnit","currentUnzonedRange","activeUnzonedRange","isRangeAllDay","computeTitleFormat","currentDateProfile","newDateProfile","unsetDate","unset","fetchInitialEvents","usesMinMaxTime","requestEvents","bindEventChanges","resetEvents","unbindEventChanges","setEvents","eventsPayload","unsetEvents","requestDateRender","executeDateRender","requestDateUnrender","executeDateUnrender","isDateInit","startNowIndicator","unselect","stopNowIndicator","triggerViewRender","triggerViewDestroy","publiclyTrigger","requestEventsRender","executeEventRender","triggerAfterEventsRendered","requestEventsUnrender","triggerBeforeEventsDestroyed","requestBusinessHoursRender","businessHourGenerator","renderBusinessHours","requestBusinessHoursUnrender","unrenderBusinessHours","processUnselect","handleDocumentMousedown","getNowIndicatorUnit","initialNowDate","getNow","initialNowQueriedMs","nowIndicatorTimeoutID","nowIndicatorIntervalID","updateNowIndicator","isDatesRendered","unrenderNowIndicator","renderNowIndicator","isNowIndicatorRendered","totalHeight","isAuto","isResize","queuedScroll","applyQueuedScroll","applyScroll","queryDateScroll","computeInitialDateScroll","applyDateScroll","reportEventDrop","eventMutation","undoFunc","mutateEventsWithId","triggerEventDrop","reportExternalDrop","singleEventDef","isEvent","isSticky","addEventDef","triggerExternalDrop","reportEventResize","resizeDelta","triggerEventResize","renderSelectionFootprint","reportSelection","triggerSelect","footprintToDateProfile","unrenderSelection","selectEventInstance","selectedEventInstance","unselectEventInstance","getEventSegs","processRangeUnselect","processEventUnselect","triggerBaseRendered","triggerBaseUnrendered","triggerDayClick","dayEl","isDateInOtherMonth","getUnzonedRangeOption","parseUnzonedRange","hiddenDays","isHiddenDayHash","dayCnt","trimHiddenDays","inputUnzonedRange","skipHiddenDays","isHiddenDay","inc","isExclusive","watch","initialEvents","intervalStart","intervalEnd","fillRenderer","rangeUpdated","displayEventTime","displayEventEnd","eventTimeFormat","computeEventTimeFormat","computeDisplayEventTime","computeDisplayEventEnd","instanceGroup","eventRanges","_getDateProfile","bgRanges","fgRanges","renderBgRanges","renderFgRanges","unrender","unrenderBgRanges","unrenderFgRanges","eventFootprintsToSegs","renderFgSegEls","renderFgSegs","fgSegs","unrenderFgSegs","renderBgSegs","bgSegs","unrenderBgSegs","getSegs","renderSegs","getClasses","getBgClasses","getCss","getBgColor","filterEl","filterEventRenderEl","disableResizing","hasEventRenderHandlers","hasPublicHandlers","renderedSegs","beforeFgSegHtml","fgSegHtml","getSegClasses","isDraggable","getTimeText","displayEnd","_getTimeText","getStylingObjs","eventClassName","getSkinCss","getBorderColor","getTextColor","eventBackgroundColor","eventColor","eventBorderColor","eventTextColor","getFallbackStylingObjs","sortEventSegs","compareEventSegs","seg1","seg2","cf1","cf2","englishMoment","MAYBE_MARKER","MAYBE_REGEXP","specialTokens","largeTokenMap","fakeFormatString","processMaybeMarkers","renderFakeFormatStringParts","renderFakeFormatString","getParsedFormatString","date2","parsedFormat","leftI","rightI","middleI","sameUnits","unzonedDate1","unzonedDate2","renderedParts1","renderedParts2","leftStr","rightStr","middleStr1","middleStr2","middleStr","renderParsedFormat","parsedFormatStrCache","chunkFormatString","buildFakeFormatString","buildSameUnits","parseFormatString","chunker","splitStringLiteral","maybe","SPECIAL_TOKEN_MARKER","tokenInfo","fakePart","fakeParts","m0","best","_watchers","_props","applyGlobalWatchers","constructed","_globalWatchArgs","newProps","setProps","oldProps","changeset","changedProps","changedCnt","depList","startFunc","stopFunc","unwatch","_watchDeps","watcher","teardown","queuedChangeCnt","depCnt","satisfyCnt","bindTuples","isCallingStop","depName","isOptional","onDepChange","flash","propDefs","standardPropMap","manualProps","endTime","zonedDayStart","instanceStart","instanceEnd","unzonedDate","unzonedEnd","dowHash","setDow","dowNumbers","msToUtcMoment","buildPrev","prevDate","dateIncrement","buildNext","nextDate","forceToValid","currentInfo","renderUnzonedRange","isDateAllDay","buildValidRange","buildCurrentRangeInfo","buildRenderRange","adjustActiveRange","buildDateIncrement","dayCount","durationUnit","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","dateIncrementInput","dateIncrementDuration","computeRes","customAlignment","runningCount","visibleUnzonedRange","setRawEventDefs","currentTimezone","StandardTheme_1","JqueryUiTheme_1","themeClassHash","themeName","themeSetting","isHorizontal","isVertical","forcedOffsetParentEl","offsetParentEl","queryBoundingRect","buildElHorizontals","buildElVerticals","lefts","rights","tops","bottoms","ensureBuilt","getHorizontalIndex","getVerticalIndex","getLeftOffset","leftIndex","getLeftPosition","getRightOffset","getRightPosition","getTopOffset","topIndex","getTopPosition","getBottomOffset","getBottomPosition","scrollParentEl","isPointInBounds","isLeftInBounds","isTopInBounds","isInteracting","isDistanceSurpassed","isDelayEnded","isGeneric","shouldCancelTouchScroll","scrollAlwaysKills","isAutoScroll","scrollSensitivity","scrollSpeed","scrollIntervalMs","startInteraction","extraOptions","bindHandlers","initAutoScroll","startDelay","handleDistanceSurpassed","endInteraction","endDrag","delayTimeoutId","destroyAutoScroll","unbindHandlers","handleMove","dragstop","touchmove","handleTouchScroll","startDrag","updateAutoScroll","initialEv","handleDelayEnd","handleDebouncedScroll","endAutoScroll","scrollBounds","topCloseness","bottomCloseness","leftCloseness","rightCloseness","sensitivity","topVel","leftVel","setScrollVel","scrollTopVel","scrollLeftVel","constrainScrollVel","scrollIntervalId","scrollIntervalFunc","updateDayTable","daysPerRow","rowCnt","dayIndices","dayDates","breakOnWeeks","updateDayTableCols","colCnt","computeColCnt","colHeadFormat","computeColHeadFormat","getCellDate","getCellDayIndex","getCellRange","getColDayIndex","getDateDayIndex","dayOffset","sliceRangeByRow","rowFirst","rowLast","segFirst","segLast","normalRange","computeDayRange","rangeFirst","rangeLast","firstRowDayIndex","lastRowDayIndex","sliceRangeByDay","renderHeadHtml","renderHeadTrHtml","renderHeadIntroHtml","renderIntroHtml","renderHeadDateCellsHtml","htmls","renderHeadDateCellHtml","otherAttrs","innerHtml","isDateValid","getDayClasses","buildGotoAnchorHtml","forceOff","renderBgTrHtml","renderBgIntroHtml","renderBgCellsHtml","renderBgCellHtml","bookendCells","trEl","introHtml","buildEventInstanceGroup","hasAllDayBusinessHours","renderEventFootprints","fillSegTag","elsByFill","renderFootprint","componentFootprintToSegs","buildSegEls","attachSegEls","reportEls","buildSegHtml","eventRenderer","renderComponentFootprint","fabricateEventFootprint","renderEventDraggingFootprints","sourceSeg","renderEventResizingFootprints","extraClassNames","helperEls","dummyInstance","dummyEvent","handleMouseover","handleMouseout","mousedOverSeg","cellWeekNumbersVisible","bottomCoordPadding","isRigid","leftCol","rightCol","renderDates","renderGrid","unrenderDates","removeSegPopover","headContainerEl","renderDayRowHtml","cellEls","rowCoordCache","colCoordCache","getCellEl","getIsNumbersVisible","renderNumberTrHtml","getIsDayNumbersVisible","renderNumberIntroHtml","renderNumberCellsHtml","renderNumberCellHtml","weekCalcFirstDoW","isDayNumberVisible","getCellHit","getHitFootprint","getHitEl","getOwnEventSegs","popoverSegs","renderDrag","renderHighlight","helperRenderer","unrenderDrag","unrenderHighlight","renderEventResize","unrenderEventResize","segPopover","limitRows","levelLimit","rowLevelLimit","rowStructs","unlimitRow","computeRowLevelLimit","limitRow","trHeight","trEls","tbodyEl","iterInnerHeights","childNode","levelSegs","cellMatrix","limitedNodes","segsBelow","totalSegsBelow","colSegsBelow","td","segMoreNodes","moreTd","moreWrap","moreLink","rowStruct","moreNodes","emptyCellsUntil","endCol","getCellSegs","renderMoreLink","segLevels","moreEls","limitedEls","hiddenSegs","getMoreLinkText","clickOption","moreEl","allSegs","reslicedAllSegs","resliceDaySegs","reslicedHiddenSegs","showSegPopover","zoomTo","topEl","renderSegPopoverContent","parentEl","autoHide","viewportConstrain","triggerBeforeEventSegsDestroyed","triggerAfterEventSegsRendered","segContainer","dayDate","dayStart","dayEnd","dayRange","newSegs","startLevel","segMatrix","eventRendererClass","businessHourRendererClass","helperRendererClass","fillRendererClass","dayGrid","instantiateDayGrid","hasRigidRows","colWeekNumbersVisible","scroller","subclass","weekNumberStyleAttr","weekStart","dayGridClass","renderSkeleton","dayGridContainerEl","dayGridEl","renderSkeletonHtml","unrenderSkeleton","weekNumberWidth","scrollerHeight","headRowEl","computeScrollerHeight","setGridHeight","peerEventRanges","getPeerEventInstances","peerEventFootprints","constraintVal","overlapVal","eventAllowFunc","isFootprintAllowed","getEventInstancesWithoutId","selectAllowFunc","getEventInstances","subjectEventInstance","constraintFootprints","overlapEventFootprints","constraintValToFootprints","isFootprintWithinConstraints","collectOverlapEventFootprints","overlapFunc","isOverlapsAllowedByFunc","overlapEventInstance","subjectLegacyInstance","isOverlapEventInstancesAllowed","footprintContainsFootprint","buildCurrentBusinessFootprints","parseEventDefToInstances","eventInstancesToFootprints","parseFootprints","getEventInstancesWithId","targetFootprint","footprintsIntersect","currentPeriod","eventRangeToEventFootprints","outerFootprint","innerFootprint","footprint0","footprint1","BUSINESS_HOUR_EVENT_DEFAULTS","rawComplexDef","buildEventDefs","rawDefs","requireDow","buildEventDef","rawDef","fullRawDef","pendingCnt","freezeDepth","stuntedReleaseCnt","releaseCnt","requestsByUid","eventDefsByUid","eventDefsById","eventInstanceGroupsById","isWithinRange","requestSources","requestSource","thaw","addEventDefs","tryRelease","purgeSource","removeEventDef","purgeAllSources","completedCnt","getEventDefByUid","eventDefUid","getEventDefsById","addEventInstance","isEmptyObject","removeEventInstancesForDef","matchingInstances","currentEventInstance","release","whenReleased","stickySource","otherSources","setPeriod","addSource","removeSource","doomedSource","removeAllSources","refetchSource","refetchAllSources","getSources","multiQuerySources","matchInputs","matchingSources","querySources","matchInput","getSourceById","source1","eventPeriod","unbindPeriod","bindPeriod","eventDefMutation","undoFuncs","buildMutatedEventInstanceGroup","defCopy","allInstances","StandardTheme","widget","widgetHeader","widgetContent","buttonGroup","cornerLeft","cornerRight","stateDefault","stateActive","stateDisabled","stateHover","stateDown","popoverHeader","popoverContent","headerRow","dayRow","listView","JqueryUiTheme","pushLoading","popLoading","ajaxSettings","onSuccess","onError","requestParams","buildRequestParams","ajax","AJAX_DEFAULTS","callbackRes","statusText","errorThrown","customRequestParams","proxyCall","sourceEl","isFollowing","isHidden","isAnimating","topDelta","leftDelta","updatePosition","shouldRevert","revertDuration","top0","left0","getEl","additionalClass","sourceOffset","documentMousedown","viewportTop","viewportLeft","viewportOffset","windowEl","viewportEl","isPaused","tryStart","getIsIdle","canRunNext","runRemaining","runTask","waitsByNamespace","taskFunc","waitMs","waitNamespace","delayWait","clearWait","compoundTask","startWait","spawnWait","waitId","newTask","shouldAppend","hitsNeededDepth","childrenByUid","businessHourRenderer","callChildren","_getCalendar","convertEventsPayloadToLegacyArray","getBusinessHourSegs","getOwnBusinessHourSegs","iterChildren","showEventsWithId","hideEventsWithId","renderedHelper","getSafeHitFootprint","eventFootprintToSegs","gotoOptions","finalOptions","getAllDayHtml","noThemeHighlight","currentRangeAs","startDay","endTimeMS","endDay","isMultiDayRange","legacyEvents","Toolbar_1","OptionsManager_1","ViewSpecManager_1","overrides","loadingLevel","ignoreUpdateViewSize","freezeContentHeightDepth","viewsByType","viewSpecManager","initMomentInternals","initCurrentDate","initEventManager","getView","triggerInfo","optHandler","newOptionHash","instantiateView","viewType","spec","getViewSpec","isValidViewType","changeView","dateOrRange","recordOverrides","visibleRange","renderView","newDate","getUnitViewSpec","defaultDateInput","prevInfo","nextInfo","gotoDate","zonedDateInput","incrementDate","contentEl","elementVisible","calcSize","initialRender","customAction","themeSystem","widgetClass","businessHours","initToolbars","renderHeader","renderFooter","windowResizeProxy","windowResize","clearView","toolbarsManager","bindViewHandlers","setToolbarsTitle","updateToolbarButtons","unbindViewHandlers","newView","oldView","currentView","reinitView","getSuggestedViewHeight","suggestedViewHeight","isHeightAuto","_calcSize","contentHeightInput","heightInput","queryToolbarsHeight","forceFreezeContentHeight","computeHeaderOptions","computeFooterOptions","extraClasses","layout","setToolbarOptions","todayInfo","zonedStartInput","zonedEndInput","buildSelectFootprint","localizeMoment","getIsAmbigTimezone","adjustedZonedDate","zonedDate","timeAdjust","ignoreEnd","humanizeDuration","rangeInput","rawSources","singleRawSource","rawSource","getEventEnd","zonedStart","rerenderEvents","refetchEvents","renderEvents","eventInputs","renderEvent","removeEvents","legacyQuery","legacyInstances","idMap","filterLegacyEventInstances","clientEvents","legacyEventInstances","updateEvents","eventPropsArray","updateEvent","eventProps","getEventSources","getEventSourceById","addEventSource","sourceInput","removeEventSources","sourceMultiQuery","removeEventSource","sourceQuery","refetchEventSources","legacyEventInstance","dragListener","dragstart","sortstart","accept","listenToExternalDrag","stick","dataAttrPrefix","getDraggedElMeta","interactionStart","hitOver","mutatedEventInstanceGroup","isAllowed","hitFootprint","computeExternalDrop","hitOut","hitDone","interactionEnd","buildDragListener","resizeMutation","dragStart","segResizeStart","origHitFootprint","computeEventStartResizeMutation","computeEventEndResizeMutation","segResizeStop","startFootprint","endFootprint","origEventFootprint","origRange","getSelectionDelay","handleMousedown","buildSelectListener","mouseFollower","segDragStart","origFootprint","computeEventDropMutation","segDragStop","computeEventDateMutation","getDelay","selectionFootprint","computeSelection","wholeFootprint","computeSelectionFootprint","dayClickHit","agendaTimeGridMethods","agendaDayGridMethods","timeGrid","instantiateTimeGrid","timeGridClass","timeGridWrapEl","timeGridEl","axisStyleAttr","axisWidth","colEls","noScrollRowEls","bottomRuleEl","getTotalSlatHeight","computeTimeTop","dayEventsPayload","timedEventsPayload","groupEventFootprintsByAllDay","timed","weekText","AGENDA_STOCK_SUB_DURATIONS","processOptions","sliceRangeByTimes","segRange","dayRanges","slotDuration","snapDuration","snapsPerSlot","labelFormat","labelInterval","computeLabelInterval","slotsPerLabel","renderSlats","renderColumns","unrenderColumns","slatContainerEl","renderSlatRowHtml","slatEls","slatCoordCache","slotDate","isLabeled","axisHtml","slotTime","slotIterator","renderContentSkeleton","unrenderContentSkeleton","skeletonEl","cellHtml","contentSkeletonEl","colContainerEls","helperContainerEls","fgContainerEls","bgContainerEls","highlightContainerEls","businessContainerEls","groupSegsByCol","segsByCol","attachSegsByCol","containerEls","computeDateTop","nowIndicatorEls","updateSegVerticals","businessSegs","startOfDayDate","slatIndex","slatRemainder","slatCoverage","computeSegVerticals","assignSegVerticals","eventMinHeight","generateSegVerticalCss","colIndex","slatTop","slatHeight","localSnapIndex","snapTop","snapBottom","computeSnapTime","snapIndex","renderFgSegsIntoContainers","updateFgSegCoords","timeText","fullTimeText","startTimeText","isResizableFromStart","isResizableFromEnd","skinCss","zonedEnd","computeFgSegHorizontals","assignFgSegHorizontals","levels","level0","computeSlotSegCollisions","buildSlotSegLevels","forwardSegs","computeForwardSlotSegs","computeSlotSegPressures","computeFgSegForwardBack","seriesBackwardPressure","seriesBackwardCoord","forwardCoord","sortForwardSegs","backwardCoord","compareForwardSegs","forwardPressure","generateFgSegHorizontalCss","shouldOverlap","forwardSeg","otherSegs","helperNodes","renderSegRows","segRows","groupSegRows","renderSegRow","rowSegs","buildSegLevels","levelCnt","tbody","loneCellMatrix","isDaySegCollision","compareDaySegCols","titleHtml","timeHtml","otherSeg","skeletonTopEl","skeletonTop","rowEl","renderFillRow","startCol","viewEnd","renderEmptyMessage","renderSegList","daySegs","segsByDay","groupSegsByDay","tableEl","dayHeaderHtml","mainFormat","isDefaultPrevented","fullCalendar","singleRes","Toolbar","toolbarOptions","viewsWithButtons","newToolbarOptions","sections","renderSection","sectionEl","buttonStr","calendarCustomButtons","calendarButtonTextOverrides","calendarButtonText","buttonGroupStr","groupEl","groupChildren","isOnlyButtons","buttonClick","buttonIcon","buttonInnerHtml","buttonClasses","buttonEl","buttonAriaAttr","buttonTextOverride","buttonTextDefault","hover","updateTitle","activateButton","deactivateButton","disableButton","enableButton","getViewsWithButtons","OptionsManager","dynamicOverrides","compute","optionName","optionCnt","localeDefaults","dirDefaults","rawOptions","clearCache","ViewSpecManager","viewSpecCache","buildViewSpec","viewTypes","singleUnit","requestedViewType","viewOverrides","specChain","defaultsChain","overridesChain","buildViewSpecOptions","buildViewSpecButtonText","queryButtonText","buttonTextKey","Bootstrap3Theme_1","Bootstrap4Theme_1","Bootstrap3Theme","tableGrid","tableList","tableListHeading","popover","Bootstrap4Theme","fixedWeekCount","allDaySlot","slotEventOverlap","listDayFormat","listDayAltFormat","clearNode","findParent","createNumberInput","inputClassName","numInput","arrowUp","arrowDown","getEventTarget","objectToString","hasblobSlice","webkitSlice","mozSlice","blobSlice","metaDataParsers","jpeg","parseMetaData","maxMetaDataSize","markerBytes","markerLength","parsers","maxOffset","headLength","disableMetaDataParsers","disableImageHead","imageHead","replaceHead","originalTransform","copyright","aggFuncsMap","AggFuncService_1","initialiseWithDefaultAggregations","addAggFuncs","AGG_SUM","aggSum","AGG_FIRST","aggFirst","AGG_LAST","aggLast","AGG_MIN","aggMin","AGG_MAX","aggMax","AGG_COUNT","aggCount","AGG_AVG","aggAvg","getDefaultAggFunc","getFuncNames","sumInKeysList","sumInFuncs","addAggFunc","userAllowedFuncs","allowedAggFuncs","currentItem","itemIsGroupResult","paths","gridSerializer_1","downloader_1","LINE_SEPARATOR","CsvSerializingSession","processCellCallback","processHeaderCallback","suppressQuotes","columnSeparator","lineOpened","columnsToExport","addCustomHeader","customHeader","addCustomFooter","customFooter","onNewHeaderGroupingRow","onColumn","onNewHeaderGroupingRowColumn","putInQuotes","onNewHeaderRow","onNewHeaderRowColumn","extractHeaderValue","onNewBodyRow","onNewBodyRowColumn","extractRowCellValue","EXPORT_TYPE_CSV","stringValue","BaseGridSerializingSession","BaseCreator","export","userParams","isExportSuppressed","getMergedParamsAndData","mergedParams","getDefaultFileName","getDefaultFileExtension","downloader","getMimeType","mergeDefaultParams","gridSerializer","serialize","createSerializingSession","baseParams","CsvCreator","exportDataAsCsv","getDataAsCsv","Downloader","GridSerializer","DisplayedGroupCreator","createDisplayedGroups","sortedVisibleColumns","groupInstanceIdCreator","oldDisplayedGroups","previousRealPath","previousOriginalPath","oldColumnsMapped","mapOldGroupsById","currentColumn","currentOriginalPath","currentRealPath","firstColumn","setupParentsIntoColumns","getInstanceIdForKey","displayedGroups","recursive","columnsOrGroups","columnOrGroup","columnsOrGroup","templateCache","waitingCallbacks","templateFromCache","callbackList","client","handleHttpResult","httpResult","responseText","that_1","LoadingCellRenderer","eLoadingIcon","eLoadingText","parentScope","animateIn","eAllRowContainers","columnRefreshPending","cellComps","createSecondPassFuncs","removeFirstPassFuncs","removeSecondPassFuncs","rowIsEven","paginationPage","setAnimateFlags","rowFocused","createChildScopeOrNull","setupRowContainers","addListeners","slideRowIn","onTopChanged","fadeRowIn","eRow","createTemplate","extraCssClass","rowClasses","getInitialRowClasses","rowIdSanitised","userRowStyles","preProcessStylesFromGridOptions","businessKey","getRowBusinessKey","businessKeySanitised","rowTopStyle","getInitialRowTopStyle","executeProcessRowPostCreateFunc","eBodyRow","ePinnedLeftRow","ePinnedRightRow","roundRowTopToBounds","afterPaginationPixels","applyPaginationOffset","afterScalingPixels","getRealPixelPosition","lazyCreateCells","cellTemplatesAndComps","createCells","callAfterRowAttachedOnCells","createRowContainer","rowTemplate","appendRowTemplate","getRowElement","afterRowAttached","newChildScope_1","isFullWidthCellFunc","isDetailCell","isGroupSpanningRow","createFullWidthRows","LOADING_CELL_RENDERER","LOADING_CELL_RENDERER_COMP_NAME","DETAIL_CELL_RENDERER","DETAIL_CELL_RENDERER_COMP_NAME","FULL_WIDTH_CELL_RENDERER","GROUP_ROW_RENDERER","GROUP_ROW_RENDERER_COMP_NAME","setupNormalRowContainers","centerCols","getAllDisplayedCenterVirtualColumnsForRow","leftCols","getDisplayedLeftColumnsForRow","rightCols","getDisplayedRightColumnsForRow","fullWidthRow","fullWidthRowEmbedded","createFullWidthRowContainer","eFullWidthRowBody","fullWidthRowComponentBody","PINNED_LEFT","eFullWidthRowLeft","fullWidthRowComponentLeft","PINNED_RIGHT","eFullWidthRowRight","fullWidthRowComponentRight","eFullWidthRow","fullWidthRowComponent","oldRowTopExists","editingRow","onRowHeightChanged","onExpandedChanged","onRowNodeDataChanged","onRowNodeCellChanged","onRowNodeDraggingChanged","onVirtualColumnsChanged","onColumnResized","onCellFocusChanged","onPaginationChanged","onGridColumnsChanged","allRenderedCellIds","removeRenderedCells","postProcessCss","postProcessStylesFromGridOptions","postProcessClassesFromGridOptions","postProcessRowClassRules","postProcessRowDragging","expanded_1","destroyFullWidthComponents","getContainerForCell","pinnedType","refreshCellsInAnimationFrame","insertCellsIntoContainer","colIdsToRemove","isCellEligibleToBeRemoved","displayedColumns","getAllDisplayedColumns","REMOVE_CELL","isCellInWrongRow","focused","ensureCellInCorrectContainer","eOldContainer","rowWeWant","cellTemplates","newCellComps","oldCell","createNewCell","eRowContainer","gow","DOM_DATA_KEY_RENDERED_ROW","newCellComp","cellTemplate","onRowDblClick","onRowClick","createRowEvent","createRowEventWithSource","agEvent","multiSelectKeyPressed","shiftKeyPressed","multiSelectOnClick","rowDeselectionWithCtrl","cellRendererName","eRowCallback","cellRendererCallback","createFullWidthParams","gui","processClassesFromGridOptions","preProcessRowClassRules","processRowClassRules","setEditingRow","sourceRenderedCell","classStr","rowClassFunc","rowStyles","processStylesFromGridOptions","rowStyleFuncResult","rowStyleFunc","removeRowElement","addHoverFunctionality","minPixel","maxPixel","heightPx_1","destroyContainingCells","topPx","topPx_1","updateRowIndexes","rowIndexStr","rowIsEvenChanged","getBodyRowElement","getPinnedLeftRowElement","getPinnedRightRowElement","getFullWidthRowElement","FilterConditionType","DEFAULT_TRANSLATIONS","loadingOoo","notEqual","lessThan","greaterThan","inRange","lessThanOrEqual","greaterThanOrEqual","filterOoo","notContains","searchOoo","applyFilter","clearFilter","filterParams","defaultOption","filterOptions","customInit","filterCondition","clearActive","clearButton","applyActive","applyButton","newRowsActionKeep","newRowsAction","generateTemplate","eApplyButton","eClearButton","onClearButton","anyButtonVisible","eButtonsPanel","initialiseFilterBodyUi","MAIN","refreshFilterBodyUi","modelFromFloatingFilter","resetState","isFilterConditionActive","CONDITION","condition1","condition2","operator","conditionValue","getNullableModel","asCombinedFilter","redrawCondition","doOnFilterChanged","applyNow","requiresApplyAndIsApplying","shouldFilter","eFilterBodyWrapper","acceptsBooleanLogic","eConditionWrapper","createConditionTemplate","wireQuerySelectors","refreshOperatorUi","andButton","orButton","onFloatingFilterChanged","casted","combinedFilter","generateFilterHeader","mainConditionBody","createConditionBody","wrapCondition","mainCondition","bodyTemplate","toTranslate","getDebounceMs","debounceMs","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","IN_RANGE","CONTAINS","NOT_CONTAINS","QuerySelector","ComparableBaseFilter","mainFilterResult","individualFilterPasses","eTypeConditionSelector","auxFilterResult","suppressAndOrCondition","getDefaultType","defaultFilterTypes","getApplicableFilterTypes","restrictedFilterTypes","optionsHtml","filterType","readOnly","setFilterType","eTypeSelector","onFilterTypeChanged","rawFilterValues","filterValues","filterValueArray","ScalarBaseFilter","nullComparator","filterValue","gridValue","nullValue","translateNull","actualComparator","reducedType","DEFAULT_NULL_COMPARATOR","doIndividualFilterPasses","compareResult","compareToResult","inRangeInclusive","SetLeftFeature","setColsSpanning","getColumnOrGroup","setLeftFirstTime","suppressMoveAnimation","oldLeftExists","columnAnimationService","animateInLeft","actualLeft","executeNextFuncs","executeLaterFuncs","animationThreadCount","ensureAnimationCssClassPresent","executeLaterVMTurn","animationThreadCountCopy","setColumnMovingCss","nowFuncs","waitFuncs","popupEditorWrapper_1","addCellEditor","popupEditorWrapper","PopupEditorWrapper","animateSlideCellRenderer_1","animateShowChangeCellRenderer_1","groupCellRenderer_1","cellRendererMap","CellRendererFactory_1","ANIMATE_SLIDE","AnimateSlideCellRenderer","ANIMATE_SHOW_CHANGE","AnimateShowChangeCellRenderer","GROUP","GroupCellRenderer","addCellRenderer","componentRecipes_1","useCellRenderer","eTarget","cellRendererPromise","componentRecipes","bindToHtml","useFilterCellRenderer","useRichSelectCellRenderer","cellEditorParams","useInnerCellRenderer","originalColumn","rendererToUsePromise","otherRenderer","cellRendererParams","rendererToUse","useFullWidthGroupRowInnerCellRenderer","scrollY","uiBodyHeight","scrollBarWidth","maxDivHeight","isScaling","newScrollY","newBodyHeight","getUiBodyHeight","uiContainerHeight","pixelsToShave","modelHeight","maxScrollY","scrollPercent","setOffset","clearOffset","newOffset","newOffsetFloor","modelPixel","getScrollPositionForPixel","ObjProto","SymbolProto","supportsArrayBuffer","supportsDataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","_isNaN","hasEnumBug","nonEnumerableProps","MAX_ARRAY_INDEX","AlignedGridsService","consuming","fireColumnEvent","fireScrollEvent","otherGrids","otherGridOptions","alignedGridService","__getAlignedGridService","onEvent","alignedGridsService","onColumnEvent","onScrollEvent","setHorizontalScrollPosition","getMasterColumns","getColumnIds","colEvent","processColumnEvent","groupOpenedEvent","processGroupOpenedEvent","otherColumnGroup","masterColumnGroup","setColumnGroupOpened","masterColumn","columnIds","masterColumns","movedEvent","moveColumns","visibleEvent","setColumnsVisible","pinnedEvent","setColumnsPinned","resizedEvent_1","setColumnWidth","draggingStarted","dragStartX","setResizeIcons","MouseEvent","oldBodyCursor","oldMsUserSelect","msUserSelect","oldWebkitUserSelect","webkitUserSelect","resizeAmount","resetIcons","AgCheckbox","loadIcons","updateIcons","label","eLabel","eChecked","eUnchecked","eIndeterminate","getNextValue","setPassive","setReadOnly","isReadOnly","EVENT_CHANGED","Listener","rowNodeCacheParams","STATE_DIRTY","isAnyNodeOpen","forEachNodeCallback","getLastAccessed","lastAccessed","dontTouchLastAccessed","createRowNodes","setDirtyAndPurge","getState","STATE_LOADING","STATE_FAILED","EVENT_LOAD_COMPLETE","populateWithRowData","rowNodesToRefresh","STATE_LOADED","globalObj","HTMLButtonElement","HTMLInputElement","balancedColumnTreeBuilder_1","displayedGroupCreator_1","groupInstanceIdCreator_1","GroupInstanceIdCreator","agGridNg1_1","initialiseAgGridWithAngular1","agGridWebComponent_1","initialiseAgGridWithWebComponents","baseFilter_1","dateFilter_1","DateFilter","numberFilter_1","NumberFilter","textFilter_1","TextFilter","mouseEventService_1","bodyDropPivotTarget_1","BodyDropPivotTarget","bodyDropTarget_1","BodyDropTarget","cssClassApplier_1","CssClassApplier","headerContainer_1","HeaderContainer","headerRootComp_1","HeaderRootComp","headerRowComp_1","HeaderRowComp","horizontalResizeService_1","moveColumnController_1","MoveColumnController","standardMenu_1","StandardMenuFactory","tabbedLayout_1","TabbedLayout","verticalStack_1","VerticalStack","simpleHttpRequest_1","simpleHttpRequest","largeTextCellEditor_1","LargeTextCellEditor","popupSelectCellEditor_1","PopupSelectCellEditor","popupTextCellEditor_1","PopupTextCellEditor","selectCellEditor_1","SelectCellEditor","textCellEditor_1","TextCellEditor","setLeftFeature_1","autoWidthCalculator_1","filterStage_1","FilterStage","flattenStage_1","FlattenStage","sortStage_1","SortStage","clientSideRowModel_1","ClientSideRowModel","changedPath_1","ChangedPath","clientSideNodeManager_1","ClientSideNodeManager","infiniteRowModel_1","InfiniteRowModel","rowNodeBlock_1","rowNodeBlockLoader_1","rowNodeCache_1","agCheckbox_1","touchListener_1","baseFrameworkFactory_1","BaseFrameworkFactory","alignedGridsService_1","csvCreator_1","grid_1","functions_1","defaultGroupComparator","selectableService_1","SelectableService","xmlFactory_1","XmlFactory","RowType","logger_2","frameworkComponentWrapper_1","isBrowser","timeoutDuration","longerTimeoutBrowsers","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","_getStyleComputedProp","getReferenceNode","referenceNode","MSInputMethodContext","isIE10","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","element1root","getScroll","upperSide","scrollingElement","includeScroll","modifier","getBordersSize","sideA","sideB","getSize","computedStyle","getWindowSizes","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","popper","boundariesElement","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","computeAutoPlacement","placement","refRect","sortedAreas","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginBottom","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","modifiers","ends","isDestroyed","arrowStyles","flipped","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","setStyles","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","divider","splitRegex","ops","mergeWithPrevious","toValue","index2","shiftvariation","_data$offsets","shiftOffsets","preventOverflow","transformProp","popperStyles","primary","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","subtractLength","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","onLoad","modifierOptions","Defaults","Popper","jquery","PopperUtils","arg1","arg2","arg3","copyProps","SafeBuffer","SAFE_CLOSING","riter","skipClosing","builtinExec","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","forceStringMethod","strfn","rxfn","common","IS_WEAK","ADDER","fixMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","getConstructor","setStrong","Typed","TypedArrayConstructors","COLLECTION","mapFn","nextItem","rowsInBodyContainer","eListContainer","queryForHtmlElement","addScrollListener","rowTopPixel","rowBottomPixel","viewportTopPixel","viewportHeight","viewportScrolledBeforeRow","newScrollPosition","setComponentCreator","componentCreator","clearVirtualRows","drawVirtualRows","removeVirtualRows","topPixel","bottomPixel","ensureRowsRendered","insertRow","eDiv","addGuiEventListener","bodyScrollListener","onBodyScroll","autoScrollService","AutoScrollService","appendRange","updateSelectedColumns","cellRanges","activeRange","dispatchChangedEvent","toCell","lastRange","startCell","setRange","rowStart","floatingStart","rowEnd","floatingEnd","columnStart","columnEnd","previousSelectionStart","previousEndCell","newEndCell","rangeSelection","getColumnWithValidation","startGridCellDef","endGridCellDef","isMoreThanOneCell","onlyRange","lastMouseEvent","isCellInSpecificRange","columnInRange","rowInRange","isRowInRange","matchingCount","cellRange","row1","row2","thisRow","afterFirstRow","beforeLastRow","multiKeyPressed","mouseEventService","createNewActiveRange","addScrollEventListener","selectionChanged","started","ensureCleared","removeScrollEventListener","columnChanged","rowChanged","columnFrom","columnTo","allColumns","tickingInterval","getBodyClientRect","tickLeft","tickRight","tickUp","tickDown","ensureTickingStarted","doTick","tickCount","tickAmount","vScrollPosition","hScrollPosition","getHScrollPosition","setVerticalScrollPosition","pasteFromClipboard","executeOnTempElement","textArea","parsedData","dataToArray","singleCellInClipboard","pasteToRange","pasteToSingleCell","cellsToFlash","updatedRowNodes","abortRepeatingPasteIntoRows","rangeSize","indexOffset","dataRowIndex","iterateActiveRanges","currentRow","currentRowData","firstRowValue","processCellFromClipboardFunc","userProcessCell","EXPORT_TYPE_DRAG_COPY","dispatchFlashCells","fireRowChanged","lastLine","updatedColumnIds","columnsToPasteInto","getDisplayedColumnsStartingAt","singleCellRange","multipleCellRange","EXPORT_TYPE_CLIPBOARD","copyRangeDown","firstRowValues","processCellForClipboardFunc","clipboardGridData","clipboardRowData","updateCellValue","getRowBelow","gridRow","isSuppressPaste","processedValue","copyToClipboard","includeHeaders","selectedRowsToCopy","copySelectedRangeToClipboard","copySelectedRowsToClipboard","copyFocusedCellToClipboard","onlyFirst","rowCallback","columnCallback","rangeSelections","iterateActiveRange","startRowIsFirst","rangeIndex","deliminator","userProcessHeader","copyDataToClipboard","columnKeys","skipFooters","onlySelected","csvCreator","userProvidedFunc","callbackNow","callbackAfter","eTempInput","guiRoot","strData","arrMatches","delimiter","objPattern","arrData","atFirstRow","strMatchedDelimiter","strMatchedValue","startRange","endRange","shortcut","subMenu","onOptionSelected","EVENT_ITEM_SELECTED","valueColumn","STATE_NOT_DRAGGING","guiDestroyFunctions","childColumnComponents","eColumnDropList","destroyGui","refreshGui","setupDropTarget","dragAndDropService","checkInsertIndex","getNewHorizontalInsertIndex","getNewVerticalInsertIndex","insertIndex","goingLeft","mouseX","childColumn","rectX","checkDragStartedBySelf","STATE_REARRANGE_COLUMNS","potentialDndColumns","dragColumns","STATE_NEW_COLUMNS_IN","goodDragColumns","isColumnDroppable","isPotentialDndColumns","removeColumns","addColumns","rearrangeColumns","columnsToRemove","newColumnList","getExistingColumns","updateColumns","columnsToAdd","getNonGhostColumns","addIconAndTitleToGui","addEmptyMessageToGui","addColumnsToGui","existingColumns","nonGhostColumns","itemsToAddToGui","addingGhosts","columnComponent","createColumnComponent","addArrow","ghost","EVENT_COLUMN_REMOVE","iconFaded","isExistingColumnsEmpty","eTitle","emptyMessage","eParent","CHAR_LEFT_ARROW","CHAR_RIGHT_ARROW","spanClass","eArrow","passBeansUp","dragAndDropIcon","checkVisibility","pivotActive","isPivotActive","allowPivot","isAllowPivot","columnNotAlreadyPivoted","setPivotColumns","allSyncListeners","allAsyncListeners","globalSyncListeners","globalAsyncListeners","asyncFunctionsQueue","EventService_1","globalEventListener","getListenerList","listenerMap","listenerList","addModalPriorityEventListener","PRIORITY","removeGlobalListener","dispatchToListeners","globalListeners","p1ListenerList","dispatchAsync","flushAsyncQueue","queueCopy","fetchApi","IPv6","SLD","_URI","URI","_urlSupplied","_baseSupplied","absoluteTo","escapeRegEx","filterArrayValues","arrayContains","arraysEqual","two","trimSlashes","escapeForDumbFirefox36","strictEncodeURIComponent","_parts","username","hostname","urn","port","query","preventInvalidHostname","duplicateQueryParameters","escapeQuerySpace","protocol_expression","idn_expression","punycode_expression","ip4_expression","ip6_expression","find_uri_expression","findUri","parens","defaultPorts","ftp","gopher","wss","hostProtocols","invalid_hostname_characters","domAttributes","getDomAttribute","iso8859","unescape","characters","pathname","reserved","urnpath","encodeQuery","escaped","decodeQuery","_part","generateAccessor","_group","generateSegmentedPathFunction","_sep","_codingFuncName","_innerCodingFuncName","actualCodingFunc","generateSimpleAccessor","generatePrefixAccessor","decodePath","decodeUrnPath","recodePath","recodeUrnPath","encodeReserved","parseAuthority","parseHost","bracketPos","firstColon","firstSlash","nextColon","ensureValidHostname","ensureValidPort","parseUserinfo","_string","parseQuery","splits","requireAbsolutePath","buildAuthority","buildHost","buildUserinfo","buildQuery","unique","buildQueryParameter","addQuery","setQuery","removeQuery","hasQuery","withinArray","joinPaths","nonEmptySegments","_segments","commonPath","withinString","_start","_end","_trim","_parens","_attributeOpen","ignoreHtml","attributeOpen","parensEnd","parensMatch","parensMatchEnd","hasHostname","rejectEmptyHostname","toASCII","removeAll","unconflicted","URITemplate","SecondLevelDomains","deferBuild","_deferred_build","ip","ip4","ip6","sld","idn","relative","_protocol","_port","_hostname","authority","userinfo","subdomain","tld","directory","decodePathSegment","mutatedDirectory","normalizePath","segmentCoded","setSearch","addSearch","removeSearch","hasSearch","normalizeProtocol","normalizeQuery","normalizeFragment","normalizeHostname","normalizePort","_was_relative","_path","_pos","_leadingParents","normalizePathname","normalizeSearch","normalizeHash","toUnicode","qp","kv","basedir","relativeTo","relativeParts","baseParts","basePath","one_map","two_map","one_query","two_query","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","getEventCallbacks","EVENT_CALLBACKS","EVENT_CALLBACKS_NO_PREFIX","EVENTS","copyAttributesToGridOptions","skipEventDeprecationCheck","pGridOptions","ARRAY_PROPERTIES","STRING_PROPERTIES","OBJECT_PROPERTIES","FUNCTION_PROPERTIES","BOOLEAN_PROPERTIES","toBoolean","NUMBER_PROPERTIES","funcName","onMethodName","processOnChange","changes","setColumnDefs","setHeaderHeight","paginationSetPageSize","setPivotMode","setGroupRemoveSingleChildren","setSuppressRowDrag","setGridAutoHeight","setSuppressClipboardPaste","cellAndHeaderEscaper","nameForCol","getHeaderName","valueForCell","isRowGrouping","createValueForGroupNode","processCell","gridSerializingSession","skipGroups","columnGroups","skipPinnedTop","skipPinnedBottom","includeCustomHeader","includeCustomFooter","onlySelectedAllPages","rowSkipper","shouldRowBeSkipped","rowModelNormal","onlySelectedNonStandardModel","getGridColumns","getAllPrimaryColumns","displayedGroupCreator","getGridBalancedTree","recursivelyAddHeaderGroups","gridRowIterator_1","forEachPivotNode","forEachNodeAfterFilterAndSort","rowAccumulator","directChildrenHeaderGroups","columnGroupChild","doAddHeaderHeader","gridRowIterator","columnIndex","columnName","getDisplayNameForColumnGroup","isFloatingTop","isFloatingBottom","isNotFloating","otherSelection","otherFloating","createAndAddIcons","eCheckedIcon","eUncheckedIcon","eIndeterminateIcon","onSelectionChanged","onSelectableChanged","showOrHideSelect","onCheckedClicked","onUncheckedClicked","onIndeterminateClicked","checkboxCallbackExists","isCellCheckboxSelection","headerComp_1","headerGroupComp_1","loadingOverlayComponent_1","noRowsOverlayComponent_1","agGridDefaults","agDateInput","DefaultDateComponent","agColumnHeader","HeaderComp","agColumnGroupHeader","HeaderGroupComp","agSetColumnFloatingFilter","SetFloatingFilterComp","agTextColumnFloatingFilter","TextFloatingFilterComp","agNumberColumnFloatingFilter","NumberFloatingFilterComp","agDateColumnFloatingFilter","DateFloatingFilterComp","agAnimateShowChangeCellRenderer","agAnimateSlideCellRenderer","agGroupCellRenderer","agGroupRowRenderer","agLoadingCellRenderer","agCellEditor","agTextCellEditor","agSelectCellEditor","agPopupTextCellEditor","agPopupSelectCellEditor","agLargeTextCellEditor","agLoadingOverlay","LoadingOverlayComponent","agNoRowsOverlay","NoRowsOverlayComponent","agDeprecatedNames","newComponentName","propertyHolder","animateShowChange","animateSlide","largeText","popupSelect","popupText","richSelect","headerComponent","jsComponents","frameworkComponents","registerComponent","registerFwComponent","registerDefaultComponent","rawName","overridable","translateIfDeprecated","deprecatedInfo","eInput","focusAfterAttached","getStartValue","highlightAllOnFocus","KEY_PAGE_DOWN","KEY_PAGE_UP","KEY_PAGE_HOME","KEY_PAGE_END","pageUp","pageDown","length_1","useFormatter","dateFrom","dateTo","getDateTo","createComponents","setDateFrom_date","setDateTo_date","dateFromCondition","dateToCondition","dateComponentParams","onDateChanged","dateToComponent","dateToConditionComponent","dateToElement","eDateToPanel","eDateToConditionPanel","dateComponent","dateFromComponent","dateFromConditionComponent","dateFromElement","eDateFromPanel","eDateFromConditionPanel","removeTimezone","panel","filterTypeValue","filterDate","cellValue","getDateFrom","getFilterType","setDateFrom","parsedDate","setDateTo","setType","eDateInput","browserDatePicker","getGuiCalledOnChild","DOM_KEY_POPUP_EDITOR_WRAPPER","refreshCount","eCurrent","addSlideAnimation","refreshCountCopy","ePrevious","lastValue","eValue","eDelta","showDelta","absDelta","deltaUp","setTimerToRemoveDelta","hideDeltaValue","assignBlankValueToGroupFooterCell","embeddedRowMismatch","isEmbeddedRowMismatch","cellIsEmpty","cellIsBlank","setupDragOpenParents","addExpandAndContract","addCheckboxIfNeeded","addValueElement","setupIndent","pinnedLeftCell","pinnedRightCell","bodyCell","setIndent","paddingCount","setPaddingDeprecatedWay","indentClass","paddingPx","suppressPadding","displayedGroup","createFooterCell","createGroupCell","addChildCount","createLeafCell","footerValue","footerValueGetter","paramsClone","rendererPromise","columnToUse","groupName","cellRendererService","innerCellRenderer","suppressCount","updateChildCount","eChildCount","isUserWantsSelected","paramsCheckbox","checkbox","cbSelectionComponent_1","eGroupCell","eExpandedIcon","eContractedIcon","eExpanded","eContracted","onExpandClicked","showExpandAndContractIcons","onAllChildrenCountChanged","suppressDoubleClickExpand","onCellDblClicked","onExpandOrContract","draggedFromHideOpenParents","reducedLeafNode","pivotModeAndLeafGroup","notExpandable","addLeafIndentClass","processAllCellClasses","classRules","resultOfRule","cellClass","classOrClasses","cellClassFunc","cssClassItem","HoverFeature","addMouseHoverListeners","eSelect","valueFormattedExits","functionAdapter","adaptCellRendererFunction","Adapter","callbackResult","componentMetaData","detailCellRenderer","headerGroupComponent","loadingOverlayComponent","noRowsOverlayComponent","floatingFilterComponent","floatingFilterWrapperComponent","innerRenderer","fullWidthCellRenderer","pinnedRowCellRenderer","groupRowInnerRenderer","groupRowRenderer","rowContainerComponent_1","navigationService_1","rowDragFeature_1","nextScrollLeft","nextScrollTop","verticalRedrawNeeded","eBodyViewport","onRowDataChanged","showOrHideOverlay","showNoRowsOverlay","hideOverlay","isReady","scrollClipWidth","eTopViewport","suppressScrollOnFloatingRow","setupRowAnimationCssClass","buildRowContainerComponents","addDragListeners","setupOverlay","showLoadingOverlay","setPinnedContainersVisible","setBodyAndHeaderHeights","disableBrowserDragging","addShortcutKeyListeners","addMouseListeners","addKeyboardEvents","addBodyViewportListener","addStopEditingWhenGridLosesFocus","mockContextMenuForIPad","addRowDragListener","addAngularApplyCheck","onDisplayedColumnsWidthChanged","navigationService","autoWidthCalculator","paginationAutoPageSizeService","onBodyViewportResized","checkViewportAndScrolls","moving","overlayWrapper","eOverlay","rowDragFeature","RowDragFeature","clickInsideGrid","applyTriggered","HTMLImageElement","eLeftContainer","eRightContainer","eTop","eBottom","processMouseEvent","eAllCellContainers","processKeyboardEvent","eLeftViewport","eRightViewport","onContextMenu","preventDefaultOnContextMenu","getRowForEvent","handlePageScrollingKey","handleContextMenuMouseEvent","contextMenuFactory","showMenu","KEY_A","onCtrlAndA","KEY_C","onCtrlAndC","KEY_V","onCtrlAndV","KEY_D","onCtrlAndD","allDisplayedColumns","clipboardService","paginationOffset","scrollPosition","vScrollTop","vScrollBottom","pxTop","pxBottom","pxMiddle","getCenterWidth","updateScrollVisibleService","checkBodyHeight","onHorizontalViewportChanged","setPinnedLeftWidth","setPinnedRightWidth","setBottomPaddingOnPinned","hideVerticalScrollOnCenter","hideFullWidthViewportScrollbars","scrollWidthPx","eFullWidthViewportWrapper","paddingBottom","takeOutVScroll","eFullWidthViewport","isColumnDisplayed","viewportLeftPixel","viewportRightPixel","colLeftPixel","colRightPixel","viewportWidth","getBodyViewportScrollLeft","viewportScrolledPastCol","viewportScrolledBeforeCol","colToSmallForViewport","alignColToRight","setBodyViewportScrollLeft","getWidthForSizeColsToFit","availableWidth","sizeColumnsToFit","nextTimeout","getDropTargetBodyContainers","eBottomViewport","getDropTargetLeftContainers","eLeftBottom","eLeftTop","getDropTargetRightContainers","eRightBottom","eRightTop","eFullWidthContainer","rowContainerComponents","RowContainerComponent","eViewport","hideWhenNoChildren","eTopContainer","eTopFullWidthContainer","eBottomContainer","eBottomFullWidthContainer","setWidthsOfContainers","setCenterWidth","widthPx","wrapperWidth","widthOfCols","widthOfColsAndScroll","widthOfColsAndClippedScroll","setElementWidth","eLeftViewportWrapper","eRightViewportWrapper","changeDetected","showLeftPinned","setLeftVisible","showRightPinned","setRightVisible","neverShowScroll","scrollActive","totalHeaderHeight","groupHeight","headerRowCount","getHeaderRowCount","numberOfFloating","numberOfGroups","floatingTopHeight","floatingBottomHeight","doHorizontalScroll","scrollHorizontally","oldScrollPosition","scrollVertically","onBodyHorizontalScroll","onAnyBodyScroll","lastVScrollTime","lastVScrollElement","synchroniseVerticalScrollPositions","redrawRowsAfterScroll","setVirtualViewportPosition","setHorizontalScroll","NavigationService","getAllAutoRowHeightCols","maxCellHeight","centerContainer","pinnedLeftContainer","pinnedRightContainer","eHeaderContainer","eHeaderViewport","childContainers","ePinnedLeftHeader","ePinnedRightHeader","refreshHeader","addPreventHeaderScroll","childContainer","addHeaderClassesFromColDef","addColumnClassesFromCollDef","headerClass","addToolPanelClassesFromColDef","toolPanelClass","classesOrFunc","classToUse","lastCellToFocus","getCellAbove","getCellBelow","getCellToLeft","getCellToRight","isCellGoodToFocusOn","lastCell","colToLeft","getDisplayedColBefore","colToRight","isLastRowInContainer","rowBelow","getRowAbove","getLastFloatingTopRow","getLastBodyCell","rowAbove","lastBodyRow","lastFloatingRow","getNextTabbedCellBackwards","getNextTabbedCellForwards","newRowIndex","newFloating","newColumn","existingIds","lastResult","msSaveOrOpenBlob","blobObject","sortService_1","filterService_1","autoGroupColService_1","immutableService_1","changeDetectionService_1","paginationComp_1","rowModelClass","getRowModelClass","enterpriseBeans","frameworkFactory","frameworkBeans","PaginationComp","enterpriseComponents","FilterService","SortService","AutoGroupColService","ImmutableService","ChangeDetectionService","setColumnsAndData","dispatchGridReadyEvent","rowModelClasses","RowModelClasses","setFrameworkBeans","readyEvent","infinite","clientSide","updateSelectableAfterGrouping","recurseDown","updateSelectableAfterFiltering","nextChildrenFunc","rowSelectable","firstSelectable","maxRowFound","blockCount","loadComplete","checkVirtualRowCount","purgeBlocksIfNeeded","blockToExclude","blocksForPurging","blocksToKeep","removeBlockFromCache","setBlock","blockToRemove","lastRowIndexPlusOverflow","setVirtualRowCount","getBlockIdsSorted","forEachBlockId","idStr","addBlock","removeBlock","inActiveRange","foundGapInSelection","hitFirstOrLast","keepingColumns","nodeIdsToBoolean","nodeIdsToColumns","setInactive","addParentNode","validateActive","isInPath","getValueColumnsForNode","valueColumns","colsForThisNode","getNotValueColumnsForNode","S2","select2","amd","requirejs","require","makeMap","waiting","defining","aps","jsSuffixRegExp","baseName","nameParts","nameSegment","mapValue","foundMap","foundI","foundStarMap","starI","starMap","nodeIdCompat","makeRequire","relName","forceSync","makeNormalize","makeLoad","callDep","splitPrefix","makeRelParts","makeConfig","relParts","relResourceName","cjsModule","usingExports","callbackType","cfg","_$","getMethods","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","calledConstructor","ctr","superMethod","calledMethod","originalMethod","decoratedMethod","generateChars","chars","_convertData","originalKey","dataLevel","hasScroll","escapeMarkup","replaceMap","appendMany","$element","$nodes","$jqNodes","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","Results","dataAdapter","$results","displayMessage","hideLoading","$message","hideMessages","$options","$option","$dropdown","sorter","highlightFirstItem","$selected","ensureHighlightVisible","setClasses","selectedIds","showLoading","loading","loadingMore","$loading","_resultId","role","$children","$child","$childrenContainer","$container","$highlighted","getHighlightedResults","$next","currentOffset","nextTop","nextBottom","mousewheel","isAtTop","isAtBottom","offsetDelta","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","_attachCloseHandler","_detachCloseHandler","$select","SingleSelection","$rendered","selectionContainer","MultipleSelection","$selections","Placeholder","decorated","normalizePlaceholder","createPlaceholder","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","$remove","Search","$searchContainer","_transferTabIndex","_keyUpPrevented","$previousChoice","searchRemoveChoice","disableInputEvents","handleSearch","searchHadFocus","resizeSearch","EventRelay","relayEvents","preventableEvents","Translation","_cache","loadPath","translations","BaseAdapter","generateResultId","SelectAdapter","currentData","addOptions","normalizedData","_normalizeItem","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","onlyItem","$existingOption","existingData","$newOption","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","transport","failure","$request","_request","_queryTimeout","Tags","createTag","insertTag","checkChildren","_removeOldTags","Tokenizer","tokenizer","dropdown","createAndSelect","tokenData","separators","termChar","MinimumInputLength","$e","minimumInputLength","MaximumInputLength","maximumInputLength","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","loadMore","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","enoughRoomAbove","enoughRoomBelow","$offsetParent","parentOffset","isConnected","countResults","MinimumResultsForSearch","minimumResultsForSearch","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","tokenSeparators","Query","amdBase","initSelection","InitSelection","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","dropdownCssClass","dropdownCss","adaptDropdownCssClass","DropdownCSS","selectionAdapter","allowClear","containerCssClass","containerCss","adaptContainerCssClass","ContainerCSS","_resolveLanguage","uniqueLanguages","_processTranslations","stripDiacritics","amdLanguageBase","dropdownAutoWidth","scrollAfterSelect","templateResult","templateSelection","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","resolvedLanguages","baseLanguage","languageData","convertedData","Options","InputCompat","excludedData","upperCaseLetter","dataName","dataValue","Select2","_generateId","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","_resolveWidth","WIDTH","elementWidth","_syncA","_syncS","_syncSubtree","_observer","childList","nonRelayEvents","toggleDropdown","_isChangeMutation","addedNodes","removedNodes","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","detachEvent","thisMethods","instanceOptions","primaryHeaderRowCount","secondaryHeaderRowCount","secondaryColumnsPresent","gridHeaderRowCount","displayedLeftColumns","displayedRightColumns","displayedCenterColumns","allDisplayedVirtualColumns","allDisplayedCenterVirtualColumns","rowGroupColumns","pivotColumns","autoGroupsNeedBuilding","leftWidth","rightWidth","bodyWidthDirty","isPivotSettingAllowed","usingTreeData","autoRowHeightColumns","setVirtualViewportLeftAndRight","viewportRight","checkDisplayedVirtualColumns","hashBefore","updateVirtualSets","pivot","updateDisplayedColumns","getSecondaryPivotColumn","pivotKeys","valueColKey","valueColumnToFind","foundColumn","secondaryColumns","thisPivotKeys","pivotValueColumn","setFirstRightAndLastLeftPinned","lastLeft","firstRight","gridColumns","setLastLeftPinned","setFirstRightPinned","autoSizeColumns","columnsAutosized","changesThisTimeAround","actionOnGridColumns","preferredWidth","normaliseColumnWidth","setActualWidth","autoSizeColumn","autoSizeAllColumns","getColumnsFromTree","rootColumns","recursiveFindColumns","childColumns","getAllDisplayedColumnGroups","displayedLeftColumnTree","displayedRightColumnTree","displayedCentreColumnTree","getPrimaryColumnTree","primaryBalancedTree","getLeftDisplayedColumnGroups","getRightDisplayedColumnGroups","getCenterDisplayedColumnGroups","getDisplayedColumnGroups","getAllDisplayedVirtualColumns","colSpanActive","getDisplayedColumnsForRow","filterCallback","emptySpaceBeforeColumn","out_i_1","lastConsideredCol","columnsToCheckFilter","colsToRemove","colForFilter","isColumnInViewport","columnLeft","columnRight","columnToMuchLeft","columnToMuchRight","getWidthOfColsInList","updatePrimaryColumnList","masterList","actionIsAdd","atLeastOne","columnToAdd","updateGridColumns","setRowGroupColumns","setPrimaryColumnList","setRowGroupActive","isRowGroupActive","addRowGroupColumn","addRowGroupColumns","removeRowGroupColumns","removeRowGroupColumn","addPivotColumns","setPivotActive","addPivotColumn","removePivotColumns","removePivotColumn","setValueColumns","setValueActive","isValueActive","defaultAggFunc","aggFuncService","setAggFunc","addValueColumns","addValueColumn","removeValueColumn","removeValueColumns","isGreaterThanMax","getMaxWidth","getPrimaryOrGridColumn","ratios","otherCol","otherColWidth","resizeColumnSets","checkMinAndMaxWidthsForSet","columnResizeSet","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","resizeSets","changedCols","allCols","newWidths","finishedCols","finishedColsGrew","loopCount","_loop_2","subsetCols","subsetRatios","subsetRatioTotal","pixelsToDistribute","ratioThisCol","ratioScale","colNewWidth","atLeastOneColChanged","setLeftValues","updateBodyWidths","setColumnAggFunc","moveRowGroupColumn","columnsToMoveKeys","columnsToMove","doesMovePassRules","proposedColumnOrder","doesMovePassMarryChildren","doesMovePassLockedPositions","foundNonLocked","rulePassed","isLockPosition","allColumnsCopy","marryChildren","newIndexes","newColIndex","moveColumn","moveColumnByIndex","getContainerWidth","newBodyWidth","newLeftWidth","newRightWidth","event_4","getDisplayedCenterColumns","getDisplayedLeftColumns","getDisplayedRightColumns","getDisplayedColumns","columnsForQuickFilter","getAllGridColumns","setColumnVisible","setColumnPinned","actualPinned","setPinned","updatedColumns","event_5","oldIndex","getDisplayedGroupAfter","requiredLevel","groupPointer","groupAutoColumns","createStateItemFromColumn","rowGroupIndex","pivotIndex","getColumnState","columnStateList","orderColumnStateList","gridColumnIds","itemA","itemB","resetColumnState","setColumnState","columnState","columnsWithNoState","rowGroupIndexes","pivotIndexes","stateItem","syncColumnWithStateItem","syncColumnWithNoState","sortColumnListUsingIndexes","orderOfColIds_1","colA","colB","indexes","getColumns","columnLookupCallback","foundColumns","columnList","columnsMatch","getAutoColumn","groupCol","columnMatches","colDefMatches","idMatches","includeAggFunc","wrapHeaderNameWithAggFunc","getDisplayNameForOriginalColumnGroup","headerValueGetter","aggFuncFound","measureActive","aggregationPresent","aggFuncString","getColumnGroup","allColumnGroups","checkInstanceId","balancedTreeResult","balancedColumnTreeBuilder","extractRowGroupColumns","extractPivotColumns","createValueColumns","eventEverythingChanged","newColumnsLoadedEvent","rowGroup","resetColumnGroupState","stateItems","groupState","setColumnGroupState","getColumnGroupState","columnGroupState","impactedGroups","groupKey","updateGroupsAndDisplayedColumns","keyAsString","calculateColumnsForDisplay","isAutoGroupCol","isValueCol","checkColSpanActiveInCols","calculateColumnsForGroupDisplay","groupDisplayColumns","checkFunc","showRowGroup","columnsForDisplay","buildDisplayedTrees","isSecondaryColumnsPresent","setSecondaryColumns","colDefs","newColsPresent","processSecondaryColumnDefinitions","secondaryBalancedTree","groupCallback","searchForColDefs","colDefs2","gridColsArePrimary","lastPrimaryOrder","orderGridColsLikeLastPrimary","addAutoGroupToGridColumns","putFixedColumnsFirst","setupQuickFilterColumns","clearDisplayedColumns","oneMissing","isPrimaryColumnGroupsPresent","locked","unlocked","createGroupAutoColumnsIfNeeded","displayedLeftHeaderRows","displayedRightHeaderRows","displayedCentreHeaderRows","updateOpenClosedVisibilityInColumnGroups","updateDisplayedColumnsFromTrees","addToDisplayedColumns","setupAllDisplayedColumns","setLeftValuesOfColumns","setLeftValuesOfGroups","doingRtl","left_1","left_2","displayedColumnTree","updateDisplayedCenterVirtualColumns","filterOutColumnsWithinViewport","getVirtualHeaderGroupRow","updateDisplayedVirtualGroups","virtualColIds","testGroup","addThisItem","gridWidth","colsToNotSpread","suppressSizeToFit","colsToSpread","colsToFireEventFor","finishedResizing","availablePixels","setMinimum","pixelsForLastCol","moveToNotSpread","visibleColumns","leftVisibleColumns","rightVisibleColumns","centerVisibleColumns","getGroupAutoColumns","needAutoColumns","autoGroupColService","createAutoGroupColumns","buggy","$iterCreate","BUGGY","VALUES","returnThis","IS_SET","kind","DEF_VALUES","VALUES_BUG","$default","$anyNative","getIteratorMethod","endPos","addToUnscopables","Arguments","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","reCopy","channel","cel","setTask","clearTask","MessageChannel","Dispatch","ONREADYSTATECHANGE","port2","port1","onmessage","postMessage","importScripts","macrotask","Observer","characterData","PromiseCapability","$$resolve","DATA_VIEW","WRONG_INDEX","BaseBuffer","BUFFER","BYTE_LENGTH","BYTE_OFFSET","$BUFFER","$LENGTH","$OFFSET","packIEEE754","unpackIEEE754","unpackI32","packI8","packI16","packI32","packF64","packF32","isLittleEndian","intIndex","_b","conversion","ArrayBufferProto","$setInt8","setInt8","bufferLength","getInt16","getInt32","getFloat32","getFloat64","setInt16","setInt32","setUint32","setFloat32","setFloat64","allowDragging","hideFilter","hideSelect","columnSelectHeaderComp","columnContainerComp","setFilterText","filterText","onSelectAll","doSetSelectedAll","onUnselectAll","onExpandAll","doSetExpandedAll","onCollapseAll","onGroupExpanded","setExpandState","SELECTED_STATE","expandState","CHECKED","selectState","setColumnsCheckedState","showOrHideOptions","showFilter","showSelect","showExpand","groupsPresent","eFilter","eExpand","onFilterTextChanged","onFilterTextChangedDebounced","eFilterTextField","onSelectClicked","eExpandChecked","eExpandUnchecked","UNCHECKED","eExpandIndeterminate","INDETERMINIATE","checkedCount","uncheckedCount","suppressToolPanel","isAllowRowGroup","isAllowValue","eSelectChecked","eSelectUnchecked","eSelectIndeterminate","uniqueValues","execute","changedPath","executePivotOn","executePivotOff","aggregationColumnsHashLastTime","bucketUpRowNodes","uniqueValuesChanged","setUniqueValues","aggregationColumns","aggregationColumnsHash","aggregationFuncsHash","aggregationColumnsChanged","aggregationFuncsChanged","aggregationFuncsHashLastTime","pivotColDefService","createPivotColumnDefs","pivotColumnGroupDefs","pivotColumnDefs","newValues","recursivelySearchForLeafNodes","bucketRowNode","bucketChildren","mappedChildren","pivotColumn","getPivotColumnDefs","levelsDeep","columnIdSequence","recursivelyAddGroup","addRowGroupTotals","addPivotTotalsToGroups","parentChildren","primaryPivotColumns","newPivotKeys","groupDef","measureColumns","valueGroup_1","colDef_1","createColDef","measureColumn","userComparator","pivotComparator","headerNameComparator","valueCol","sameAggFuncs","recursivelyAddPivotTotal","grp","childColIds","totalColDef","pivotTotalColumnIds","extractColIdsForValueColumn","createRowGroupTotal","valueGroup","colDefToCopy","main_2","LicenseManager_1","validateLicense","gridReleaseDate","getGridReleaseDate","expiry","licenseKey","extractLicenseComponents","license","extractExpiry","formattedExpiryDate","formattedReleaseDate","outputMessage","restrictionHashed","hashStart","getLicenseDetails","monthIndex","RELEASE_INFORMATION","keystr","utf8_decode","setLicenseKey","ieCompatibility","md5cycle","add32","md51","md5blk","md5blks","rhex","hex_chr","add32Compat","add32Std","lsw","timerCount","removeChildFuncs","clearActiveItem","removeActiveItem","removeChildPopup","addMenuItems","menuItems","menuItemOrString","addSeparator","menuItem","addItem","menuItemDef","cMenuItem","showChildMenu","mouseEnterItem","menuItemParams","activeMenuItemParams","activeMenuItem","addHoverForChildPopup","menuItemComp","timerCountCopy","shouldShow","showingThisMenu","subMenuParentDef","SEPARATOR_TEMPLATE","childMenu","hidePopupFunc","selectedListener","mapWithStockItems","originalList","resultList","getStockMenuItem","resultDef","isPinnedLeft","isPinnedRight","createAggregationSubMenu","expandAll","collapseAll","exportSubMenuItems","exportDataAsExcel","columnIsAlreadyAggValue","funcNames","columnGroupable","columnNotAlreadyGrouped","main_3","createExcelXml","worksheets","documentProperties","excelWorkbook","excelXmlHeader","xmlFactory","createXml","workbook","boolean","stylesXmlElement","worksheetXmlElement","prefixedAttributes","rawMap","styleXmlElement","borders","borderBottom","borderLeft","borderRight","borderTop","Position","LineStyle","Weight","Vertical","Horizontal","Indent","ReadingOrder","readingOrder","Rotate","ShrinkToFit","shrinkToFit","VerticalText","verticalText","WrapText","Bold","FontName","fontName","Italic","Outline","StrikeThrough","Underline","VerticalAlign","verticalAlign","CharSet","charSet","Family","interior","PatternColor","patternColor","protection","Protected","protected","HideFormula","hideFormula","worksheet","columnXmlElement","rowXmlElement","rowCellXmlElement","mergeAcross","styleId","textNode","Timeout","clearFn","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","symbolMap","numberMap","pluralForm","pluralize","suffixes","plural","forms","relativeTimeWithPlural","lastDigit","last2Digits","relativeTimeWithMutation","specialMutationForYears","lastNumber","softMutation","mutationTable","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","longMonthsParse","shortMonthsParse","arrayify","lll","llll","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","detailGridInfoMap","infinitePageRowModel","serverSideRowModel","getDetailGridInfo","forEachDetailGridInfo","getDataAsExcel","excelCreator","getDataAsExcelXml","setEnterpriseDatasource","setServerSideDatasource","setViewportDatasource","immutableService","createTransactionForRowData","transaction","orderIdMap","updateRowData","setFloatingTopRowData","setFloatingBottomRowData","getFloatingTopRowCount","getFloatingBottomRowCount","getFloatingTopRow","getFloatingBottomRow","expireValueCache","getVerticalPixelRange","refreshToolPanel","timeFullRedraw","iterationCount","totalProcessing","totalReflow","doOneIteration","endProcessing","endReflow","durationProcessing","durationReflow","refreshView","refreshRows","rowDataChanged","softRefreshView","refreshGroupRows","setFunctionsReadOnly","onGroupExpandedOrCollapsed","deprecated_refreshFromIndex","refreshModel","STEP_MAP","refreshInMemoryRowModel","refreshClientSideRowModel","paramsStep","STEP_EVERYTHING","stepsMapped","STEP_FILTER","STEP_AGGREGATE","STEP_SORT","STEP_PIVOT","modelParams","keepEditingRows","isAnimationFrameQueueEmpty","expandOrCollapseAll","addVirtualRowListener","suppressEvents","deselectAll","selectAllFiltered","deselectAllFiltered","recomputeAggregates","isNodeSelected","getSelectedNodesById","ensureColIndexVisible","forEachLeafNode","getFilterApiForColDef","getFilterInstance","filterComp","getFilterApi","getColumnDef","setGroupHeaderHeight","setFloatingFiltersHeight","setPivotGroupHeaderHeight","setPivotHeaderHeight","resetRowHeights","setGroupRemoveLowestSingleChildren","resetQuickFilter","getRangeSelections","camelCaseToHumanReadable","addRangeSelection","clearRangeSelection","includeHeader","copySelectedRangeDown","showColumnMenuAfterButtonClick","buttonElement","menuFactory","showMenuAfterButtonClick","showColumnMenuAfterMouseClick","showMenuAfterMouseEvent","hidePopupMenu","hideActiveMenu","setPopupParent","tabToPreviousCell","clearAggFuncs","rowDataTransaction","batchUpdateRowData","insertItemsAtIndex","skipRefresh","addIndex","removeItems","dataToRemove","addItems","refreshVirtualPageCache","refreshInfiniteCache","refreshInfinitePageCache","refreshCache","purgeVirtualPageCache","purgeInfinitePageCache","purgeInfiniteCache","purgeEnterpriseCache","purgeServerSideCache","getInfiniteRowCount","setInfiniteRowCount","getVirtualPageState","getCacheBlockState","getInfinitePageState","checkGridSize","getFirstRenderedRow","getFirstDisplayedRow","getLastRenderedRow","getLastDisplayedRow","getDisplayedRowAtIndex","getDisplayedRowCount","paginationIsLastPageFound","paginationGetPageSize","paginationGetCurrentPage","paginationGetTotalPages","paginationGetRowCount","paginationGoToNextPage","paginationGoToPreviousPage","paginationGoToFirstPage","paginationGoToLastPage","paginationGoToPage","weekEndings","eraYearOrdinalRegex","isUpper","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","translateSeconds","translateSingular","special","relativeTimeWithSingular","relativeSeconds","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","isPinning","getAllColumns","columnGroupOpened","hideColumns","hideColumn","setState","getAggregationColumns","removeAggregationColumn","removeAggregationColumns","addAggregationColumn","addAggregationColumns","setColumnAggFunction","getDisplayNameForCol","compIdSequence","childComponents","annotatedEventListeners","compId","instantiateRecurse","childComp","attrList","getAttrLists","copyAttributesFromNode","createChildAttributes","addEventListenersToComponent","swapComponentForNode","addEventListenersToElement","bindings","firstCharacter","bindingName","attrLists","addEventListenerCommon","methodAliases","getAgComponentMetaData","nameValue","methodAlias","methodNameToUse","eventCamelCase","childAttributes","nameCamelCase","eComponent","createComment","swapInComponentForQuerySelectors","thisProto","thisNoType","__agComponentMetaData","currentProtoName","querySelectors","setTemplateFromElement","__agComponent","addAnnotatedEventListeners","thisNoType_1","resultOfQuery","backingComponent","removeAnnotatedEventListeners","listenerMethods","queryForHtmlInputElement","childComponent","feature","refName","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","_IPv6","_best","_current","inzeroes","_SecondLevelDomains","tldOffset","sldOffset","sldList","buildURL","parseHeaders","isURLSameOrigin","requestData","Authorization","paramsSerializer","responseURL","responseHeaders","getAllResponseHeaders","cookies","xsrfValue","onDownloadProgress","onUploadProgress","upload","cancelToken","enhanceError","__CANCEL__","Cancel","bytesToUuid","rnds","descriptors","formatRegExp","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","stylize","stylizeNoColor","colors","showHidden","_extend","customInspect","stylizeWithColor","styleType","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","numLinesEst","reduceToSingleString","debuglog","NODE_DEBUG","kCustomPromisifiedSymbol","callbackifyOnRejected","promiseReject","callbackify","callbackified","maybeCb","rej","InputTextFloatingFilterComp","lastKnownModel","toDebounce","syncUpWithParentFilter","eColumnFloatingFilter","columnDef","onParentModelChanged","parentModel","parseAsText","equalModels","incomingTextValue","asFloatingFilterText","asParentModel","filterTo","dateComponentPromise","isInRange","filterValueDate","filterValueText","enrichDateInput","toParse","number_1","asNumber","numberTo","filterValueNumber","modelFilterValue","arrayToDisplay","LAYOUT_INTERVAL","EXPORT_TYPE_EXCEL","KEY_SHIFT","KEY_SPACE","textarea","textCustomComparator","DEFAULT_COMPARATOR","textFormatter","caseSensitive","DEFAULT_FORMATTER","DEFAULT_LOWERCASE_FORMATTER","addFilterChangedListener","setFilter","filterConditionText","eFilterConditionTextField","onFilterTextFieldChanged","checkIndividualFilter","newLowerCase","previousLowerCase","getFilter","filterNumberTo","fieldId","filterNumberToPanelId","fieldToId","addFilterChangedEventListeners","eFilterToTextField","eFilterTextConditionField","eFilterToConditionText","filterNumberCondition","setFilterTo","filterNumberConditionTo","filterElement","filterToElement","onTextFieldsChanged","stringToFloat","newFilterTo","filterNumber","eNumberToPanel","eNumberToConditionPanel","requestAnimationFrame$1","emptyRect","createRectInit","toFloat","getHTMLElementContentRect","getWindowOf","paddings","getPaddings","horizPad","vertPad","boxSizing","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","callback_","leadingCall","trailingCall","lastCallTime","resolvePending","timeoutCallback","timeStamp","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","hasActive","broadcastActive","getInstance","instance_","defineConfigurable","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverSPI","callbackCtx","observation","controller_","callbackCtx_","Constr","contentRect","DOMRectReadOnly","ResizeObserverFallback","observer_","ResizeObserver","ro_1","entries_1","ro_2","timeLastPageEventProcessed","ctrl","currentCell","processed","onHomeOrEndKey","onCtrlLeftOrRight","onCtrlUpOrDown","onPageDown","onPageUp","isTimeSinceLastPageEventToRecent","setTimeLastPageEventProcessed","pixelsInOnePage","pagingPixelOffset","currentPageBottomPixel","scrollIndex","nextCellPixel","focusIndex","navigateTo","currentPageTopPixel","scrollType","scrollColumn","focusColumn","rowIndexToScrollTo","leftKey","columnToSelect","homeKey","headerRowComps","setupDragAndDrop","headerRowComp","onColumnValueChanged","setWidthOfPinnedContainer","removeHeaderRowComps","createHeaderRowComps","gridComp","dropContainer","bodyDropTarget","HeaderRowType","COLUMN_GROUP","COLUMN","FLOATING_FILTER","headerGroupWrapperComp_1","headerComps","idsOfAllChildren","removeAndDestroyChildComponents","idsToDestroy","childHeaderComp","mainRowWidth","removeAndDestroyAllChildComponents","eBefore","currentChildIds","itemsAtDepth","headerComp","eHeaderCompGui","idOfChild","eParentContainer","createHeaderComp","HeaderGroupWrapperComp","createFloatingFilterWrapper","floatingFilterParams","createFloatingFilterParams","floatingFilterWrapper","filterComponentPromise","wholeParentFilter","captureModelChangedResolveFunc","modelChanged","selectAllFeature_1","hoverFeature_1","enableMenu","isMenuEnabled","suppressMenu","appendHeaderComp","setupWidth","setupMovingCss","setupTooltip","setupResize","setupMenuClass","setupSortableClass","addColumnHoverListener","EVENT_FILTER_ACTIVE_CHANGED","SelectAllFeature","cbSelectAll","setLeftFeature","addAttributes","filterPresent","showColumnMenu","afterHeaderCompCreated","setupMove","onColumnMovingChanged","eHeaderCellLabel","suppressMovable","dragSource_1","createDragItem","setMoving","visibleState","eResize","resizeAmountNormalised","normaliseResizeAmount","resizeStartWidth","resizeWithShiftKey","headerTooltip","EVENT_MOVING_CHANGED","onColumnWidthChanged","EVENT_MENU_VISIBLE_CHANGED","onMenuVisible","isMenuVisible","dragChange","DropType","dropListeners","moveColumnController","eSecondaryContainers","bodyDropPivotTarget","ColumnMove","Pivot","currentDropListener","getDropType","dropType","needToMoveLeft","needToMoveRight","visibleState_1","ensureIntervalCleared","allowedCols","isLockVisible","isLockPinned","normaliseX","checkCenterForScrolling","xAdjustedForScroll","firstVisiblePixel","lastVisiblePixel","ensureIntervalStarted","fromEnter","lastDraggingEvent","xNormalised","hDirectionNormalised","normaliseDirection","dragSourceType","attemptMoveColumns","calculateOldIndex","movingCols","gridCols","allMovingColumns","xAdjusted","draggingLeft","draggingRight","validMoves","calculateValidMoves","constrainDirection","gridColIndex","allDisplayedCols","allGridCols","colIsNotMovingFunc","movingDisplayedCols","otherDisplayedCols","otherGridCols","widthOfMovingDisplayedCols_1","leftColumn","nextCol","isColumnHidden","movingIntervalId","intervalCount","failedMoveAttempts","moveInterval","pixelsToMove","pixelsMoved","columnsThatCanPin","pinType","columnsToAggregate","columnsToGroup","columnsToPivot","clearColumnsList","isAnyFunctionActive","AutoGroupColService_1","doingTreeData","doingMultiAutoColumn","rowGroupCol","createOneAutoGroupColumn","defaultAutoColDef","generateDefaultColDef","GROUP_AUTO_COLUMN_ID","GROUP_AUTO_COLUMN_BUNDLE_ID","userAutoColDef","headerCheckboxSelection","newCol","rowGroupColDef","innerRendererParams","existingNodesMap","getCopyOfNodesMap","orderMap","existingNode","existingKeys","colField","idToTry","showPopup","eMenu","positionCallback","setMenuVisible","isFilterAllowed","filterService","filterAccordingToColumnState","selectableService","passBecauseChildren","passBecauseDataPasses","setAllChildrenCountTreeData","setAllChildrenCountGridGrouping","sortService","sortAccordingToColumnsState","postSortFunc","sortOptions","childrenAfterSort","pullDownDataForHideOpenParents","sortedRowNodes","currentPos","compareRowNodes","sorted","updateChildIndexes","sortedNodeA","sortedNodeB","sortOption","isInverted","comparatorResult","clearOperation","childRowNode","groupDisplayCol","displayingGroupKey","parentToStealFrom","USE_SYMBOL","skipLeafNodes","showRootNode","topList","recursivelyAddToRowsToDisplay","ensureFooterNodeExists","addRowNodeToRowsToDisplay","rowsToFlatten","hideOpenParents","isParent","isGroupSuppressedNode","isSkippedLeafNode","isRemovedSingleChildrenGroup","isRemovedLowestSingleChildrenGroup","neverAllowToExpand","isHiddenOpenParent","excludedParent","uiLevelForChildren","createDetailNode","footerNode","masterNode","flower","childFlower","infiniteCache_1","destroyCache","infiniteCache","ds","resetCache","createModelUpdatedEvent","cacheSettings","InfiniteCache","rowIndexForPixel","activeBlockLoadsCount","printCacheStatus","blockToLoad","pageStatus","isLogging","RecursionType","refreshEverythingFunc","refreshMapFunc","nodeManager","ensureRowAtPixel","indexAtPixelNow","allLeafChildren","rowsToDisplay","createChangePath","rowNodeTransactions","noValueColumns","noTransactions","doRowGrouping","doFilter","doPivot","doAggregate","doSort","doRowsToDisplay","rowsMissing","firstRowHit","lastRowHit","lookingForLastRow","childOfLastRow","getRootNode","pixelToMatch","isRowInPixel","recursivelyWalkNodesAndCallback","Normal","AfterFilter","AfterFilterAndSort","PivotNodes","recursionType","nodeChildren","aggregationStage","expand","recursiveExpandOrCollapse","sortStage","groupStage","tran","rowNodeTransaction","restoreGroupState","filterStage","pivotStage","getGroupState","rowDataTransactionBatch","waitMillis","executeBatchUpdateRowData","callbackFuncsBound","rowNodeTrans","tranItem","rowNodeTran","commonUpdateRowData","rowDataTran","flattenStage","nextId","allNodesMap","ROOT_NODE_ID","isRowMasterFunc","doingLegacyTreeData","recursiveFunction","TOP_LEVEL","setLeafChildren","isLegacyTreeData","addRowNode","anyNodesSelected_1","lookupRowNode","updatedRowNode","newNode","createNode","rowNodeIdFunc","nodeChildDetails","canFlower","masterRowLevel","expandByDefault","childAfterGroup","leafChild","colDefFloatingCellRenderer","colDefCellRenderer","colDefCellEditor","colDefFilter","gridOptionsFullWidthCellRenderer","gridOptionsGroupRowRenderer","gridOptionsGroupRowInnerRenderer","xmlElement","booleanTransformer","prefixedSet","returnAttributeIfPopulated","xmlValue","createDateFormatter","frmt","overrideLocale","createDateParser","givenFormat","customLocale","dateOrig","matchIndex","regexStr","isBackSlash","ts","ts1","ts2","getDefaultHours","minHour","minMinutes","minSeconds","maxHr","maxMinutes","serializer","cycleReplacer","thisPos","getSerialize","exportName","VENDOR_PREFIXES","TEST_ELEMENT","setTimeoutContext","bindFn","invokeArrayArg","deprecationMessage","inherit","childP","baseP","boolOrFn","ifUndefined","splitStr","removeEventListeners","hasParent","inStr","findByKey","uniqueArray","prefixed","camelProp","_uniqueId","getWindowForElement","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","DIRECTION_VERTICAL","DIRECTION_UP","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","inputHandler","pointersLen","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","deltaTime","getAngle","getDistance","prevDelta","prevInput","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","getRotation","maxPointers","velocityX","velocityY","lastInterval","computeIntervalInputData","srcEvent","computeInputData","recognize","evEl","evTarget","evWin","MOUSE_INPUT_MAP","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","POINTER_INPUT_MAP","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","storeIndex","SINGLE_TOUCH_INPUT_MAP","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","normalizeSingleTouches","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","getTouches","allTouches","changedTargetTouches","TouchMouseInput","primaryTouch","lastTouches","recordTouches","setLastTouch","lastTouch","lts","isSyntheticEvent","inputEvent","inputData","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","getTouchActionProps","TouchAction","actions","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","preventSrc","Recognizer","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","PinchRecognizer","PressRecognizer","_timer","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","attrTest","optionPointers","isRecognized","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","domEvents","inputClass","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","oldCssProps","toggleCssProps","stopped","curRecognizer","existing","gestureEvent","triggerDomEvent","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Press","_objectSpread","_inheritsLoose","Util","$$$1","TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","toType","getSpecialTransitionEndEvent","bindType","delegateType","handleObj","transitionEndEmulator","triggerTransitionEnd","setTransitionEndSupport","emulateTransitionEnd","getUID","getSelectorFromElement","getTransitionDurationFromElement","transitionDuration","reflow","supportsTransitionEnd","typeCheckConfig","configTypes","expectedTypes","valueType","Alert","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","Selector","DISMISS","CLOSE","CLOSED","CLICK_DATA_API","ClassName","ALERT","FADE","SHOW","_proto","rootElement","_getRootElement","_triggerCloseEvent","_removeElement","closeEvent","_destroyElement","_jQueryInterface","_handleDismiss","alertInstance","Button","ACTIVE","BUTTON","FOCUS","DATA_TOGGLE_CARROT","DATA_TOGGLE","FOCUS_BLUR_DATA_API","addAriaPressed","Carousel","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","Default","keyboard","slide","DefaultType","Direction","NEXT","PREV","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHEND","LOAD_DATA_API","CAROUSEL","ITEM","ACTIVE_ITEM","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_getConfig","_indicatorsElement","_addEventListeners","_slide","nextWhenVisible","cycle","visibilityState","activeIndex","_getItemIndex","_keydown","makeArray","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","slideEvent","_setActiveIndicatorElement","nextIndicator","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","_dataApiClickHandler","slideIndex","$carousel","Collapse","SHOWN","HIDE","COLLAPSE","COLLAPSING","COLLAPSED","Dimension","HEIGHT","ACTIVES","_isTransitioning","_triggerArray","tabToggles","_selector","_getParent","_addAriaAndCollapsedClass","actives","activesData","_getDimension","setTransitioning","scrollSize","isTransitioning","_getTargetFromElement","triggerArray","$trigger","$target","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","DISABLED","DROPUP","DROPRIGHT","DROPLEFT","MENURIGHT","MENULEFT","POSITION_STATIC","FORM_CHILD","MENU","NAVBAR_NAV","VISIBLE_ITEMS","AttachmentMap","TOPEND","BOTTOMEND","RIGHTEND","LEFTEND","boundary","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","_getParentFromElement","_clearMenus","showEvent","referenceElement","_getPopperConfig","_getPlacement","$parentDropdown","offsetConf","popperConfig","toggles","dropdownMenu","hideEvent","_dataApiKeydownHandler","Modal","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","SCROLLBAR_MEASURER","BACKDROP","OPEN","DIALOG","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","NAVBAR_TOGGLER","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","handleUpdate","_enforceFocus","shownEvent","transitionComplete","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this8","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","isModalOverflowing","_getScrollbarWidth","_this9","actualPadding","calculatedPadding","actualMargin","calculatedMargin","scrollDiv","_this10","CLASS_PREFIX","BSCLS_PREFIX_REGEX","animation","fallbackPlacement","AUTO","HoverState","OUT","INSERTED","FOCUSOUT","TOOLTIP","TOOLTIP_INNER","ARROW","Trigger","HOVER","MANUAL","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_handlePopperPlacementChange","_fixTransition","prevHoverState","_cleanTipClass","getTitle","$tip","setElementContent","eventIn","eventOut","_fixTitle","titleType","tabClass","initConfigAnimation","TITLE","CONTENT","_Tooltip","_getContent","ScrollSpy","ACTIVATE","SCROLL","DROPDOWN_ITEM","DROPDOWN_MENU","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","OFFSET","POSITION","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","scrollSpys","$spy","Tab","ACTIVE_UL","DROPDOWN_ACTIVE_CHILD","listElement","itemSelector","hiddenEvent","_transitionComplete","dropdownChild","dropdownElement","minMajor","ltMajor","minMinor","minPatch","maxMajor","Scrollspy","_REVERSE_MAP","_MAP","_KEYCODE_MAP","_SHIFT_MAP","_SPECIAL_ALIASES","_bindMultiple","_directMap","_callbacks","_belongsTo","initialEventTarget","isContentEditable","handleKey","_handleKey","addKeycodes","documentMousetrap","_addEvent","_characterFromEvent","_isModifier","_pickBestAction","_getReverseMap","_getKeyInfo","combination","_keysFromString","ancestor","targetElement","_resetTimer","_sequenceLevels","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","modifiers1","modifiers2","seq","deleteCombo","deleteSequence","_fireCallback","_preventDefault","_stopPropagation","_handleKeyEvent","_eventModifiers","_bindSequence","_increaseSequence","nextAction","_callbackAndReset","wrappedCallback","_bindSingle","maxLevel","processedSequenceCallback","ignoreThisKeypress","combinations","statusCodes","defaultProtocol","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","writableStream","WritableStream","XDomainRequest","checkTypeSupport","haveArrayBuffer","haveSlice","VBArray","UNSENT","OPENED","HEADERS_RECEIVED","fetchTimer","rawHeaders","trailers","rawTrailers","statusCode","statusMessage","_resumeFetch","pipeTo","getReader","_charset","charsetMatch","responseBody","MSStreamReader","Stream","ReadableState","EElistenerCount","emitter","OurUint8Array","debugUtil","StringDecoder","destroyImpl","kProxyEvents","isDuplex","objectMode","readableObjectMode","hwm","readableHwm","readableHighWaterMark","defaultHwm","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","defaultEncoding","awaitDrain","readingMore","decoder","readableAddChunk","addToFront","skipChunkCheck","er","emitReadable","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","needMoreData","_undestroy","undestroy","setEncoding","MAX_HWM","howMuchToRead","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","hasStrings","nb","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","nOrig","doRead","pipeOpts","endFn","stdout","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","increasedAwaitDrain","dests","_fromList","ReflectOwnKeys","ReflectApply","NumberIsNaN","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","newListener","onceWrapper","fired","wrapFn","_onceWrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","setMaxListeners","getMaxListeners","doError","originalListener","spliceOne","rawListeners","eventNames","emitErrorNT","readableDestroyed","writableDestroyed","errorEmitted","ending","CorkedRequest","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","realHasInstance","nop","writableObjectMode","writableHwm","writableHighWaterMark","finalCalled","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","final","_final","doWrite","onwriteDrain","allBuffers","isBuf","callFinal","need","prefinish","getBuffer","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","afterTransform","_transformState","transforming","writechunk","needTransform","writeencoding","_flush","err2","Url","slashes","urlParse","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","ae","qm","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isAbsolute","normalizeArray","allowAboveRoot","resolvedPath","resolvedAbsolute","trailingSlash","fromParts","toParts","samePartsLength","outputParts","hasRoot","matchedSlash","basename","extname","startDot","startPart","preDotState","datepicker_instActive","datepicker_getZindex","Datepicker","_curInst","_keyEvent","_disabledInputs","_datepickerShowing","_inDialog","_mainDivId","_inlineClass","_appendClass","_triggerClass","_dialogClass","_disableClass","_unselectableClass","_currentClass","_dayOverClass","selectMonthLabel","selectYearLabel","showOn","showAnim","showOptions","appendText","buttonImage","buttonImageOnly","hideIfNoPrevNext","navigationAsDateFormat","gotoCurrent","yearRange","showOtherMonths","selectOtherMonths","showWeek","calculateWeek","iso8601Week","shortYearCutoff","beforeShowDay","beforeShow","onChangeMonthYear","onUpdateDatepicker","numberOfMonths","showCurrentAtPos","stepMonths","stepBigMonths","altField","constrainInput","showButtonPanel","autoSize","dpDiv","datepicker_bindHover","datepicker_handleMouseover","_isDisabledDatepicker","datepicker_extendRemove","markerClassName","maxRows","_widgetDatepicker","_attachDatepicker","inst","_newInst","_connectDatepicker","_inlineDatepicker","selectedDay","selectedYear","drawMonth","drawYear","_attachments","_doKeyDown","_doKeyPress","_doKeyUp","_autoSize","_disableDatepicker","_get","_showDatepicker","_lastInput","_hideDatepicker","findMax","maxI","_formatDate","divSpan","_setDate","_getDefaultDate","_updateDatepicker","_updateAlternate","_dialogDatepicker","scrollX","_dialogInst","_dialogInput","blockUI","_destroyDatepicker","_enableDatepicker","_getInst","_optionDatepicker","_getDateDatepicker","_getMinMaxDate","_changeDatepicker","_refreshDatepicker","_setDateDatepicker","noDefault","_setDateFromField","_getDate","dateStr","sel","handled","_selectDay","_adjustDate","_clearDate","_gotoToday","_possibleChars","lastVal","_getFormatConfig","beforeShowSettings","_findPos","_checkOffset","effects","effect","_shouldFocusInput","_generateHTML","_attachHandlers","origyearshtml","numMonths","_getNumberOfMonths","activeCell","yearshtml","dpWidth","dpHeight","inputWidth","inputHeight","viewWidth","viewHeight","pseudos","_tidyDialog","unblockUI","_checkExternalClick","_adjustInstDate","currentDay","_notifyChange","_selectMonthYear","_selectDate","noWeekends","checkDate","iFormat","iValue","shortYearCutoffTemp","lookAhead","getNumber","isDoubled","getName","shortNames","longNames","checkLiteral","_ticksTo1970","_getDaysInMonth","_daylightSavingAdjust","ATOM","COOKIE","RFC_822","RFC_850","RFC_1036","RFC_1123","RSS","TICKS","TIMESTAMP","W3C","formatNumber","formatName","_restrictMinMax","_determineDate","offsetNumeric","offsetString","setMilliseconds","noChange","origMonth","origYear","selectDay","selectMonth","selectYear","maxDraw","buttonPanel","cornerClass","calender","thead","leadDays","curRows","numRows","printDate","dRow","daySettings","otherMonth","tempDate","_canAdjustMonth","_isInRange","_generateMonthYearHeader","_getFirstDayOfMonth","inMinYear","inMaxYear","thisYear","determineYear","endYear","monthHtml","minMax","curYear","curMonth","yearSplit","minYear","maxYear","initialized","otherArgs","menuVisible","rowGroupActive","aggregationActive","lockPosition","lockPinned","lockVisible","initialise","actualWidth","suppressDotNotation","tooltipFieldContainsDots","showingAllGroups","showingThisGroup","colDefAny","floatingCellRenderer","floatingRendererFramework","pinnedRowCellRendererFramework","floatingRendererParams","pinnedRowCellRendererParams","floatingValueFormatter","cellFormatter","volatile","createIsColumnFuncParams","suppressNavigable","isColumnFunc","isRowDrag","suppressPaste","suppressResize","createColumnEvent","isSortAscending","isSortDescending","isSortNone","isSorting","getSortedAt","getRight","createBaseColDefParams","EVENT_ROW_GROUP_CHANGED","EVENT_PIVOT_CHANGED","isAnyFunctionAllowed","EVENT_VALUE_CHANGED","enablePivot","enableValue","enableRowGroup","getMenuTabs","defaultValues","menuTabs","crop","renderImageToCanvas","sourceX","imageSmoothingQuality","pixelRatio","downsamplingRatio","useCanvas","scaleUp","scaleDown","getExifThumbnail","exifTagTypes","dataOffset","ascii","getExifValue","tagSize","tagType","parseExifTag","parseExifTags","dirOffset","tagsNumber","dirEndOffset","tagOffset","exifOffsets","parseExifData","disableExif","thumbnailData","disableExifOffsets","exifTiffOffset","exifLittleEndian","disableExifThumbnail","Thumbnail","disableExifSub","disableExifGps","exifWriters","writeExifData","ObjectName","parseIptcTags","sectionLength","getStringFromDB","outstr","fieldValue","dataSize","segmentType","segmentStartPos","iptc","parseIptcData","disableIptc","isFieldSegmentStart","nameHeaderLength","windowNames","getWindowNames","$assign","factories","partArgs","un","EPSILON32","MAX32","MIN32","$abs","$sign","strong","MAP","getEntry","$iterDefine","SIZE","InternalMap","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","WEAK_MAP","uncaughtFrozenStore","ufstore","$WeakMap","$has","UncaughtFrozenStore","findUncaughtFrozen","IS_CONCAT_SPREADABLE","mapper","spreadable","sourceIndex","isEntries","globalEventService","onColumnsChanged","expandGroupsByDefault","destroyColumnComps","columnTree","groupsExist","recursivelyAddComps","updateVisibilityOfRows","columnComps","renderedItem","recursivelyAddGroupComps","renderedGroup","fireExpandedEvent","expandedCount","notExpandedCount","recursiveFunc","recursivelyAddColumnComps","renderedColumn","filterResults","createFilterResults","recursivelySetVisibility","recursivelyCheckFilter","atLeastOneThisLevelPassed","atLeastOneChildPassed","getDisplayName","parentGroupsOpen","passesFilter","childrenOpen","onSelectAllChanged","expandedCallback","processingColumnStateChange","eText","setupExpandContract","onColumnStateChanged","setOpenClosedIcons","setupDragging","addVisibilityListenersToAllChildren","eDragHandle","eGroupClosedIcon","eGroupOpenedIcon","onExpandOrContractClicked","eColumnGroupIcons","onLabelClicked","nextState","cbSelect","onChangeCommon","onCheckboxChanged","actionCheckedReduce","actionUnCheckedReduce","allowedColumns","selectionCallback","columnsToUnPivot","columnsToUnValue","columnsToUnGroup","selectedValue","workOutSelectedValue","readOnlyValue","workOutReadOnlyValue","colsThatCanAction","visibleChildCount","hiddenChildCount","isColumnVisible","pivoted","grouped","aggregated","folderOpen","isSelectable","actionCheckedPivotMode","actionUnCheckedPivotMode","functionPassive","copyOfPivotColumns","copyOfValueColumns","copyOfRowGroupColumns","event_6","checkboxReadOnly","anyFunctionActive","noFunctionsAllowed","checkboxPassive","aggDetails","createAggDetails","recursivelyCreateAggData","notPivoting","aggregateRowNode","aggResult","measureColumnsMissing","pivotColumnsMissing","aggregateRowNodeUsingValuesOnly","aggregateRowNodeUsingValuesAndPivot","valueColDef","getValuesFromMappedSet","getValuesPivotNonLeaf","aggregateValues","aggResults","changedValueColumns","notChangedValueColumns","values2d","getValuesNormal","oldValues","mappedSet","mapPointer","valueColumnCount","aggFuncOrString","aggFunction","groupIdSequence","createGroupingDetails","handleTransaction","shotgunResetEverything","sortGroupsWithComparator","groupedCols","usingTransaction","includeParents","groupedColCount","insertNodes","moveNodesInWrongPath","removeNodes","recursiveSortChildren","recursiveSort","getExistingPathForNode","infoToKeyMapper","oldPath","newPath","getGroupInfo","moveNode","removeOneNode","insertOneNode","newParent","leafRowNodes","leafToRemove","forEachParentGroup","newGroupNode_1","findParentForNode","mapKey","getChildrenMappedKey","addToParent","parentGroup","swapGroupWithUserNode","groupInfo","getOrCreateNextNode","fillerGroup","userGroup","createGroup","getGroupInfoFromCallback","getGroupInfoFromGroupColumns","keyExists","CheckboxState","debounceFilterChanged","eIndeterminateCheckedIcon","updateCheckboxIcon","eSelectAll","selectAllState","INTERMEDIATE","setLoading","eFilterLoading","virtualList","cellHeight","createSetListItem","toSelect","setFilterValues","ModelWrapper","suppressMiniFilter","eMiniFilter","getMiniFilter","onMiniFilterChanged","eSelectAllContainer","updateSelectAll","listItem","isValueSelected","EVENT_SELECTED","onItemSelected","isEverythingSelected","selectAllOnMiniFilter","isNothingSelected","keepSelection","isSelectAll","refreshAfterNewRowsLoaded","onFilterValuesReady","setValuesType","SetFilterModelValuesType","PROVIDED_LIST","refreshValues","selectValue","resetFilterValues","NOT_PROVIDED","refreshAfterAnyFilterChanged","setMiniFilter","doSelectAll","selectEverything","selectNothing","unselectValue","newMiniFilter","getUniqueValueCount","getUniqueValue","dataModel","getDisplayedValueCount","getDisplayedValue","NULL_VALUE","modelUpdatedFunc","isLoadingFunc","valuesType","PROVIDED_CB","showingAvailableOnly","suppressRemoveEntries","createAllUniqueValues","createAvailableUniqueValues","displayedValues","availableUniqueValues","miniFilter","selectedValuesMap","refreshSelection","valuesToUse","setValues","oldModel","processMiniFilter","areValuesSync","extractSyncValuesToUse","filterValuesPromise","filterValuesExternalPromise","onAsyncValuesLoaded","allUniqueValues","sortValues","uniqueValuesAsAnyObjects","getUniqueValues","filterOutNotAvailable","uniqueCheck","addUniqueValueIfMissing","miniFilterUpperCase","matchesFn","valueToCheck","displayedValue","formattedValue","selectOn","toSelectOn","safeKey","valueToKey","selectedValuesCount","keyToValue","selectedValues","setSyncModel","rawValue","eClickableArea","valueElement","valueObj","componentPromise","aggregationsComponent","infoLabel","createStatusItems","statusItemSum","statusItemCount","statusItemMin","statusItemMax","statusItemAvg","forEachStatusItem","statusItem","numberCount","cellsSoFar","gotResult","gotNumberResult","lbValue","detailCellRenderer_1","licenseManager","selectionConfirmed","originalSelectedValue","createRowComponent","renderSelectedValue","valueToSelect","setSelectedValue","mouseY","populateWithRenderer","populateWithoutRenderer","activeMenu","defaultTab","menu","showTab","restrictToTabs","lastSelectedTab","eMenuGui","showTabBasedOnPreviousSelection","EVENT_TAB_SELECTED","EVENT_DESTROYED","TABS_DEFAULT","initialSelection","restrictTo","tabFactories","includeChecks","TAB_GENERAL","createMainPanel","TAB_FILTER","createFilterPanel","TAB_COLUMNS","createColumnsPanel","isFilterEnabled","isFloatingFiltersEnabled","isAnyFilteringEnabled","suppressFilterForThisColumn","tabbedLayout","menuTabName","isValidMenuTabItem","isNotSuppressed","createTab","onActiveItemClicked","onHidePopup","onItemClicked","onTabItemClicked","itemsToConsider","toShow","tabItemColumns","showItem","tabItemFilter","tabItemGeneral","showFirstItem","columnSelectPanel","mainMenuList","getMenuItems","defaultMenuOptions","getDefaultMenuOptions","defaultItems","MENU_ITEM_SEPARATOR","allowPinning","rowGroupCount","doingGrouping","groupedByThisColumn","allowValue","allowRowGroup","pivotModeOn","isInMemoryRowModel","allowValueAgg","allowExpandAndContract","menuItemsMapped","menuItemMapper","bodyPromise","afterFilterAttachedCallback","afterAttachedCallback","eWrapperDiv","setAfterAttachedParams","popupShowing","setTextValue","setupRemove","onShowAggFuncSelection","btRemove","displayValue","createAggSelect","aggFuncStringTranslated","AggItemComp","itemSelected","suppressExcel","suppressCsv","ContextMenu","menuList","rowNodesByIndex","onViewportChanged","calculateFirstRow","bufferSize","afterBuffer","calculateLastRow","purgeRowsNotInViewport","setViewportRange","setRowCount","firstNodeOutOfRange","lastNodeOutOfRange","callbackCount","toolPanelSelectComp","registerColumnComp","columnComp","childDestroyFuncs","eCenterPanel","destroyChildren","cbPivotMode","onBtPivotMode","pivotModeActive","columnValue","columnNotValue","columnPanel","btShow","showButtons","ExcelGridSerializingSession","excelXmlFactory","baseExcelStyles","styleLinker","suppressTextAsCDATA","mixedStyles","mixedStyleCounter","stylesByIds","excelStyles","currentCells","styleIds","HEADER_GROUPING","createMergedCell","onNewRow","onNewHeaderColumn","onNewBodyColumn","onNewColumnAccumulator","HEADER","createCell","rowArray","BODY","excelStyleId","addNewMixedStyle","excelID","excelId","resultantStyle","excelStyle","styleExists","typeTransformed","massageText","numOfCells","rowType","applicableStyles","_baseFrameworkFactory","generateBindables","bindingModeToUse","behaviorResource","getOrCreateOwn","HtmlBehaviorResource","nameOrConfigOrTarget","BindableProperty","registerWith","DO_NOT_EXPORT_CODEPAGE","cpt","sbcs_cache","dbcs_cache","magic_cache","magic_decode","magic_encode","cpdcache","cpecache","sfcc","cca","mdb","sbcs_encode","EE","make_EE","ofmt","sbcs_decode","dbcs_encode","dbcs_decode","utf8_d","direct","encache","null_enc","cp_decache","decache","last_enc","last_cp","sbcs","dbcs","BM","dash","o64","isstr","hascp","XmlHttpRequestApi","ActiveXObjectApi","addQueryString","queryString","paramName","fetchIt","fetchOptions","omitFetchOptions","queryStringParams","customHeaders","reqOptions","requestOptions","requestWithFetch","crossDomain","requestWithXmlHttpRequest","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","script","querySelectorFunc","addToObjectProps","listenerFunc","methodFunc","instanceName","Method","getDefaults","addPath","parsePayload","reloadInterval","Backend","allOptions","_readAny","loadUrlLanguages","loadUrlNamespaces","resolvedLoadPath","loadUrl","parseErr","dataArray","resArray","_this$services","currentLanguage","__self__","DOMException","viewClasses","normalizeName","iteratorFor","Headers","consumed","bodyUsed","fileReaderReady","readBlobAsArrayBuffer","bufferClone","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","_bodyFormData","_bodyArrayBuffer","readAsText","readArrayBufferAsText","formData","upcased","referrer","form","Response","bodyInit","redirectStatuses","redirect","abortXhr","polyfill","ponyfill","webpackContext","webpackContextResolve","previousToast","toastId","toastType","toastr","$toastElement","clearOptions","getOptions","clearToast","toastsToClear","clearContainer","removeToast","optionsOverride","iconClass","containerId","positionClass","createContainer","hideMethod","hideDuration","hideEasing","publish","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","toastClass","escapeHtml","titleClass","setTitle","messageClass","setMessage","closeButton","closeClass","progressClass","newestOnTop","ariaValue","setAria","showMethod","showDuration","showEasing","onShown","timeOut","hideToast","updateProgress","closeOnHover","stickAround","delayedHideToast","onclick","tapToDismiss","onCloseClick","override","closeMethod","closeDuration","closeEasing","onHidden","extendedTimeOut","percentage","noGlobal","flat","class2type","fnToString","ObjectFunctionString","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","isArrayLike","pushStack","prevObject","even","_elem","odd","copyIsArray","expando","globalEval","callbackExpect","Sizzle","Expr","isXML","tokenize","outermostContext","sortInput","hasDuplicate","setDocument","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","whitespace","rwhitespace","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","nonHex","rcssescape","fcssescape","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","nid","newSelector","newContext","qsa","toSelector","qsaError","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","matchIndexes","namespaceURI","hasCompare","subWindow","getElementsByName","attrId","getAttributeNode","disconnectedMatch","adown","bup","sortDetached","aup","ap","bp","specified","uniqueSort","duplicates","detectDuplicates","sortStable","createPseudo","preFilter","excess","unquoted","nodeNameSelector","_argument","ofType","uniqueCache","outerCache","nodeIndex","useCache","pseudo","setFilters","unmatched","elemLang","_matchIndexes","radio","submit","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","_name","isXMLDoc","escapeSelector","truncate","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","addBack","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","adoptValue","noValue","Callbacks","createOptions","firing","memory","firingIndex","stopOnFalse","lock","fireWith","tuples","always","newDefer","tuple","returned","onProgress","maxDepth","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","updateFunc","rerrorNames","readyException","readyList","readyWait","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","acceptData","owner","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","_removeData","dequeue","startLength","_queueHooks","clearQueue","pnum","rcssNum","cssExpand","isAttached","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","maxIterations","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","checkClone","noCloneChecked","wrapMap","_default","setGlobalEval","refElements","tfoot","colgroup","caption","optgroup","buildFragment","scripts","ignored","htmlPrefilter","rtypenamespace","returnTrue","expectSync","safeActiveElement","origFn","leverageNative","notAsync","saved","isTrigger","handleObjIn","eventHandle","origType","elemData","triggered","delegateCount","mappedTypes","origCount","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","noBubble","beforeunload","defaultPrevented","isSimulated","bubbles","eventPhase","toElement","mouseenter","mouseleave","pointerenter","pointerleave","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","replaceAll","rnumnonpx","getStyles","opener","rboxStyle","curCSS","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","letterSpacing","setPositiveNumber","boxModelAdjustment","isBorderBox","computedVal","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","cssHooks","origName","isCustomProp","scrollboxSizeBuggy","propHooks","eased","linear","swing","fxNow","inProgress","rfxtypes","rrun","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","prefilters","tweens","specialEasing","originalOptions","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","prefilter","speed","speeds","fadeTo","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","classesToArray","removeProp","propFix","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","simulate","attaches","rquery","parseXML","parserErrorElem","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","etag","processData","contentType","accepts","responseFields","converters","ajaxSetup","ajaxPrefilter","ajaxTransport","cacheURL","responseHeadersString","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","requestHeadersNames","strAbort","getResponseHeader","finalText","hasContent","ifModified","beforeSend","nativeStatusText","responses","isSuccess","modified","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","htmlIsFunction","xhrSuccessStatus","xhrSupported","cors","errorCallback","xhrFields","scriptAttrs","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","animated","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","scrollTo","defaultExtra","undelegate","fnOver","fnOut","holdReady","parseJSON","_jQuery","HASH_UNDEFINED","argsTag","boolTag","dateTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reFlags","reIsHostCtor","reIsUint","cloneableTags","freeSelf","freeExports","freeModule","moduleExports","addMapEntry","addSetEntry","initAccum","isHostObject","mapToArray","overArg","setToArray","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","funcToString","reIsNative","getPrototype","objectCreate","nativeGetSymbols","nativeIsBuffer","getNative","WeakMap","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","ListCache","MapCache","Stack","__data__","arrayLikeKeys","inherited","isObjectLike","isArrayLikeObject","baseTimes","skipIndexes","isIndex","objValue","assocIndexOf","baseClone","isDeep","customizer","isArr","initCloneArray","copyArray","getTag","isFunc","cloneBuffer","isPrototype","initCloneObject","copyObject","copySymbols","baseAssign","cloneFunc","cloneArrayBuffer","cloneDataView","typedArray","cloneTypedArray","cloneMap","cloneRegExp","cloneSet","symbol","initCloneByTag","stacked","symbolsFunc","arrayPush","baseGetAllKeys","getAllKeys","arrayEach","subValue","baseIsNative","getMapData","LARGE_ARRAY_SIZE","ctorString","isLength","baseKeys","_URITemplate","operators","named","empty_name_separator","EXPRESSION_PATTERN","VARIABLE_PATTERN","VARIABLE_NAME_PATTERN","LITERAL_PATTERN","variables","maxlength","explode","expandNamed","_encode","expandUnnamed","eMatch","vMatch","ePattern","vPattern","nPattern","lPattern","expansion","Axios","axios","CancelToken","isCancel","isSlowBuffer","InterceptorManager","dispatchRequest","interceptors","normalizedName","serializedParams","ignoreDuplicateOf","originURL","urlParsingNode","resolveURL","requestURL","expires","secure","toGMTString","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","relativeURL","resolvePromise","getRandomValues","msCrypto","rnds8","byteToHex","bth","logging","isLoggingFunc","ManagedVisibilityStrategy","NonManagedVisibilityStrategy","managed","onSuppressRowDrag","workOutVisibility","updateSortActive","updateFilterActive","updateRowGroupActive","rowGroups","sortActive","sortOrFilterOrGroupActive","BaseFilterWrapperComp","enrichBody","floatingFilterCompPromise","eButtonShowMainFilter","showParentFilter","floatingFilterBody","floatingFilterCompUi","mainModel","eOverlayWrapper","LOADING_WRAPPER_OVERLAY_TEMPLATE","loadingOverlayWrapper","showOverlay","NO_ROWS_WRAPPER_OVERLAY_TEMPLATE","eNoRowsOverlayWrapper","noRowsOverlayWrapper","lastMovingChanged","setupTap","setupIcons","setupMenu","setupSort","setupFilterIcon","setupText","addInIcon","eSortAsc","eSortDesc","eSortNone","removeSortIcons","eSortOrder","sortUsingCtrl","movedRecently","setMultiSortOrder","alwaysHideNoSort","allColumnsWithSorting","indexThisCol","moreThanOneColSorting","showIndex","setupLabel","addGroupExpandIcon","setupExpandIcons","expandAction","newExpandedValue","addTouchAndClickListeners","eCloseIcon","eOpenIcon","stopPropagationAction","updateIconVisibility","DEFAULT_LOADING_OVERLAY_TEMPLATE","localisedTemplate","DEFAULT_NO_ROWS_TEMPLATE","rowTemplatesToAdd","afterGuiAttachedCallbacks","verticalScrollPosition","domOrder","htmlToAdd","lastPlacedElement","onEnterOrDragging","normaliseForScroll","doManagedDrag","pixelRange","needToMoveUp","needToMoveDown","vDirectionString","yNormalised","overIndex","overNode","stopDragging","cbSelectAllVisible","processingEventFromCheckbox","filteredOnly","headerCheckboxSelectionFilteredOnly","showOrHideSelectAll","onModelChanged","onCbSelectAll","isCheckboxSelection","checkRightRowModelType","updateStateOfCheckbox","getNextCheckboxState","selectionCount","notSelected","getSelectionCount","allSelected","selectedCount","notSelectedCount","childColumnsDestroyFuncs","appendHeaderGroupComp","addClasses","leafCols","headerGroupComp","eHeaderGroup","isSuppressMoving","getDragItemForGroup","allColumnsOriginalOrder","allColumnsCurrentOrder","childSuppressesMoving","addListenersToChildrenColumns","onDisplayedChildrenChanged","destroyListenersOnChildrenColumns","widthChangedListener","eHeaderCellResize","resizeCols","resizeRatios","takeFromGroup","takeFromLeafCols","resizeTakeFromCols","resizeTakeFromStartWidth","resizeTakeFromRatios","normaliseDragChange","numericColumn","AngularDirectiveController","$attrs","keyOfGridInScope","agGrid","$eval","gridParams","grid","angular","directive","restrict","infiniteBlock_1","dontCreatePage","InfiniteBlock","setIndexAndTopOnRowNode","doChangeDetection","onlyChangedColumns","btFirst","onBtFirst","btLast","onBtLast","btNext","onBtNext","btPrevious","onBtPrevious","enableOrDisableButtons","updateRowLabels","setCurrentPageLabel","setTotalLabels","pagesExist","toDisplay","lbCurrent","strPage","strTo","strOf","disablePreviousAndFirst","zeroPagesToDisplay","isZeroPagesToDisplay","disableNext","disableLast","lbFirstRowOnPage","lbLastRowOnPage","lastPageFound","lbTotal","lbRecordCount","moreText","registered","registerElement","AgileGridProto","__agGridSetProperty","__agGridGetProperty","agGridProtoNoType","__attributes","changeObject","_initialised","_gridOptions","setGridOptions","_agGrid","createdCallback","setPropertyFromAttribute","myString","attachedCallback","detachedCallback","attributeChangedCallback","eventLowerCase","browserEvent","agGridDetails","callbackMethod","eHeader","afterAttachedParams","itemWrapper","eClone","tabbedItem","showItemWrapper","eHeaderButton","activeItem","isLayoutPanel","childPanels","addPanel","httpRequest","httpResponse","nodeAIsGroup","nodeBIsGroup","bothAreNormal","OriginalConstructor","createMethod","createMethodProxy","destroyFunctions","dispatchEventAsync","Window","aureliaFrameworkFactory_1","agUtils_1","agTemplate_1","aureliaFrameworkComponentWrapper_1","auFrameworkFactory","aureliaFrameworkComponentWrapper","_nativeElement","queueTask","initGrid","toColDef","fullWidthRowTemplate","fullWidthCellRendererFramework","dateTemplate","dateComponentFramework","propertyChanged","detached","bindable","AgDateTemplate","customElement","inlineView","Container","ViewResources","mappedColumnProperties","AgGridColumn_1","hasChildColumns","createColDefFromGridColumn","getChildColDefs","defaultAction","templateName","frameworkName","templates","editorTemplate","filterTemplate","headerTemplate","headerGroupTemplate","pinnedRowTemplate","AgHeaderTemplate","AgHeaderGroupTemplate","AgPinnedRowTemplate","parseElement","compiler","instruction","targetInstruction","elementInstruction","noView","processContent","TargetInstruction"],"mappings":"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MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,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,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbzoH,IAAK,CAAC,MAAO,OACb0oH,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbp+N,IAAK,CAAC,MAAO,MACbq+N,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbn2L,IAAK,CAAC,MAAO,MACbo2L,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OA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GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,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AAOrxM,UAAU87c,iBAAiB18c,KAAKa,KAAM4rc,EAAqBD,EAAkBG,GACzG3ra,EAAQngC,KAAKi7c,cAAcQ,EAAmBrzB,QAAS0jB,GACvD1ra,EAAMpgC,KAAKi7c,cAAcQ,EAAmBpzB,MAAOyjB,GASvD,MAPI,iBAAiBp4b,KAAKi4b,KACtBxra,EAAM+sW,QAAQ,QAEV9sW,EAAIm1M,WACJn1M,EAAIiT,IAAI,EAAG,QAAQ65V,QAAQ,SAG5B,IAAI+hD,EAAevyY,QAAQvc,EAAOC,IAEtC05Z,EApBuC,CADrBlZ,EAAoB,IAsBxBlkY,SACzBr+C,EAAQq+C,QAAUo9Y,GAIV,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACC,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CAEH,SAAU17b,EAAQC,EAASuib,GAEjC57a,OAAO2H,eAAetO,EAAS,aAAc,CAAEqG,OAAO,IACtD,IAAIuqb,EAAiBrO,EAAoB,GACrCg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AAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,QAMd8kiB,EAAG9kiB,OAAO,oBAAoB,CAC5B,aACC,SAAUu3B,GACX,SAAS+2gB,EAAazF,EAAUlrhB,GAC9B2whB,EAAY9G,UAAUhshB,YAAYxa,KAAKa,MAkCzC,OA/BA01B,EAAM4vgB,OAAOmH,EAAa/2gB,EAAM67D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","file":"vendors.85921d4b44273fef05fb.js","sourcesContent":["/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.7.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context,\n enableAsyncHooks, disableAsyncHooks) {\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nvar deferUnhandledRejectionCheck;\n(function() {\n var promises = [];\n\n function unhandledRejectionCheck() {\n for (var i = 0; i < promises.length; ++i) {\n promises[i]._notifyUnhandledRejection();\n }\n unhandledRejectionClear();\n }\n\n function unhandledRejectionClear() {\n promises.length = 0;\n }\n\n deferUnhandledRejectionCheck = function(promise) {\n promises.push(promise);\n setTimeout(unhandledRejectionCheck, 1);\n };\n\n es5.defineProperty(Promise, \"_unhandledRejectionCheck\", {\n value: unhandledRejectionCheck\n });\n es5.defineProperty(Promise, \"_unhandledRejectionClear\", {\n value: unhandledRejectionClear\n });\n})();\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n deferUnhandledRejectionCheck(this);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var context = Promise._getContext();\n possiblyUnhandledRejection = util.contextBind(context, fn);\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var context = Promise._getContext();\n unhandledRejectionHandled = util.contextBind(context, fn);\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\n\nvar legacyHandlers = {\n unhandledrejection: {\n before: function() {\n var ret = util.global.onunhandledrejection;\n util.global.onunhandledrejection = null;\n return ret;\n },\n after: function(fn) {\n util.global.onunhandledrejection = fn;\n }\n },\n rejectionhandled: {\n before: function() {\n var ret = util.global.onrejectionhandled;\n util.global.onrejectionhandled = null;\n return ret;\n },\n after: function(fn) {\n util.global.onrejectionhandled = fn;\n }\n }\n};\n\nvar fireDomEvent = (function() {\n var dispatch = function(legacy, e) {\n if (legacy) {\n var fn;\n try {\n fn = legacy.before();\n return !util.global.dispatchEvent(e);\n } finally {\n legacy.after(fn);\n }\n } else {\n return !util.global.dispatchEvent(e);\n }\n };\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var eventData = {\n detail: event,\n cancelable: true\n };\n var domEvent = new CustomEvent(name, eventData);\n es5.defineProperty(\n domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(\n domEvent, \"reason\", {value: event.reason});\n\n return dispatch(legacyHandlers[name], domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var domEvent = new Event(name, {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return dispatch(legacyHandlers[name], domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name, false, true,\n event);\n return dispatch(legacyHandlers[name], domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n if (\"asyncHooks\" in opts && util.nodeSupportsAsyncResource) {\n var prev = config.asyncHooks;\n var cur = !!opts.asyncHooks;\n if (prev !== cur) {\n config.asyncHooks = cur;\n if (cur) {\n enableAsyncHooks();\n } else {\n disableAsyncHooks();\n }\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = (firstLineError.stack || \"\").split(\"\\n\");\n var lastStackLines = (lastLineError.stack || \"\").split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false,\n asyncHooks: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n asyncHooks: function() {\n return config.asyncHooks;\n },\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var context = Promise._getContext();\n holder.fn = util.contextBind(context, holder.fn);\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var context = Promise._getContext();\n this._callback = util.contextBind(context, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n if (util.isArray(promises)) {\n for (var i = 0; i < promises.length; ++i) {\n var maybePromise = promises[i];\n if (maybePromise instanceof Promise) {\n maybePromise.suppressUnhandledRejections();\n }\n }\n }\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\nutil.setReflectHandler(reflectHandler);\n\nvar getDomain = function() {\n var domain = process.domain;\n if (domain === undefined) {\n return null;\n }\n return domain;\n};\nvar getContextDefault = function() {\n return null;\n};\nvar getContextDomain = function() {\n return {\n domain: getDomain(),\n async: null\n };\n};\nvar AsyncResource = util.isNode && util.nodeSupportsAsyncResource ?\n _dereq_(\"async_hooks\").AsyncResource : null;\nvar getContextAsyncHooks = function() {\n return {\n domain: getDomain(),\n async: new AsyncResource(\"Bluebird::Promise\")\n };\n};\nvar getContext = util.isNode ? getContextDomain : getContextDefault;\nutil.notEnumerableProp(Promise, \"_getContext\", getContext);\nvar enableAsyncHooks = function() {\n getContext = getContextAsyncHooks;\n util.notEnumerableProp(Promise, \"_getContext\", getContextAsyncHooks);\n};\nvar disableAsyncHooks = function() {\n getContext = getContextDomain;\n util.notEnumerableProp(Promise, \"_getContext\", getContextDomain);\n};\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\n\nvar debug = _dereq_(\"./debuggability\")(Promise, Context,\n enableAsyncHooks, disableAsyncHooks);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n\n if (typeof fn !== \"function\") {\n throw new TypeError(\"The last argument to .catch() \" +\n \"must be a function, got \" + util.toString(fn));\n }\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var context = getContext();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: util.contextBind(context, handler),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise,\n receiver, context);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n var bitField = this._bitField;\n this._bitField = bitField |\n (((bitField & 536870912) >> 2) ^\n 134217728);\n};\n\nPromise.prototype._setNoAsyncGuarantee = function() {\n this._bitField = (this._bitField | 536870912) &\n (~134217728);\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n context\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 = util.contextBind(context, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 = util.contextBind(context, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n util.contextBind(context, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n util.contextBind(context, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(maybePromise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.toStringTag) {\n es5.defineProperty(Promise.prototype, Symbol.toStringTag, {\n get: function () {\n return \"Object\";\n }\n });\n}\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async);\nPromise.Promise = Promise;\nPromise.version = \"3.7.2\";\n_dereq_('./call_get.js')(Promise);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./any.js')(Promise);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./filter.js')(Promise, INTERNAL);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36,\"async_hooks\":undefined}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n values.suppressUnhandledRejections();\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var context = Promise._getContext();\n this._fn = util.contextBind(context, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined &&\n this._eachValues !== null &&\n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n for (var j = i; j < length; ++j) {\n var maybePromise = values[j];\n if (maybePromise instanceof Promise) {\n maybePromise.suppressUnhandledRejections();\n }\n }\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n\n if ((i & 127) === 0) {\n value._setNoAsyncGuarantee();\n }\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova)) &&\n (\"classList\" in document.documentElement)) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.allSettled = function (promises) {\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if (classString(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nvar reflectHandler;\nfunction contextBind(ctx, cb) {\n if (ctx === null ||\n typeof cb !== \"function\" ||\n cb === reflectHandler) {\n return cb;\n }\n\n if (ctx.domain !== null) {\n cb = ctx.domain.bind(cb);\n }\n\n var async = ctx.async;\n if (async !== null) {\n var old = cb;\n cb = function() {\n var args = (new Array(2)).concat([].slice.call(arguments));;\n args[0] = old;\n args[1] = this;\n return async.runInAsyncScope.apply(async, args);\n };\n }\n return cb;\n}\n\nvar ret = {\n setReflectHandler: function(fn) {\n reflectHandler = fn;\n },\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n contextBind: contextBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version;\n if (process.versions && process.versions.node) {\n version = process.versions.node.split(\".\").map(Number);\n } else if (process.version) {\n version = process.version.split(\".\").map(Number);\n }\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\nret.nodeSupportsAsyncResource = ret.isNode && (function() {\n var supportsAsync = false;\n try {\n var res = _dereq_(\"async_hooks\").AsyncResource;\n supportsAsync = typeof res.prototype.runInAsyncScope === \"function\";\n } catch (e) {\n supportsAsync = false;\n }\n return supportsAsync;\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13,\"async_hooks\":undefined}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v18.1.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar Context = (function () {\n function Context(params, logger) {\n this.beans = {};\n this.componentsMappedByName = {};\n this.destroyed = false;\n if (!params || !params.beans) {\n return;\n }\n this.contextParams = params;\n this.logger = logger;\n this.logger.log(\">> creating ag-Application Context\");\n this.setupComponents();\n this.createBeans();\n var beans = utils_1.Utils.mapObject(this.beans, function (beanEntry) { return beanEntry.beanInstance; });\n this.wireBeans(beans);\n this.logger.log(\">> ag-Application Context ready - component is alive\");\n }\n Context.prototype.setupComponents = function () {\n var _this = this;\n if (this.contextParams.components) {\n this.contextParams.components.forEach(function (componentMeta) { return _this.addComponent(componentMeta); });\n }\n };\n Context.prototype.addComponent = function (componentMeta) {\n // get name of the class as a string\n // let className = _.getNameOfClass(ComponentClass);\n // insert a dash after every capital letter\n // let classEscaped = className.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n var classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n // put all to upper case\n var classUpperCase = classEscaped.toUpperCase();\n // finally store\n this.componentsMappedByName[classUpperCase] = componentMeta.theClass;\n };\n Context.prototype.createComponent = function (element, afterPreCreateCallback) {\n var key = element.nodeName;\n if (this.componentsMappedByName && this.componentsMappedByName[key]) {\n var newComponent = new this.componentsMappedByName[key]();\n this.wireBean(newComponent, afterPreCreateCallback);\n return newComponent;\n }\n else {\n return null;\n }\n };\n Context.prototype.wireBean = function (bean, afterPreCreateCallback) {\n if (!bean) {\n throw Error(\"Can't wire to bean since it is null\");\n }\n this.wireBeans([bean], afterPreCreateCallback);\n };\n Context.prototype.wireBeans = function (beans, afterPreCreateCallback) {\n this.autoWireBeans(beans);\n this.methodWireBeans(beans);\n this.preConstruct(beans);\n // the callback sets the attributes, so the component has access to attributes\n // before postConstruct methods in the component are executed\n if (utils_1.Utils.exists(afterPreCreateCallback)) {\n beans.forEach(afterPreCreateCallback);\n }\n this.postConstruct(beans);\n };\n Context.prototype.createBeans = function () {\n var _this = this;\n // register all normal beans\n this.contextParams.beans.forEach(this.createBeanEntry.bind(this));\n // register override beans, these will overwrite beans above of same name\n if (this.contextParams.overrideBeans) {\n this.contextParams.overrideBeans.forEach(this.createBeanEntry.bind(this));\n }\n // instantiate all beans - overridden beans will be left out\n utils_1.Utils.iterateObject(this.beans, function (key, beanEntry) {\n var constructorParamsMeta;\n if (beanEntry.bean.__agBeanMetaData && beanEntry.bean.__agBeanMetaData.autowireMethods && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {\n constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;\n }\n var constructorParams = _this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);\n var newInstance = applyToConstructor(beanEntry.bean, constructorParams);\n beanEntry.beanInstance = newInstance;\n _this.logger.log(\"bean \" + _this.getBeanName(newInstance) + \" created\");\n });\n };\n Context.prototype.createBeanEntry = function (Bean) {\n var metaData = Bean.__agBeanMetaData;\n if (!metaData) {\n var beanName = void 0;\n if (Bean.prototype.constructor) {\n beanName = Bean.prototype.constructor.name;\n }\n else {\n beanName = \"\" + Bean;\n }\n console.error(\"context item \" + beanName + \" is not a bean\");\n return;\n }\n var beanEntry = {\n bean: Bean,\n beanInstance: null,\n beanName: metaData.beanName\n };\n this.beans[metaData.beanName] = beanEntry;\n };\n Context.prototype.autoWireBeans = function (beans) {\n var _this = this;\n beans.forEach(function (bean) { return _this.autoWireBean(bean); });\n };\n Context.prototype.methodWireBeans = function (beans) {\n var _this = this;\n beans.forEach(function (bean) {\n if (!bean) {\n throw Error(\"Can't wire to bean since it is null\");\n }\n return _this.methodWireBean(bean);\n });\n };\n Context.prototype.autoWireBean = function (bean) {\n var _this = this;\n var currentBean = bean;\n var _loop_1 = function () {\n var currentConstructor = currentBean.constructor;\n if (currentConstructor.__agBeanMetaData && currentConstructor.__agBeanMetaData.agClassAttributes) {\n var attributes = currentConstructor.__agBeanMetaData.agClassAttributes;\n if (!attributes) {\n return { value: void 0 };\n }\n var beanName_1 = this_1.getBeanName(currentConstructor);\n attributes.forEach(function (attribute) {\n var otherBean = _this.lookupBeanInstance(beanName_1, attribute.beanName, attribute.optional);\n bean[attribute.attributeName] = otherBean;\n });\n }\n currentBean = Object.getPrototypeOf(currentBean) ? Object.getPrototypeOf(currentBean) : null;\n };\n var this_1 = this;\n while (currentBean != null) {\n var state_1 = _loop_1();\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n };\n Context.prototype.getBeanName = function (constructor) {\n if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {\n return constructor.__agBeanMetaData.beanName;\n }\n var constructorString = constructor.toString();\n var beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n return beanName;\n };\n Context.prototype.methodWireBean = function (bean) {\n var _this = this;\n var autowiredMethods;\n if (bean.constructor.__agBeanMetaData && bean.constructor.__agBeanMetaData.autowireMethods) {\n autowiredMethods = bean.constructor.__agBeanMetaData.autowireMethods;\n }\n utils_1.Utils.iterateObject(autowiredMethods, function (methodName, wireParams) {\n // skip constructor, as this is dealt with elsewhere\n if (methodName === \"agConstructor\") {\n return;\n }\n var beanName = _this.getBeanName(bean.constructor);\n var initParams = _this.getBeansForParameters(wireParams, beanName);\n bean[methodName].apply(bean, initParams);\n });\n };\n Context.prototype.getBeansForParameters = function (parameters, beanName) {\n var _this = this;\n var beansList = [];\n if (parameters) {\n utils_1.Utils.iterateObject(parameters, function (paramIndex, otherBeanName) {\n var otherBean = _this.lookupBeanInstance(beanName, otherBeanName);\n beansList[Number(paramIndex)] = otherBean;\n });\n }\n return beansList;\n };\n Context.prototype.lookupBeanInstance = function (wiringBean, beanName, optional) {\n if (optional === void 0) { optional = false; }\n if (beanName === \"context\") {\n return this;\n }\n else if (this.contextParams.seed && this.contextParams.seed.hasOwnProperty(beanName)) {\n return this.contextParams.seed[beanName];\n }\n else {\n var beanEntry = this.beans[beanName];\n if (beanEntry) {\n return beanEntry.beanInstance;\n }\n if (!optional) {\n console.error(\"ag-Grid: unable to find bean reference \" + beanName + \" while initialising \" + wiringBean);\n }\n return null;\n }\n };\n Context.prototype.postConstruct = function (beans) {\n beans.forEach(function (bean) {\n // try calling init methods\n if (bean.constructor.__agBeanMetaData && bean.constructor.__agBeanMetaData.postConstructMethods) {\n bean.constructor.__agBeanMetaData && bean.constructor.__agBeanMetaData.postConstructMethods.forEach(function (methodName) { return bean[methodName](); });\n }\n });\n };\n Context.prototype.preConstruct = function (beans) {\n beans.forEach(function (bean) {\n // try calling init methods\n if (bean.constructor.__agBeanMetaData && bean.constructor.__agBeanMetaData.preConstructMethods) {\n bean.constructor.__agBeanMetaData.preConstructMethods.forEach(function (methodName) { return bean[methodName](); });\n }\n });\n };\n Context.prototype.getBean = function (name) {\n return this.lookupBeanInstance(\"getBean\", name, true);\n };\n Context.prototype.destroy = function () {\n // should only be able to destroy once\n if (this.destroyed) {\n return;\n }\n this.logger.log(\">> Shutting down ag-Application Context\");\n // try calling destroy methods\n utils_1.Utils.iterateObject(this.beans, function (key, beanEntry) {\n var bean = beanEntry.beanInstance;\n if (bean.constructor.__agBeanMetaData && bean.constructor.__agBeanMetaData.preDestroyMethods) {\n bean.constructor.__agBeanMetaData.preDestroyMethods.forEach(function (methodName) { return bean[methodName](); });\n }\n });\n this.destroyed = true;\n this.logger.log(\">> ag-Application Context shut down - component is dead\");\n };\n return Context;\n}());\nexports.Context = Context;\n// taken from: http://stackoverflow.com/questions/3362471/how-can-i-call-a-javascript-constructor-using-call-or-apply\n// allows calling 'apply' on a constructor\nfunction applyToConstructor(constructor, argArray) {\n var args = [null].concat(argArray);\n var factoryFunction = constructor.bind.apply(constructor, args);\n return new factoryFunction();\n}\nfunction PreConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.postConstructMethods) {\n props.preConstructMethods = [];\n }\n props.preConstructMethods.push(methodName);\n}\nexports.PreConstruct = PreConstruct;\nfunction PostConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.postConstructMethods) {\n props.postConstructMethods = [];\n }\n props.postConstructMethods.push(methodName);\n}\nexports.PostConstruct = PostConstruct;\nfunction PreDestroy(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.preDestroyMethods) {\n props.preDestroyMethods = [];\n }\n props.preDestroyMethods.push(methodName);\n}\nexports.PreDestroy = PreDestroy;\nfunction Bean(beanName) {\n return function (classConstructor) {\n var props = getOrCreateProps(classConstructor);\n props.beanName = beanName;\n };\n}\nexports.Bean = Bean;\nfunction Autowired(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, false, target, propertyKey, null);\n };\n}\nexports.Autowired = Autowired;\nfunction Optional(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, true, target, propertyKey, null);\n };\n}\nexports.Optional = Optional;\nfunction autowiredFunc(target, name, optional, classPrototype, methodOrAttributeName, index) {\n if (name === null) {\n console.error(\"ag-Grid: Autowired name should not be null\");\n return;\n }\n if (typeof index === \"number\") {\n console.error(\"ag-Grid: Autowired should be on an attribute\");\n return;\n }\n // it's an attribute on the class\n var props = getOrCreateProps(target.constructor);\n if (!props.agClassAttributes) {\n props.agClassAttributes = [];\n }\n props.agClassAttributes.push({\n attributeName: methodOrAttributeName,\n beanName: name,\n optional: optional\n });\n}\nfunction Qualifier(name) {\n return function (classPrototype, methodOrAttributeName, index) {\n var constructor = typeof classPrototype == \"function\" ? classPrototype : classPrototype.constructor;\n var props;\n if (typeof index === \"number\") {\n // it's a parameter on a method\n var methodName = void 0;\n if (methodOrAttributeName) {\n props = getOrCreateProps(constructor);\n methodName = methodOrAttributeName;\n }\n else {\n props = getOrCreateProps(constructor);\n methodName = \"agConstructor\";\n }\n if (!props.autowireMethods) {\n props.autowireMethods = {};\n }\n if (!props.autowireMethods[methodName]) {\n props.autowireMethods[methodName] = {};\n }\n props.autowireMethods[methodName][index] = name;\n }\n };\n}\nexports.Qualifier = Qualifier;\nfunction getOrCreateProps(target) {\n if (!target.hasOwnProperty(\"__agBeanMetaData\")) {\n target.__agBeanMetaData = {};\n }\n return target.__agBeanMetaData;\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 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","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","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * adds a bindGlobal method to Mousetrap that allows you to\n * bind specific keyboard shortcuts that will still work\n * inside a text input field\n *\n * usage:\n * Mousetrap.bindGlobal('ctrl+s', _saveChanges);\n */\n/* global Mousetrap:true */\n(function(Mousetrap) {\n if (! Mousetrap) {\n return;\n }\n var _globalCallbacks = {};\n var _originalStopCallback = Mousetrap.prototype.stopCallback;\n\n Mousetrap.prototype.stopCallback = function(e, element, combo, sequence) {\n var self = this;\n\n if (self.paused) {\n return true;\n }\n\n if (_globalCallbacks[combo] || _globalCallbacks[sequence]) {\n return false;\n }\n\n return _originalStopCallback.call(self, e, element, combo);\n };\n\n Mousetrap.prototype.bindGlobal = function(keys, callback, action) {\n var self = this;\n self.bind(keys, callback, action);\n\n if (keys instanceof Array) {\n for (var i = 0; i < keys.length; i++) {\n _globalCallbacks[keys[i]] = true;\n }\n return;\n }\n\n _globalCallbacks[keys] = true;\n };\n\n Mousetrap.init();\n}) (typeof Mousetrap !== \"undefined\" ? Mousetrap : undefined);\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\nvar toArrayBuffer = require('to-arraybuffer')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else if (capability.vbArray && preferBinary) {\n\t\treturn 'text:vbarray'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n\t\tif (capability.arraybuffer) {\n\t\t\tbody = toArrayBuffer(Buffer.concat(self._body))\n\t\t} else if (capability.blobConstructor) {\n\t\t\tbody = new global.Blob(self._body.map(function (buffer) {\n\t\t\t\treturn toArrayBuffer(buffer)\n\t\t\t}), {\n\t\t\t\ttype: (headersObj['content-type'] || {}).value || ''\n\t\t\t})\n\t\t} else {\n\t\t\t// get utf8 string\n\t\t\tbody = Buffer.concat(self._body).toString()\n\t\t}\n\t}\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tvar fetchTimer = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tglobal.clearTimeout(self._fetchTimer)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode.split(':')[0]\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress()\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._fetchTimer)\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {\n\tvar self = this\n\tself._destroyed = true\n\tglobal.clearTimeout(self._fetchTimer)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setTimeout = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","var Buffer = require('buffer').Buffer\n\nmodule.exports = function (buf) {\n\t// If the buffer is backed by a Uint8Array, a faster version will work\n\tif (buf instanceof Uint8Array) {\n\t\t// If the buffer isn't a subarray, return the underlying ArrayBuffer\n\t\tif (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n\t\t\treturn buf.buffer\n\t\t} else if (typeof buf.buffer.slice === 'function') {\n\t\t\t// Otherwise we need to get a proper copy\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n\t\t}\n\t}\n\n\tif (Buffer.isBuffer(buf)) {\n\t\t// This is the slow version that will work with any Buffer\n\t\t// implementation (even in old browsers)\n\t\tvar arrayCopy = new Uint8Array(buf.length)\n\t\tvar len = buf.length\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tarrayCopy[i] = buf[i]\n\t\t}\n\t\treturn arrayCopy.buffer\n\t} else {\n\t\tthrow new Error('Argument must be a Buffer')\n\t}\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","import { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nconst DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n const self = {\n config: Object.assign(Object.assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth(month = self.currentMonth, yr = self.currentYear) {\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n const config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n const daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n const defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n const defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n const prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n let hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n const limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n const limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n const maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n const minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n const date = dateObj || self.latestSelectedDateObj;\n if (date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n const eventTarget = getEventTarget(event);\n const year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach((ev) => bind(element, ev, handler, options));\n if (element instanceof Array)\n return element.forEach((el) => bind(el, event, handler, options));\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: () => element.removeEventListener(event, handler),\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach((evt) => {\n Array.prototype.forEach.call(self.element.querySelectorAll(`[data-${evt}]`), (el) => bind(el, \"click\", self[evt]));\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n const debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", (e) => {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n const selText = (e) => getEventTarget(e).select();\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", () => self.secondElement && self.secondElement.select());\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", (e) => {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n const jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n const oldYear = self.currentYear;\n const oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n const eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n const target = e && getEventTarget(e);\n const input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n const event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n const fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n const { weekWrapper, weekNumbers } = buildWeeks();\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n const customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n const wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n const dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n const startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n for (let m = startMonth; m != endMonth; m += delta) {\n const month = self.daysContainer.children[m];\n const startIndex = delta > 0 ? 0 : month.children.length - 1;\n const endIndex = delta > 0 ? month.children.length : -1;\n for (let i = startIndex; i != endIndex; i += delta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n const givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n const loopDelta = delta > 0 ? 1 : -1;\n for (let m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n const month = self.daysContainer.children[m];\n const startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n const numMonthDays = month.children.length;\n for (let i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n const dayFocused = isInView(document.activeElement || document.body);\n const startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n const firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n const prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n const daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n let dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n const dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n const frag = document.createDocumentFragment();\n for (let i = 0; i < self.config.showMonths; i++) {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n const shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (let i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n const month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n const container = createElement(\"div\", \"flatpickr-month\");\n const monthNavFragment = window.document.createDocumentFragment();\n let monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", (e) => {\n const target = getEventTarget(e);\n const selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n const yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n const yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n const currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container,\n yearElement,\n monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (let m = self.config.showMonths; m--;) {\n const month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: () => self.__hidePrevMonthArrow,\n set(bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: () => self.__hideNextMonthArrow,\n set(bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n const defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n const separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n const hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n const minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n const secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (let i = self.config.showMonths; i--;) {\n const container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n const firstDayOfWeek = self.l10n.firstDayOfWeek;\n let weekdays = [...self.l10n.weekdays.shorthand];\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = [\n ...weekdays.splice(firstDayOfWeek, weekdays.length),\n ...weekdays.splice(0, firstDayOfWeek),\n ];\n }\n for (let i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = `\n \n ${weekdays.join(\"\")}\n \n `;\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n const weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n const weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper,\n weekNumbers,\n };\n }\n function changeMonth(value, isOffset = true) {\n const delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent = true, toInitial = true) {\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n const { hours, minutes, seconds } = getDefaultHours(self.config);\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (let i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n const wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach((k) => {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n const eventTarget = getEventTarget(e);\n const isCalendarElement = isCalendarElem(eventTarget);\n const isInput = eventTarget === self.input ||\n eventTarget === self.altInput ||\n self.element.contains(eventTarget) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n const lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n const isIgnored = !self.config.ignoredFocusElements.some((elem) => elem.contains(eventTarget));\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n const newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless = true) {\n var _a;\n const dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n const bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (let i = 0, d; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n const parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n const isInput = e.target === self._input;\n if (isInput &&\n (self.selectedDates.length > 0 || self._input.value.length > 0) &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n const eventTarget = getEventTarget(e);\n const isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n const allowInput = self.config.allowInput;\n const allowKeydown = self.isOpen && (!allowInput || !isInput);\n const allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n const isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n const delta = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta);\n else {\n e.stopPropagation();\n changeMonth(delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n const delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n const elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter((x) => x);\n const i = elems.indexOf(eventTarget);\n if (i !== -1) {\n const target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n const hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n let containsDisabled = false;\n let minRange = 0, maxRange = 0;\n for (let t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (let m = 0; m < self.config.showMonths; m++) {\n const month = self.daysContainer.children[m];\n for (let i = 0, l = month.children.length; i < l; i++) {\n const dayElem = month.children[i], date = dayElem.dateObj;\n const timestamp = date.getTime();\n const outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n continue;\n }\n else if (containsDisabled && !outOfRange)\n continue;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement = self._positionElement) {\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n const eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n const wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(() => self.hourElement.select(), 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return (date) => {\n const dateObj = (self.config[`_${type}Date`] = self.parseDate(date, self.config.dateFormat));\n const inverseDateObj = self.config[`_${type === \"min\" ? \"max\" : \"min\"}Date`];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter((d) => isEnabled(d));\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n const boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n const formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: () => self.config._enable,\n set: (dates) => {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: () => self.config._disable,\n set: (dates) => {\n self.config._disable = parseDateRules(dates);\n },\n });\n const timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n const defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n const defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + ` h:i${userConfig.enableSeconds ? \":S\" : \"\"} K`;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: () => self.config._minDate,\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: () => self.config._maxDate,\n set: minMaxDateSetter(\"max\"),\n });\n const minMaxTimeSetter = (type) => (val) => {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n };\n Object.defineProperty(self.config, \"minTime\", {\n get: () => self.config._minTime,\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: () => self.config._maxTime,\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (let i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter((hook) => self.config[hook] !== undefined).forEach((hook) => {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (let i = 0; i < self.config.plugins.length; i++) {\n const pluginConf = self.config.plugins[i](self) || {};\n for (const key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(`flatpickr: invalid locale ${self.config.locale}`));\n self.l10n = Object.assign(Object.assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = `(${self.l10n.amPM[0]}|${self.l10n.amPM[1]}|${self.l10n.amPM[0].toLowerCase()}|${self.l10n.amPM[1].toLowerCase()})`;\n const userConfig = Object.assign(Object.assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n const positionElement = customPositionElement || self._positionElement;\n const calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, ((acc, child) => acc + child.offsetHeight), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n const top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n let left = window.pageXOffset + inputBounds.left;\n let isCenter = false;\n let isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n const right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n const centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = `${top}px`;\n if (!rightMost) {\n self.calendarContainer.style.left = `${left}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = `${right}px`;\n }\n else {\n const doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n const bodyWidth = window.document.body.offsetWidth;\n const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n const centerBefore = \".flatpickr-calendar.centerMost:before\";\n const centerAfter = \".flatpickr-calendar.centerMost:after\";\n const centerIndex = doc.cssRules.length;\n const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);\n self.calendarContainer.style.left = `${centerLeft}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n let editableSheet = null;\n for (let i = 0; i < document.styleSheets.length; i++) {\n const sheet = document.styleSheets[i];\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n const isSelectable = (day) => day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n const t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n const target = t;\n const selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n const shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n const selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n const isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n const single = self.config.mode === \"single\" && !self.config.enableTime;\n const range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n const CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n clickOpens: [\n () => {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (const key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach((x) => x());\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach((x) => x());\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n let dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map((d) => self.parseDate(d, format));\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map((date) => self.parseDate(date, format));\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map((date) => self.parseDate(date, format));\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(inputDate)}`));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter((d) => d instanceof Date && isEnabled(d, false)));\n if (self.config.mode === \"range\")\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n function setDate(date, triggerChange = false, format = self.config.dateFormat) {\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map((rule) => {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter((x) => x);\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n const preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n const inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", (e) => {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n const hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (let i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n const e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (let i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach((yearElement, i) => {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map((dObj) => self.formatDate(dObj, format))\n .filter((d, i, arr) => self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i)\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange = true) {\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n const eventTarget = getEventTarget(e);\n const isPrevMonth = self.prevMonthNav.contains(eventTarget);\n const isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n const isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n const min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n let newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n const isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n const nodes = Array.prototype.slice\n .call(nodeList)\n .filter((x) => x instanceof HTMLElement);\n const instances = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: Object.assign({}, English),\n default: Object.assign({}, English),\n};\nflatpickr.localize = (l10n) => {\n flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = (config) => {\n flatpickr.defaultConfig = Object.assign(Object.assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target, ...args) {\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n for (const source of args) {\n if (source) {\n Object.keys(source).forEach((key) => (target[key] = source[key]));\n }\n }\n return target;\n };\n}\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.fr = {}));\n}(this, (function (exports) { 'use strict';\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {},\n };\n var French = {\n firstDayOfWeek: 1,\n weekdays: {\n shorthand: [\"dim\", \"lun\", \"mar\", \"mer\", \"jeu\", \"ven\", \"sam\"],\n longhand: [\n \"dimanche\",\n \"lundi\",\n \"mardi\",\n \"mercredi\",\n \"jeudi\",\n \"vendredi\",\n \"samedi\",\n ],\n },\n months: {\n shorthand: [\n \"janv\",\n \"févr\",\n \"mars\",\n \"avr\",\n \"mai\",\n \"juin\",\n \"juil\",\n \"août\",\n \"sept\",\n \"oct\",\n \"nov\",\n \"déc\",\n ],\n longhand: [\n \"janvier\",\n \"février\",\n \"mars\",\n \"avril\",\n \"mai\",\n \"juin\",\n \"juillet\",\n \"août\",\n \"septembre\",\n \"octobre\",\n \"novembre\",\n \"décembre\",\n ],\n },\n ordinal: function (nth) {\n if (nth > 1)\n return \"\";\n return \"er\";\n },\n rangeSeparator: \" au \",\n weekAbbreviation: \"Sem\",\n scrollTitle: \"Défiler pour augmenter la valeur\",\n toggleTitle: \"Cliquer pour basculer\",\n time_24hr: true,\n };\n fp.l10ns.fr = French;\n var fr = fp.l10ns;\n\n exports.French = French;\n exports.default = fr;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/* Canadian-French initialisation for the jQuery UI date picker plugin. */\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"../widgets/datepicker\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery.datepicker );\n\t}\n} )( function( datepicker ) {\n\"use strict\";\n\ndatepicker.regional[ \"fr-CA\" ] = {\n\tcloseText: \"Fermer\",\n\tprevText: \"Précédent\",\n\tnextText: \"Suivant\",\n\tcurrentText: \"Aujourd'hui\",\n\tmonthNames: [ \"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\",\n\t\t\"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\" ],\n\tmonthNamesShort: [ \"janv.\", \"févr.\", \"mars\", \"avril\", \"mai\", \"juin\",\n\t\t\"juil.\", \"août\", \"sept.\", \"oct.\", \"nov.\", \"déc.\" ],\n\tdayNames: [ \"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\" ],\n\tdayNamesShort: [ \"dim.\", \"lun.\", \"mar.\", \"mer.\", \"jeu.\", \"ven.\", \"sam.\" ],\n\tdayNamesMin: [ \"D\", \"L\", \"M\", \"M\", \"J\", \"V\", \"S\" ],\n\tweekHeader: \"Sem.\",\n\tdateFormat: \"yy-mm-dd\",\n\tfirstDay: 0,\n\tisRTL: false,\n\tshowMonthAfterYear: false,\n\tyearSuffix: \"\"\n};\ndatepicker.setDefaults( datepicker.regional[ \"fr-CA\" ] );\n\nreturn datepicker.regional[ \"fr-CA\" ];\n\n} );\n","/*!\n * jQuery UI Keycode 1.13.0\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n} );\n","/* global module, require */\n\nmodule.exports = require('./load-image')\n\nrequire('./load-image-scale')\nrequire('./load-image-meta')\nrequire('./load-image-fetch')\nrequire('./load-image-exif')\nrequire('./load-image-exif-map')\nrequire('./load-image-iptc')\nrequire('./load-image-iptc-map')\nrequire('./load-image-orientation')\n","/*\n * JavaScript Load Image Fetch\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2017, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, module, require */\n\n;(function (factory) {\n 'use strict'\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./load-image', './load-image-meta'], factory)\n } else if (typeof module === 'object' && module.exports) {\n factory(require('./load-image'), require('./load-image-meta'))\n } else {\n // Browser globals:\n factory(window.loadImage)\n }\n})(function (loadImage) {\n 'use strict'\n\n if (typeof fetch !== 'undefined' && typeof Request !== 'undefined') {\n loadImage.fetchBlob = function (url, callback, options) {\n if (loadImage.hasMetaOption(options)) {\n fetch(new Request(url, options))\n .then(function (response) {\n return response.blob()\n })\n .then(callback)\n .catch(function (err) {\n console.log(err) // eslint-disable-line no-console\n callback()\n })\n } else {\n callback()\n }\n }\n } else if (\n // Check for XHR2 support:\n typeof XMLHttpRequest !== 'undefined' &&\n typeof ProgressEvent !== 'undefined'\n ) {\n loadImage.fetchBlob = function (url, callback, options) {\n if (loadImage.hasMetaOption(options)) {\n // eslint-disable-next-line no-param-reassign\n options = options || {}\n var req = new XMLHttpRequest()\n req.open(options.method || 'GET', url)\n if (options.headers) {\n Object.keys(options.headers).forEach(function (key) {\n req.setRequestHeader(key, options.headers[key])\n })\n }\n req.withCredentials = options.credentials === 'include'\n req.responseType = 'blob'\n req.onload = function () {\n callback(req.response)\n }\n req.onerror = req.onabort = req.ontimeout = function (e) {\n console.log(e) // eslint-disable-line no-console\n callback()\n }\n req.send(options.body)\n } else {\n callback()\n }\n }\n }\n})\n","/*\n * JavaScript Load Image Exif Map\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Exif tags mapping based on\n * https://github.com/jseidelin/exif-js\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, module, require */\n\n;(function (factory) {\n 'use strict'\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./load-image', './load-image-exif'], factory)\n } else if (typeof module === 'object' && module.exports) {\n factory(require('./load-image'), require('./load-image-exif'))\n } else {\n // Browser globals:\n factory(window.loadImage)\n }\n})(function (loadImage) {\n 'use strict'\n\n loadImage.ExifMap.prototype.tags = {\n // =================\n // TIFF tags (IFD0):\n // =================\n 0x0100: 'ImageWidth',\n 0x0101: 'ImageHeight',\n 0x8769: 'ExifIFDPointer',\n 0x8825: 'GPSInfoIFDPointer',\n 0xa005: 'InteroperabilityIFDPointer',\n 0x0102: 'BitsPerSample',\n 0x0103: 'Compression',\n 0x0106: 'PhotometricInterpretation',\n 0x0112: 'Orientation',\n 0x0115: 'SamplesPerPixel',\n 0x011c: 'PlanarConfiguration',\n 0x0212: 'YCbCrSubSampling',\n 0x0213: 'YCbCrPositioning',\n 0x011a: 'XResolution',\n 0x011b: 'YResolution',\n 0x0128: 'ResolutionUnit',\n 0x0111: 'StripOffsets',\n 0x0116: 'RowsPerStrip',\n 0x0117: 'StripByteCounts',\n 0x0201: 'JPEGInterchangeFormat',\n 0x0202: 'JPEGInterchangeFormatLength',\n 0x012d: 'TransferFunction',\n 0x013e: 'WhitePoint',\n 0x013f: 'PrimaryChromaticities',\n 0x0211: 'YCbCrCoefficients',\n 0x0214: 'ReferenceBlackWhite',\n 0x0132: 'DateTime',\n 0x010e: 'ImageDescription',\n 0x010f: 'Make',\n 0x0110: 'Model',\n 0x0131: 'Software',\n 0x013b: 'Artist',\n 0x8298: 'Copyright',\n // ==================\n // Exif Sub IFD tags:\n // ==================\n 0x9000: 'ExifVersion', // EXIF version\n 0xa000: 'FlashpixVersion', // Flashpix format version\n 0xa001: 'ColorSpace', // Color space information tag\n 0xa002: 'PixelXDimension', // Valid width of meaningful image\n 0xa003: 'PixelYDimension', // Valid height of meaningful image\n 0xa500: 'Gamma',\n 0x9101: 'ComponentsConfiguration', // Information about channels\n 0x9102: 'CompressedBitsPerPixel', // Compressed bits per pixel\n 0x927c: 'MakerNote', // Any desired information written by the manufacturer\n 0x9286: 'UserComment', // Comments by user\n 0xa004: 'RelatedSoundFile', // Name of related sound file\n 0x9003: 'DateTimeOriginal', // Date and time when the original image was generated\n 0x9004: 'DateTimeDigitized', // Date and time when the image was stored digitally\n 0x9290: 'SubSecTime', // Fractions of seconds for DateTime\n 0x9291: 'SubSecTimeOriginal', // Fractions of seconds for DateTimeOriginal\n 0x9292: 'SubSecTimeDigitized', // Fractions of seconds for DateTimeDigitized\n 0x829a: 'ExposureTime', // Exposure time (in seconds)\n 0x829d: 'FNumber',\n 0x8822: 'ExposureProgram', // Exposure program\n 0x8824: 'SpectralSensitivity', // Spectral sensitivity\n 0x8827: 'PhotographicSensitivity', // EXIF 2.3, ISOSpeedRatings in EXIF 2.2\n 0x8828: 'OECF', // Optoelectric conversion factor\n 0x8830: 'SensitivityType',\n 0x8831: 'StandardOutputSensitivity',\n 0x8832: 'RecommendedExposureIndex',\n 0x8833: 'ISOSpeed',\n 0x8834: 'ISOSpeedLatitudeyyy',\n 0x8835: 'ISOSpeedLatitudezzz',\n 0x9201: 'ShutterSpeedValue', // Shutter speed\n 0x9202: 'ApertureValue', // Lens aperture\n 0x9203: 'BrightnessValue', // Value of brightness\n 0x9204: 'ExposureBias', // Exposure bias\n 0x9205: 'MaxApertureValue', // Smallest F number of lens\n 0x9206: 'SubjectDistance', // Distance to subject in meters\n 0x9207: 'MeteringMode', // Metering mode\n 0x9208: 'LightSource', // Kind of light source\n 0x9209: 'Flash', // Flash status\n 0x9214: 'SubjectArea', // Location and area of main subject\n 0x920a: 'FocalLength', // Focal length of the lens in mm\n 0xa20b: 'FlashEnergy', // Strobe energy in BCPS\n 0xa20c: 'SpatialFrequencyResponse',\n 0xa20e: 'FocalPlaneXResolution', // Number of pixels in width direction per FPRUnit\n 0xa20f: 'FocalPlaneYResolution', // Number of pixels in height direction per FPRUnit\n 0xa210: 'FocalPlaneResolutionUnit', // Unit for measuring the focal plane resolution\n 0xa214: 'SubjectLocation', // Location of subject in image\n 0xa215: 'ExposureIndex', // Exposure index selected on camera\n 0xa217: 'SensingMethod', // Image sensor type\n 0xa300: 'FileSource', // Image source (3 == DSC)\n 0xa301: 'SceneType', // Scene type (1 == directly photographed)\n 0xa302: 'CFAPattern', // Color filter array geometric pattern\n 0xa401: 'CustomRendered', // Special processing\n 0xa402: 'ExposureMode', // Exposure mode\n 0xa403: 'WhiteBalance', // 1 = auto white balance, 2 = manual\n 0xa404: 'DigitalZoomRatio', // Digital zoom ratio\n 0xa405: 'FocalLengthIn35mmFilm',\n 0xa406: 'SceneCaptureType', // Type of scene\n 0xa407: 'GainControl', // Degree of overall image gain adjustment\n 0xa408: 'Contrast', // Direction of contrast processing applied by camera\n 0xa409: 'Saturation', // Direction of saturation processing applied by camera\n 0xa40a: 'Sharpness', // Direction of sharpness processing applied by camera\n 0xa40b: 'DeviceSettingDescription',\n 0xa40c: 'SubjectDistanceRange', // Distance to subject\n 0xa420: 'ImageUniqueID', // Identifier assigned uniquely to each image\n 0xa430: 'CameraOwnerName',\n 0xa431: 'BodySerialNumber',\n 0xa432: 'LensSpecification',\n 0xa433: 'LensMake',\n 0xa434: 'LensModel',\n 0xa435: 'LensSerialNumber',\n // ==============\n // GPS Info tags:\n // ==============\n 0x0000: 'GPSVersionID',\n 0x0001: 'GPSLatitudeRef',\n 0x0002: 'GPSLatitude',\n 0x0003: 'GPSLongitudeRef',\n 0x0004: 'GPSLongitude',\n 0x0005: 'GPSAltitudeRef',\n 0x0006: 'GPSAltitude',\n 0x0007: 'GPSTimeStamp',\n 0x0008: 'GPSSatellites',\n 0x0009: 'GPSStatus',\n 0x000a: 'GPSMeasureMode',\n 0x000b: 'GPSDOP',\n 0x000c: 'GPSSpeedRef',\n 0x000d: 'GPSSpeed',\n 0x000e: 'GPSTrackRef',\n 0x000f: 'GPSTrack',\n 0x0010: 'GPSImgDirectionRef',\n 0x0011: 'GPSImgDirection',\n 0x0012: 'GPSMapDatum',\n 0x0013: 'GPSDestLatitudeRef',\n 0x0014: 'GPSDestLatitude',\n 0x0015: 'GPSDestLongitudeRef',\n 0x0016: 'GPSDestLongitude',\n 0x0017: 'GPSDestBearingRef',\n 0x0018: 'GPSDestBearing',\n 0x0019: 'GPSDestDistanceRef',\n 0x001a: 'GPSDestDistance',\n 0x001b: 'GPSProcessingMethod',\n 0x001c: 'GPSAreaInformation',\n 0x001d: 'GPSDateStamp',\n 0x001e: 'GPSDifferential',\n 0x001f: 'GPSHPositioningError'\n }\n\n loadImage.ExifMap.prototype.stringValues = {\n ExposureProgram: {\n 0: 'Undefined',\n 1: 'Manual',\n 2: 'Normal program',\n 3: 'Aperture priority',\n 4: 'Shutter priority',\n 5: 'Creative program',\n 6: 'Action program',\n 7: 'Portrait mode',\n 8: 'Landscape mode'\n },\n MeteringMode: {\n 0: 'Unknown',\n 1: 'Average',\n 2: 'CenterWeightedAverage',\n 3: 'Spot',\n 4: 'MultiSpot',\n 5: 'Pattern',\n 6: 'Partial',\n 255: 'Other'\n },\n LightSource: {\n 0: 'Unknown',\n 1: 'Daylight',\n 2: 'Fluorescent',\n 3: 'Tungsten (incandescent light)',\n 4: 'Flash',\n 9: 'Fine weather',\n 10: 'Cloudy weather',\n 11: 'Shade',\n 12: 'Daylight fluorescent (D 5700 - 7100K)',\n 13: 'Day white fluorescent (N 4600 - 5400K)',\n 14: 'Cool white fluorescent (W 3900 - 4500K)',\n 15: 'White fluorescent (WW 3200 - 3700K)',\n 17: 'Standard light A',\n 18: 'Standard light B',\n 19: 'Standard light C',\n 20: 'D55',\n 21: 'D65',\n 22: 'D75',\n 23: 'D50',\n 24: 'ISO studio tungsten',\n 255: 'Other'\n },\n Flash: {\n 0x0000: 'Flash did not fire',\n 0x0001: 'Flash fired',\n 0x0005: 'Strobe return light not detected',\n 0x0007: 'Strobe return light detected',\n 0x0009: 'Flash fired, compulsory flash mode',\n 0x000d: 'Flash fired, compulsory flash mode, return light not detected',\n 0x000f: 'Flash fired, compulsory flash mode, return light detected',\n 0x0010: 'Flash did not fire, compulsory flash mode',\n 0x0018: 'Flash did not fire, auto mode',\n 0x0019: 'Flash fired, auto mode',\n 0x001d: 'Flash fired, auto mode, return light not detected',\n 0x001f: 'Flash fired, auto mode, return light detected',\n 0x0020: 'No flash function',\n 0x0041: 'Flash fired, red-eye reduction mode',\n 0x0045: 'Flash fired, red-eye reduction mode, return light not detected',\n 0x0047: 'Flash fired, red-eye reduction mode, return light detected',\n 0x0049: 'Flash fired, compulsory flash mode, red-eye reduction mode',\n 0x004d: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected',\n 0x004f: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light detected',\n 0x0059: 'Flash fired, auto mode, red-eye reduction mode',\n 0x005d: 'Flash fired, auto mode, return light not detected, red-eye reduction mode',\n 0x005f: 'Flash fired, auto mode, return light detected, red-eye reduction mode'\n },\n SensingMethod: {\n 1: 'Undefined',\n 2: 'One-chip color area sensor',\n 3: 'Two-chip color area sensor',\n 4: 'Three-chip color area sensor',\n 5: 'Color sequential area sensor',\n 7: 'Trilinear sensor',\n 8: 'Color sequential linear sensor'\n },\n SceneCaptureType: {\n 0: 'Standard',\n 1: 'Landscape',\n 2: 'Portrait',\n 3: 'Night scene'\n },\n SceneType: {\n 1: 'Directly photographed'\n },\n CustomRendered: {\n 0: 'Normal process',\n 1: 'Custom process'\n },\n WhiteBalance: {\n 0: 'Auto white balance',\n 1: 'Manual white balance'\n },\n GainControl: {\n 0: 'None',\n 1: 'Low gain up',\n 2: 'High gain up',\n 3: 'Low gain down',\n 4: 'High gain down'\n },\n Contrast: {\n 0: 'Normal',\n 1: 'Soft',\n 2: 'Hard'\n },\n Saturation: {\n 0: 'Normal',\n 1: 'Low saturation',\n 2: 'High saturation'\n },\n Sharpness: {\n 0: 'Normal',\n 1: 'Soft',\n 2: 'Hard'\n },\n SubjectDistanceRange: {\n 0: 'Unknown',\n 1: 'Macro',\n 2: 'Close view',\n 3: 'Distant view'\n },\n FileSource: {\n 3: 'DSC'\n },\n ComponentsConfiguration: {\n 0: '',\n 1: 'Y',\n 2: 'Cb',\n 3: 'Cr',\n 4: 'R',\n 5: 'G',\n 6: 'B'\n },\n Orientation: {\n 1: 'top-left',\n 2: 'top-right',\n 3: 'bottom-right',\n 4: 'bottom-left',\n 5: 'left-top',\n 6: 'right-top',\n 7: 'right-bottom',\n 8: 'left-bottom'\n }\n }\n\n loadImage.ExifMap.prototype.getText = function (id) {\n var value = this.get(id)\n switch (id) {\n case 'LightSource':\n case 'Flash':\n case 'MeteringMode':\n case 'ExposureProgram':\n case 'SensingMethod':\n case 'SceneCaptureType':\n case 'SceneType':\n case 'CustomRendered':\n case 'WhiteBalance':\n case 'GainControl':\n case 'Contrast':\n case 'Saturation':\n case 'Sharpness':\n case 'SubjectDistanceRange':\n case 'FileSource':\n case 'Orientation':\n return this.stringValues[id][value]\n case 'ExifVersion':\n case 'FlashpixVersion':\n if (!value) return\n return String.fromCharCode(value[0], value[1], value[2], value[3])\n case 'ComponentsConfiguration':\n if (!value) return\n return (\n this.stringValues[id][value[0]] +\n this.stringValues[id][value[1]] +\n this.stringValues[id][value[2]] +\n this.stringValues[id][value[3]]\n )\n case 'GPSVersionID':\n if (!value) return\n return value[0] + '.' + value[1] + '.' + value[2] + '.' + value[3]\n }\n return String(value)\n }\n ;(function (exifMapPrototype) {\n var tags = exifMapPrototype.tags\n var map = exifMapPrototype.map\n var prop\n // Map the tag names to tags:\n for (prop in tags) {\n if (Object.prototype.hasOwnProperty.call(tags, prop)) {\n map[tags[prop]] = prop\n }\n }\n })(loadImage.ExifMap.prototype)\n\n loadImage.ExifMap.prototype.getAll = function () {\n var map = {}\n var prop\n var id\n for (prop in this) {\n if (Object.prototype.hasOwnProperty.call(this, prop)) {\n id = this.tags[prop]\n if (id) {\n map[id] = this.getText(id)\n }\n }\n }\n return map\n }\n})\n","/*\n * JavaScript Load Image IPTC Map\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2013, Sebastian Tschan\n * Copyright 2018, Dave Bevan\n *\n * IPTC tags mapping based on\n * https://github.com/jseidelin/exif-js\n * https://iptc.org/standards/photo-metadata\n * http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, module, require */\n\n;(function (factory) {\n 'use strict'\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./load-image', './load-image-iptc'], factory)\n } else if (typeof module === 'object' && module.exports) {\n factory(require('./load-image'), require('./load-image-iptc'))\n } else {\n // Browser globals:\n factory(window.loadImage)\n }\n})(function (loadImage) {\n 'use strict'\n\n loadImage.IptcMap.prototype.tags = {\n // ==========\n // IPTC tags:\n // ==========\n 0x03: 'ObjectType',\n 0x04: 'ObjectAttribute',\n 0x05: 'ObjectName',\n 0x07: 'EditStatus',\n 0x08: 'EditorialUpdate',\n 0x0a: 'Urgency',\n 0x0c: 'SubjectRef',\n 0x0f: 'Category',\n 0x14: 'SupplCategory',\n 0x16: 'FixtureID',\n 0x19: 'Keywords',\n 0x1a: 'ContentLocCode',\n 0x1b: 'ContentLocName',\n 0x1e: 'ReleaseDate',\n 0x23: 'ReleaseTime',\n 0x25: 'ExpirationDate',\n 0x26: 'ExpirationTime',\n 0x28: 'SpecialInstructions',\n 0x2a: 'ActionAdvised',\n 0x2d: 'RefService',\n 0x2f: 'RefDate',\n 0x32: 'RefNumber',\n 0x37: 'DateCreated',\n 0x3c: 'TimeCreated',\n 0x3e: 'DigitalCreationDate',\n 0x3f: 'DigitalCreationTime',\n 0x41: 'OriginatingProgram',\n 0x46: 'ProgramVersion',\n 0x4b: 'ObjectCycle',\n 0x50: 'Byline',\n 0x55: 'BylineTitle',\n 0x5a: 'City',\n 0x5c: 'Sublocation',\n 0x5f: 'State',\n 0x64: 'CountryCode',\n 0x65: 'CountryName',\n 0x67: 'OrigTransRef',\n 0x69: 'Headline',\n 0x6e: 'Credit',\n 0x73: 'Source',\n 0x74: 'CopyrightNotice',\n 0x76: 'Contact',\n 0x78: 'Caption',\n 0x7a: 'WriterEditor',\n 0x82: 'ImageType',\n 0x83: 'ImageOrientation',\n 0x87: 'LanguageID'\n\n // We don't record these tags:\n //\n // 0x00: 'RecordVersion',\n // 0x7d: 'RasterizedCaption',\n // 0x96: 'AudioType',\n // 0x97: 'AudioSamplingRate',\n // 0x98: 'AudioSamplingRes',\n // 0x99: 'AudioDuration',\n // 0x9a: 'AudioOutcue',\n // 0xc8: 'PreviewFileFormat',\n // 0xc9: 'PreviewFileFormatVer',\n // 0xca: 'PreviewData'\n }\n\n loadImage.IptcMap.prototype.getText = function (id) {\n var value = this.get(id)\n return String(value)\n }\n ;(function (iptcMapPrototype) {\n var tags = iptcMapPrototype.tags\n var map = iptcMapPrototype.map || {}\n var prop\n // Map the tag names to tags:\n for (prop in tags) {\n if (Object.prototype.hasOwnProperty.call(tags, prop)) {\n map[tags[prop]] = prop\n }\n }\n })(loadImage.IptcMap.prototype)\n\n loadImage.IptcMap.prototype.getAll = function () {\n var map = {}\n var prop\n var id\n for (prop in this) {\n if (Object.prototype.hasOwnProperty.call(this, prop)) {\n id = this.tags[prop]\n if (id) {\n map[id] = this.getText(id)\n }\n }\n }\n return map\n }\n})\n","/*\n * JavaScript Load Image Orientation\n * https://github.com/blueimp/JavaScript-Load-Image\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, module, require */\n\n;(function (factory) {\n 'use strict'\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./load-image', './load-image-scale', './load-image-meta'], factory)\n } else if (typeof module === 'object' && module.exports) {\n factory(\n require('./load-image'),\n require('./load-image-scale'),\n require('./load-image-meta')\n )\n } else {\n // Browser globals:\n factory(window.loadImage)\n }\n})(function (loadImage) {\n 'use strict'\n\n var originalHasCanvasOption = loadImage.hasCanvasOption\n var originalHasMetaOption = loadImage.hasMetaOption\n var originalTransformCoordinates = loadImage.transformCoordinates\n var originalGetTransformedOptions = loadImage.getTransformedOptions\n\n ;(function () {\n // black 2x1 JPEG, with the following meta information set:\n // - EXIF Orientation: 6 (Rotated 90° CCW)\n var testImageURL =\n 'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' +\n 'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' +\n 'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' +\n 'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/x' +\n 'ABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAA' +\n 'AAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q=='\n var img = document.createElement('img')\n img.onload = function () {\n // Check if browser supports automatic image orientation:\n loadImage.orientation = img.width === 1 && img.height === 2\n }\n img.src = testImageURL\n })()\n\n // Determines if the target image should be a canvas element:\n loadImage.hasCanvasOption = function (options) {\n return (\n (!!options.orientation === true && !loadImage.orientation) ||\n (options.orientation > 1 && options.orientation < 9) ||\n originalHasCanvasOption.call(loadImage, options)\n )\n }\n\n // Determines if meta data should be loaded automatically:\n loadImage.hasMetaOption = function (options) {\n return (\n (options && options.orientation === true && !loadImage.orientation) ||\n originalHasMetaOption.call(loadImage, options)\n )\n }\n\n // Transform image orientation based on\n // the given EXIF orientation option:\n loadImage.transformCoordinates = function (canvas, options) {\n originalTransformCoordinates.call(loadImage, canvas, options)\n var ctx = canvas.getContext('2d')\n var width = canvas.width\n var height = canvas.height\n var styleWidth = canvas.style.width\n var styleHeight = canvas.style.height\n var orientation = options.orientation\n if (!(orientation > 1 && orientation < 9)) {\n return\n }\n if (orientation > 4) {\n canvas.width = height\n canvas.height = width\n canvas.style.width = styleHeight\n canvas.style.height = styleWidth\n }\n switch (orientation) {\n case 2:\n // horizontal flip\n ctx.translate(width, 0)\n ctx.scale(-1, 1)\n break\n case 3:\n // 180° rotate left\n ctx.translate(width, height)\n ctx.rotate(Math.PI)\n break\n case 4:\n // vertical flip\n ctx.translate(0, height)\n ctx.scale(1, -1)\n break\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI)\n ctx.scale(1, -1)\n break\n case 6:\n // 90° rotate right\n ctx.rotate(0.5 * Math.PI)\n ctx.translate(0, -height)\n break\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI)\n ctx.translate(width, -height)\n ctx.scale(-1, 1)\n break\n case 8:\n // 90° rotate left\n ctx.rotate(-0.5 * Math.PI)\n ctx.translate(-width, 0)\n break\n }\n }\n\n // Transforms coordinate and dimension options\n // based on the given orientation option:\n loadImage.getTransformedOptions = function (img, opts, data) {\n var options = originalGetTransformedOptions.call(loadImage, img, opts)\n var orientation = options.orientation\n var newOptions\n var i\n if (orientation === true) {\n if (loadImage.orientation) {\n // Browser supports automatic image orientation\n return options\n }\n orientation = data && data.exif && data.exif.get('Orientation')\n }\n if (!(orientation > 1 && orientation < 9)) {\n return options\n }\n newOptions = {}\n for (i in options) {\n if (Object.prototype.hasOwnProperty.call(options, i)) {\n newOptions[i] = options[i]\n }\n }\n newOptions.orientation = orientation\n switch (orientation) {\n case 2:\n // horizontal flip\n newOptions.left = options.right\n newOptions.right = options.left\n break\n case 3:\n // 180° rotate left\n newOptions.left = options.right\n newOptions.top = options.bottom\n newOptions.right = options.left\n newOptions.bottom = options.top\n break\n case 4:\n // vertical flip\n newOptions.top = options.bottom\n newOptions.bottom = options.top\n break\n case 5:\n // vertical flip + 90 rotate right\n newOptions.left = options.top\n newOptions.top = options.left\n newOptions.right = options.bottom\n newOptions.bottom = options.right\n break\n case 6:\n // 90° rotate right\n newOptions.left = options.top\n newOptions.top = options.right\n newOptions.right = options.bottom\n newOptions.bottom = options.left\n break\n case 7:\n // horizontal flip + 90 rotate right\n newOptions.left = options.bottom\n newOptions.top = options.right\n newOptions.right = options.top\n newOptions.bottom = options.left\n break\n case 8:\n // 90° rotate left\n newOptions.left = options.bottom\n newOptions.top = options.left\n newOptions.right = options.top\n newOptions.bottom = options.right\n break\n }\n if (newOptions.orientation > 4) {\n newOptions.maxWidth = options.maxHeight\n newOptions.maxHeight = options.maxWidth\n newOptions.minWidth = options.minHeight\n newOptions.minHeight = options.minWidth\n newOptions.sourceWidth = options.sourceHeight\n newOptions.sourceHeight = options.sourceWidth\n }\n return newOptions\n }\n})\n","/*!\n * Compressor.js v1.1.1\n * https://fengyuanchen.github.io/compressorjs\n *\n * Copyright 2018-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2021-10-05T02:32:40.212Z\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Compressor = factory());\n})(this, (function () { 'use strict';\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\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\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n 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 }\n\n var canvasToBlob = {exports: {}};\n\n /*\n * JavaScript Canvas to Blob\n * https://github.com/blueimp/JavaScript-Canvas-to-Blob\n *\n * Copyright 2012, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on stackoverflow user Stoive's code snippet:\n * http://stackoverflow.com/q/4998908\n */\n\n (function (module) {\n if (typeof window === 'undefined') {\n return;\n }\n\n (function (window) {\n\n var CanvasPrototype = window.HTMLCanvasElement && window.HTMLCanvasElement.prototype;\n\n var hasBlobConstructor = window.Blob && function () {\n try {\n return Boolean(new Blob());\n } catch (e) {\n return false;\n }\n }();\n\n var hasArrayBufferViewSupport = hasBlobConstructor && window.Uint8Array && function () {\n try {\n return new Blob([new Uint8Array(100)]).size === 100;\n } catch (e) {\n return false;\n }\n }();\n\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/;\n\n var dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob && window.ArrayBuffer && window.Uint8Array && function (dataURI) {\n var matches, mediaType, isBase64, dataString, byteString, arrayBuffer, intArray, i, bb; // Parse the dataURI components as per RFC 2397\n\n matches = dataURI.match(dataURIPattern);\n\n if (!matches) {\n throw new Error('invalid data URI');\n } // Default to text/plain;charset=US-ASCII\n\n\n mediaType = matches[2] ? matches[1] : 'text/plain' + (matches[3] || ';charset=US-ASCII');\n isBase64 = !!matches[4];\n dataString = dataURI.slice(matches[0].length);\n\n if (isBase64) {\n // Convert base64 to raw binary data held in a string:\n byteString = atob(dataString);\n } else {\n // Convert base64/URLEncoded data component to raw binary:\n byteString = decodeURIComponent(dataString);\n } // Write the bytes of the string to an ArrayBuffer:\n\n\n arrayBuffer = new ArrayBuffer(byteString.length);\n intArray = new Uint8Array(arrayBuffer);\n\n for (i = 0; i < byteString.length; i += 1) {\n intArray[i] = byteString.charCodeAt(i);\n } // Write the ArrayBuffer (or ArrayBufferView) to a blob:\n\n\n if (hasBlobConstructor) {\n return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {\n type: mediaType\n });\n }\n\n bb = new BlobBuilder();\n bb.append(arrayBuffer);\n return bb.getBlob(mediaType);\n };\n\n if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {\n if (CanvasPrototype.mozGetAsFile) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n } else {\n callback(self.mozGetAsFile('blob', type));\n }\n });\n };\n } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {\n if (CanvasPrototype.msToBlob) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n if ((type && type !== 'image/png' || quality) && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n } else {\n callback(self.msToBlob(type));\n }\n });\n };\n } else {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n });\n };\n }\n }\n }\n\n if (module.exports) {\n module.exports = dataURLtoBlob;\n } else {\n window.dataURLtoBlob = dataURLtoBlob;\n }\n })(window);\n })(canvasToBlob);\n\n var toBlob = canvasToBlob.exports;\n\n var isBlob = function isBlob(value) {\n if (typeof Blob === 'undefined') {\n return false;\n }\n\n return value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]';\n };\n\n var DEFAULTS = {\n /**\n * Indicates if output the original image instead of the compressed one\n * when the size of the compressed image is greater than the original one's\n * @type {boolean}\n */\n strict: true,\n\n /**\n * Indicates if read the image's Exif Orientation information,\n * and then rotate or flip the image automatically.\n * @type {boolean}\n */\n checkOrientation: true,\n\n /**\n * The max width of the output image.\n * @type {number}\n */\n maxWidth: Infinity,\n\n /**\n * The max height of the output image.\n * @type {number}\n */\n maxHeight: Infinity,\n\n /**\n * The min width of the output image.\n * @type {number}\n */\n minWidth: 0,\n\n /**\n * The min height of the output image.\n * @type {number}\n */\n minHeight: 0,\n\n /**\n * The width of the output image.\n * If not specified, the natural width of the source image will be used.\n * @type {number}\n */\n width: undefined,\n\n /**\n * The height of the output image.\n * If not specified, the natural height of the source image will be used.\n * @type {number}\n */\n height: undefined,\n\n /**\n * Sets how the size of the image should be resized to the container\n * specified by the `width` and `height` options.\n * @type {string}\n */\n resize: 'none',\n\n /**\n * The quality of the output image.\n * It must be a number between `0` and `1`,\n * and only available for `image/jpeg` and `image/webp` images.\n * Check out {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob canvas.toBlob}.\n * @type {number}\n */\n quality: 0.8,\n\n /**\n * The mime type of the output image.\n * By default, the original mime type of the source image file will be used.\n * @type {string}\n */\n mimeType: 'auto',\n\n /**\n * Files whose file type is included in this list,\n * and whose file size exceeds the `convertSize` value will be converted to JPEGs.\n * @type {string|Array}\n */\n convertTypes: ['image/png'],\n\n /**\n * PNG files over this size (5 MB by default) will be converted to JPEGs.\n * To disable this, just set the value to `Infinity`.\n * @type {number}\n */\n convertSize: 5000000,\n\n /**\n * The hook function to execute before draw the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.fillStyle = '#fff';\n * }\n */\n beforeDraw: null,\n\n /**\n * The hook function to execute after drew the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.filter = 'grayscale(100%)';\n * }\n */\n drew: null,\n\n /**\n * The hook function to execute when success to compress the image.\n * @type {Function}\n * @param {File} file - The compressed image File object.\n * @example\n * function (file) {\n * console.log(file);\n * }\n */\n success: null,\n\n /**\n * The hook function to execute when fail to compress the image.\n * @type {Function}\n * @param {Error} err - An Error object.\n * @example\n * function (err) {\n * console.log(err.message);\n * }\n */\n error: null\n };\n\n var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n var WINDOW = IS_BROWSER ? window : {};\n\n /**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\n\n var isPositiveNumber = function isPositiveNumber(value) {\n return value > 0 && value < Infinity;\n };\n var slice = Array.prototype.slice;\n /**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\n\n function toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n }\n var REGEXP_IMAGE_TYPE = /^image\\/.+$/;\n /**\n * Check if the given value is a mime type of image.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given is a mime type of image, else `false`.\n */\n\n function isImageType(value) {\n return REGEXP_IMAGE_TYPE.test(value);\n }\n /**\n * Convert image type to extension.\n * @param {string} value - The image type to convert.\n * @returns {boolean} Returns the image extension.\n */\n\n function imageTypeToExtension(value) {\n var extension = isImageType(value) ? value.substr(6) : '';\n\n if (extension === 'jpeg') {\n extension = 'jpg';\n }\n\n return \".\".concat(extension);\n }\n var fromCharCode = String.fromCharCode;\n /**\n * Get string from char code in data view.\n * @param {DataView} dataView - The data view for read.\n * @param {number} start - The start index.\n * @param {number} length - The read length.\n * @returns {string} The read result.\n */\n\n function getStringFromCharCode(dataView, start, length) {\n var str = '';\n var i;\n length += start;\n\n for (i = start; i < length; i += 1) {\n str += fromCharCode(dataView.getUint8(i));\n }\n\n return str;\n }\n var btoa = WINDOW.btoa;\n /**\n * Transform array buffer to Data URL.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {string} mimeType - The mime type of the Data URL.\n * @returns {string} The result Data URL.\n */\n\n function arrayBufferToDataURL(arrayBuffer, mimeType) {\n var chunks = [];\n var chunkSize = 8192;\n var uint8 = new Uint8Array(arrayBuffer);\n\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n\n return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n }\n /**\n * Get orientation value from given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {number} The read orientation value.\n */\n\n function resetAndGetOrientation(arrayBuffer) {\n var dataView = new DataView(arrayBuffer);\n var orientation; // Ignores range error when the image does not have correct Exif information\n\n try {\n var littleEndian;\n var app1Start;\n var ifdStart; // Only handle JPEG image (start by 0xFFD8)\n\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n var length = dataView.byteLength;\n var offset = 2;\n\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n\n offset += 1;\n }\n }\n\n if (app1Start) {\n var exifIDCode = app1Start + 4;\n var tiffOffset = app1Start + 10;\n\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n var endianness = dataView.getUint16(tiffOffset);\n littleEndian = endianness === 0x4949;\n\n if (littleEndian || endianness === 0x4D4D\n /* bigEndian */\n ) {\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n\n if (firstIFDOffset >= 0x00000008) {\n ifdStart = tiffOffset + firstIFDOffset;\n }\n }\n }\n }\n }\n\n if (ifdStart) {\n var _length = dataView.getUint16(ifdStart, littleEndian);\n\n var _offset;\n\n var i;\n\n for (i = 0; i < _length; i += 1) {\n _offset = ifdStart + i * 12 + 2;\n\n if (dataView.getUint16(_offset, littleEndian) === 0x0112\n /* Orientation */\n ) {\n // 8 is the offset of the current tag's value\n _offset += 8; // Get the original orientation value\n\n orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value\n\n dataView.setUint16(_offset, 1, littleEndian);\n break;\n }\n }\n }\n } catch (e) {\n orientation = 1;\n }\n\n return orientation;\n }\n /**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\n\n function parseOrientation(orientation) {\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n\n switch (orientation) {\n // Flip horizontal\n case 2:\n scaleX = -1;\n break;\n // Rotate left 180°\n\n case 3:\n rotate = -180;\n break;\n // Flip vertical\n\n case 4:\n scaleY = -1;\n break;\n // Flip vertical and rotate right 90°\n\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n // Rotate right 90°\n\n case 6:\n rotate = 90;\n break;\n // Flip horizontal and rotate right 90°\n\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n // Rotate left 90°\n\n case 8:\n rotate = -90;\n break;\n }\n\n return {\n rotate: rotate,\n scaleX: scaleX,\n scaleY: scaleY\n };\n }\n var REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n /**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\n\n function normalizeDecimalNumber(value) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n }\n /**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\n\n function getAdjustedSizes(_ref) {\n var aspectRatio = _ref.aspectRatio,\n height = _ref.height,\n width = _ref.width;\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n var isValidWidth = isPositiveNumber(width);\n var isValidHeight = isPositiveNumber(height);\n\n if (isValidWidth && isValidHeight) {\n var adjustedWidth = height * aspectRatio;\n\n if ((type === 'contain' || type === 'none') && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n } else if (isValidWidth) {\n height = width / aspectRatio;\n } else if (isValidHeight) {\n width = height * aspectRatio;\n }\n\n return {\n width: width,\n height: height\n };\n }\n\n var ArrayBuffer$1 = WINDOW.ArrayBuffer,\n FileReader = WINDOW.FileReader;\n var URL = WINDOW.URL || WINDOW.webkitURL;\n var REGEXP_EXTENSION = /\\.\\w+$/;\n var AnotherCompressor = WINDOW.Compressor;\n /**\n * Creates a new image compressor.\n * @class\n */\n\n var Compressor = /*#__PURE__*/function () {\n /**\n * The constructor of Compressor.\n * @param {File|Blob} file - The target image file for compressing.\n * @param {Object} [options] - The options for compressing.\n */\n function Compressor(file, options) {\n _classCallCheck(this, Compressor);\n\n this.file = file;\n this.image = new Image();\n this.options = _objectSpread2(_objectSpread2({}, DEFAULTS), options);\n this.aborted = false;\n this.result = null;\n this.init();\n }\n\n _createClass(Compressor, [{\n key: \"init\",\n value: function init() {\n var _this = this;\n\n var file = this.file,\n options = this.options;\n\n if (!isBlob(file)) {\n this.fail(new Error('The first argument must be a File or Blob object.'));\n return;\n }\n\n var mimeType = file.type;\n\n if (!isImageType(mimeType)) {\n this.fail(new Error('The first argument must be an image File or Blob object.'));\n return;\n }\n\n if (!URL || !FileReader) {\n this.fail(new Error('The current browser does not support image compression.'));\n return;\n }\n\n if (!ArrayBuffer$1) {\n options.checkOrientation = false;\n }\n\n if (URL && !options.checkOrientation) {\n this.load({\n url: URL.createObjectURL(file)\n });\n } else {\n var reader = new FileReader();\n var checkOrientation = options.checkOrientation && mimeType === 'image/jpeg';\n this.reader = reader;\n\n reader.onload = function (_ref) {\n var target = _ref.target;\n var result = target.result;\n var data = {};\n\n if (checkOrientation) {\n // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n var orientation = resetAndGetOrientation(result);\n\n if (orientation > 1 || !URL) {\n // Generate a new URL which has the default orientation value\n data.url = arrayBufferToDataURL(result, mimeType);\n\n if (orientation > 1) {\n _extends(data, parseOrientation(orientation));\n }\n } else {\n data.url = URL.createObjectURL(file);\n }\n } else {\n data.url = result;\n }\n\n _this.load(data);\n };\n\n reader.onabort = function () {\n _this.fail(new Error('Aborted to read the image with FileReader.'));\n };\n\n reader.onerror = function () {\n _this.fail(new Error('Failed to read the image with FileReader.'));\n };\n\n reader.onloadend = function () {\n _this.reader = null;\n };\n\n if (checkOrientation) {\n reader.readAsArrayBuffer(file);\n } else {\n reader.readAsDataURL(file);\n }\n }\n }\n }, {\n key: \"load\",\n value: function load(data) {\n var _this2 = this;\n\n var file = this.file,\n image = this.image;\n\n image.onload = function () {\n _this2.draw(_objectSpread2(_objectSpread2({}, data), {}, {\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight\n }));\n };\n\n image.onabort = function () {\n _this2.fail(new Error('Aborted to load the image.'));\n };\n\n image.onerror = function () {\n _this2.fail(new Error('Failed to load the image.'));\n }; // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n\n\n if (WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent)) {\n // Fix the `The operation is insecure` error (#57)\n image.crossOrigin = 'anonymous';\n }\n\n image.alt = file.name;\n image.src = data.url;\n }\n }, {\n key: \"draw\",\n value: function draw(_ref2) {\n var _this3 = this;\n\n var naturalWidth = _ref2.naturalWidth,\n naturalHeight = _ref2.naturalHeight,\n _ref2$rotate = _ref2.rotate,\n rotate = _ref2$rotate === void 0 ? 0 : _ref2$rotate,\n _ref2$scaleX = _ref2.scaleX,\n scaleX = _ref2$scaleX === void 0 ? 1 : _ref2$scaleX,\n _ref2$scaleY = _ref2.scaleY,\n scaleY = _ref2$scaleY === void 0 ? 1 : _ref2$scaleY;\n var file = this.file,\n image = this.image,\n options = this.options;\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var is90DegreesRotated = Math.abs(rotate) % 180 === 90;\n var resizable = (options.resize === 'contain' || options.resize === 'cover') && isPositiveNumber(options.width) && isPositiveNumber(options.height);\n var maxWidth = Math.max(options.maxWidth, 0) || Infinity;\n var maxHeight = Math.max(options.maxHeight, 0) || Infinity;\n var minWidth = Math.max(options.minWidth, 0) || 0;\n var minHeight = Math.max(options.minHeight, 0) || 0;\n var aspectRatio = naturalWidth / naturalHeight;\n var width = options.width,\n height = options.height;\n\n if (is90DegreesRotated) {\n var _ref3 = [maxHeight, maxWidth];\n maxWidth = _ref3[0];\n maxHeight = _ref3[1];\n var _ref4 = [minHeight, minWidth];\n minWidth = _ref4[0];\n minHeight = _ref4[1];\n var _ref5 = [height, width];\n width = _ref5[0];\n height = _ref5[1];\n }\n\n if (resizable) {\n aspectRatio = width / height;\n }\n\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: maxWidth,\n height: maxHeight\n }, 'contain');\n\n maxWidth = _getAdjustedSizes.width;\n maxHeight = _getAdjustedSizes.height;\n\n var _getAdjustedSizes2 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n\n minWidth = _getAdjustedSizes2.width;\n minHeight = _getAdjustedSizes2.height;\n\n if (resizable) {\n var _getAdjustedSizes3 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: width,\n height: height\n }, options.resize);\n\n width = _getAdjustedSizes3.width;\n height = _getAdjustedSizes3.height;\n } else {\n var _getAdjustedSizes4 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: width,\n height: height\n });\n\n var _getAdjustedSizes4$wi = _getAdjustedSizes4.width;\n width = _getAdjustedSizes4$wi === void 0 ? naturalWidth : _getAdjustedSizes4$wi;\n var _getAdjustedSizes4$he = _getAdjustedSizes4.height;\n height = _getAdjustedSizes4$he === void 0 ? naturalHeight : _getAdjustedSizes4$he;\n }\n\n width = Math.floor(normalizeDecimalNumber(Math.min(Math.max(width, minWidth), maxWidth)));\n height = Math.floor(normalizeDecimalNumber(Math.min(Math.max(height, minHeight), maxHeight)));\n var destX = -width / 2;\n var destY = -height / 2;\n var destWidth = width;\n var destHeight = height;\n var params = [];\n\n if (resizable) {\n var srcX = 0;\n var srcY = 0;\n var srcWidth = naturalWidth;\n var srcHeight = naturalHeight;\n\n var _getAdjustedSizes5 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: naturalWidth,\n height: naturalHeight\n }, {\n contain: 'cover',\n cover: 'contain'\n }[options.resize]);\n\n srcWidth = _getAdjustedSizes5.width;\n srcHeight = _getAdjustedSizes5.height;\n srcX = (naturalWidth - srcWidth) / 2;\n srcY = (naturalHeight - srcHeight) / 2;\n params.push(srcX, srcY, srcWidth, srcHeight);\n }\n\n params.push(destX, destY, destWidth, destHeight);\n\n if (is90DegreesRotated) {\n var _ref6 = [height, width];\n width = _ref6[0];\n height = _ref6[1];\n }\n\n canvas.width = width;\n canvas.height = height;\n\n if (!isImageType(options.mimeType)) {\n options.mimeType = file.type;\n }\n\n var fillStyle = 'transparent'; // Converts PNG files over the `convertSize` to JPEGs.\n\n if (file.size > options.convertSize && options.convertTypes.indexOf(options.mimeType) >= 0) {\n options.mimeType = 'image/jpeg';\n }\n\n if (options.mimeType === 'image/jpeg') {\n fillStyle = '#fff';\n } // Override the default fill color (#000, black)\n\n\n context.fillStyle = fillStyle;\n context.fillRect(0, 0, width, height);\n\n if (options.beforeDraw) {\n options.beforeDraw.call(this, context, canvas);\n }\n\n if (this.aborted) {\n return;\n }\n\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate(rotate * Math.PI / 180);\n context.scale(scaleX, scaleY);\n context.drawImage.apply(context, [image].concat(params));\n context.restore();\n\n if (options.drew) {\n options.drew.call(this, context, canvas);\n }\n\n if (this.aborted) {\n return;\n }\n\n var done = function done(result) {\n if (!_this3.aborted) {\n _this3.done({\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n result: result\n });\n }\n };\n\n if (canvas.toBlob) {\n canvas.toBlob(done, options.mimeType, options.quality);\n } else {\n done(toBlob(canvas.toDataURL(options.mimeType, options.quality)));\n }\n }\n }, {\n key: \"done\",\n value: function done(_ref7) {\n var naturalWidth = _ref7.naturalWidth,\n naturalHeight = _ref7.naturalHeight,\n result = _ref7.result;\n var file = this.file,\n image = this.image,\n options = this.options;\n\n if (URL && !options.checkOrientation) {\n URL.revokeObjectURL(image.src);\n }\n\n if (result) {\n // Returns original file if the result is greater than it and without size related options\n if (options.strict && result.size > file.size && options.mimeType === file.type && !(options.width > naturalWidth || options.height > naturalHeight || options.minWidth > naturalWidth || options.minHeight > naturalHeight || options.maxWidth < naturalWidth || options.maxHeight < naturalHeight)) {\n result = file;\n } else {\n var date = new Date();\n result.lastModified = date.getTime();\n result.lastModifiedDate = date;\n result.name = file.name; // Convert the extension to match its type\n\n if (result.name && result.type !== file.type) {\n result.name = result.name.replace(REGEXP_EXTENSION, imageTypeToExtension(result.type));\n }\n }\n } else {\n // Returns original file if the result is null in some cases.\n result = file;\n }\n\n this.result = result;\n\n if (options.success) {\n options.success.call(this, result);\n }\n }\n }, {\n key: \"fail\",\n value: function fail(err) {\n var options = this.options;\n\n if (options.error) {\n options.error.call(this, err);\n } else {\n throw err;\n }\n }\n }, {\n key: \"abort\",\n value: function abort() {\n if (!this.aborted) {\n this.aborted = true;\n\n if (this.reader) {\n this.reader.abort();\n } else if (!this.image.complete) {\n this.image.onload = null;\n this.image.onabort();\n } else {\n this.fail(new Error('The compression process has been aborted.'));\n }\n }\n }\n /**\n * Get the no conflict compressor class.\n * @returns {Compressor} The compressor class.\n */\n\n }], [{\n key: \"noConflict\",\n value: function noConflict() {\n window.Compressor = AnotherCompressor;\n return Compressor;\n }\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n\n }, {\n key: \"setDefaults\",\n value: function setDefaults(options) {\n _extends(DEFAULTS, options);\n }\n }]);\n\n return Compressor;\n }();\n\n return Compressor;\n\n}));\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.IMask = factory());\n}(this, (function () { 'use strict';\n\n // 7.2.1 RequireObjectCoercible(argument)\n var _defined = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n };\n\n // 7.1.13 ToObject(argument)\n\n var _toObject = function (it) {\n return Object(_defined(it));\n };\n\n var hasOwnProperty = {}.hasOwnProperty;\n var _has = function (it, key) {\n return hasOwnProperty.call(it, key);\n };\n\n var toString = {}.toString;\n\n var _cof = function (it) {\n return toString.call(it).slice(8, -1);\n };\n\n // fallback for non-array-like ES3 and non-enumerable old V8 strings\n\n // eslint-disable-next-line no-prototype-builtins\n var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return _cof(it) == 'String' ? it.split('') : Object(it);\n };\n\n // to indexed object, toObject with fallback for non-array-like ES3 strings\n\n\n var _toIobject = function (it) {\n return _iobject(_defined(it));\n };\n\n // 7.1.4 ToInteger\n var ceil = Math.ceil;\n var floor = Math.floor;\n var _toInteger = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n };\n\n // 7.1.15 ToLength\n\n var min = Math.min;\n var _toLength = function (it) {\n return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n };\n\n var max = Math.max;\n var min$1 = Math.min;\n var _toAbsoluteIndex = function (index, length) {\n index = _toInteger(index);\n return index < 0 ? max(index + length, 0) : min$1(index, length);\n };\n\n // false -> Array#indexOf\n // true -> Array#includes\n\n\n\n var _arrayIncludes = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = _toIobject($this);\n var length = _toLength(O.length);\n var index = _toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n };\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n var _global = createCommonjsModule(function (module) {\n // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n var 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')();\n if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n });\n\n var SHARED = '__core-js_shared__';\n var store = _global[SHARED] || (_global[SHARED] = {});\n var _shared = function (key) {\n return store[key] || (store[key] = {});\n };\n\n var id = 0;\n var px = Math.random();\n var _uid = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n };\n\n var shared = _shared('keys');\n\n var _sharedKey = function (key) {\n return shared[key] || (shared[key] = _uid(key));\n };\n\n var arrayIndexOf = _arrayIncludes(false);\n var IE_PROTO = _sharedKey('IE_PROTO');\n\n var _objectKeysInternal = function (object, names) {\n var O = _toIobject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) _has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (_has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n };\n\n // IE 8- don't enum bug keys\n var _enumBugKeys = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n ).split(',');\n\n // 19.1.2.14 / 15.2.3.14 Object.keys(O)\n\n\n\n var _objectKeys = Object.keys || function keys(O) {\n return _objectKeysInternal(O, _enumBugKeys);\n };\n\n var _core = createCommonjsModule(function (module) {\n var core = module.exports = { version: '2.5.5' };\n if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n });\n var _core_1 = _core.version;\n\n var _isObject = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n };\n\n var _anObject = function (it) {\n if (!_isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n };\n\n var _fails = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n };\n\n // Thank's IE8 for his funny defineProperty\n var _descriptors = !_fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n });\n\n var document$1 = _global.document;\n // typeof document.createElement is 'object' in old IE\n var is = _isObject(document$1) && _isObject(document$1.createElement);\n var _domCreate = function (it) {\n return is ? document$1.createElement(it) : {};\n };\n\n var _ie8DomDefine = !_descriptors && !_fails(function () {\n return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;\n });\n\n // 7.1.1 ToPrimitive(input [, PreferredType])\n\n // instead of the ES6 spec version, we didn't implement @@toPrimitive case\n // and the second argument - flag - preferred type is a string\n var _toPrimitive = function (it, S) {\n if (!_isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n };\n\n var dP = Object.defineProperty;\n\n var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n _anObject(O);\n P = _toPrimitive(P, true);\n _anObject(Attributes);\n if (_ie8DomDefine) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n };\n\n var _objectDp = {\n \tf: f\n };\n\n var _propertyDesc = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n };\n\n var _hide = _descriptors ? function (object, key, value) {\n return _objectDp.f(object, key, _propertyDesc(1, value));\n } : function (object, key, value) {\n object[key] = value;\n return object;\n };\n\n var _redefine = createCommonjsModule(function (module) {\n var SRC = _uid('src');\n var TO_STRING = 'toString';\n var $toString = Function[TO_STRING];\n var TPL = ('' + $toString).split(TO_STRING);\n\n _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 });\n\n var _aFunction = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n };\n\n // optional / simple context binding\n\n var _ctx = function (fn, that, length) {\n _aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n };\n\n var PROTOTYPE = 'prototype';\n\n var $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 };\n _global.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`\n var _export = $export;\n\n // most Object methods by ES6 should accept primitives\n\n\n\n var _objectSap = function (KEY, exec) {\n var fn = (_core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n _export(_export.S + _export.F * _fails(function () { fn(1); }), 'Object', exp);\n };\n\n // 19.1.2.14 Object.keys(O)\n\n\n\n _objectSap('keys', function () {\n return function keys(it) {\n return _objectKeys(_toObject(it));\n };\n });\n\n var keys = _core.Object.keys;\n\n var _stringRepeat = 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\n _export(_export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: _stringRepeat\n });\n\n var repeat = _core.String.repeat;\n\n // https://github.com/tc39/proposal-string-pad-start-end\n\n\n\n\n var _stringPad = 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 = _stringRepeat.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\n var navigator = _global.navigator;\n\n var _userAgent = navigator && navigator.userAgent || '';\n\n // https://github.com/tc39/proposal-string-pad-start-end\n\n\n\n\n // https://github.com/zloirock/core-js/issues/280\n _export(_export.P + _export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(_userAgent), 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return _stringPad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n });\n\n var padStart = _core.String.padStart;\n\n // https://github.com/tc39/proposal-string-pad-start-end\n\n\n\n\n // https://github.com/zloirock/core-js/issues/280\n _export(_export.P + _export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(_userAgent), 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return _stringPad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n });\n\n var padEnd = _core.String.padEnd;\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n\n var createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _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 var get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n };\n\n var possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n };\n\n var set = function set(object, property, value, receiver) {\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent !== null) {\n set(parent, property, value, receiver);\n }\n } else if (\"value\" in desc && desc.writable) {\n desc.value = value;\n } else {\n var setter = desc.set;\n\n if (setter !== undefined) {\n setter.call(receiver, value);\n }\n }\n\n return value;\n };\n\n var slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n };\n\n /** Checks if value is string */\n function isString(str) {\n return typeof str === 'string' || str instanceof String;\n }\n\n /** Conforms string with fallback */\n function conform(res, str) {\n var fallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n return isString(res) ? res : res ? str : fallback;\n }\n\n /**\r\n Direction\r\n @prop {number} NONE\r\n @prop {number} LEFT\r\n @prop {number} RIGHT\r\n */\n var DIRECTION = {\n NONE: 0,\n LEFT: -1,\n RIGHT: 1\n /**\r\n Direction\r\n @enum {number}\r\n */\n };\n\n /** Returns next char position in direction */\n function indexInDirection(pos, direction) {\n if (direction === DIRECTION.LEFT) --pos;\n return pos;\n }\n\n /** Escapes regular expression control chars */\n function escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }\n\n // cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\n function objectIncludes(b, a) {\n if (a === b) return true;\n\n var arrA = Array.isArray(a),\n arrB = Array.isArray(b),\n i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (!objectIncludes(a[i], b[i])) return false;\n }return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && (typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object' && (typeof b === 'undefined' ? 'undefined' : _typeof(b)) === 'object') {\n var keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n\n for (i = 0; i < keys.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n }for (i = 0; i < keys.length; i++) {\n if (!objectIncludes(a[keys[i]], b[keys[i]])) return false;\n }return true;\n }\n\n return false;\n }\n\n /* eslint-disable no-undef */\n var g = typeof window !== 'undefined' && window || typeof global !== 'undefined' && global.global === global && global || typeof self !== 'undefined' && self.self === self && self || {};\n\n /** Provides details of changing input */\n\n var ActionDetails = function () {\n /** Old input value */\n\n /** Current input value */\n function ActionDetails(value, cursorPos, oldValue, oldSelection) {\n classCallCheck(this, ActionDetails);\n\n this.value = value;\n this.cursorPos = cursorPos;\n this.oldValue = oldValue;\n this.oldSelection = oldSelection;\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n\n /**\r\n Start changing position\r\n @readonly\r\n */\n\n /** Old selection */\n\n /** Current cursor position */\n\n\n createClass(ActionDetails, [{\n key: 'startChangePos',\n get: function get$$1() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /**\r\n Inserted symbols count\r\n @readonly\r\n */\n\n }, {\n key: 'insertedCount',\n get: function get$$1() {\n return this.cursorPos - this.startChangePos;\n }\n\n /**\r\n Inserted symbols\r\n @readonly\r\n */\n\n }, {\n key: 'inserted',\n get: function get$$1() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /**\r\n Removed symbols count\r\n @readonly\r\n */\n\n }, {\n key: 'removedCount',\n get: function get$$1() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /**\r\n Removed symbols\r\n @readonly\r\n */\n\n }, {\n key: 'removed',\n get: function get$$1() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /**\r\n Unchanged head symbols\r\n @readonly\r\n */\n\n }, {\n key: 'head',\n get: function get$$1() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /**\r\n Unchanged tail symbols\r\n @readonly\r\n */\n\n }, {\n key: 'tail',\n get: function get$$1() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /**\r\n Remove direction\r\n @readonly\r\n */\n\n }, {\n key: 'removeDirection',\n get: function get$$1() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right or if range removed (event with backspace)\n return this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n }]);\n return ActionDetails;\n }();\n\n /**\r\n Provides details of changing model value\r\n @param {Object} [details]\r\n @param {string} [details.inserted] - Inserted symbols\r\n @param {boolean} [details.overflow] - Is overflowed\r\n @param {number} [details.removeCount] - Removed symbols count\r\n @param {number} [details.shift] - Additional offset if any changes occurred before current position\r\n */\n var ChangeDetails = function () {\n /** Additional offset if any changes occurred before current position */\n\n /** Inserted symbols */\n function ChangeDetails(details) {\n classCallCheck(this, ChangeDetails);\n\n _extends(this, {\n inserted: '',\n overflow: false,\n shift: 0\n }, details);\n }\n\n /**\r\n Aggregate changes\r\n @returns {ChangeDetails} `this`\r\n */\n\n /** Is overflowed */\n\n\n createClass(ChangeDetails, [{\n key: 'aggregate',\n value: function aggregate(details) {\n if (details.rawInserted) this.rawInserted += details.rawInserted;\n this.inserted += details.inserted;\n this.shift += details.shift;\n this.overflow = this.overflow || details.overflow;\n return this;\n }\n\n /** Total offset considering all changes */\n\n }, {\n key: 'offset',\n get: function get$$1() {\n return this.shift + this.inserted.length;\n }\n\n /** Raw inserted is used by dynamic mask */\n\n }, {\n key: 'rawInserted',\n get: function get$$1() {\n return this._rawInserted != null ? this._rawInserted : this.inserted;\n },\n set: function set$$1(rawInserted) {\n this._rawInserted = rawInserted;\n }\n }]);\n return ChangeDetails;\n }();\n\n /** Supported mask type */\n\n\n /** Append flags */\n\n\n /** Extract flags */\n\n /** Provides common masking stuff */\n var Masked = function () {\n /** Does additional processing in the end of editing */\n\n /** Transforms value before mask processing */\n function Masked(opts) {\n classCallCheck(this, Masked);\n\n this._value = '';\n this._update(opts);\n this.isInitialized = true;\n }\n\n /** Sets and applies new options */\n\n /** */\n\n /** Validates if value is acceptable */\n // $Shape; TODO after fix https://github.com/facebook/flow/issues/4773\n\n /** @type {Mask} */\n\n\n createClass(Masked, [{\n key: 'updateOptions',\n value: function updateOptions(opts) {\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /**\r\n Sets new options\r\n @protected\r\n */\n\n }, {\n key: '_update',\n value: function _update(opts) {\n _extends(this, opts);\n }\n\n /** Clones masked with options and value */\n\n }, {\n key: 'clone',\n value: function clone() {\n var m = new Masked(this);\n m._value = this.value.slice();\n return m;\n }\n\n /** */\n\n }, {\n key: 'assign',\n value: function assign(source) {\n // $FlowFixMe\n return _extends(this, source);\n }\n\n /** Resets value */\n\n }, {\n key: 'reset',\n value: function reset() {\n this._value = '';\n }\n\n /** */\n\n }, {\n key: 'resolve',\n\n\n /** Resolve new value */\n value: function resolve(value) {\n this.reset();\n this._append(value, { input: true });\n this._appendTail();\n this.doCommit();\n return this.value;\n }\n\n /** */\n\n }, {\n key: 'nearestInputPos',\n\n\n /** Finds nearest input position in direction */\n value: function nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n\n /** Extracts value in range considering flags */\n\n }, {\n key: 'extractInput',\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n return this.value.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n\n }, {\n key: '_extractTail',\n value: function _extractTail() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n return {\n value: this.extractInput(fromPos, toPos),\n fromPos: fromPos,\n toPos: toPos\n };\n }\n\n /** Appends tail */\n\n }, {\n key: '_appendTail',\n value: function _appendTail(tail) {\n return this._append(tail ? tail.value : '', { tail: true });\n }\n\n /** Appends symbols considering flags */\n\n }, {\n key: '_append',\n value: function _append(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var oldValueLength = this.value.length;\n var consistentValue = this.clone();\n var overflow = false;\n\n str = this.doPrepare(str, flags);\n\n for (var ci = 0; ci < str.length; ++ci) {\n this._value += str[ci];\n if (this.doValidate(flags) === false) {\n this.assign(consistentValue);\n if (!flags.input) {\n // in `input` mode dont skip invalid chars\n overflow = true;\n break;\n }\n }\n\n consistentValue = this.clone();\n }\n\n return new ChangeDetails({\n inserted: this.value.slice(oldValueLength),\n overflow: overflow\n });\n }\n\n /** Appends symbols considering tail */\n\n }, {\n key: 'appendWithTail',\n value: function appendWithTail(str, tail) {\n // TODO refactor\n var aggregateDetails = new ChangeDetails();\n var consistentValue = this.clone();\n var consistentAppended = void 0;\n\n for (var ci = 0; ci < str.length; ++ci) {\n var ch = str[ci];\n\n var appendDetails = this._append(ch, { input: true });\n consistentAppended = this.clone();\n var tailAppended = !appendDetails.overflow && !this._appendTail(tail).overflow;\n if (!tailAppended || this.doValidate({ tail: true }) === false) {\n this.assign(consistentValue);\n break;\n }\n\n this.assign(consistentAppended);\n consistentValue = this.clone();\n aggregateDetails.aggregate(appendDetails);\n }\n\n // TODO needed for cases when\n // 1) REMOVE ONLY AND NO LOOP AT ALL\n // 2) last loop iteration removes tail\n // 3) when breaks on tail insert\n\n // aggregate only shift from tail\n aggregateDetails.shift += this._appendTail(tail).shift;\n\n return aggregateDetails;\n }\n\n /** */\n\n }, {\n key: 'remove',\n value: function remove() {\n var from = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length - from;\n\n this._value = this.value.slice(0, from) + this.value.slice(from + count);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n\n }, {\n key: 'withValueRefresh',\n value: function withValueRefresh(fn) {\n if (this._refreshing || !this.isInitialized) return fn();\n this._refreshing = true;\n\n var unmasked = this.unmaskedValue;\n var value = this.value;\n\n var ret = fn();\n\n // try to update with raw value first to keep fixed chars\n if (this.resolve(value) !== value) {\n // or fallback to unmasked\n this.unmaskedValue = unmasked;\n }\n\n delete this._refreshing;\n return ret;\n }\n\n /**\r\n Prepares string before mask processing\r\n @protected\r\n */\n\n }, {\n key: 'doPrepare',\n value: function doPrepare(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return this.prepare ? this.prepare(str, this, flags) : str;\n }\n\n /**\r\n Validates if value is acceptable\r\n @protected\r\n */\n\n }, {\n key: 'doValidate',\n value: function doValidate(flags) {\n return !this.validate || this.validate(this.value, this, flags);\n }\n\n /**\r\n Does additional processing in the end of editing\r\n @protected\r\n */\n\n }, {\n key: 'doCommit',\n value: function doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n\n // TODO\n // insert (str, fromPos, flags)\n\n /** */\n\n }, {\n key: 'splice',\n value: function splice(start, deleteCount, inserted, removeDirection) {\n var tailPos = start + deleteCount;\n var tail = this._extractTail(tailPos);\n\n var startChangePos = this.nearestInputPos(start, removeDirection);\n var changeDetails = new ChangeDetails({\n shift: startChangePos - start // adjust shift if start was aligned\n }).aggregate(this.remove(startChangePos)).aggregate(this.appendWithTail(inserted, tail));\n\n return changeDetails;\n }\n }, {\n key: 'value',\n get: function get$$1() {\n return this._value;\n },\n set: function set$$1(value) {\n this.resolve(value);\n }\n }, {\n key: 'unmaskedValue',\n get: function get$$1() {\n return this.value;\n },\n set: function set$$1(value) {\n this.reset();\n this._append(value);\n this._appendTail();\n this.doCommit();\n }\n\n /** */\n\n }, {\n key: 'typedValue',\n get: function get$$1() {\n return this.unmaskedValue;\n },\n set: function set$$1(value) {\n this.unmaskedValue = value;\n }\n\n /** Value that includes raw user input */\n\n }, {\n key: 'rawInputValue',\n get: function get$$1() {\n return this.extractInput(0, this.value.length, { raw: true });\n },\n set: function set$$1(value) {\n this.reset();\n this._append(value, { raw: true });\n this._appendTail();\n this.doCommit();\n }\n\n /** */\n\n }, {\n key: 'isComplete',\n get: function get$$1() {\n return true;\n }\n }]);\n return Masked;\n }();\n\n /** Get Masked class by mask type */\n function maskedClass(mask) {\n if (mask == null) {\n throw new Error('mask property should be defined');\n }\n\n if (mask instanceof RegExp) return g.IMask.MaskedRegExp;\n if (isString(mask)) return g.IMask.MaskedPattern;\n if (mask instanceof Date || mask === Date) return g.IMask.MaskedDate;\n if (mask instanceof Number || typeof mask === 'number' || mask === Number) return g.IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return g.IMask.MaskedDynamic;\n // $FlowFixMe\n if (mask.prototype instanceof g.IMask.Masked) return mask;\n // $FlowFixMe\n if (mask instanceof Function) return g.IMask.MaskedFunction;\n\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return g.IMask.Masked;\n }\n\n /** Creates new {@link Masked} depending on mask type */\n function createMask(opts) {\n opts = _extends({}, opts); // clone\n var mask = opts.mask;\n\n if (mask instanceof g.IMask.Masked) return mask;\n\n var MaskedClass = maskedClass(mask);\n return new MaskedClass(opts);\n }\n\n /** */\n\n /** */\n var PatternDefinition = function () {\n /** */\n\n /** */\n\n /** */\n\n /** */\n function PatternDefinition(opts) {\n classCallCheck(this, PatternDefinition);\n // TODO flow\n _extends(this, opts);\n\n if (this.mask) {\n this._masked = createMask(opts);\n }\n }\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n\n /** */\n\n\n createClass(PatternDefinition, [{\n key: 'reset',\n value: function reset() {\n this.isHollow = false;\n this.isRawInput = false;\n if (this._masked) this._masked.reset();\n }\n\n /** */\n\n }, {\n key: 'resolve',\n\n\n /** */\n value: function resolve(ch) {\n if (!this._masked) return false;\n return this._masked.resolve(ch);\n }\n }, {\n key: 'isInput',\n get: function get$$1() {\n return this.type === PatternDefinition.TYPES.INPUT;\n }\n\n /** */\n\n }, {\n key: 'isHiddenHollow',\n get: function get$$1() {\n return this.isHollow && this.optional;\n }\n }]);\n return PatternDefinition;\n }();\n\n PatternDefinition.DEFAULTS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/, // http://stackoverflow.com/a/22075070\n '*': /./\n };\n /**\r\n @prop {string} INPUT\r\n @prop {string} FIXED\r\n */\n PatternDefinition.TYPES = {\n INPUT: 'input',\n FIXED: 'fixed'\n };\n\n /** */\n\n\n /** */\n\n /**\r\n Pattern group symbols from parent\r\n @param {MaskedPattern} masked - Internal {@link masked} model\r\n @param {Object} opts\r\n @param {string} opts.name - Group name\r\n @param {number} opts.offset - Group offset in masked definitions array\r\n @param {string} opts.mask - Group mask\r\n @param {Function} [opts.validate] - Custom group validator\r\n */\n var PatternGroup = function () {\n /** Group mask */\n\n /** Group name */\n\n /** */\n function PatternGroup(masked, _ref) {\n var name = _ref.name,\n offset = _ref.offset,\n mask = _ref.mask,\n validate = _ref.validate;\n classCallCheck(this, PatternGroup);\n\n this.masked = masked;\n this.name = name;\n this.offset = offset;\n this.mask = mask;\n this.validate = validate || function () {\n return true;\n };\n }\n\n /** Slice of internal {@link masked} value */\n\n /** Custom group validator */\n\n /** Group offset in masked definitions array */\n\n\n /** Internal {@link masked} model */\n\n /** */\n\n\n createClass(PatternGroup, [{\n key: 'doValidate',\n\n\n /** Validates if current value is acceptable */\n value: function doValidate(flags) {\n return this.validate(this.value, this, flags);\n }\n }, {\n key: 'value',\n get: function get$$1() {\n return this.masked.value.slice(this.masked.mapDefIndexToPos(this.offset), this.masked.mapDefIndexToPos(this.offset + this.mask.length));\n }\n\n /** Unmasked slice of internal {@link masked} value */\n\n }, {\n key: 'unmaskedValue',\n get: function get$$1() {\n return this.masked.extractInput(this.masked.mapDefIndexToPos(this.offset), this.masked.mapDefIndexToPos(this.offset + this.mask.length));\n }\n }]);\n return PatternGroup;\n }();\n var RangeGroup = function () {\n /** @type {Function} */\n function RangeGroup(_ref2) {\n var _ref3 = slicedToArray(_ref2, 2),\n from = _ref3[0],\n to = _ref3[1];\n\n var maxlen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : String(to).length;\n classCallCheck(this, RangeGroup);\n\n this._from = from;\n this._to = to;\n this._maxLength = maxlen;\n this.validate = this.validate.bind(this);\n\n this._update();\n }\n /** @type {string} */\n\n\n createClass(RangeGroup, [{\n key: '_update',\n value: function _update() {\n this._maxLength = Math.max(this._maxLength, String(this.to).length);\n this.mask = '0'.repeat(this._maxLength);\n }\n }, {\n key: 'validate',\n value: function validate(str) {\n var minstr = '';\n var maxstr = '';\n\n var _ref4 = str.match(/^(\\D*)(\\d*)(\\D*)/) || [],\n _ref5 = slicedToArray(_ref4, 3),\n placeholder = _ref5[1],\n num = _ref5[2];\n\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n\n var firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n\n minstr = minstr.padEnd(this._maxLength, '0');\n maxstr = maxstr.padEnd(this._maxLength, '9');\n\n return this.from <= Number(maxstr) && Number(minstr) <= this.to;\n }\n }, {\n key: 'to',\n get: function get$$1() {\n return this._to;\n },\n set: function set$$1(to) {\n this._to = to;\n this._update();\n }\n }, {\n key: 'from',\n get: function get$$1() {\n return this._from;\n },\n set: function set$$1(from) {\n this._from = from;\n this._update();\n }\n }, {\n key: 'maxLength',\n get: function get$$1() {\n return this._maxLength;\n },\n set: function set$$1(maxLength) {\n this._maxLength = maxLength;\n this._update();\n }\n }, {\n key: '_matchFrom',\n get: function get$$1() {\n return this.maxLength - String(this.from).length;\n }\n }]);\n return RangeGroup;\n }();\n\n /** Pattern group that validates enum values */\n function EnumGroup(enums) {\n return {\n mask: '*'.repeat(enums[0].length),\n validate: function validate(value, group, flags) {\n return enums.some(function (e) {\n return e.indexOf(group.unmaskedValue) >= 0;\n });\n }\n };\n }\n\n PatternGroup.Range = RangeGroup;\n PatternGroup.Enum = EnumGroup;\n\n var ChunksTailDetails = function () {\n function ChunksTailDetails(chunks) {\n classCallCheck(this, ChunksTailDetails);\n\n this.chunks = chunks;\n }\n\n createClass(ChunksTailDetails, [{\n key: 'value',\n get: function get$$1() {\n return this.chunks.map(function (c) {\n return c.value;\n }).join('');\n }\n }, {\n key: 'fromPos',\n get: function get$$1() {\n var firstChunk = this.chunks[0];\n return firstChunk && firstChunk.stop;\n }\n }, {\n key: 'toPos',\n get: function get$$1() {\n var lastChunk = this.chunks[this.chunks.length - 1];\n return lastChunk && lastChunk.stop;\n }\n }]);\n return ChunksTailDetails;\n }();\n\n /**\r\n Pattern mask\r\n @param {Object} opts\r\n @param {Object} opts.groups\r\n @param {Object} opts.definitions\r\n @param {string} opts.placeholderChar\r\n @param {boolean} opts.lazy\r\n */\n var MaskedPattern = function (_Masked) {\n inherits(MaskedPattern, _Masked);\n\n // TODO mask type\n /** Single char for empty input */\n\n\n /** */\n function MaskedPattern() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, MaskedPattern);\n // TODO type $Shape={} does not work\n opts.definitions = _extends({}, PatternDefinition.DEFAULTS, opts.definitions);\n return possibleConstructorReturn(this, (MaskedPattern.__proto__ || Object.getPrototypeOf(MaskedPattern)).call(this, _extends({}, MaskedPattern.DEFAULTS, opts)));\n }\n\n /**\r\n @override\r\n @param {Object} opts\r\n */\n\n /** Show placeholder only when needed */\n\n /** */\n\n\n createClass(MaskedPattern, [{\n key: '_update',\n value: function _update() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n opts.definitions = _extends({}, this.definitions, opts.definitions);\n get(MaskedPattern.prototype.__proto__ || Object.getPrototypeOf(MaskedPattern.prototype), '_update', this).call(this, opts);\n this._rebuildMask();\n }\n\n /** */\n\n }, {\n key: '_rebuildMask',\n value: function _rebuildMask() {\n var _this2 = this;\n\n var defs = this.definitions;\n this._charDefs = [];\n this._groupDefs = [];\n\n var pattern = this.mask;\n if (!pattern || !defs) return;\n\n var unmaskingBlock = false;\n var optionalBlock = false;\n var stopAlign = false;\n\n var _loop = function _loop(_i) {\n if (_this2.groups) {\n var p = pattern.slice(_i);\n var gNames = Object.keys(_this2.groups).filter(function (gName) {\n return p.indexOf(gName) === 0;\n });\n // order by key length\n gNames.sort(function (a, b) {\n return b.length - a.length;\n });\n // use group name with max length\n var gName = gNames[0];\n if (gName) {\n var group = _this2.groups[gName];\n _this2._groupDefs.push(new PatternGroup(_this2, {\n name: gName,\n offset: _this2._charDefs.length,\n mask: group.mask,\n validate: group.validate\n }));\n pattern = pattern.replace(gName, group.mask);\n }\n }\n\n var char = pattern[_i];\n var type = char in defs ? PatternDefinition.TYPES.INPUT : PatternDefinition.TYPES.FIXED;\n var unmasking = type === PatternDefinition.TYPES.INPUT || unmaskingBlock;\n var optional = type === PatternDefinition.TYPES.INPUT && optionalBlock;\n\n if (char === MaskedPattern.STOP_CHAR) {\n stopAlign = true;\n return 'continue';\n }\n\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n return 'continue';\n }\n\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n return 'continue';\n }\n\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++_i;\n char = pattern[_i];\n if (!char) return 'break';\n type = PatternDefinition.TYPES.FIXED;\n }\n\n _this2._charDefs.push(new PatternDefinition({\n char: char,\n type: type,\n optional: optional,\n stopAlign: stopAlign,\n unmasking: unmasking,\n mask: type === PatternDefinition.TYPES.INPUT ? defs[char] : function (value) {\n return value === char;\n }\n }));\n\n stopAlign = false;\n i = _i;\n };\n\n _loop2: for (var i = 0; i < pattern.length; ++i) {\n var _ret = _loop(i);\n\n switch (_ret) {\n case 'continue':\n continue;\n\n case 'break':\n break _loop2;}\n }\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'doValidate',\n value: function doValidate() {\n var _babelHelpers$get;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this._groupDefs.every(function (g$$1) {\n return g$$1.doValidate.apply(g$$1, toConsumableArray(args));\n }) && (_babelHelpers$get = get(MaskedPattern.prototype.__proto__ || Object.getPrototypeOf(MaskedPattern.prototype), 'doValidate', this)).call.apply(_babelHelpers$get, [this].concat(toConsumableArray(args)));\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'clone',\n value: function clone() {\n var _this3 = this;\n\n var m = new MaskedPattern(this);\n m._value = this.value;\n // $FlowFixMe\n m._charDefs.forEach(function (d, i) {\n return _extends(d, _this3._charDefs[i]);\n });\n // $FlowFixMe\n m._groupDefs.forEach(function (d, i) {\n return _extends(d, _this3._groupDefs[i]);\n });\n return m;\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'reset',\n value: function reset() {\n get(MaskedPattern.prototype.__proto__ || Object.getPrototypeOf(MaskedPattern.prototype), 'reset', this).call(this);\n this._charDefs.forEach(function (d) {\n delete d.isHollow;\n });\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'hiddenHollowsBefore',\n\n\n /** */\n value: function hiddenHollowsBefore(defIndex) {\n return this._charDefs.slice(0, defIndex).filter(function (d) {\n return d.isHiddenHollow;\n }).length;\n }\n\n /** Map definition index to position on view */\n\n }, {\n key: 'mapDefIndexToPos',\n value: function mapDefIndexToPos(defIndex) {\n return defIndex - this.hiddenHollowsBefore(defIndex);\n }\n\n /** Map position on view to definition index */\n\n }, {\n key: 'mapPosToDefIndex',\n value: function mapPosToDefIndex(pos) {\n var defIndex = pos;\n for (var di = 0; di < this._charDefs.length; ++di) {\n var def = this._charDefs[di];\n if (di >= defIndex) break;\n if (def.isHiddenHollow) ++defIndex;\n }\n return defIndex;\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: '_appendTail',\n\n\n /**\r\n @override\r\n */\n value: function _appendTail(tail) {\n var details = new ChangeDetails();\n if (tail) {\n details.aggregate(tail instanceof ChunksTailDetails ? this._appendChunks(tail.chunks, { tail: true }) : get(MaskedPattern.prototype.__proto__ || Object.getPrototypeOf(MaskedPattern.prototype), '_appendTail', this).call(this, tail));\n }\n return details.aggregate(this._appendPlaceholder());\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: '_append',\n value: function _append(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var oldValueLength = this.value.length;\n var rawInserted = '';\n var overflow = false;\n\n str = this.doPrepare(str, flags);\n\n for (var ci = 0, di = this.mapPosToDefIndex(this.value.length); ci < str.length;) {\n var ch = str[ci];\n var def = this._charDefs[di];\n\n // check overflow\n if (def == null) {\n overflow = true;\n break;\n }\n\n // reset\n def.isHollow = false;\n\n var resolved = void 0,\n skipped = void 0;\n var chres = conform(def.resolve(ch), ch);\n\n if (def.type === PatternDefinition.TYPES.INPUT) {\n if (chres) {\n this._value += chres;\n if (!this.doValidate()) {\n chres = '';\n this._value = this.value.slice(0, -1);\n }\n }\n\n resolved = !!chres;\n skipped = !chres && !def.optional;\n\n if (!chres) {\n if (!def.optional && !flags.input && !this.lazy) {\n this._value += this.placeholderChar;\n skipped = false;\n }\n if (!skipped) def.isHollow = true;\n } else {\n rawInserted += chres;\n }\n } else {\n this._value += def.char;\n resolved = chres && (def.unmasking || flags.input || flags.raw) && !flags.tail;\n def.isRawInput = resolved && (flags.raw || flags.input);\n if (def.isRawInput) rawInserted += def.char;\n }\n\n if (!skipped) ++di;\n if (resolved || skipped) ++ci;\n }\n\n return new ChangeDetails({\n inserted: this.value.slice(oldValueLength),\n rawInserted: rawInserted,\n overflow: overflow\n });\n }\n\n /** Appends chunks splitted by stop chars */\n\n }, {\n key: '_appendChunks',\n value: function _appendChunks(chunks) {\n var details = new ChangeDetails();\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n for (var ci = 0; ci < chunks.length; ++ci) {\n var _chunks$ci = chunks[ci],\n stop = _chunks$ci.stop,\n value = _chunks$ci.value;\n\n var fromDef = stop != null && this._charDefs[stop];\n // lets double check if stopAlign is here\n if (fromDef && fromDef.stopAlign) details.aggregate(this._appendPlaceholder(stop));\n if (details.aggregate(this._append.apply(this, [value].concat(toConsumableArray(args)))).overflow) break;\n }\n return details;\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: '_extractTail',\n value: function _extractTail() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n return new ChunksTailDetails(this._extractInputChunks(fromPos, toPos));\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'extractInput',\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (fromPos === toPos) return '';\n\n var str = this.value;\n var input = '';\n\n var toDefIndex = this.mapPosToDefIndex(toPos);\n for (var ci = fromPos, di = this.mapPosToDefIndex(fromPos); ci < toPos && ci < str.length && di < toDefIndex; ++di) {\n var ch = str[ci];\n var def = this._charDefs[di];\n\n if (!def) break;\n if (def.isHiddenHollow) continue;\n\n if (def.isInput && !def.isHollow || flags.raw && !def.isInput && def.isRawInput) input += ch;\n ++ci;\n }\n return input;\n }\n\n /** Extracts chunks from input splitted by stop chars */\n\n }, {\n key: '_extractInputChunks',\n value: function _extractInputChunks() {\n var _this4 = this;\n\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n if (fromPos === toPos) return [];\n\n var fromDefIndex = this.mapPosToDefIndex(fromPos);\n var toDefIndex = this.mapPosToDefIndex(toPos);\n var stopDefIndices = this._charDefs.map(function (d, i) {\n return [d, i];\n }).slice(fromDefIndex, toDefIndex).filter(function (_ref) {\n var _ref2 = slicedToArray(_ref, 1),\n d = _ref2[0];\n\n return d.stopAlign;\n }).map(function (_ref3) {\n var _ref4 = slicedToArray(_ref3, 2),\n i = _ref4[1];\n\n return i;\n });\n\n var stops = [fromDefIndex].concat(toConsumableArray(stopDefIndices), [toDefIndex]);\n\n return stops.map(function (s, i) {\n return {\n stop: stopDefIndices.indexOf(s) >= 0 ? s : null,\n\n value: _this4.extractInput(_this4.mapDefIndexToPos(s), _this4.mapDefIndexToPos(stops[++i]))\n };\n }).filter(function (_ref5) {\n var stop = _ref5.stop,\n value = _ref5.value;\n return stop != null || value;\n });\n }\n\n /** Appends placeholder depending on laziness */\n\n }, {\n key: '_appendPlaceholder',\n value: function _appendPlaceholder(toDefIndex) {\n var oldValueLength = this.value.length;\n var maxDefIndex = toDefIndex || this._charDefs.length;\n for (var di = this.mapPosToDefIndex(this.value.length); di < maxDefIndex; ++di) {\n var def = this._charDefs[di];\n if (def.isInput) def.isHollow = true;\n\n if (!this.lazy || toDefIndex) {\n this._value += !def.isInput && def.char != null ? def.char : !def.optional ? this.placeholderChar : '';\n }\n }\n return new ChangeDetails({\n inserted: this.value.slice(oldValueLength)\n });\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'remove',\n value: function remove() {\n var from = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length - from;\n\n var fromDefIndex = this.mapPosToDefIndex(from);\n var toDefIndex = this.mapPosToDefIndex(from + count);\n this._charDefs.slice(fromDefIndex, toDefIndex).forEach(function (d) {\n return d.reset();\n });\n\n return get(MaskedPattern.prototype.__proto__ || Object.getPrototypeOf(MaskedPattern.prototype), 'remove', this).call(this, from, count);\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'nearestInputPos',\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n\n var step = direction || DIRECTION.RIGHT;\n\n var initialDefIndex = this.mapPosToDefIndex(cursorPos);\n var initialDef = this._charDefs[initialDefIndex];\n var di = initialDefIndex;\n\n var firstInputIndex = void 0,\n firstFilledInputIndex = void 0,\n firstVisibleHollowIndex = void 0,\n nextdi = void 0;\n\n // check if chars at right is acceptable for LEFT and NONE directions\n if (direction !== DIRECTION.RIGHT && (initialDef && initialDef.isInput ||\n // in none direction latest position is acceptable also\n direction === DIRECTION.NONE && cursorPos === this.value.length)) {\n firstInputIndex = initialDefIndex;\n if (initialDef && !initialDef.isHollow) firstFilledInputIndex = initialDefIndex;\n }\n\n if (firstFilledInputIndex == null && direction == DIRECTION.LEFT || firstInputIndex == null) {\n // search forward\n for (nextdi = indexInDirection(di, step); 0 <= nextdi && nextdi < this._charDefs.length; di += step, nextdi += step) {\n var nextDef = this._charDefs[nextdi];\n if (firstInputIndex == null && nextDef.isInput) {\n firstInputIndex = di;\n if (direction === DIRECTION.NONE) break;\n }\n if (firstVisibleHollowIndex == null && nextDef.isHollow && !nextDef.isHiddenHollow) firstVisibleHollowIndex = di;\n if (nextDef.isInput && !nextDef.isHollow) {\n firstFilledInputIndex = di;\n break;\n }\n }\n }\n\n // for lazy if has aligned left inside fixed and has came to the start - use start position\n if (direction === DIRECTION.LEFT && di === 0 && this.lazy && !this.extractInput() && (!initialDef || !initialDef.isInput)) firstInputIndex = 0;\n\n if (direction === DIRECTION.LEFT || firstInputIndex == null) {\n // search backward\n step = -step;\n var overflow = false;\n\n // find hollows only before initial pos\n for (nextdi = indexInDirection(di, step); 0 <= nextdi && nextdi < this._charDefs.length; di += step, nextdi += step) {\n var _nextDef = this._charDefs[nextdi];\n if (_nextDef.isInput) {\n firstInputIndex = di;\n if (_nextDef.isHollow && !_nextDef.isHiddenHollow) break;\n }\n\n // if hollow not found before start position - set `overflow`\n // and try to find just any input\n if (di === initialDefIndex) overflow = true;\n\n // first input found\n if (overflow && firstInputIndex != null) break;\n }\n\n // process overflow\n overflow = overflow || nextdi >= this._charDefs.length;\n if (overflow && firstInputIndex != null) di = firstInputIndex;\n } else if (firstFilledInputIndex == null) {\n // adjust index if delete at right and filled input not found at right\n di = firstVisibleHollowIndex != null ? firstVisibleHollowIndex : firstInputIndex;\n }\n\n return this.mapDefIndexToPos(di);\n }\n\n /** Get group by name */\n\n }, {\n key: 'group',\n value: function group(name) {\n return this.groupsByName(name)[0];\n }\n\n /** Get all groups by name */\n\n }, {\n key: 'groupsByName',\n value: function groupsByName(name) {\n return this._groupDefs.filter(function (g$$1) {\n return g$$1.name === name;\n });\n }\n }, {\n key: 'isComplete',\n get: function get$$1() {\n var _this5 = this;\n\n return !this._charDefs.some(function (d, i) {\n return d.isInput && !d.optional && (d.isHollow || !_this5.extractInput(i, i + 1));\n });\n }\n }, {\n key: 'unmaskedValue',\n get: function get$$1() {\n var str = this.value;\n var unmasked = '';\n\n for (var ci = 0, di = 0; ci < str.length && di < this._charDefs.length; ++di) {\n var ch = str[ci];\n var def = this._charDefs[di];\n\n if (def.isHiddenHollow) continue;\n if (def.unmasking && !def.isHollow) unmasked += ch;\n ++ci;\n }\n\n return unmasked;\n },\n set: function set$$1(unmaskedValue) {\n set(MaskedPattern.prototype.__proto__ || Object.getPrototypeOf(MaskedPattern.prototype), 'unmaskedValue', unmaskedValue, this);\n }\n }]);\n return MaskedPattern;\n }(Masked);\n\n MaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n };\n MaskedPattern.STOP_CHAR = '`';\n MaskedPattern.ESCAPE_CHAR = '\\\\';\n MaskedPattern.Definition = PatternDefinition;\n MaskedPattern.Group = PatternGroup;\n\n /** Date mask */\n\n var MaskedDate = function (_MaskedPattern) {\n inherits(MaskedDate, _MaskedPattern);\n\n /**\r\n @param {Object} opts\r\n */\n\n /** Start date */\n\n /** Format Date to string */\n function MaskedDate(opts) {\n classCallCheck(this, MaskedDate);\n return possibleConstructorReturn(this, (MaskedDate.__proto__ || Object.getPrototypeOf(MaskedDate)).call(this, _extends({}, MaskedDate.DEFAULTS, opts)));\n }\n\n /**\r\n @override\r\n */\n\n /** End date */\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n\n /** Parse string to Date */\n\n\n createClass(MaskedDate, [{\n key: '_update',\n value: function _update(opts) {\n if (opts.mask === Date) delete opts.mask;\n if (opts.pattern) {\n opts.mask = opts.pattern;\n delete opts.pattern;\n }\n\n var groups = opts.groups;\n opts.groups = _extends({}, MaskedDate.GET_DEFAULT_GROUPS());\n // adjust year group\n if (opts.min) opts.groups.Y.from = opts.min.getFullYear();\n if (opts.max) opts.groups.Y.to = opts.max.getFullYear();\n _extends(opts.groups, groups);\n\n get(MaskedDate.prototype.__proto__ || Object.getPrototypeOf(MaskedDate.prototype), '_update', this).call(this, opts);\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'doValidate',\n value: function doValidate() {\n var _babelHelpers$get;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var valid = (_babelHelpers$get = get(MaskedDate.prototype.__proto__ || Object.getPrototypeOf(MaskedDate.prototype), 'doValidate', this)).call.apply(_babelHelpers$get, [this].concat(toConsumableArray(args)));\n var date = this.date;\n\n return valid && (!this.isComplete || this.isDateExist(this.value) && date && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n\n }, {\n key: 'isDateExist',\n value: function isDateExist(str) {\n return this.format(this.parse(str)) === str;\n }\n\n /** Parsed Date */\n\n }, {\n key: 'date',\n get: function get$$1() {\n return this.isComplete ? this.parse(this.value) : null;\n },\n set: function set$$1(date) {\n this.value = this.format(date);\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'typedValue',\n get: function get$$1() {\n return this.date;\n },\n set: function set$$1(value) {\n this.date = value;\n }\n }]);\n return MaskedDate;\n }(MaskedPattern);\n\n MaskedDate.DEFAULTS = {\n pattern: 'd{.}`m{.}`Y',\n format: function format(date) {\n var day = String(date.getDate()).padStart(2, '0');\n var month = String(date.getMonth() + 1).padStart(2, '0');\n var year = date.getFullYear();\n\n return [day, month, year].join('.');\n },\n parse: function parse(str) {\n var _str$split = str.split('.'),\n _str$split2 = slicedToArray(_str$split, 3),\n day = _str$split2[0],\n month = _str$split2[1],\n year = _str$split2[2];\n\n return new Date(year, month - 1, day);\n }\n };\n MaskedDate.GET_DEFAULT_GROUPS = function () {\n return {\n d: new PatternGroup.Range([1, 31]),\n m: new PatternGroup.Range([1, 12]),\n Y: new PatternGroup.Range([1900, 9999])\n };\n };\n\n /**\r\n Generic element API to use with mask\r\n @interface\r\n */\n var MaskElement = function () {\n function MaskElement() {\n classCallCheck(this, MaskElement);\n }\n\n createClass(MaskElement, [{\n key: 'select',\n value: function select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n\n try {\n this._unsafeSelect(start, end);\n } catch (e) {}\n }\n }, {\n key: '_unsafeSelect',\n value: function _unsafeSelect(start, end) {}\n }, {\n key: 'isActive',\n value: function isActive() {\n return false;\n }\n }, {\n key: 'bindEvents',\n value: function bindEvents(handlers) {}\n }, {\n key: 'unbindEvents',\n value: function unbindEvents() {}\n }, {\n key: 'selectionStart',\n get: function get$$1() {\n var start = void 0;\n try {\n start = this._unsafeSelectionStart;\n } catch (e) {}\n\n return start != null ? start : this.value.length;\n }\n }, {\n key: 'selectionEnd',\n get: function get$$1() {\n var end = void 0;\n try {\n end = this._unsafeSelectionEnd;\n } catch (e) {}\n\n return end != null ? end : this.value.length;\n }\n }]);\n return MaskElement;\n }();\n\n var HTMLMaskElement = function (_MaskElement) {\n inherits(HTMLMaskElement, _MaskElement);\n\n function HTMLMaskElement(input) {\n classCallCheck(this, HTMLMaskElement);\n\n var _this = possibleConstructorReturn(this, (HTMLMaskElement.__proto__ || Object.getPrototypeOf(HTMLMaskElement)).call(this));\n\n _this.input = input;\n _this._handlers = {};\n return _this;\n }\n\n createClass(HTMLMaskElement, [{\n key: 'isActive',\n value: function isActive() {\n return this.input === document.activeElement;\n }\n }, {\n key: '_unsafeSelect',\n value: function _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n }, {\n key: 'bindEvents',\n value: function bindEvents(handlers) {\n var _this2 = this;\n\n Object.keys(handlers).forEach(function (event) {\n return _this2._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]);\n });\n }\n }, {\n key: 'unbindEvents',\n value: function unbindEvents() {\n var _this3 = this;\n\n Object.keys(this._handlers).forEach(function (event) {\n return _this3._toggleEventHandler(event);\n });\n }\n }, {\n key: '_toggleEventHandler',\n value: function _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n }, {\n key: '_unsafeSelectionStart',\n get: function get$$1() {\n return this.input.selectionStart;\n }\n }, {\n key: '_unsafeSelectionEnd',\n get: function get$$1() {\n return this.input.selectionEnd;\n }\n }, {\n key: 'value',\n get: function get$$1() {\n return this.input.value;\n },\n set: function set$$1(value) {\n this.input.value = value;\n }\n }]);\n return HTMLMaskElement;\n }(MaskElement);\n\n HTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'change'\n };\n\n /** Listens to element events and controls changes between element and {@link Masked} */\n\n var InputMask = function () {\n\n /**\r\n @param {MaskElement|HTMLInputElement|HTMLTextAreaElement} el\r\n @param {Object} opts\r\n */\n\n /**\r\n View element\r\n @readonly\r\n */\n function InputMask(el, opts) {\n classCallCheck(this, InputMask);\n\n this.el = el instanceof MaskElement ? el : new HTMLMaskElement(el);\n this.masked = createMask(opts);\n\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n\n /** Read or update mask */\n\n\n /**\r\n Internal {@link Masked} model\r\n @readonly\r\n */\n\n\n createClass(InputMask, [{\n key: '_bindEvents',\n\n\n /**\r\n Starts listening to element events\r\n @protected\r\n */\n value: function _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this.alignCursorFriendly,\n focus: this.alignCursorFriendly,\n commit: this._onChange\n });\n }\n\n /**\r\n Stops listening to element events\r\n @protected\r\n */\n\n }, {\n key: '_unbindEvents',\n value: function _unbindEvents() {\n this.el.unbindEvents();\n }\n\n /**\r\n Fires custom event\r\n @protected\r\n */\n\n }, {\n key: '_fireEvent',\n value: function _fireEvent(ev) {\n var listeners = this._listeners[ev];\n if (!listeners) return;\n\n listeners.forEach(function (l) {\n return l();\n });\n }\n\n /**\r\n Current selection start\r\n @readonly\r\n */\n\n }, {\n key: '_saveSelection',\n\n\n /**\r\n Stores current selection\r\n @protected\r\n */\n value: function _saveSelection() /* ev */{\n if (this.value !== this.el.value) {\n console.warn('Uncontrolled input change, refresh mask manually!'); // eslint-disable-line no-console\n }\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n\n }, {\n key: 'updateValue',\n value: function updateValue() {\n this.masked.value = this.el.value;\n }\n\n /** Syncronizes view from model value, fires change events */\n\n }, {\n key: 'updateControl',\n value: function updateControl() {\n var newUnmaskedValue = this.masked.unmaskedValue;\n var newValue = this.masked.value;\n var isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n\n if (this.el.value !== newValue) this.el.value = newValue;\n if (isChanged) this._fireChangeEvents();\n }\n\n /** Updates options with deep equal check, recreates @{link Masked} model if mask type changes */\n\n }, {\n key: 'updateOptions',\n value: function updateOptions(opts) {\n opts = _extends({}, opts);\n\n this.mask = opts.mask;\n delete opts.mask;\n\n // check if changed\n if (objectIncludes(this.masked, opts)) return;\n\n this.masked.updateOptions(opts);\n this.updateControl();\n }\n\n /** Updates cursor */\n\n }, {\n key: 'updateCursor',\n value: function updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /**\r\n Delays cursor update to support mobile browsers\r\n @private\r\n */\n\n }, {\n key: '_delayUpdateCursor',\n value: function _delayUpdateCursor(cursorPos) {\n var _this = this;\n\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(function () {\n if (!_this.el) return; // if was destroyed\n _this.cursorPos = _this._changingCursorPos;\n _this._abortUpdateCursor();\n }, 10);\n }\n\n /**\r\n Fires custom events\r\n @protected\r\n */\n\n }, {\n key: '_fireChangeEvents',\n value: function _fireChangeEvents() {\n this._fireEvent('accept');\n if (this.masked.isComplete) this._fireEvent('complete');\n }\n\n /**\r\n Aborts delayed cursor update\r\n @private\r\n */\n\n }, {\n key: '_abortUpdateCursor',\n value: function _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n\n }, {\n key: 'alignCursor',\n value: function alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT);\n }\n\n /** Aligns cursor only if selection is empty */\n\n }, {\n key: 'alignCursorFriendly',\n value: function alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return;\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n\n }, {\n key: 'on',\n value: function on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n\n }, {\n key: 'off',\n value: function off(ev, handler) {\n if (!this._listeners[ev]) return;\n if (!handler) {\n delete this._listeners[ev];\n return;\n }\n var hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n\n }, {\n key: '_onInput',\n value: function _onInput() {\n this._abortUpdateCursor();\n\n // fix strange IE behavior\n if (!this._selection) return this.updateValue();\n\n var details = new ActionDetails(\n // new state\n this.el.value, this.cursorPos,\n // old state\n this.value, this._selection);\n\n var offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection).offset;\n\n var cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, details.removeDirection);\n\n this.updateControl();\n this.updateCursor(cursorPos);\n }\n\n /** Handles view change event and commits model value */\n\n }, {\n key: '_onChange',\n value: function _onChange() {\n if (this.value !== this.el.value) {\n this.updateValue();\n }\n this.masked.doCommit();\n this.updateControl();\n }\n\n /** Handles view drop event, prevents by default */\n\n }, {\n key: '_onDrop',\n value: function _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Unbind view events and removes element reference */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this._unbindEvents();\n // $FlowFixMe why not do so?\n this._listeners.length = 0;\n delete this.el;\n }\n }, {\n key: 'mask',\n get: function get$$1() {\n return this.masked.mask;\n },\n set: function set$$1(mask) {\n if (mask == null || mask === this.masked.mask || mask === Date && this.masked instanceof MaskedDate) return;\n\n if (this.masked.constructor === maskedClass(mask)) {\n this.masked.mask = mask;\n return;\n }\n\n var masked = createMask({ mask: mask });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n\n }, {\n key: 'value',\n get: function get$$1() {\n return this._value;\n },\n set: function set$$1(str) {\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Unmasked value */\n\n }, {\n key: 'unmaskedValue',\n get: function get$$1() {\n return this._unmaskedValue;\n },\n set: function set$$1(str) {\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n\n }, {\n key: 'typedValue',\n get: function get$$1() {\n return this.masked.typedValue;\n },\n set: function set$$1(val) {\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n }, {\n key: 'selectionStart',\n get: function get$$1() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n\n }, {\n key: 'cursorPos',\n get: function get$$1() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n },\n set: function set$$1(pos) {\n if (!this.el.isActive) return;\n\n this.el.select(pos, pos);\n this._saveSelection();\n }\n }]);\n return InputMask;\n }();\n\n /**\r\n Number mask\r\n @param {Object} opts\r\n @param {string} opts.radix - Single char\r\n @param {string} opts.thousandsSeparator - Single char\r\n @param {Array} opts.mapToRadix - Array of single chars\r\n @param {number} opts.min\r\n @param {number} opts.max\r\n @param {number} opts.scale - Digits after point\r\n @param {boolean} opts.signed - Allow negative\r\n @param {boolean} opts.normalizeZeros - Flag to remove leading and trailing zeros in the end of editing\r\n @param {boolean} opts.padFractionalZeros - Flag to pad trailing zeros after point in the end of editing\r\n */\n var MaskedNumber = function (_Masked) {\n inherits(MaskedNumber, _Masked);\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Digits after point */\n\n /** */\n\n /** Single char */\n function MaskedNumber(opts) {\n classCallCheck(this, MaskedNumber);\n return possibleConstructorReturn(this, (MaskedNumber.__proto__ || Object.getPrototypeOf(MaskedNumber)).call(this, _extends({}, MaskedNumber.DEFAULTS, opts)));\n }\n\n /**\r\n @override\r\n */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** */\n\n /** */\n\n /** Array of single chars */\n\n\n /** Single char */\n\n\n createClass(MaskedNumber, [{\n key: '_update',\n value: function _update(opts) {\n get(MaskedNumber.prototype.__proto__ || Object.getPrototypeOf(MaskedNumber.prototype), '_update', this).call(this, opts);\n this._updateRegExps();\n }\n\n /** */\n\n }, {\n key: '_updateRegExps',\n value: function _updateRegExps() {\n // use different regexp to process user input (more strict, input suffix) and tail shifting\n var start = '^';\n\n var midInput = '';\n var mid = '';\n if (this.allowNegative) {\n midInput += '([+|\\\\-]?|([+|\\\\-]?(0|([1-9]+\\\\d*))))';\n mid += '[+|\\\\-]?';\n } else {\n midInput += '(0|([1-9]+\\\\d*))';\n }\n mid += '\\\\d*';\n\n var end = (this.scale ? '(' + this.radix + '\\\\d{0,' + this.scale + '})?' : '') + '$';\n\n this._numberRegExpInput = new RegExp(start + midInput + end);\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp('[' + this.mapToRadix.map(escapeRegExp).join('') + ']', 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: '_extractTail',\n value: function _extractTail() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n var tail = get(MaskedNumber.prototype.__proto__ || Object.getPrototypeOf(MaskedNumber.prototype), '_extractTail', this).call(this, fromPos, toPos);\n\n return _extends({}, tail, {\n value: this._removeThousandsSeparators(tail.value)\n });\n }\n\n /** */\n\n }, {\n key: '_removeThousandsSeparators',\n value: function _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n\n /** */\n\n }, {\n key: '_insertThousandsSeparators',\n value: function _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n var parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'doPrepare',\n value: function doPrepare(str) {\n var _babelHelpers$get;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return (_babelHelpers$get = get(MaskedNumber.prototype.__proto__ || Object.getPrototypeOf(MaskedNumber.prototype), 'doPrepare', this)).call.apply(_babelHelpers$get, [this, this._removeThousandsSeparators(str.replace(this._mapToRadixRegExp, this.radix))].concat(toConsumableArray(args)));\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'appendWithTail',\n value: function appendWithTail() {\n var _babelHelpers$get2;\n\n var previousValue = this.value;\n this._value = this._removeThousandsSeparators(this.value);\n var startChangePos = this.value.length;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var appendDetails = (_babelHelpers$get2 = get(MaskedNumber.prototype.__proto__ || Object.getPrototypeOf(MaskedNumber.prototype), 'appendWithTail', this)).call.apply(_babelHelpers$get2, [this].concat(toConsumableArray(args)));\n this._value = this._insertThousandsSeparators(this.value);\n\n // calculate offsets after insert separators\n var beforeTailPos = startChangePos + appendDetails.inserted.length;\n for (var pos = 0; pos <= beforeTailPos; ++pos) {\n if (this.value[pos] === this.thousandsSeparator) {\n if (pos < startChangePos ||\n // check high bound\n // if separator is still there - consider it also\n pos === startChangePos && previousValue[pos] === this.thousandsSeparator) {\n ++startChangePos;\n }\n if (pos < beforeTailPos) ++beforeTailPos;\n }\n }\n\n // adjust details with separators\n appendDetails.rawInserted = appendDetails.inserted;\n appendDetails.inserted = this.value.slice(startChangePos, beforeTailPos);\n appendDetails.shift += startChangePos - previousValue.length;\n\n return appendDetails;\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'nearestInputPos',\n value: function nearestInputPos(cursorPos, direction) {\n if (!direction) return cursorPos;\n\n var nextPos = indexInDirection(cursorPos, direction);\n if (this.value[nextPos] === this.thousandsSeparator) cursorPos += direction;\n return cursorPos;\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'doValidate',\n value: function doValidate(flags) {\n var regexp = flags.input ? this._numberRegExpInput : this._numberRegExp;\n\n // validate as string\n var valid = regexp.test(this._removeThousandsSeparators(this.value));\n\n if (valid) {\n // validate as number\n var number = this.number;\n valid = valid && !isNaN(number) && (\n // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && (\n // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n\n return valid && get(MaskedNumber.prototype.__proto__ || Object.getPrototypeOf(MaskedNumber.prototype), 'doValidate', this).call(this, flags);\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'doCommit',\n value: function doCommit() {\n var number = this.number;\n var validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n\n if (validnum !== number) this.unmaskedValue = String(validnum);\n\n var formatted = this.value;\n\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros) formatted = this._padFractionalZeros(formatted);\n\n this._value = this._insertThousandsSeparators(formatted);\n get(MaskedNumber.prototype.__proto__ || Object.getPrototypeOf(MaskedNumber.prototype), 'doCommit', this).call(this);\n }\n\n /** */\n\n }, {\n key: '_normalizeZeros',\n value: function _normalizeZeros(value) {\n var parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, function (match, sign, zeros, num) {\n return sign + num;\n });\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n\n /** */\n\n }, {\n key: '_padFractionalZeros',\n value: function _padFractionalZeros(value) {\n if (!value) return value;\n\n var parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'unmaskedValue',\n get: function get$$1() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, '.');\n },\n set: function set$$1(unmaskedValue) {\n set(MaskedNumber.prototype.__proto__ || Object.getPrototypeOf(MaskedNumber.prototype), 'unmaskedValue', unmaskedValue.replace('.', this.radix), this);\n }\n\n /** Parsed Number */\n\n }, {\n key: 'number',\n get: function get$$1() {\n return Number(this.unmaskedValue);\n },\n set: function set$$1(number) {\n this.unmaskedValue = String(number);\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'typedValue',\n get: function get$$1() {\n return this.number;\n },\n set: function set$$1(value) {\n this.number = value;\n }\n\n /**\r\n Is negative allowed\r\n @readonly\r\n */\n\n }, {\n key: 'allowNegative',\n get: function get$$1() {\n return this.signed || this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n }]);\n return MaskedNumber;\n }(Masked);\n\n MaskedNumber.DEFAULTS = {\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: ['.'],\n scale: 2,\n signed: false,\n normalizeZeros: true,\n padFractionalZeros: false\n };\n\n /** Masking by RegExp */\n\n var MaskedRegExp = function (_Masked) {\n inherits(MaskedRegExp, _Masked);\n\n function MaskedRegExp() {\n classCallCheck(this, MaskedRegExp);\n return possibleConstructorReturn(this, (MaskedRegExp.__proto__ || Object.getPrototypeOf(MaskedRegExp)).apply(this, arguments));\n }\n\n createClass(MaskedRegExp, [{\n key: '_update',\n\n /**\r\n @override\r\n @param {Object} opts\r\n */\n value: function _update(opts) {\n opts.validate = function (value) {\n return value.search(opts.mask) >= 0;\n };\n get(MaskedRegExp.prototype.__proto__ || Object.getPrototypeOf(MaskedRegExp.prototype), '_update', this).call(this, opts);\n }\n }]);\n return MaskedRegExp;\n }(Masked);\n\n /** Masking by custom Function */\n\n var MaskedFunction = function (_Masked) {\n inherits(MaskedFunction, _Masked);\n\n function MaskedFunction() {\n classCallCheck(this, MaskedFunction);\n return possibleConstructorReturn(this, (MaskedFunction.__proto__ || Object.getPrototypeOf(MaskedFunction)).apply(this, arguments));\n }\n\n createClass(MaskedFunction, [{\n key: '_update',\n\n /**\r\n @override\r\n @param {Object} opts\r\n */\n value: function _update(opts) {\n opts.validate = opts.mask;\n get(MaskedFunction.prototype.__proto__ || Object.getPrototypeOf(MaskedFunction.prototype), '_update', this).call(this, opts);\n }\n }]);\n return MaskedFunction;\n }(Masked);\n\n /** Dynamic mask for choosing apropriate mask in run-time */\n var MaskedDynamic = function (_Masked) {\n inherits(MaskedDynamic, _Masked);\n\n /**\r\n @param {Object} opts\r\n */\n\n /** Compliled {@link Masked} options */\n function MaskedDynamic(opts) {\n classCallCheck(this, MaskedDynamic);\n\n var _this = possibleConstructorReturn(this, (MaskedDynamic.__proto__ || Object.getPrototypeOf(MaskedDynamic)).call(this, _extends({}, MaskedDynamic.DEFAULTS, opts)));\n\n _this.currentMask = null;\n return _this;\n }\n\n /**\r\n @override\r\n */\n\n /** Chooses {@link Masked} depending on input value */\n\n /** Currently chosen mask */\n\n\n createClass(MaskedDynamic, [{\n key: '_update',\n value: function _update(opts) {\n get(MaskedDynamic.prototype.__proto__ || Object.getPrototypeOf(MaskedDynamic.prototype), '_update', this).call(this, opts);\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(function (m) {\n return createMask(m);\n }) : [];\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: '_append',\n value: function _append(str) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n str = this.doPrepare.apply(this, [str].concat(toConsumableArray(args)));\n\n var details = this._applyDispatch.apply(this, [str].concat(toConsumableArray(args)));\n\n if (this.currentMask) {\n var _currentMask;\n\n details.aggregate((_currentMask = this.currentMask)._append.apply(_currentMask, [str].concat(toConsumableArray(args))));\n }\n\n return details;\n }\n }, {\n key: '_applyDispatch',\n value: function _applyDispatch() {\n var appended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var oldValueLength = this.value.length;\n var inputValue = this.rawInputValue;\n var oldMask = this.currentMask;\n var details = new ChangeDetails();\n\n // dispatch SHOULD NOT modify mask\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n this.currentMask = this.doDispatch.apply(this, [appended].concat(toConsumableArray(args)));\n\n // restore state after dispatch\n if (this.currentMask && this.currentMask !== oldMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n // $FlowFixMe - it's ok, we don't change current mask\n this.currentMask._append(inputValue, { raw: true });\n details.shift = this.value.length - oldValueLength;\n }\n\n return details;\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'doDispatch',\n value: function doDispatch(appended) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return this.dispatch(appended, this, flags);\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'clone',\n value: function clone() {\n var m = new MaskedDynamic(this);\n m._value = this.value;\n\n // try to keep reference to compiled masks\n var currentMaskIndex = this.compiledMasks.indexOf(this.currentMask);\n if (this.currentMask) {\n m.currentMask = currentMaskIndex >= 0 ? m.compiledMasks[currentMaskIndex].assign(this.currentMask) : this.currentMask.clone();\n }\n\n return m;\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'reset',\n value: function reset() {\n if (this.currentMask) this.currentMask.reset();\n this.compiledMasks.forEach(function (cm) {\n return cm.reset();\n });\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'remove',\n\n\n /**\r\n @override\r\n */\n value: function remove() {\n var details = new ChangeDetails();\n if (this.currentMask) {\n var _currentMask2;\n\n details.aggregate((_currentMask2 = this.currentMask).remove.apply(_currentMask2, arguments))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n\n return details;\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'extractInput',\n value: function extractInput() {\n var _currentMask3;\n\n return this.currentMask ? (_currentMask3 = this.currentMask).extractInput.apply(_currentMask3, arguments) : '';\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: '_extractTail',\n value: function _extractTail() {\n var _currentMask4, _babelHelpers$get;\n\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.currentMask ? (_currentMask4 = this.currentMask)._extractTail.apply(_currentMask4, toConsumableArray(args)) : (_babelHelpers$get = get(MaskedDynamic.prototype.__proto__ || Object.getPrototypeOf(MaskedDynamic.prototype), '_extractTail', this)).call.apply(_babelHelpers$get, [this].concat(toConsumableArray(args)));\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: '_appendTail',\n value: function _appendTail(tail) {\n var details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch(tail.value));\n\n return details.aggregate(this.currentMask ? this.currentMask._appendTail(tail) : get(MaskedDynamic.prototype.__proto__ || Object.getPrototypeOf(MaskedDynamic.prototype), '_appendTail', this).call(this, tail));\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'doCommit',\n value: function doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n get(MaskedDynamic.prototype.__proto__ || Object.getPrototypeOf(MaskedDynamic.prototype), 'doCommit', this).call(this);\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'nearestInputPos',\n value: function nearestInputPos() {\n var _currentMask5, _babelHelpers$get2;\n\n for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.currentMask ? (_currentMask5 = this.currentMask).nearestInputPos.apply(_currentMask5, toConsumableArray(args)) : (_babelHelpers$get2 = get(MaskedDynamic.prototype.__proto__ || Object.getPrototypeOf(MaskedDynamic.prototype), 'nearestInputPos', this)).call.apply(_babelHelpers$get2, [this].concat(toConsumableArray(args)));\n }\n }, {\n key: 'value',\n get: function get$$1() {\n return this.currentMask ? this.currentMask.value : '';\n },\n set: function set$$1(value) {\n set(MaskedDynamic.prototype.__proto__ || Object.getPrototypeOf(MaskedDynamic.prototype), 'value', value, this);\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'unmaskedValue',\n get: function get$$1() {\n return this.currentMask ? this.currentMask.unmaskedValue : '';\n },\n set: function set$$1(unmaskedValue) {\n set(MaskedDynamic.prototype.__proto__ || Object.getPrototypeOf(MaskedDynamic.prototype), 'unmaskedValue', unmaskedValue, this);\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'typedValue',\n get: function get$$1() {\n return this.currentMask ? this.currentMask.typedValue : '';\n },\n set: function set$$1(value) {\n var unmaskedValue = String(value);\n if (this.currentMask) {\n this.currentMask.typedValue = value;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n\n /**\r\n @override\r\n */\n\n }, {\n key: 'isComplete',\n get: function get$$1() {\n return !!this.currentMask && this.currentMask.isComplete;\n }\n }]);\n return MaskedDynamic;\n }(Masked);\n\n\n MaskedDynamic.DEFAULTS = {\n dispatch: function dispatch(appended, masked, flags) {\n if (!masked.compiledMasks.length) return;\n\n var inputValue = masked.rawInputValue;\n\n // simulate input\n var inputs = masked.compiledMasks.map(function (cm, index) {\n var m = cm.clone();\n m.rawInputValue = inputValue;\n m._append(appended, flags);\n\n return { value: m.rawInputValue.length, index: index };\n });\n\n // pop masks with longer values first\n inputs.sort(function (i1, i2) {\n return i2.value - i1.value;\n });\n\n return masked.compiledMasks[inputs[0].index];\n }\n };\n\n /**\r\n * Applies mask on element.\r\n * @constructor\r\n * @param {HTMLInputElement|HTMLTextAreaElement|MaskElement} el - Element to apply mask\r\n * @param {Object} opts - Custom mask options\r\n * @return {InputMask}\r\n */\n function IMask(el) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // currently available only for input-like elements\n return new InputMask(el, opts);\n }\n\n /** {@link InputMask} */\n IMask.InputMask = InputMask;\n\n /** {@link Masked} */\n IMask.Masked = Masked;\n /** {@link MaskedPattern} */\n IMask.MaskedPattern = MaskedPattern;\n /** {@link MaskedNumber} */\n IMask.MaskedNumber = MaskedNumber;\n /** {@link MaskedDate} */\n IMask.MaskedDate = MaskedDate;\n /** {@link MaskedRegExp} */\n IMask.MaskedRegExp = MaskedRegExp;\n /** {@link MaskedFunction} */\n IMask.MaskedFunction = MaskedFunction;\n /** {@link MaskedDynamic} */\n IMask.MaskedDynamic = MaskedDynamic;\n /** {@link createMask} */\n IMask.createMask = createMask;\n /** {@link MaskElement} */\n IMask.MaskElement = MaskElement;\n /** {@link HTMLMaskElement} */\n IMask.HTMLMaskElement = HTMLMaskElement;\n\n g.IMask = IMask;\n\n return IMask;\n\n})));\n//# sourceMappingURL=imask.js.map\n","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v18.1.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar logger_1 = require(\"../logger\");\nvar context_1 = require(\"../context/context\");\nvar utils_1 = require(\"../utils\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar dragService_1 = require(\"./dragService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar environment_1 = require(\"../environment\");\nvar DragSourceType;\n(function (DragSourceType) {\n DragSourceType[DragSourceType[\"ToolPanel\"] = 0] = \"ToolPanel\";\n DragSourceType[DragSourceType[\"HeaderCell\"] = 1] = \"HeaderCell\";\n DragSourceType[DragSourceType[\"RowDrag\"] = 2] = \"RowDrag\";\n})(DragSourceType = exports.DragSourceType || (exports.DragSourceType = {}));\nvar VDirection;\n(function (VDirection) {\n VDirection[VDirection[\"Up\"] = 0] = \"Up\";\n VDirection[VDirection[\"Down\"] = 1] = \"Down\";\n})(VDirection = exports.VDirection || (exports.VDirection = {}));\nvar HDirection;\n(function (HDirection) {\n HDirection[HDirection[\"Left\"] = 0] = \"Left\";\n HDirection[HDirection[\"Right\"] = 1] = \"Right\";\n})(HDirection = exports.HDirection || (exports.HDirection = {}));\nvar DragAndDropService = (function () {\n function DragAndDropService() {\n this.dragSourceAndParamsList = [];\n this.dropTargets = [];\n }\n DragAndDropService_1 = DragAndDropService;\n DragAndDropService.prototype.init = function () {\n this.ePinnedIcon = utils_1.Utils.createIcon('columnMovePin', this.gridOptionsWrapper, null);\n this.ePlusIcon = utils_1.Utils.createIcon('columnMoveAdd', this.gridOptionsWrapper, null);\n this.eHiddenIcon = utils_1.Utils.createIcon('columnMoveHide', this.gridOptionsWrapper, null);\n this.eMoveIcon = utils_1.Utils.createIcon('columnMoveMove', this.gridOptionsWrapper, null);\n this.eLeftIcon = utils_1.Utils.createIcon('columnMoveLeft', this.gridOptionsWrapper, null);\n this.eRightIcon = utils_1.Utils.createIcon('columnMoveRight', this.gridOptionsWrapper, null);\n this.eGroupIcon = utils_1.Utils.createIcon('columnMoveGroup', this.gridOptionsWrapper, null);\n this.eAggregateIcon = utils_1.Utils.createIcon('columnMoveValue', this.gridOptionsWrapper, null);\n this.ePivotIcon = utils_1.Utils.createIcon('columnMovePivot', this.gridOptionsWrapper, null);\n this.eDropNotAllowedIcon = utils_1.Utils.createIcon('dropNotAllowed', this.gridOptionsWrapper, null);\n };\n DragAndDropService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('OldToolPanelDragAndDropService');\n };\n DragAndDropService.prototype.getStringType = function (type) {\n switch (type) {\n case DragSourceType.RowDrag: return 'row';\n case DragSourceType.HeaderCell: return 'headerCell';\n case DragSourceType.ToolPanel: return 'toolPanel';\n default:\n console.warn(\"ag-Grid: bug - unknown drag type \" + type);\n return null;\n }\n };\n DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {\n if (allowTouch === void 0) { allowTouch = false; }\n var params = {\n eElement: dragSource.eElement,\n dragStartPixels: dragSource.dragStartPixels,\n onDragStart: this.onDragStart.bind(this, dragSource),\n onDragStop: this.onDragStop.bind(this),\n onDragging: this.onDragging.bind(this)\n };\n this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });\n this.dragService.addDragSource(params, allowTouch);\n };\n DragAndDropService.prototype.removeDragSource = function (dragSource) {\n var sourceAndParams = utils_1.Utils.find(this.dragSourceAndParamsList, function (item) { return item.dragSource === dragSource; });\n if (sourceAndParams) {\n this.dragService.removeDragSource(sourceAndParams.params);\n utils_1.Utils.removeFromArray(this.dragSourceAndParamsList, sourceAndParams);\n }\n };\n DragAndDropService.prototype.destroy = function () {\n var _this = this;\n this.dragSourceAndParamsList.forEach(function (sourceAndParams) {\n _this.dragService.removeDragSource(sourceAndParams.params);\n });\n this.dragSourceAndParamsList.length = 0;\n };\n DragAndDropService.prototype.nudge = function () {\n if (this.dragging) {\n this.onDragging(this.eventLastTime, true);\n }\n };\n DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {\n this.dragging = true;\n this.dragSource = dragSource;\n this.eventLastTime = mouseEvent;\n this.dragItem = this.dragSource.dragItemCallback();\n this.lastDropTarget = this.dragSource.dragSourceDropTarget;\n if (this.dragSource.dragStarted) {\n this.dragSource.dragStarted();\n }\n this.createGhost();\n };\n DragAndDropService.prototype.onDragStop = function (mouseEvent) {\n this.eventLastTime = null;\n this.dragging = false;\n if (this.dragSource.dragStopped) {\n this.dragSource.dragStopped();\n }\n if (this.lastDropTarget && this.lastDropTarget.onDragStop) {\n var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);\n this.lastDropTarget.onDragStop(draggingEvent);\n }\n this.lastDropTarget = null;\n this.dragItem = null;\n this.removeGhost();\n };\n DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {\n var hDirection = this.workOutHDirection(mouseEvent);\n var vDirection = this.workOutVDirection(mouseEvent);\n this.eventLastTime = mouseEvent;\n this.positionGhost(mouseEvent);\n // check if mouseEvent intersects with any of the drop targets\n var dropTarget = utils_1.Utils.find(this.dropTargets, this.isMouseOnDropTarget.bind(this, mouseEvent));\n if (dropTarget !== this.lastDropTarget) {\n this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget = dropTarget;\n }\n else if (dropTarget) {\n var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragging(draggingEvent);\n }\n };\n DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n if (!dropTarget) {\n return;\n }\n var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragEnter(dragEnterEvent);\n this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);\n };\n DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {\n if (!this.lastDropTarget) {\n return;\n }\n var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget.onDragLeave(dragLeaveEvent);\n this.setGhostIcon(null);\n };\n DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {\n var containers = [dropTarget.getContainer()];\n var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n if (secondaryContainers) {\n containers = containers.concat(secondaryContainers);\n }\n return containers;\n };\n // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {\n var allContainers = this.getAllContainersFromDropTarget(dropTarget);\n var mouseOverTarget = false;\n allContainers.forEach(function (eContainer) {\n if (!eContainer) {\n return;\n } // secondary can be missing\n var rect = eContainer.getBoundingClientRect();\n // if element is not visible, then width and height are zero\n if (rect.width === 0 || rect.height === 0) {\n return;\n }\n var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX <= rect.right;\n var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY <= rect.bottom;\n //console.log(`rect.width = ${rect.width} || rect.height = ${rect.height} ## verticalFit = ${verticalFit}, horizontalFit = ${horizontalFit}, `);\n if (horizontalFit && verticalFit) {\n mouseOverTarget = true;\n }\n });\n if (mouseOverTarget) {\n var mouseOverTargetAndInterested = dropTarget.isInterestedIn(this.dragSource.type);\n return mouseOverTargetAndInterested;\n }\n else {\n return false;\n }\n };\n DragAndDropService.prototype.addDropTarget = function (dropTarget) {\n this.dropTargets.push(dropTarget);\n };\n DragAndDropService.prototype.workOutHDirection = function (event) {\n if (this.eventLastTime.clientX > event.clientX) {\n return HDirection.Left;\n }\n else if (this.eventLastTime.clientX < event.clientX) {\n return HDirection.Right;\n }\n else {\n return null;\n }\n };\n DragAndDropService.prototype.workOutVDirection = function (event) {\n if (this.eventLastTime.clientY > event.clientY) {\n return VDirection.Up;\n }\n else if (this.eventLastTime.clientY < event.clientY) {\n return VDirection.Down;\n }\n else {\n return null;\n }\n };\n DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {\n // localise x and y to the target component\n var rect = dropTarget.getContainer().getBoundingClientRect();\n var x = event.clientX - rect.left;\n var y = event.clientY - rect.top;\n var dropTargetEvent = {\n event: event,\n x: x,\n y: y,\n vDirection: vDirection,\n hDirection: hDirection,\n dragSource: this.dragSource,\n fromNudge: fromNudge,\n dragItem: this.dragItem\n };\n return dropTargetEvent;\n };\n DragAndDropService.prototype.positionGhost = function (event) {\n var ghostRect = this.eGhost.getBoundingClientRect();\n var ghostHeight = ghostRect.height;\n // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which\n // then brought in scrollbars to the browser. no idea why, but putting in -2 here\n // works around it which is good enough for me.\n var browserWidth = utils_1.Utils.getBodyWidth() - 2;\n var browserHeight = utils_1.Utils.getBodyHeight() - 2;\n // put ghost vertically in middle of cursor\n var top = event.pageY - (ghostHeight / 2);\n // horizontally, place cursor just right of icon\n var left = event.pageX - 30;\n var usrDocument = this.gridOptionsWrapper.getDocument();\n var windowScrollY = window.pageYOffset || usrDocument.documentElement.scrollTop;\n var windowScrollX = window.pageXOffset || usrDocument.documentElement.scrollLeft;\n // check ghost is not positioned outside of the browser\n if (browserWidth > 0) {\n if ((left + this.eGhost.clientWidth) > (browserWidth + windowScrollX)) {\n left = browserWidth + windowScrollX - this.eGhost.clientWidth;\n }\n }\n if (left < 0) {\n left = 0;\n }\n if (browserHeight > 0) {\n if ((top + this.eGhost.clientHeight) > (browserHeight + windowScrollY)) {\n top = browserHeight + windowScrollY - this.eGhost.clientHeight;\n }\n }\n if (top < 0) {\n top = 0;\n }\n this.eGhost.style.left = left + 'px';\n this.eGhost.style.top = top + 'px';\n };\n DragAndDropService.prototype.removeGhost = function () {\n if (this.eGhost && this.eGhostParent) {\n this.eGhostParent.removeChild(this.eGhost);\n }\n this.eGhost = null;\n };\n DragAndDropService.prototype.createGhost = function () {\n this.eGhost = utils_1.Utils.loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);\n utils_1.Utils.addCssClass(this.eGhost, this.environment.getTheme());\n this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');\n this.setGhostIcon(null);\n var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');\n eText.innerHTML = this.dragSource.dragItemName;\n this.eGhost.style.height = '25px';\n this.eGhost.style.top = '20px';\n this.eGhost.style.left = '20px';\n var usrDocument = this.gridOptionsWrapper.getDocument();\n this.eGhostParent = usrDocument.querySelector('body');\n if (!this.eGhostParent) {\n console.warn('ag-Grid: could not find document body, it is needed for dragging columns');\n }\n else {\n this.eGhostParent.appendChild(this.eGhost);\n }\n };\n DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {\n if (shake === void 0) { shake = false; }\n utils_1.Utils.removeAllChildren(this.eGhostIcon);\n var eIcon;\n switch (iconName) {\n case DragAndDropService_1.ICON_ADD:\n eIcon = this.ePlusIcon;\n break;\n case DragAndDropService_1.ICON_PINNED:\n eIcon = this.ePinnedIcon;\n break;\n case DragAndDropService_1.ICON_MOVE:\n eIcon = this.eMoveIcon;\n break;\n case DragAndDropService_1.ICON_LEFT:\n eIcon = this.eLeftIcon;\n break;\n case DragAndDropService_1.ICON_RIGHT:\n eIcon = this.eRightIcon;\n break;\n case DragAndDropService_1.ICON_GROUP:\n eIcon = this.eGroupIcon;\n break;\n case DragAndDropService_1.ICON_AGGREGATE:\n eIcon = this.eAggregateIcon;\n break;\n case DragAndDropService_1.ICON_PIVOT:\n eIcon = this.ePivotIcon;\n break;\n case DragAndDropService_1.ICON_NOT_ALLOWED:\n eIcon = this.eDropNotAllowedIcon;\n break;\n default:\n eIcon = this.eHiddenIcon;\n break;\n }\n this.eGhostIcon.appendChild(eIcon);\n utils_1.Utils.addOrRemoveCssClass(this.eGhostIcon, 'ag-shake-left-to-right', shake);\n };\n DragAndDropService.ICON_PINNED = 'pinned';\n DragAndDropService.ICON_ADD = 'add';\n DragAndDropService.ICON_MOVE = 'move';\n DragAndDropService.ICON_LEFT = 'left';\n DragAndDropService.ICON_RIGHT = 'right';\n DragAndDropService.ICON_GROUP = 'group';\n DragAndDropService.ICON_AGGREGATE = 'aggregate';\n DragAndDropService.ICON_PIVOT = 'pivot';\n DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';\n DragAndDropService.GHOST_TEMPLATE = '
' +\n ' ' +\n '
' +\n '
' +\n '
';\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], DragAndDropService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('dragService'),\n __metadata(\"design:type\", dragService_1.DragService)\n ], DragAndDropService.prototype, \"dragService\", void 0);\n __decorate([\n context_1.Autowired('environment'),\n __metadata(\"design:type\", environment_1.Environment)\n ], DragAndDropService.prototype, \"environment\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], DragAndDropService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], DragAndDropService.prototype, \"init\", null);\n __decorate([\n __param(0, context_1.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], DragAndDropService.prototype, \"setBeans\", null);\n __decorate([\n context_1.PreDestroy,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], DragAndDropService.prototype, \"destroy\", null);\n DragAndDropService = DragAndDropService_1 = __decorate([\n context_1.Bean('dragAndDropService')\n ], DragAndDropService);\n return DragAndDropService;\n var DragAndDropService_1;\n}());\nexports.DragAndDropService = DragAndDropService;\n","/**\r\n * adds a bindGlobal method to Mousetrap that allows you to\r\n * bind specific keyboard shortcuts that will still work\r\n * inside a text input field\r\n *\r\n * usage:\r\n * Mousetrap.bindGlobal('ctrl+s', _saveChanges);\r\n */\r\n/* global Mousetrap:true */\r\n(function(Mousetrap) {\r\n var _globalCallbacks = {};\r\n var _originalStopCallback = Mousetrap.prototype.stopCallback;\r\n\r\n Mousetrap.prototype.stopCallback = function(e, element, combo, sequence) {\r\n var self = this;\r\n\r\n if (self.paused) {\r\n return true;\r\n }\r\n\r\n if (_globalCallbacks[combo] || _globalCallbacks[sequence]) {\r\n return false;\r\n }\r\n\r\n return _originalStopCallback.call(self, e, element, combo);\r\n };\r\n\r\n Mousetrap.prototype.bindGlobal = function(keys, callback, action) {\r\n var self = this;\r\n self.bind(keys, callback, action);\r\n\r\n if (keys instanceof Array) {\r\n for (var i = 0; i < keys.length; i++) {\r\n _globalCallbacks[keys[i]] = true;\r\n }\r\n return;\r\n }\r\n\r\n _globalCallbacks[keys] = true;\r\n };\r\n\t\r\n\tMousetrap.prototype.unbindGlobal = function(keys, action) {\r\n\t\tvar self = this;\r\n\t\tself.unbind(keys, action);\r\n\r\n\t\tif (keys instanceof Array) {\r\n\t\t\tfor (var i = 0; i < keys.length; i++) {\r\n\t\t\t\t_globalCallbacks[keys[i]] = false;\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t_globalCallbacks[keys] = false;\r\n\t};\r\n\r\n Mousetrap.init();\r\n}) (Mousetrap);\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Key;\r\n(function (Key) {\r\n Key[Key[\"Backspace\"] = 8] = \"Backspace\";\r\n Key[Key[\"Tab\"] = 9] = \"Tab\";\r\n Key[Key[\"Enter\"] = 13] = \"Enter\";\r\n Key[Key[\"Shift\"] = 16] = \"Shift\";\r\n Key[Key[\"Ctrl\"] = 17] = \"Ctrl\";\r\n Key[Key[\"Alt\"] = 18] = \"Alt\";\r\n Key[Key[\"PauseBreak\"] = 19] = \"PauseBreak\";\r\n Key[Key[\"CapsLock\"] = 20] = \"CapsLock\";\r\n Key[Key[\"Escape\"] = 27] = \"Escape\";\r\n Key[Key[\"Space\"] = 32] = \"Space\";\r\n Key[Key[\"PageUp\"] = 33] = \"PageUp\";\r\n Key[Key[\"PageDown\"] = 34] = \"PageDown\";\r\n Key[Key[\"End\"] = 35] = \"End\";\r\n Key[Key[\"Home\"] = 36] = \"Home\";\r\n Key[Key[\"LeftArrow\"] = 37] = \"LeftArrow\";\r\n Key[Key[\"UpArrow\"] = 38] = \"UpArrow\";\r\n Key[Key[\"RightArrow\"] = 39] = \"RightArrow\";\r\n Key[Key[\"DownArrow\"] = 40] = \"DownArrow\";\r\n Key[Key[\"Insert\"] = 45] = \"Insert\";\r\n Key[Key[\"Delete\"] = 46] = \"Delete\";\r\n Key[Key[\"Zero\"] = 48] = \"Zero\";\r\n Key[Key[\"ClosedParen\"] = 48] = \"ClosedParen\";\r\n Key[Key[\"One\"] = 49] = \"One\";\r\n Key[Key[\"ExclamationMark\"] = 49] = \"ExclamationMark\";\r\n Key[Key[\"Two\"] = 50] = \"Two\";\r\n Key[Key[\"AtSign\"] = 50] = \"AtSign\";\r\n Key[Key[\"Three\"] = 51] = \"Three\";\r\n Key[Key[\"PoundSign\"] = 51] = \"PoundSign\";\r\n Key[Key[\"Hash\"] = 51] = \"Hash\";\r\n Key[Key[\"Four\"] = 52] = \"Four\";\r\n Key[Key[\"DollarSign\"] = 52] = \"DollarSign\";\r\n Key[Key[\"Five\"] = 53] = \"Five\";\r\n Key[Key[\"PercentSign\"] = 53] = \"PercentSign\";\r\n Key[Key[\"Six\"] = 54] = \"Six\";\r\n Key[Key[\"Caret\"] = 54] = \"Caret\";\r\n Key[Key[\"Hat\"] = 54] = \"Hat\";\r\n Key[Key[\"Seven\"] = 55] = \"Seven\";\r\n Key[Key[\"Ampersand\"] = 55] = \"Ampersand\";\r\n Key[Key[\"Eight\"] = 56] = \"Eight\";\r\n Key[Key[\"Star\"] = 56] = \"Star\";\r\n Key[Key[\"Asterik\"] = 56] = \"Asterik\";\r\n Key[Key[\"Nine\"] = 57] = \"Nine\";\r\n Key[Key[\"OpenParen\"] = 57] = \"OpenParen\";\r\n Key[Key[\"A\"] = 65] = \"A\";\r\n Key[Key[\"B\"] = 66] = \"B\";\r\n Key[Key[\"C\"] = 67] = \"C\";\r\n Key[Key[\"D\"] = 68] = \"D\";\r\n Key[Key[\"E\"] = 69] = \"E\";\r\n Key[Key[\"F\"] = 70] = \"F\";\r\n Key[Key[\"G\"] = 71] = \"G\";\r\n Key[Key[\"H\"] = 72] = \"H\";\r\n Key[Key[\"I\"] = 73] = \"I\";\r\n Key[Key[\"J\"] = 74] = \"J\";\r\n Key[Key[\"K\"] = 75] = \"K\";\r\n Key[Key[\"L\"] = 76] = \"L\";\r\n Key[Key[\"M\"] = 77] = \"M\";\r\n Key[Key[\"N\"] = 78] = \"N\";\r\n Key[Key[\"O\"] = 79] = \"O\";\r\n Key[Key[\"P\"] = 80] = \"P\";\r\n Key[Key[\"Q\"] = 81] = \"Q\";\r\n Key[Key[\"R\"] = 82] = \"R\";\r\n Key[Key[\"S\"] = 83] = \"S\";\r\n Key[Key[\"T\"] = 84] = \"T\";\r\n Key[Key[\"U\"] = 85] = \"U\";\r\n Key[Key[\"V\"] = 86] = \"V\";\r\n Key[Key[\"W\"] = 87] = \"W\";\r\n Key[Key[\"X\"] = 88] = \"X\";\r\n Key[Key[\"Y\"] = 89] = \"Y\";\r\n Key[Key[\"Z\"] = 90] = \"Z\";\r\n Key[Key[\"LeftWindowKey\"] = 91] = \"LeftWindowKey\";\r\n Key[Key[\"RightWindowKey\"] = 92] = \"RightWindowKey\";\r\n Key[Key[\"SelectKey\"] = 93] = \"SelectKey\";\r\n Key[Key[\"Numpad0\"] = 96] = \"Numpad0\";\r\n Key[Key[\"Numpad1\"] = 97] = \"Numpad1\";\r\n Key[Key[\"Numpad2\"] = 98] = \"Numpad2\";\r\n Key[Key[\"Numpad3\"] = 99] = \"Numpad3\";\r\n Key[Key[\"Numpad4\"] = 100] = \"Numpad4\";\r\n Key[Key[\"Numpad5\"] = 101] = \"Numpad5\";\r\n Key[Key[\"Numpad6\"] = 102] = \"Numpad6\";\r\n Key[Key[\"Numpad7\"] = 103] = \"Numpad7\";\r\n Key[Key[\"Numpad8\"] = 104] = \"Numpad8\";\r\n Key[Key[\"Numpad9\"] = 105] = \"Numpad9\";\r\n Key[Key[\"Multiply\"] = 106] = \"Multiply\";\r\n Key[Key[\"Add\"] = 107] = \"Add\";\r\n Key[Key[\"Subtract\"] = 109] = \"Subtract\";\r\n Key[Key[\"DecimalPoint\"] = 110] = \"DecimalPoint\";\r\n Key[Key[\"Divide\"] = 111] = \"Divide\";\r\n Key[Key[\"F1\"] = 112] = \"F1\";\r\n Key[Key[\"F2\"] = 113] = \"F2\";\r\n Key[Key[\"F3\"] = 114] = \"F3\";\r\n Key[Key[\"F4\"] = 115] = \"F4\";\r\n Key[Key[\"F5\"] = 116] = \"F5\";\r\n Key[Key[\"F6\"] = 117] = \"F6\";\r\n Key[Key[\"F7\"] = 118] = \"F7\";\r\n Key[Key[\"F8\"] = 119] = \"F8\";\r\n Key[Key[\"F9\"] = 120] = \"F9\";\r\n Key[Key[\"F10\"] = 121] = \"F10\";\r\n Key[Key[\"F11\"] = 122] = \"F11\";\r\n Key[Key[\"F12\"] = 123] = \"F12\";\r\n Key[Key[\"NumLock\"] = 144] = \"NumLock\";\r\n Key[Key[\"ScrollLock\"] = 145] = \"ScrollLock\";\r\n Key[Key[\"SemiColon\"] = 186] = \"SemiColon\";\r\n Key[Key[\"Equals\"] = 187] = \"Equals\";\r\n Key[Key[\"Comma\"] = 188] = \"Comma\";\r\n Key[Key[\"Dash\"] = 189] = \"Dash\";\r\n Key[Key[\"Period\"] = 190] = \"Period\";\r\n Key[Key[\"UnderScore\"] = 189] = \"UnderScore\";\r\n Key[Key[\"PlusSign\"] = 187] = \"PlusSign\";\r\n Key[Key[\"ForwardSlash\"] = 191] = \"ForwardSlash\";\r\n Key[Key[\"Tilde\"] = 192] = \"Tilde\";\r\n Key[Key[\"GraveAccent\"] = 192] = \"GraveAccent\";\r\n Key[Key[\"OpenBracket\"] = 219] = \"OpenBracket\";\r\n Key[Key[\"ClosedBracket\"] = 221] = \"ClosedBracket\";\r\n Key[Key[\"Quote\"] = 222] = \"Quote\";\r\n})(Key = exports.Key || (exports.Key = {}));\r\n","/*!\n * Signature Pad v2.3.2\n * https://github.com/szimek/signature_pad\n *\n * Copyright 2017 Szymon Nowak\n * Released under the MIT license\n *\n * The main idea and some parts of the code (e.g. drawing variable width Bézier curve) are taken from:\n * http://corner.squareup.com/2012/07/smoother-signatures.html\n *\n * Implementation of interpolation using cubic Bézier curves is taken from:\n * http://benknowscode.wordpress.com/2012/09/14/path-interpolation-using-cubic-bezier-and-control-point-estimation-in-javascript\n *\n * Algorithm for approximated length of a Bézier curve is taken from:\n * http://www.lemoda.net/maths/bezier-length/index.html\n *\n */\n\nfunction Point(x, y, time) {\n this.x = x;\n this.y = y;\n this.time = time || new Date().getTime();\n}\n\nPoint.prototype.velocityFrom = function (start) {\n return this.time !== start.time ? this.distanceTo(start) / (this.time - start.time) : 1;\n};\n\nPoint.prototype.distanceTo = function (start) {\n return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2));\n};\n\nPoint.prototype.equals = function (other) {\n return this.x === other.x && this.y === other.y && this.time === other.time;\n};\n\nfunction Bezier(startPoint, control1, control2, endPoint) {\n this.startPoint = startPoint;\n this.control1 = control1;\n this.control2 = control2;\n this.endPoint = endPoint;\n}\n\n// Returns approximated length.\nBezier.prototype.length = function () {\n var steps = 10;\n var length = 0;\n var px = void 0;\n var py = void 0;\n\n for (var i = 0; i <= steps; i += 1) {\n var t = i / steps;\n var cx = this._point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x);\n var cy = this._point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);\n if (i > 0) {\n var xdiff = cx - px;\n var ydiff = cy - py;\n length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n }\n px = cx;\n py = cy;\n }\n\n return length;\n};\n\n/* eslint-disable no-multi-spaces, space-in-parens */\nBezier.prototype._point = function (t, start, c1, c2, end) {\n return start * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * c1 * (1.0 - t) * (1.0 - t) * t + 3.0 * c2 * (1.0 - t) * t * t + end * t * t * t;\n};\n\n/* eslint-disable */\n\n// http://stackoverflow.com/a/27078401/815507\nfunction throttle(func, wait, options) {\n var context, args, result;\n var timeout = null;\n var previous = 0;\n if (!options) options = {};\n var later = function later() {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n return function () {\n var now = Date.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n\nfunction SignaturePad(canvas, options) {\n var self = this;\n var opts = options || {};\n\n this.velocityFilterWeight = opts.velocityFilterWeight || 0.7;\n this.minWidth = opts.minWidth || 0.5;\n this.maxWidth = opts.maxWidth || 2.5;\n this.throttle = 'throttle' in opts ? opts.throttle : 16; // in miliseconds\n this.minDistance = 'minDistance' in opts ? opts.minDistance : 5;\n\n if (this.throttle) {\n this._strokeMoveUpdate = throttle(SignaturePad.prototype._strokeUpdate, this.throttle);\n } else {\n this._strokeMoveUpdate = SignaturePad.prototype._strokeUpdate;\n }\n\n this.dotSize = opts.dotSize || function () {\n return (this.minWidth + this.maxWidth) / 2;\n };\n this.penColor = opts.penColor || 'black';\n this.backgroundColor = opts.backgroundColor || 'rgba(0,0,0,0)';\n this.onBegin = opts.onBegin;\n this.onEnd = opts.onEnd;\n\n this._canvas = canvas;\n this._ctx = canvas.getContext('2d');\n this.clear();\n\n // We need add these inline so they are available to unbind while still having\n // access to 'self' we could use _.bind but it's not worth adding a dependency.\n this._handleMouseDown = function (event) {\n if (event.which === 1) {\n self._mouseButtonDown = true;\n self._strokeBegin(event);\n }\n };\n\n this._handleMouseMove = function (event) {\n if (self._mouseButtonDown) {\n self._strokeMoveUpdate(event);\n }\n };\n\n this._handleMouseUp = function (event) {\n if (event.which === 1 && self._mouseButtonDown) {\n self._mouseButtonDown = false;\n self._strokeEnd(event);\n }\n };\n\n this._handleTouchStart = function (event) {\n if (event.targetTouches.length === 1) {\n var touch = event.changedTouches[0];\n self._strokeBegin(touch);\n }\n };\n\n this._handleTouchMove = function (event) {\n // Prevent scrolling.\n event.preventDefault();\n\n var touch = event.targetTouches[0];\n self._strokeMoveUpdate(touch);\n };\n\n this._handleTouchEnd = function (event) {\n var wasCanvasTouched = event.target === self._canvas;\n if (wasCanvasTouched) {\n event.preventDefault();\n self._strokeEnd(event);\n }\n };\n\n // Enable mouse and touch event handlers\n this.on();\n}\n\n// Public methods\nSignaturePad.prototype.clear = function () {\n var ctx = this._ctx;\n var canvas = this._canvas;\n\n ctx.fillStyle = this.backgroundColor;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n this._data = [];\n this._reset();\n this._isEmpty = true;\n};\n\nSignaturePad.prototype.fromDataURL = function (dataUrl) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var image = new Image();\n var ratio = options.ratio || window.devicePixelRatio || 1;\n var width = options.width || this._canvas.width / ratio;\n var height = options.height || this._canvas.height / ratio;\n\n this._reset();\n image.src = dataUrl;\n image.onload = function () {\n _this._ctx.drawImage(image, 0, 0, width, height);\n };\n this._isEmpty = false;\n};\n\nSignaturePad.prototype.toDataURL = function (type) {\n var _canvas;\n\n switch (type) {\n case 'image/svg+xml':\n return this._toSVG();\n default:\n for (var _len = arguments.length, options = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n options[_key - 1] = arguments[_key];\n }\n\n return (_canvas = this._canvas).toDataURL.apply(_canvas, [type].concat(options));\n }\n};\n\nSignaturePad.prototype.on = function () {\n this._handleMouseEvents();\n this._handleTouchEvents();\n};\n\nSignaturePad.prototype.off = function () {\n this._canvas.removeEventListener('mousedown', this._handleMouseDown);\n this._canvas.removeEventListener('mousemove', this._handleMouseMove);\n document.removeEventListener('mouseup', this._handleMouseUp);\n\n this._canvas.removeEventListener('touchstart', this._handleTouchStart);\n this._canvas.removeEventListener('touchmove', this._handleTouchMove);\n this._canvas.removeEventListener('touchend', this._handleTouchEnd);\n};\n\nSignaturePad.prototype.isEmpty = function () {\n return this._isEmpty;\n};\n\n// Private methods\nSignaturePad.prototype._strokeBegin = function (event) {\n this._data.push([]);\n this._reset();\n this._strokeUpdate(event);\n\n if (typeof this.onBegin === 'function') {\n this.onBegin(event);\n }\n};\n\nSignaturePad.prototype._strokeUpdate = function (event) {\n var x = event.clientX;\n var y = event.clientY;\n\n var point = this._createPoint(x, y);\n var lastPointGroup = this._data[this._data.length - 1];\n var lastPoint = lastPointGroup && lastPointGroup[lastPointGroup.length - 1];\n var isLastPointTooClose = lastPoint && point.distanceTo(lastPoint) < this.minDistance;\n\n // Skip this point if it's too close to the previous one\n if (!(lastPoint && isLastPointTooClose)) {\n var _addPoint = this._addPoint(point),\n curve = _addPoint.curve,\n widths = _addPoint.widths;\n\n if (curve && widths) {\n this._drawCurve(curve, widths.start, widths.end);\n }\n\n this._data[this._data.length - 1].push({\n x: point.x,\n y: point.y,\n time: point.time,\n color: this.penColor\n });\n }\n};\n\nSignaturePad.prototype._strokeEnd = function (event) {\n var canDrawCurve = this.points.length > 2;\n var point = this.points[0]; // Point instance\n\n if (!canDrawCurve && point) {\n this._drawDot(point);\n }\n\n if (point) {\n var lastPointGroup = this._data[this._data.length - 1];\n var lastPoint = lastPointGroup[lastPointGroup.length - 1]; // plain object\n\n // When drawing a dot, there's only one point in a group, so without this check\n // such group would end up with exactly the same 2 points.\n if (!point.equals(lastPoint)) {\n lastPointGroup.push({\n x: point.x,\n y: point.y,\n time: point.time,\n color: this.penColor\n });\n }\n }\n\n if (typeof this.onEnd === 'function') {\n this.onEnd(event);\n }\n};\n\nSignaturePad.prototype._handleMouseEvents = function () {\n this._mouseButtonDown = false;\n\n this._canvas.addEventListener('mousedown', this._handleMouseDown);\n this._canvas.addEventListener('mousemove', this._handleMouseMove);\n document.addEventListener('mouseup', this._handleMouseUp);\n};\n\nSignaturePad.prototype._handleTouchEvents = function () {\n // Pass touch events to canvas element on mobile IE11 and Edge.\n this._canvas.style.msTouchAction = 'none';\n this._canvas.style.touchAction = 'none';\n\n this._canvas.addEventListener('touchstart', this._handleTouchStart);\n this._canvas.addEventListener('touchmove', this._handleTouchMove);\n this._canvas.addEventListener('touchend', this._handleTouchEnd);\n};\n\nSignaturePad.prototype._reset = function () {\n this.points = [];\n this._lastVelocity = 0;\n this._lastWidth = (this.minWidth + this.maxWidth) / 2;\n this._ctx.fillStyle = this.penColor;\n};\n\nSignaturePad.prototype._createPoint = function (x, y, time) {\n var rect = this._canvas.getBoundingClientRect();\n\n return new Point(x - rect.left, y - rect.top, time || new Date().getTime());\n};\n\nSignaturePad.prototype._addPoint = function (point) {\n var points = this.points;\n var tmp = void 0;\n\n points.push(point);\n\n if (points.length > 2) {\n // To reduce the initial lag make it work with 3 points\n // by copying the first point to the beginning.\n if (points.length === 3) points.unshift(points[0]);\n\n tmp = this._calculateCurveControlPoints(points[0], points[1], points[2]);\n var c2 = tmp.c2;\n tmp = this._calculateCurveControlPoints(points[1], points[2], points[3]);\n var c3 = tmp.c1;\n var curve = new Bezier(points[1], c2, c3, points[2]);\n var widths = this._calculateCurveWidths(curve);\n\n // Remove the first element from the list,\n // so that we always have no more than 4 points in points array.\n points.shift();\n\n return { curve: curve, widths: widths };\n }\n\n return {};\n};\n\nSignaturePad.prototype._calculateCurveControlPoints = function (s1, s2, s3) {\n var dx1 = s1.x - s2.x;\n var dy1 = s1.y - s2.y;\n var dx2 = s2.x - s3.x;\n var dy2 = s2.y - s3.y;\n\n var m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };\n var m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };\n\n var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n\n var dxm = m1.x - m2.x;\n var dym = m1.y - m2.y;\n\n var k = l2 / (l1 + l2);\n var cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n\n var tx = s2.x - cm.x;\n var ty = s2.y - cm.y;\n\n return {\n c1: new Point(m1.x + tx, m1.y + ty),\n c2: new Point(m2.x + tx, m2.y + ty)\n };\n};\n\nSignaturePad.prototype._calculateCurveWidths = function (curve) {\n var startPoint = curve.startPoint;\n var endPoint = curve.endPoint;\n var widths = { start: null, end: null };\n\n var velocity = this.velocityFilterWeight * endPoint.velocityFrom(startPoint) + (1 - this.velocityFilterWeight) * this._lastVelocity;\n\n var newWidth = this._strokeWidth(velocity);\n\n widths.start = this._lastWidth;\n widths.end = newWidth;\n\n this._lastVelocity = velocity;\n this._lastWidth = newWidth;\n\n return widths;\n};\n\nSignaturePad.prototype._strokeWidth = function (velocity) {\n return Math.max(this.maxWidth / (velocity + 1), this.minWidth);\n};\n\nSignaturePad.prototype._drawPoint = function (x, y, size) {\n var ctx = this._ctx;\n\n ctx.moveTo(x, y);\n ctx.arc(x, y, size, 0, 2 * Math.PI, false);\n this._isEmpty = false;\n};\n\nSignaturePad.prototype._drawCurve = function (curve, startWidth, endWidth) {\n var ctx = this._ctx;\n var widthDelta = endWidth - startWidth;\n var drawSteps = Math.floor(curve.length());\n\n ctx.beginPath();\n\n for (var i = 0; i < drawSteps; i += 1) {\n // Calculate the Bezier (x, y) coordinate for this step.\n var t = i / drawSteps;\n var tt = t * t;\n var ttt = tt * t;\n var u = 1 - t;\n var uu = u * u;\n var uuu = uu * u;\n\n var x = uuu * curve.startPoint.x;\n x += 3 * uu * t * curve.control1.x;\n x += 3 * u * tt * curve.control2.x;\n x += ttt * curve.endPoint.x;\n\n var y = uuu * curve.startPoint.y;\n y += 3 * uu * t * curve.control1.y;\n y += 3 * u * tt * curve.control2.y;\n y += ttt * curve.endPoint.y;\n\n var width = startWidth + ttt * widthDelta;\n this._drawPoint(x, y, width);\n }\n\n ctx.closePath();\n ctx.fill();\n};\n\nSignaturePad.prototype._drawDot = function (point) {\n var ctx = this._ctx;\n var width = typeof this.dotSize === 'function' ? this.dotSize() : this.dotSize;\n\n ctx.beginPath();\n this._drawPoint(point.x, point.y, width);\n ctx.closePath();\n ctx.fill();\n};\n\nSignaturePad.prototype._fromData = function (pointGroups, drawCurve, drawDot) {\n for (var i = 0; i < pointGroups.length; i += 1) {\n var group = pointGroups[i];\n\n if (group.length > 1) {\n for (var j = 0; j < group.length; j += 1) {\n var rawPoint = group[j];\n var point = new Point(rawPoint.x, rawPoint.y, rawPoint.time);\n var color = rawPoint.color;\n\n if (j === 0) {\n // First point in a group. Nothing to draw yet.\n\n // All points in the group have the same color, so it's enough to set\n // penColor just at the beginning.\n this.penColor = color;\n this._reset();\n\n this._addPoint(point);\n } else if (j !== group.length - 1) {\n // Middle point in a group.\n var _addPoint2 = this._addPoint(point),\n curve = _addPoint2.curve,\n widths = _addPoint2.widths;\n\n if (curve && widths) {\n drawCurve(curve, widths, color);\n }\n } else {\n // Last point in a group. Do nothing.\n }\n }\n } else {\n this._reset();\n var _rawPoint = group[0];\n drawDot(_rawPoint);\n }\n }\n};\n\nSignaturePad.prototype._toSVG = function () {\n var _this2 = this;\n\n var pointGroups = this._data;\n var canvas = this._canvas;\n var ratio = Math.max(window.devicePixelRatio || 1, 1);\n var minX = 0;\n var minY = 0;\n var maxX = canvas.width / ratio;\n var maxY = canvas.height / ratio;\n var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\n svg.setAttributeNS(null, 'width', canvas.width);\n svg.setAttributeNS(null, 'height', canvas.height);\n\n this._fromData(pointGroups, function (curve, widths, color) {\n var path = document.createElement('path');\n\n // Need to check curve for NaN values, these pop up when drawing\n // lines on the canvas that are not continuous. E.g. Sharp corners\n // or stopping mid-stroke and than continuing without lifting mouse.\n if (!isNaN(curve.control1.x) && !isNaN(curve.control1.y) && !isNaN(curve.control2.x) && !isNaN(curve.control2.y)) {\n var attr = 'M ' + curve.startPoint.x.toFixed(3) + ',' + curve.startPoint.y.toFixed(3) + ' ' + ('C ' + curve.control1.x.toFixed(3) + ',' + curve.control1.y.toFixed(3) + ' ') + (curve.control2.x.toFixed(3) + ',' + curve.control2.y.toFixed(3) + ' ') + (curve.endPoint.x.toFixed(3) + ',' + curve.endPoint.y.toFixed(3));\n\n path.setAttribute('d', attr);\n path.setAttribute('stroke-width', (widths.end * 2.25).toFixed(3));\n path.setAttribute('stroke', color);\n path.setAttribute('fill', 'none');\n path.setAttribute('stroke-linecap', 'round');\n\n svg.appendChild(path);\n }\n }, function (rawPoint) {\n var circle = document.createElement('circle');\n var dotSize = typeof _this2.dotSize === 'function' ? _this2.dotSize() : _this2.dotSize;\n circle.setAttribute('r', dotSize);\n circle.setAttribute('cx', rawPoint.x);\n circle.setAttribute('cy', rawPoint.y);\n circle.setAttribute('fill', rawPoint.color);\n\n svg.appendChild(circle);\n });\n\n var prefix = 'data:image/svg+xml;base64,';\n var header = '';\n var body = svg.innerHTML;\n\n // IE hack for missing innerHTML property on SVGElement\n if (body === undefined) {\n var dummy = document.createElement('dummy');\n var nodes = svg.childNodes;\n dummy.innerHTML = '';\n\n for (var i = 0; i < nodes.length; i += 1) {\n dummy.appendChild(nodes[i].cloneNode(true));\n }\n\n body = dummy.innerHTML;\n }\n\n var footer = '';\n var data = header + body + footer;\n\n return prefix + btoa(data);\n};\n\nSignaturePad.prototype.fromData = function (pointGroups) {\n var _this3 = this;\n\n this.clear();\n\n this._fromData(pointGroups, function (curve, widths) {\n return _this3._drawCurve(curve, widths.start, widths.end);\n }, function (rawPoint) {\n return _this3._drawDot(rawPoint);\n });\n\n this._data = pointGroups;\n};\n\nSignaturePad.prototype.toData = function () {\n return this._data;\n};\n\nexport default SignaturePad;\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","/* build: `node build.js modules=ALL exclude=accessors minifier=uglifyjs` */\n/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */\n\nvar fabric = fabric || { version: '4.5.0' };\nif (typeof exports !== 'undefined') {\n exports.fabric = fabric;\n}\n/* _AMD_START_ */\nelse if (typeof define === 'function' && define.amd) {\n define([], function() { return fabric; });\n}\n/* _AMD_END_ */\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n if (document instanceof (typeof HTMLDocument !== 'undefined' ? HTMLDocument : Document)) {\n fabric.document = document;\n }\n else {\n fabric.document = document.implementation.createHTMLDocument('');\n }\n fabric.window = window;\n}\nelse {\n // assume we're running under node.js when document/window are not present\n var jsdom = require('jsdom');\n var virtualWindow = new jsdom.JSDOM(\n decodeURIComponent('%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E'),\n {\n features: {\n FetchExternalResources: ['img']\n },\n resources: 'usable'\n }).window;\n fabric.document = virtualWindow.document;\n fabric.jsdomImplForWrapper = require('jsdom/lib/jsdom/living/generated/utils').implForWrapper;\n fabric.nodeCanvas = require('jsdom/lib/jsdom/utils').Canvas;\n fabric.window = virtualWindow;\n DOMParser = fabric.window.DOMParser;\n}\n\n/**\n * True when in environment that supports touch events\n * @type boolean\n */\nfabric.isTouchSupported = 'ontouchstart' in fabric.window || 'ontouchstart' in fabric.document ||\n (fabric.window && fabric.window.navigator && fabric.window.navigator.maxTouchPoints > 0);\n\n/**\n * True when in environment that's probably Node.js\n * @type boolean\n */\nfabric.isLikelyNode = typeof Buffer !== 'undefined' &&\n typeof window === 'undefined';\n\n/* _FROM_SVG_START_ */\n/**\n * Attributes parsed from all SVG elements\n * @type array\n */\nfabric.SHARED_ATTRIBUTES = [\n 'display',\n 'transform',\n 'fill', 'fill-opacity', 'fill-rule',\n 'opacity',\n 'stroke', 'stroke-dasharray', 'stroke-linecap', 'stroke-dashoffset',\n 'stroke-linejoin', 'stroke-miterlimit',\n 'stroke-opacity', 'stroke-width',\n 'id', 'paint-order', 'vector-effect',\n 'instantiated_by_use', 'clip-path',\n];\n/* _FROM_SVG_END_ */\n\n/**\n * Pixel per Inch as a default value set to 96. Can be changed for more realistic conversion.\n */\nfabric.DPI = 96;\nfabric.reNum = '(?:[-+]?(?:\\\\d+|\\\\d*\\\\.\\\\d+)(?:[eE][-+]?\\\\d+)?)';\nfabric.commaWsp = '(?:\\\\s+,?\\\\s*|,\\\\s*)';\nfabric.rePathCommand = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:[eE][-+]?\\d+)?)/ig;\nfabric.reNonWord = /[ \\n\\.,;!\\?\\-]/;\nfabric.fontPaths = { };\nfabric.iMatrix = [1, 0, 0, 1, 0, 0];\nfabric.svgNS = 'http://www.w3.org/2000/svg';\n\n/**\n * Pixel limit for cache canvases. 1Mpx , 4Mpx should be fine.\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.perfLimitSizeTotal = 2097152;\n\n/**\n * Pixel limit for cache canvases width or height. IE fixes the maximum at 5000\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.maxCacheSideLimit = 4096;\n\n/**\n * Lowest pixel limit for cache canvases, set at 256PX\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.minCacheSideLimit = 256;\n\n/**\n * Cache Object for widths of chars in text rendering.\n */\nfabric.charWidthsCache = { };\n\n/**\n * if webgl is enabled and available, textureSize will determine the size\n * of the canvas backend\n * @since 2.0.0\n * @type Number\n * @default\n */\nfabric.textureSize = 2048;\n\n/**\n * When 'true', style information is not retained when copy/pasting text, making\n * pasted text use destination style.\n * Defaults to 'false'.\n * @type Boolean\n * @default\n */\nfabric.disableStyleCopyPaste = false;\n\n/**\n * Enable webgl for filtering picture is available\n * A filtering backend will be initialized, this will both take memory and\n * time since a default 2048x2048 canvas will be created for the gl context\n * @since 2.0.0\n * @type Boolean\n * @default\n */\nfabric.enableGLFiltering = true;\n\n/**\n * Device Pixel Ratio\n * @see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/HTML-canvas-guide/SettingUptheCanvas/SettingUptheCanvas.html\n */\nfabric.devicePixelRatio = fabric.window.devicePixelRatio ||\n fabric.window.webkitDevicePixelRatio ||\n fabric.window.mozDevicePixelRatio ||\n 1;\n/**\n * Browser-specific constant to adjust CanvasRenderingContext2D.shadowBlur value,\n * which is unitless and not rendered equally across browsers.\n *\n * Values that work quite well (as of October 2017) are:\n * - Chrome: 1.5\n * - Edge: 1.75\n * - Firefox: 0.9\n * - Safari: 0.95\n *\n * @since 2.0.0\n * @type Number\n * @default 1\n */\nfabric.browserShadowBlurConstant = 1;\n\n/**\n * This object contains the result of arc to bezier conversion for faster retrieving if the same arc needs to be converted again.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.arcToSegmentsCache = { };\n\n/**\n * This object keeps the results of the boundsOfCurve calculation mapped by the joined arguments necessary to calculate it.\n * It does speed up calculation, if you parse and add always the same paths, but in case of heavy usage of freedrawing\n * you do not get any speed benefit and you get a big object in memory.\n * The object was a private variable before, while now is appended to the lib so that you have access to it and you\n * can eventually clear it.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.boundsOfCurveCache = { };\n\n/**\n * If disabled boundsOfCurveCache is not used. For apps that make heavy usage of pencil drawing probably disabling it is better\n * @default true\n */\nfabric.cachesBoundsOfCurve = true;\n\n/**\n * Skip performance testing of setupGLContext and force the use of putImageData that seems to be the one that works best on\n * Chrome + old hardware. if your users are experiencing empty images after filtering you may try to force this to true\n * this has to be set before instantiating the filtering backend ( before filtering the first image )\n * @type Boolean\n * @default false\n */\nfabric.forceGLPutImageData = false;\n\nfabric.initFilterBackend = function() {\n if (fabric.enableGLFiltering && fabric.isWebglSupported && fabric.isWebglSupported(fabric.textureSize)) {\n console.log('max texture size: ' + fabric.maxTextureSize);\n return (new fabric.WebglFilterBackend({ tileSize: fabric.textureSize }));\n }\n else if (fabric.Canvas2dFilterBackend) {\n return (new fabric.Canvas2dFilterBackend());\n }\n};\n\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n // ensure globality even if entire library were function wrapped (as in Meteor.js packaging system)\n window.fabric = fabric;\n}\n\n\n/*:\n\t----------------------------------------------------\n\tevent.js : 1.1.5 : 2014/02/12 : MIT License\n\t----------------------------------------------------\n\thttps://github.com/mudcube/Event.js\n\t----------------------------------------------------\n\t1 : click, dblclick, dbltap\n\t1+ : tap, longpress, drag, swipe\n\t2+ : pinch, rotate\n\t : mousewheel, devicemotion, shake\n\t----------------------------------------------------\n\tIdeas for the future\n\t----------------------------------------------------\n\t* GamePad, and other input abstractions.\n\t* Event batching - i.e. for every x fingers down a new gesture is created.\n\t----------------------------------------------------\n\thttp://www.w3.org/TR/2011/WD-touch-events-20110505/\n\t----------------------------------------------------\n*/\n\nif (typeof(eventjs) === \"undefined\") var eventjs = {};\n\n(function(root) { \"use strict\";\n\n// Add custom *EventListener commands to HTMLElements (set false to prevent funkiness).\nroot.modifyEventListener = false;\n\n// Add bulk *EventListener commands on NodeLists from querySelectorAll and others (set false to prevent funkiness).\nroot.modifySelectors = false;\n\nroot.configure = function(conf) {\n\tif (isFinite(conf.modifyEventListener)) root.modifyEventListener = conf.modifyEventListener;\n\tif (isFinite(conf.modifySelectors)) root.modifySelectors = conf.modifySelectors;\n\t/// Augment event listeners\n\tif (eventListenersAgumented === false && root.modifyEventListener) {\n\t\taugmentEventListeners();\n\t}\n\tif (selectorsAugmented === false && root.modifySelectors) {\n\t\taugmentSelectors();\n\t}\n};\n\n// Event maintenance.\nroot.add = function(target, type, listener, configure) {\n\treturn eventManager(target, type, listener, configure, \"add\");\n};\n\nroot.remove = function(target, type, listener, configure) {\n\treturn eventManager(target, type, listener, configure, \"remove\");\n};\n\nroot.returnFalse = function(event) {\n\treturn false;\n};\n\nroot.stop = function(event) {\n\tif (!event) return;\n\tif (event.stopPropagation) event.stopPropagation();\n\tevent.cancelBubble = true; // <= IE8\n\tevent.cancelBubbleCount = 0;\n};\n\nroot.prevent = function(event) {\n\tif (!event) return;\n\tif (event.preventDefault) {\n\t\tevent.preventDefault();\n\t} else if (event.preventManipulation) {\n\t\tevent.preventManipulation(); // MS\n\t} else {\n\t\tevent.returnValue = false; // <= IE8\n\t}\n};\n\nroot.cancel = function(event) {\n\troot.stop(event);\n\troot.prevent(event);\n};\n\nroot.blur = function() { // Blurs the focused element. Useful when using eventjs.cancel as canceling will prevent focused elements from being blurred.\n\tvar node = document.activeElement;\n\tif (!node) return;\n\tvar nodeName = document.activeElement.nodeName;\n\tif (nodeName === \"INPUT\" || nodeName === \"TEXTAREA\" || node.contentEditable === \"true\") {\n\t\tif (node.blur) node.blur();\n\t}\n};\n\n// Check whether event is natively supported (via @kangax)\nroot.getEventSupport = function (target, type) {\n\tif (typeof(target) === \"string\") {\n\t\ttype = target;\n\t\ttarget = window;\n\t}\n\ttype = \"on\" + type;\n\tif (type in target) return true;\n\tif (!target.setAttribute) target = document.createElement(\"div\");\n\tif (target.setAttribute && target.removeAttribute) {\n\t\ttarget.setAttribute(type, \"\");\n\t\tvar isSupported = typeof target[type] === \"function\";\n\t\tif (typeof target[type] !== \"undefined\") target[type] = null;\n\t\ttarget.removeAttribute(type);\n\t\treturn isSupported;\n\t}\n};\n\nvar clone = function (obj) {\n\tif (!obj || typeof (obj) !== 'object') return obj;\n\tvar temp = new obj.constructor();\n\tfor (var key in obj) {\n\t\tif (!obj[key] || typeof (obj[key]) !== 'object') {\n\t\t\ttemp[key] = obj[key];\n\t\t} else { // clone sub-object\n\t\t\ttemp[key] = clone(obj[key]);\n\t\t}\n\t}\n\treturn temp;\n};\n\n/// Handle custom *EventListener commands.\nvar eventManager = function(target, type, listener, configure, trigger, fromOverwrite) {\n\tconfigure = configure || {};\n\t// Check whether target is a configuration variable;\n\tif (String(target) === \"[object Object]\") {\n\t\tvar data = target;\n\t\ttarget = data.target; delete data.target;\n\t\t///\n\t\tif (data.type && data.listener) {\n\t\t\ttype = data.type; delete data.type;\n\t\t\tlistener = data.listener; delete data.listener;\n\t\t\tfor (var key in data) {\n\t\t\t\tconfigure[key] = data[key];\n\t\t\t}\n\t\t} else { // specialness\n\t\t\tfor (var param in data) {\n\t\t\t\tvar value = data[param];\n\t\t\t\tif (typeof(value) === \"function\") continue;\n\t\t\t\tconfigure[param] = value;\n\t\t\t}\n\t\t\t///\n\t\t\tvar ret = {};\n\t\t\tfor (var key in data) {\n\t\t\t\tvar param = key.split(\",\");\n\t\t\t\tvar o = data[key];\n\t\t\t\tvar conf = {};\n\t\t\t\tfor (var k in configure) { // clone base configuration\n\t\t\t\t\tconf[k] = configure[k];\n\t\t\t\t}\n\t\t\t\t///\n\t\t\t\tif (typeof(o) === \"function\") { // without configuration\n\t\t\t\t\tvar listener = o;\n\t\t\t\t} else if (typeof(o.listener) === \"function\") { // with configuration\n\t\t\t\t\tvar listener = o.listener;\n\t\t\t\t\tfor (var k in o) { // merge configure into base configuration\n\t\t\t\t\t\tif (typeof(o[k]) === \"function\") continue;\n\t\t\t\t\t\tconf[k] = o[k];\n\t\t\t\t\t}\n\t\t\t\t} else { // not a listener\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t///\n\t\t\t\tfor (var n = 0; n < param.length; n ++) {\n\t\t\t\t\tret[key] = eventjs.add(target, param[n], listener, conf, trigger);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t}\n\t///\n\tif (!target || !type || !listener) return;\n\t// Check for element to load on interval (before onload).\n\tif (typeof(target) === \"string\" && type === \"ready\") {\n\t\tif (window.eventjs_stallOnReady) { /// force stall for scripts to load\n\t\t\ttype = \"load\";\n\t\t\ttarget = window;\n\t\t} else { //\n\t\t\tvar time = (new Date()).getTime();\n\t\t\tvar timeout = configure.timeout;\n\t\t\tvar ms = configure.interval || 1000 / 60;\n\t\t\tvar interval = window.setInterval(function() {\n\t\t\t\tif ((new Date()).getTime() - time > timeout) {\n\t\t\t\t\twindow.clearInterval(interval);\n\t\t\t\t}\n\t\t\t\tif (document.querySelector(target)) {\n\t\t\t\t\twindow.clearInterval(interval);\n\t\t\t\t\tsetTimeout(listener, 1);\n\t\t\t\t}\n\t\t\t}, ms);\n\t\t\treturn;\n\t\t}\n\t}\n\t// Get DOM element from Query Selector.\n\tif (typeof(target) === \"string\") {\n\t\ttarget = document.querySelectorAll(target);\n\t\tif (target.length === 0) return createError(\"Missing target on listener!\", arguments); // No results.\n\t\tif (target.length === 1) { // Single target.\n\t\t\ttarget = target[0];\n\t\t}\n\t}\n\n\t/// Handle multiple targets.\n\tvar event;\n\tvar events = {};\n\tif (target.length > 0 && target !== window) {\n\t\tfor (var n0 = 0, length0 = target.length; n0 < length0; n0 ++) {\n\t\t\tevent = eventManager(target[n0], type, listener, clone(configure), trigger);\n\t\t\tif (event) events[n0] = event;\n\t\t}\n\t\treturn createBatchCommands(events);\n\t}\n\n\t/// Check for multiple events in one string.\n\tif (typeof(type) === \"string\") {\n\t\ttype = type.toLowerCase();\n\t\tif (type.indexOf(\" \") !== -1) {\n\t\t\ttype = type.split(\" \");\n\t\t} else if (type.indexOf(\",\") !== -1) {\n\t\t\ttype = type.split(\",\");\n\t\t}\n\t}\n\n\t/// Attach or remove multiple events associated with a target.\n\tif (typeof(type) !== \"string\") { // Has multiple events.\n\t\tif (typeof(type.length) === \"number\") { // Handle multiple listeners glued together.\n\t\t\tfor (var n1 = 0, length1 = type.length; n1 < length1; n1 ++) { // Array [type]\n\t\t\t\tevent = eventManager(target, type[n1], listener, clone(configure), trigger);\n\t\t\t\tif (event) events[type[n1]] = event;\n\t\t\t}\n\t\t} else { // Handle multiple listeners.\n\t\t\tfor (var key in type) { // Object {type}\n\t\t\t\tif (typeof(type[key]) === \"function\") { // without configuration.\n\t\t\t\t\tevent = eventManager(target, key, type[key], clone(configure), trigger);\n\t\t\t\t} else { // with configuration.\n\t\t\t\t\tevent = eventManager(target, key, type[key].listener, clone(type[key]), trigger);\n\t\t\t\t}\n\t\t\t\tif (event) events[key] = event;\n\t\t\t}\n\t\t}\n\t\treturn createBatchCommands(events);\n\t} else if (type.indexOf(\"on\") === 0) { // to support things like \"onclick\" instead of \"click\"\n\t\ttype = type.substr(2);\n\t}\n\n\t// Ensure listener is a function.\n\tif (typeof(target) !== \"object\") return createError(\"Target is not defined!\", arguments);\n\tif (typeof(listener) !== \"function\") return createError(\"Listener is not a function!\", arguments);\n\n\t// Generate a unique wrapper identifier.\n\tvar useCapture = configure.useCapture || false;\n\tvar id = getID(target) + \".\" + getID(listener) + \".\" + (useCapture ? 1 : 0);\n\t// Handle the event.\n\tif (root.Gesture && root.Gesture._gestureHandlers[type]) { // Fire custom event.\n\t\tid = type + id;\n\t\tif (trigger === \"remove\") { // Remove event listener.\n\t\t\tif (!wrappers[id]) return; // Already removed.\n\t\t\twrappers[id].remove();\n\t\t\tdelete wrappers[id];\n\t\t} else if (trigger === \"add\") { // Attach event listener.\n\t\t\tif (wrappers[id]) {\n\t\t\t\twrappers[id].add();\n\t\t\t\treturn wrappers[id]; // Already attached.\n\t\t\t}\n\t\t\t// Retains \"this\" orientation.\n\t\t\tif (configure.useCall && !root.modifyEventListener) {\n\t\t\t\tvar tmp = listener;\n\t\t\t\tlistener = function(event, self) {\n\t\t\t\t\tfor (var key in self) event[key] = self[key];\n\t\t\t\t\treturn tmp.call(target, event);\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Create listener proxy.\n\t\t\tconfigure.gesture = type;\n\t\t\tconfigure.target = target;\n\t\t\tconfigure.listener = listener;\n\t\t\tconfigure.fromOverwrite = fromOverwrite;\n\t\t\t// Record wrapper.\n\t\t\twrappers[id] = root.proxy[type](configure);\n\t\t}\n\t\treturn wrappers[id];\n\t} else { // Fire native event.\n\t\tvar eventList = getEventList(type);\n\t\tfor (var n = 0, eventId; n < eventList.length; n ++) {\n\t\t\ttype = eventList[n];\n\t\t\teventId = type + \".\" + id;\n\t\t\tif (trigger === \"remove\") { // Remove event listener.\n\t\t\t\tif (!wrappers[eventId]) continue; // Already removed.\n\t\t\t\ttarget[remove](type, listener, useCapture);\n\t\t\t\tdelete wrappers[eventId];\n\t\t\t} else if (trigger === \"add\") { // Attach event listener.\n\t\t\t\tif (wrappers[eventId]) return wrappers[eventId]; // Already attached.\n\t\t\t\ttarget[add](type, listener, useCapture);\n\t\t\t\t// Record wrapper.\n\t\t\t\twrappers[eventId] = {\n\t\t\t\t\tid: eventId,\n\t\t\t\t\ttype: type,\n\t\t\t\t\ttarget: target,\n\t\t\t\t\tlistener: listener,\n\t\t\t\t\tremove: function() {\n\t\t\t\t\t\tfor (var n = 0; n < eventList.length; n ++) {\n\t\t\t\t\t\t\troot.remove(target, eventList[n], listener, configure);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn wrappers[eventId];\n\t}\n};\n\n/// Perform batch actions on multiple events.\nvar createBatchCommands = function(events) {\n\treturn {\n\t\tremove: function() { // Remove multiple events.\n\t\t\tfor (var key in events) {\n\t\t\t\tevents[key].remove();\n\t\t\t}\n\t\t},\n\t\tadd: function() { // Add multiple events.\n\t\t\tfor (var key in events) {\n\t\t\t\tevents[key].add();\n\t\t\t}\n\t\t}\n\t};\n};\n\n/// Display error message in console.\nvar createError = function(message, data) {\n\tif (typeof(console) === \"undefined\") return;\n\tif (typeof(console.error) === \"undefined\") return;\n\tconsole.error(message, data);\n};\n\n/// Handle naming discrepancies between platforms.\nvar pointerDefs = {\n\t\"msPointer\": [ \"MSPointerDown\", \"MSPointerMove\", \"MSPointerUp\" ],\n\t\"touch\": [ \"touchstart\", \"touchmove\", \"touchend\" ],\n\t\"mouse\": [ \"mousedown\", \"mousemove\", \"mouseup\" ]\n};\n\nvar pointerDetect = {\n\t// MSPointer\n\t\"MSPointerDown\": 0,\n\t\"MSPointerMove\": 1,\n\t\"MSPointerUp\": 2,\n\t// Touch\n\t\"touchstart\": 0,\n\t\"touchmove\": 1,\n\t\"touchend\": 2,\n\t// Mouse\n\t\"mousedown\": 0,\n\t\"mousemove\": 1,\n\t\"mouseup\": 2\n};\n\nvar getEventSupport = (function() {\n\troot.supports = {};\n\tif (window.navigator.msPointerEnabled) {\n\t\troot.supports.msPointer = true;\n\t}\n\tif (root.getEventSupport(\"touchstart\")) {\n\t\troot.supports.touch = true;\n\t}\n\tif (root.getEventSupport(\"mousedown\")) {\n\t\troot.supports.mouse = true;\n\t}\n})();\n\nvar getEventList = (function() {\n\treturn function(type) {\n\t\tvar prefix = document.addEventListener ? \"\" : \"on\"; // IE\n\t\tvar idx = pointerDetect[type];\n\t\tif (isFinite(idx)) {\n\t\t\tvar types = [];\n\t\t\tfor (var key in root.supports) {\n\t\t\t\ttypes.push(prefix + pointerDefs[key][idx]);\n\t\t\t}\n\t\t\treturn types;\n\t\t} else {\n\t\t\treturn [ prefix + type ];\n\t\t}\n\t};\n})();\n\n/// Event wrappers to keep track of all events placed in the window.\nvar wrappers = {};\nvar counter = 0;\nvar getID = function(object) {\n\tif (object === window) return \"#window\";\n\tif (object === document) return \"#document\";\n\tif (!object.uniqueID) object.uniqueID = \"e\" + counter ++;\n\treturn object.uniqueID;\n};\n\n/// Detect platforms native *EventListener command.\nvar add = document.addEventListener ? \"addEventListener\" : \"attachEvent\";\nvar remove = document.removeEventListener ? \"removeEventListener\" : \"detachEvent\";\n\n/*\n\tPointer.js\n\t----------------------------------------\n\tModified from; https://github.com/borismus/pointer.js\n*/\n\nroot.createPointerEvent = function (event, self, preventRecord) {\n\tvar eventName = self.gesture;\n\tvar target = self.target;\n\tvar pts = event.changedTouches || root.proxy.getCoords(event);\n\tif (pts.length) {\n\t\tvar pt = pts[0];\n\t\tself.pointers = preventRecord ? [] : pts;\n\t\tself.pageX = pt.pageX;\n\t\tself.pageY = pt.pageY;\n\t\tself.x = self.pageX;\n\t\tself.y = self.pageY;\n\t}\n\t///\n\tvar newEvent = document.createEvent(\"Event\");\n\tnewEvent.initEvent(eventName, true, true);\n\tnewEvent.originalEvent = event;\n\tfor (var k in self) {\n\t\tif (k === \"target\") continue;\n\t\tnewEvent[k] = self[k];\n\t}\n\t///\n\tvar type = newEvent.type;\n\tif (root.Gesture && root.Gesture._gestureHandlers[type]) { // capture custom events.\n//\t\ttarget.dispatchEvent(newEvent);\n\t\tself.oldListener.call(target, newEvent, self, false);\n\t}\n};\n\nvar eventListenersAgumented = false;\nvar augmentEventListeners = function() {\n\t/// Allows *EventListener to use custom event proxies.\n\tif (!window.HTMLElement) return;\n\tvar augmentEventListener = function(proto) {\n\t\tvar recall = function(trigger) { // overwrite native *EventListener's\n\t\t\tvar handle = trigger + \"EventListener\";\n\t\t\tvar handler = proto[handle];\n\t\t\tproto[handle] = function (type, listener, useCapture) {\n\t\t\t\tif (root.Gesture && root.Gesture._gestureHandlers[type]) { // capture custom events.\n\t\t\t\t\tvar configure = useCapture;\n\t\t\t\t\tif (typeof(useCapture) === \"object\") {\n\t\t\t\t\t\tconfigure.useCall = true;\n\t\t\t\t\t} else { // convert to configuration object.\n\t\t\t\t\t\tconfigure = {\n\t\t\t\t\t\t\tuseCall: true,\n\t\t\t\t\t\t\tuseCapture: useCapture\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\teventManager(this, type, listener, configure, trigger, true);\n//\t\t\t\t\thandler.call(this, type, listener, useCapture);\n\t\t\t\t} else { // use native function.\n\t\t\t\t\tvar types = getEventList(type);\n\t\t\t\t\tfor (var n = 0; n < types.length; n ++) {\n\t\t\t\t\t\thandler.call(this, types[n], listener, useCapture);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\t\trecall(\"add\");\n\t\trecall(\"remove\");\n\t};\n\t// NOTE: overwriting HTMLElement doesn't do anything in Firefox.\n\tif (navigator.userAgent.match(/Firefox/)) {\n\t\t// TODO: fix Firefox for the general case.\n\t\taugmentEventListener(HTMLDivElement.prototype);\n\t\taugmentEventListener(HTMLCanvasElement.prototype);\n\t} else {\n\t\taugmentEventListener(HTMLElement.prototype);\n\t}\n\taugmentEventListener(document);\n\taugmentEventListener(window);\n};\n\nvar selectorsAugmented = false;\nvar augmentSelectors = function() {\n/// Allows querySelectorAll and other NodeLists to perform *EventListener commands in bulk.\n\tvar proto = NodeList.prototype;\n\tproto.removeEventListener = function(type, listener, useCapture) {\n\t\tfor (var n = 0, length = this.length; n < length; n ++) {\n\t\t\tthis[n].removeEventListener(type, listener, useCapture);\n\t\t}\n\t};\n\tproto.addEventListener = function(type, listener, useCapture) {\n\t\tfor (var n = 0, length = this.length; n < length; n ++) {\n\t\t\tthis[n].addEventListener(type, listener, useCapture);\n\t\t}\n\t};\n};\n\nreturn root;\n\n})(eventjs);\n\n/*:\n\t----------------------------------------------------\n\teventjs.proxy : 0.4.2 : 2013/07/17 : MIT License\n\t----------------------------------------------------\n\thttps://github.com/mudcube/eventjs.js\n\t----------------------------------------------------\n*/\n\nif (typeof(eventjs) === \"undefined\") var eventjs = {};\nif (typeof(eventjs.proxy) === \"undefined\") eventjs.proxy = {};\n\neventjs.proxy = (function(root) { \"use strict\";\n\n/*\n\tCreate a new pointer gesture instance.\n*/\n\nroot.pointerSetup = function(conf, self) {\n\t/// Configure.\n\tconf.target = conf.target || window;\n\tconf.doc = conf.target.ownerDocument || conf.target; // Associated document.\n\tconf.minFingers = conf.minFingers || conf.fingers || 1; // Minimum required fingers.\n\tconf.maxFingers = conf.maxFingers || conf.fingers || Infinity; // Maximum allowed fingers.\n\tconf.position = conf.position || \"relative\"; // Determines what coordinate system points are returned.\n\tdelete conf.fingers; //-\n\t/// Convenience data.\n\tself = self || {};\n\tself.enabled = true;\n\tself.gesture = conf.gesture;\n\tself.target = conf.target;\n\tself.env = conf.env;\n\t///\n\tif (eventjs.modifyEventListener && conf.fromOverwrite) {\n\t\tconf.oldListener = conf.listener;\n\t\tconf.listener = eventjs.createPointerEvent;\n\t}\n\t/// Convenience commands.\n\tvar fingers = 0;\n\tvar type = self.gesture.indexOf(\"pointer\") === 0 && eventjs.modifyEventListener ? \"pointer\" : \"mouse\";\n\tif (conf.oldListener) self.oldListener = conf.oldListener;\n\t///\n\tself.listener = conf.listener;\n\tself.proxy = function(listener) {\n\t\tself.defaultListener = conf.listener;\n\t\tconf.listener = listener;\n\t\tlistener(conf.event, self);\n\t};\n\tself.add = function() {\n\t\tif (self.enabled === true) return;\n\t\tif (conf.onPointerDown) eventjs.add(conf.target, type + \"down\", conf.onPointerDown);\n\t\tif (conf.onPointerMove) eventjs.add(conf.doc, type + \"move\", conf.onPointerMove);\n\t\tif (conf.onPointerUp) eventjs.add(conf.doc, type + \"up\", conf.onPointerUp);\n\t\tself.enabled = true;\n\t};\n\tself.remove = function() {\n\t\tif (self.enabled === false) return;\n\t\tif (conf.onPointerDown) eventjs.remove(conf.target, type + \"down\", conf.onPointerDown);\n\t\tif (conf.onPointerMove) eventjs.remove(conf.doc, type + \"move\", conf.onPointerMove);\n\t\tif (conf.onPointerUp) eventjs.remove(conf.doc, type + \"up\", conf.onPointerUp);\n\t\tself.reset();\n\t\tself.enabled = false;\n\t};\n\tself.pause = function(opt) {\n\t\tif (conf.onPointerMove && (!opt || opt.move)) eventjs.remove(conf.doc, type + \"move\", conf.onPointerMove);\n\t\tif (conf.onPointerUp && (!opt || opt.up)) eventjs.remove(conf.doc, type + \"up\", conf.onPointerUp);\n\t\tfingers = conf.fingers;\n\t\tconf.fingers = 0;\n\t};\n\tself.resume = function(opt) {\n\t\tif (conf.onPointerMove && (!opt || opt.move)) eventjs.add(conf.doc, type + \"move\", conf.onPointerMove);\n\t\tif (conf.onPointerUp && (!opt || opt.up)) eventjs.add(conf.doc, type + \"up\", conf.onPointerUp);\n\t\tconf.fingers = fingers;\n\t};\n\tself.reset = function() {\n\t\tconf.tracker = {};\n\t\tconf.fingers = 0;\n\t};\n\t///\n\treturn self;\n};\n\n/*\n\tBegin proxied pointer command.\n*/\n\nvar sp = eventjs.supports; // Default pointerType\n///\neventjs.isMouse = !!sp.mouse;\neventjs.isMSPointer = !!sp.touch;\neventjs.isTouch = !!sp.msPointer;\n///\nroot.pointerStart = function(event, self, conf) {\n\t/// tracks multiple inputs\n\tvar type = (event.type || \"mousedown\").toUpperCase();\n\tif (type.indexOf(\"MOUSE\") === 0) {\n\t\teventjs.isMouse = true;\n\t\teventjs.isTouch = false;\n\t\teventjs.isMSPointer = false;\n\t} else if (type.indexOf(\"TOUCH\") === 0) {\n\t\teventjs.isMouse = false;\n\t\teventjs.isTouch = true;\n\t\teventjs.isMSPointer = false;\n\t} else if (type.indexOf(\"MSPOINTER\") === 0) {\n\t\teventjs.isMouse = false;\n\t\teventjs.isTouch = false;\n\t\teventjs.isMSPointer = true;\n\t}\n\t///\n\tvar addTouchStart = function(touch, sid) {\n\t\tvar bbox = conf.bbox;\n\t\tvar pt = track[sid] = {};\n\t\t///\n\t\tswitch(conf.position) {\n\t\t\tcase \"absolute\": // Absolute from within window.\n\t\t\t\tpt.offsetX = 0;\n\t\t\t\tpt.offsetY = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"differenceFromLast\": // Since last coordinate recorded.\n\t\t\t\tpt.offsetX = touch.pageX;\n\t\t\t\tpt.offsetY = touch.pageY;\n\t\t\t\tbreak;\n\t\t\tcase \"difference\": // Relative from origin.\n\t\t\t\tpt.offsetX = touch.pageX;\n\t\t\t\tpt.offsetY = touch.pageY;\n\t\t\t\tbreak;\n\t\t\tcase \"move\": // Move target element.\n\t\t\t\tpt.offsetX = touch.pageX - bbox.x1;\n\t\t\t\tpt.offsetY = touch.pageY - bbox.y1;\n\t\t\t\tbreak;\n\t\t\tdefault: // Relative from within target.\n\t\t\t\tpt.offsetX = bbox.x1 - bbox.scrollLeft;\n\t\t\t\tpt.offsetY = bbox.y1 - bbox.scrollTop;\n\t\t\t\tbreak;\n\t\t}\n\t\t///\n\t\tvar x = touch.pageX - pt.offsetX;\n\t\tvar y = touch.pageY - pt.offsetY;\n\t\t///\n\t\tpt.rotation = 0;\n\t\tpt.scale = 1;\n\t\tpt.startTime = pt.moveTime = (new Date()).getTime();\n\t\tpt.move = { x: x, y: y };\n\t\tpt.start = { x: x, y: y };\n\t\t///\n\t\tconf.fingers ++;\n\t};\n\t///\n\tconf.event = event;\n\tif (self.defaultListener) {\n\t\tconf.listener = self.defaultListener;\n\t\tdelete self.defaultListener;\n\t}\n\t///\n\tvar isTouchStart = !conf.fingers;\n\tvar track = conf.tracker;\n\tvar touches = event.changedTouches || root.getCoords(event);\n\tvar length = touches.length;\n\t// Adding touch events to tracking.\n\tfor (var i = 0; i < length; i ++) {\n\t\tvar touch = touches[i];\n\t\tvar sid = touch.identifier || Infinity; // Touch ID.\n\t\t// Track the current state of the touches.\n\t\tif (conf.fingers) {\n\t\t\tif (conf.fingers >= conf.maxFingers) {\n\t\t\t\tvar ids = [];\n\t\t\t\tfor (var sid in conf.tracker) ids.push(sid);\n\t\t\t\tself.identifier = ids.join(\",\");\n\t\t\t\treturn isTouchStart;\n\t\t\t}\n\t\t\tvar fingers = 0; // Finger ID.\n\t\t\tfor (var rid in track) {\n\t\t\t\t// Replace removed finger.\n\t\t\t\tif (track[rid].up) {\n\t\t\t\t\tdelete track[rid];\n\t\t\t\t\taddTouchStart(touch, sid);\n\t\t\t\t\tconf.cancel = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tfingers ++;\n\t\t\t}\n\t\t\t// Add additional finger.\n\t\t\tif (track[sid]) continue;\n\t\t\taddTouchStart(touch, sid);\n\t\t} else { // Start tracking fingers.\n\t\t\ttrack = conf.tracker = {};\n\t\t\tself.bbox = conf.bbox = root.getBoundingBox(conf.target);\n\t\t\tconf.fingers = 0;\n\t\t\tconf.cancel = false;\n\t\t\taddTouchStart(touch, sid);\n\t\t}\n\t}\n\t///\n\tvar ids = [];\n\tfor (var sid in conf.tracker) ids.push(sid);\n\tself.identifier = ids.join(\",\");\n\t///\n\treturn isTouchStart;\n};\n\n/*\n\tEnd proxied pointer command.\n*/\n\nroot.pointerEnd = function(event, self, conf, onPointerUp) {\n\t// Record changed touches have ended (iOS changedTouches is not reliable).\n\tvar touches = event.touches || [];\n\tvar length = touches.length;\n\tvar exists = {};\n\tfor (var i = 0; i < length; i ++) {\n\t\tvar touch = touches[i];\n\t\tvar sid = touch.identifier;\n\t\texists[sid || Infinity] = true;\n\t}\n\tfor (var sid in conf.tracker) {\n\t\tvar track = conf.tracker[sid];\n\t\tif (exists[sid] || track.up) continue;\n\t\tif (onPointerUp) { // add changedTouches to mouse.\n\t\t\tonPointerUp({\n\t\t\t\tpageX: track.pageX,\n\t\t\t\tpageY: track.pageY,\n\t\t\t\tchangedTouches: [{\n\t\t\t\t\tpageX: track.pageX,\n\t\t\t\t\tpageY: track.pageY,\n\t\t\t\t\tidentifier: sid === \"Infinity\" ? Infinity : sid\n\t\t\t\t}]\n\t\t\t}, \"up\");\n\t\t}\n\t\ttrack.up = true;\n\t\tconf.fingers --;\n\t}\n/*\t// This should work but fails in Safari on iOS4 so not using it.\n\tvar touches = event.changedTouches || root.getCoords(event);\n\tvar length = touches.length;\n\t// Record changed touches have ended (this should work).\n\tfor (var i = 0; i < length; i ++) {\n\t\tvar touch = touches[i];\n\t\tvar sid = touch.identifier || Infinity;\n\t\tvar track = conf.tracker[sid];\n\t\tif (track && !track.up) {\n\t\t\tif (onPointerUp) { // add changedTouches to mouse.\n\t\t\t\tonPointerUp({\n\t\t\t\t\tchangedTouches: [{\n\t\t\t\t\t\tpageX: track.pageX,\n\t\t\t\t\t\tpageY: track.pageY,\n\t\t\t\t\t\tidentifier: sid === \"Infinity\" ? Infinity : sid\n\t\t\t\t\t}]\n\t\t\t\t}, \"up\");\n\t\t\t}\n\t\t\ttrack.up = true;\n\t\t\tconf.fingers --;\n\t\t}\n\t} */\n\t// Wait for all fingers to be released.\n\tif (conf.fingers !== 0) return false;\n\t// Record total number of fingers gesture used.\n\tvar ids = [];\n\tconf.gestureFingers = 0;\n\tfor (var sid in conf.tracker) {\n\t\tconf.gestureFingers ++;\n\t\tids.push(sid);\n\t}\n\tself.identifier = ids.join(\",\");\n\t// Our pointer gesture has ended.\n\treturn true;\n};\n\n/*\n\tReturns mouse coords in an array to match event.*Touches\n\t------------------------------------------------------------\n\tvar touch = event.changedTouches || root.getCoords(event);\n*/\n\nroot.getCoords = function(event) {\n\tif (typeof(event.pageX) !== \"undefined\") { // Desktop browsers.\n\t\troot.getCoords = function(event) {\n\t\t\treturn Array({\n\t\t\t\ttype: \"mouse\",\n\t\t\t\tx: event.pageX,\n\t\t\t\ty: event.pageY,\n\t\t\t\tpageX: event.pageX,\n\t\t\t\tpageY: event.pageY,\n\t\t\t\tidentifier: event.pointerId || Infinity // pointerId is MS\n\t\t\t});\n\t\t};\n\t} else { // Internet Explorer <= 8.0\n\t\troot.getCoords = function(event) {\n\t\t\tvar doc = document.documentElement;\n\t\t\tevent = event || window.event;\n\t\t\treturn Array({\n\t\t\t\ttype: \"mouse\",\n\t\t\t\tx: event.clientX + doc.scrollLeft,\n\t\t\t\ty: event.clientY + doc.scrollTop,\n\t\t\t\tpageX: event.clientX + doc.scrollLeft,\n\t\t\t\tpageY: event.clientY + doc.scrollTop,\n\t\t\t\tidentifier: Infinity\n\t\t\t});\n\t\t};\n\t}\n\treturn root.getCoords(event);\n};\n\n/*\n\tReturns single coords in an object.\n\t------------------------------------------------------------\n\tvar mouse = root.getCoord(event);\n*/\n\nroot.getCoord = function(event) {\n\tif (\"ontouchstart\" in window) { // Mobile browsers.\n\t\tvar pX = 0;\n\t\tvar pY = 0;\n\t\troot.getCoord = function(event) {\n\t\t\tvar touches = event.changedTouches;\n\t\t\tif (touches && touches.length) { // ontouchstart + ontouchmove\n\t\t\t\treturn {\n\t\t\t\t\tx: pX = touches[0].pageX,\n\t\t\t\t\ty: pY = touches[0].pageY\n\t\t\t\t};\n\t\t\t} else { // ontouchend\n\t\t\t\treturn {\n\t\t\t\t\tx: pX,\n\t\t\t\t\ty: pY\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t} else if(typeof(event.pageX) !== \"undefined\" && typeof(event.pageY) !== \"undefined\") { // Desktop browsers.\n\t\troot.getCoord = function(event) {\n\t\t\treturn {\n\t\t\t\tx: event.pageX,\n\t\t\t\ty: event.pageY\n\t\t\t};\n\t\t};\n\t} else { // Internet Explorer <=8.0\n\t\troot.getCoord = function(event) {\n\t\t\tvar doc = document.documentElement;\n\t\t\tevent = event || window.event;\n\t\t\treturn {\n\t\t\t\tx: event.clientX + doc.scrollLeft,\n\t\t\t\ty: event.clientY + doc.scrollTop\n\t\t\t};\n\t\t};\n\t}\n\treturn root.getCoord(event);\n};\n\n/*\n\tGet target scale and position in space.\n*/\n\nvar getPropertyAsFloat = function(o, type) {\n\tvar n = parseFloat(o.getPropertyValue(type), 10);\n\treturn isFinite(n) ? n : 0;\n};\n\nroot.getBoundingBox = function(o) {\n\tif (o === window || o === document) o = document.body;\n\t///\n\tvar bbox = {};\n\tvar bcr = o.getBoundingClientRect();\n\tbbox.width = bcr.width;\n\tbbox.height = bcr.height;\n\tbbox.x1 = bcr.left;\n\tbbox.y1 = bcr.top;\n\tbbox.scaleX = bcr.width / o.offsetWidth || 1;\n\tbbox.scaleY = bcr.height / o.offsetHeight || 1;\n\tbbox.scrollLeft = 0;\n\tbbox.scrollTop = 0;\n\t///\n\tvar style = window.getComputedStyle(o);\n\tvar borderBox = style.getPropertyValue(\"box-sizing\") === \"border-box\";\n\t///\n\tif (borderBox === false) {\n\t\tvar left = getPropertyAsFloat(style, \"border-left-width\");\n\t\tvar right = getPropertyAsFloat(style, \"border-right-width\");\n\t\tvar bottom = getPropertyAsFloat(style, \"border-bottom-width\");\n\t\tvar top = getPropertyAsFloat(style, \"border-top-width\");\n\t\tbbox.border = [ left, right, top, bottom ];\n\t\tbbox.x1 += left;\n\t\tbbox.y1 += top;\n\t\tbbox.width -= right + left;\n\t\tbbox.height -= bottom + top;\n\t}\n\n/*\tvar left = getPropertyAsFloat(style, \"padding-left\");\n\tvar right = getPropertyAsFloat(style, \"padding-right\");\n\tvar bottom = getPropertyAsFloat(style, \"padding-bottom\");\n\tvar top = getPropertyAsFloat(style, \"padding-top\");\n\tbbox.padding = [ left, right, top, bottom ];*/\n\t///\n\tbbox.x2 = bbox.x1 + bbox.width;\n\tbbox.y2 = bbox.y1 + bbox.height;\n\n\t/// Get the scroll of container element.\n\tvar position = style.getPropertyValue(\"position\");\n\tvar tmp = position === \"fixed\" ? o : o.parentNode;\n\twhile (tmp !== null) {\n\t\tif (tmp === document.body) break;\n\t\tif (tmp.scrollTop === undefined) break;\n\t\tvar style = window.getComputedStyle(tmp);\n\t\tvar position = style.getPropertyValue(\"position\");\n\t\tif (position === \"absolute\") {\n\n\t\t} else if (position === \"fixed\") {\n//\t\t\tbbox.scrollTop += document.body.scrollTop;\n//\t\t\tbbox.scrollLeft += document.body.scrollLeft;\n\t\t\tbbox.scrollTop -= tmp.parentNode.scrollTop;\n\t\t\tbbox.scrollLeft -= tmp.parentNode.scrollLeft;\n\t\t\tbreak;\n\t\t} else {\n\t\t\tbbox.scrollLeft += tmp.scrollLeft;\n\t\t\tbbox.scrollTop += tmp.scrollTop;\n\t\t}\n\t\t///\n\t\ttmp = tmp.parentNode;\n\t};\n\t///\n\tbbox.scrollBodyLeft = (window.pageXOffset !== undefined) ? window.pageXOffset : (document.documentElement || document.body.parentNode || document.body).scrollLeft;\n\tbbox.scrollBodyTop = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;\n\t///\n\tbbox.scrollLeft -= bbox.scrollBodyLeft;\n\tbbox.scrollTop -= bbox.scrollBodyTop;\n\t///\n\treturn bbox;\n};\n\n/*\n\tKeep track of metaKey, the proper ctrlKey for users platform.\n\t----------------------------------------------------\n\thttp://www.quirksmode.org/js/keys.html\n\t-----------------------------------\n\thttp://unixpapa.com/js/key.html\n*/\n\n(function() {\n\tvar agent = navigator.userAgent.toLowerCase();\n\tvar mac = agent.indexOf(\"macintosh\") !== -1;\n\tvar metaKeys;\n\tif (mac && agent.indexOf(\"khtml\") !== -1) { // chrome, safari.\n\t\tmetaKeys = { 91: true, 93: true };\n\t} else if (mac && agent.indexOf(\"firefox\") !== -1) { // mac firefox.\n\t\tmetaKeys = { 224: true };\n\t} else { // windows, linux, or mac opera.\n\t\tmetaKeys = { 17: true };\n\t}\n\t(root.metaTrackerReset = function() {\n\t\teventjs.fnKey = root.fnKey = false;\n\t\teventjs.metaKey = root.metaKey = false;\n\t\teventjs.escKey = root.escKey = false;\n\t\teventjs.ctrlKey = root.ctrlKey = false;\n\t\teventjs.shiftKey = root.shiftKey = false;\n\t\teventjs.altKey = root.altKey = false;\n\t})();\n\troot.metaTracker = function(event) {\n\t\tvar isKeyDown = event.type === \"keydown\";\n\t\tif (event.keyCode === 27) eventjs.escKey = root.escKey = isKeyDown;\n\t\tif (metaKeys[event.keyCode]) eventjs.metaKey = root.metaKey = isKeyDown;\n\t\teventjs.ctrlKey = root.ctrlKey = event.ctrlKey;\n\t\teventjs.shiftKey = root.shiftKey = event.shiftKey;\n\t\teventjs.altKey = root.altKey = event.altKey;\n\t};\n})();\n\nreturn root;\n\n})(eventjs.proxy);\n/*:\n\t----------------------------------------------------\n\t\"MutationObserver\" event proxy.\n\t----------------------------------------------------\n\tauthor: Selvakumar Arumugam - MIT LICENSE\n\t src: http://stackoverflow.com/questions/10868104/can-you-have-a-javascript-hook-trigger-after-a-dom-elements-style-object-change\n\t----------------------------------------------------\n*/\nif (typeof(eventjs) === \"undefined\") var eventjs = {};\n\neventjs.MutationObserver = (function() {\n\tvar MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;\n\tvar DOMAttrModifiedSupported = !MutationObserver && (function() {\n\t\tvar p = document.createElement(\"p\");\n\t\tvar flag = false;\n\t\tvar fn = function() { flag = true };\n\t\tif (p.addEventListener) {\n\t\t\tp.addEventListener(\"DOMAttrModified\", fn, false);\n\t\t} else if (p.attachEvent) {\n\t\t\tp.attachEvent(\"onDOMAttrModified\", fn);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t\t///\n\t\tp.setAttribute(\"id\", \"target\");\n\t\t///\n\t\treturn flag;\n\t})();\n\t///\n\treturn function(container, callback) {\n\t\tif (MutationObserver) {\n\t\t\tvar options = {\n\t\t\t\tsubtree: false,\n\t\t\t\tattributes: true\n\t\t\t};\n\t\t\tvar observer = new MutationObserver(function(mutations) {\n\t\t\t\tmutations.forEach(function(e) {\n\t\t\t\t\tcallback.call(e.target, e.attributeName);\n\t\t\t\t});\n\t\t\t});\n\t\t\tobserver.observe(container, options)\n\t\t} else if (DOMAttrModifiedSupported) {\n\t\t\teventjs.add(container, \"DOMAttrModified\", function(e) {\n\t\t\t\tcallback.call(container, e.attrName);\n\t\t\t});\n\t\t} else if (\"onpropertychange\" in document.body) {\n\t\t\teventjs.add(container, \"propertychange\", function(e) {\n\t\t\t\tcallback.call(container, window.event.propertyName);\n\t\t\t});\n\t\t}\n\t}\n})();\n/*:\n\t\"Click\" event proxy.\n\t----------------------------------------------------\n\teventjs.add(window, \"click\", function(event, self) {});\n*/\n\nif (typeof(eventjs) === \"undefined\") var eventjs = {};\nif (typeof(eventjs.proxy) === \"undefined\") eventjs.proxy = {};\n\neventjs.proxy = (function(root) { \"use strict\";\n\nroot.click = function(conf) {\n\tconf.gesture = conf.gesture || \"click\";\n\tconf.maxFingers = conf.maxFingers || conf.fingers || 1;\n\t/// Tracking the events.\n\tconf.onPointerDown = function (event) {\n\t\tif (root.pointerStart(event, self, conf)) {\n\t\t\teventjs.add(conf.target, \"mouseup\", conf.onPointerUp);\n\t\t}\n\t};\n\tconf.onPointerUp = function(event) {\n\t\tif (root.pointerEnd(event, self, conf)) {\n\t\t\teventjs.remove(conf.target, \"mouseup\", conf.onPointerUp);\n\t\t\tvar pointers = event.changedTouches || root.getCoords(event);\n\t\t\tvar pointer = pointers[0];\n\t\t\tvar bbox = conf.bbox;\n\t\t\tvar newbbox = root.getBoundingBox(conf.target);\n\t\t\tvar y = pointer.pageY - newbbox.scrollBodyTop;\n\t\t\tvar x = pointer.pageX - newbbox.scrollBodyLeft;\n\t\t\t////\n\t\t\tif (x > bbox.x1 && y > bbox.y1 &&\n\t\t\t\tx < bbox.x2 && y < bbox.y2 &&\n\t\t\t\tbbox.scrollTop === newbbox.scrollTop) { // has not been scrolled\n\t\t\t\t///\n\t\t\t\tfor (var key in conf.tracker) break; //- should be modularized? in dblclick too\n\t\t\t\tvar point = conf.tracker[key];\n\t\t\t\tself.x = point.start.x;\n\t\t\t\tself.y = point.start.y;\n\t\t\t\t///\n\t\t\t\tconf.listener(event, self);\n\t\t\t}\n\t\t}\n\t};\n\t// Generate maintenance commands, and other configurations.\n\tvar self = root.pointerSetup(conf);\n\tself.state = \"click\";\n\t// Attach events.\n\teventjs.add(conf.target, \"mousedown\", conf.onPointerDown);\n\t// Return this object.\n\treturn self;\n};\n\neventjs.Gesture = eventjs.Gesture || {};\neventjs.Gesture._gestureHandlers = eventjs.Gesture._gestureHandlers || {};\neventjs.Gesture._gestureHandlers.click = root.click;\n\nreturn root;\n\n})(eventjs.proxy);\n/*:\n\t\"Double-Click\" aka \"Double-Tap\" event proxy.\n\t----------------------------------------------------\n\teventjs.add(window, \"dblclick\", function(event, self) {});\n\t----------------------------------------------------\n\tTouch an target twice for <= 700ms, with less than 25 pixel drift.\n*/\n\nif (typeof(eventjs) === \"undefined\") var eventjs = {};\nif (typeof(eventjs.proxy) === \"undefined\") eventjs.proxy = {};\n\neventjs.proxy = (function(root) { \"use strict\";\n\nroot.dbltap =\nroot.dblclick = function(conf) {\n\tconf.gesture = conf.gesture || \"dbltap\";\n\tconf.maxFingers = conf.maxFingers || conf.fingers || 1;\n\t// Setting up local variables.\n\tvar delay = 700; // in milliseconds\n\tvar time0, time1, timeout;\n\tvar pointer0, pointer1;\n\t// Tracking the events.\n\tconf.onPointerDown = function (event) {\n\t\tvar pointers = event.changedTouches || root.getCoords(event);\n\t\tif (time0 && !time1) { // Click #2\n\t\t\tpointer1 = pointers[0];\n\t\t\ttime1 = (new Date()).getTime() - time0;\n\t\t} else { // Click #1\n\t\t\tpointer0 = pointers[0];\n\t\t\ttime0 = (new Date()).getTime();\n\t\t\ttime1 = 0;\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = setTimeout(function() {\n\t\t\t\ttime0 = 0;\n\t\t\t}, delay);\n\t\t}\n\t\tif (root.pointerStart(event, self, conf)) {\n\t\t\teventjs.add(conf.target, \"mousemove\", conf.onPointerMove).listener(event);\n\t\t\teventjs.add(conf.target, \"mouseup\", conf.onPointerUp);\n\t\t}\n\t};\n\tconf.onPointerMove = function (event) {\n\t\tif (time0 && !time1) {\n\t\t\tvar pointers = event.changedTouches || root.getCoords(event);\n\t\t\tpointer1 = pointers[0];\n\t\t}\n\t\tvar bbox = conf.bbox;\n\t\tvar ax = (pointer1.pageX - bbox.x1);\n\t\tvar ay = (pointer1.pageY - bbox.y1);\n\t\tif (!(ax > 0 && ax < bbox.width && // Within target coordinates..\n\t\t\t ay > 0 && ay < bbox.height &&\n\t\t\t Math.abs(pointer1.pageX - pointer0.pageX) <= 25 && // Within drift deviance.\n\t\t\t Math.abs(pointer1.pageY - pointer0.pageY) <= 25)) {\n\t\t\t// Cancel out this listener.\n\t\t\teventjs.remove(conf.target, \"mousemove\", conf.onPointerMove);\n\t\t\tclearTimeout(timeout);\n\t\t\ttime0 = time1 = 0;\n\t\t}\n\t};\n\tconf.onPointerUp = function(event) {\n\t\tif (root.pointerEnd(event, self, conf)) {\n\t\t\teventjs.remove(conf.target, \"mousemove\", conf.onPointerMove);\n\t\t\teventjs.remove(conf.target, \"mouseup\", conf.onPointerUp);\n\t\t}\n\t\tif (time0 && time1) {\n\t\t\tif (time1 <= delay) { // && !(event.cancelBubble && ++event.cancelBubbleCount > 1)) {\n\t\t\t\tself.state = conf.gesture;\n\t\t\t\tfor (var key in conf.tracker) break;\n\t\t\t\tvar point = conf.tracker[key];\n\t\t\t\tself.x = point.start.x;\n\t\t\t\tself.y = point.start.y;\n\t\t\t\tconf.listener(event, self);\n\t\t\t}\n\t\t\tclearTimeout(timeout);\n\t\t\ttime0 = time1 = 0;\n\t\t}\n\t};\n\t// Generate maintenance commands, and other configurations.\n\tvar self = root.pointerSetup(conf);\n\tself.state = \"dblclick\";\n\t// Attach events.\n\teventjs.add(conf.target, \"mousedown\", conf.onPointerDown);\n\t// Return this object.\n\treturn self;\n};\n\neventjs.Gesture = eventjs.Gesture || {};\neventjs.Gesture._gestureHandlers = eventjs.Gesture._gestureHandlers || {};\neventjs.Gesture._gestureHandlers.dbltap = root.dbltap;\neventjs.Gesture._gestureHandlers.dblclick = root.dblclick;\n\nreturn root;\n\n})(eventjs.proxy);\n/*:\n\t\"Drag\" event proxy (1+ fingers).\n\t----------------------------------------------------\n\tCONFIGURE: maxFingers, position.\n\t----------------------------------------------------\n\teventjs.add(window, \"drag\", function(event, self) {\n\t\tconsole.log(self.gesture, self.state, self.start, self.x, self.y, self.bbox);\n\t});\n*/\n\nif (typeof(eventjs) === \"undefined\") var eventjs = {};\nif (typeof(eventjs.proxy) === \"undefined\") eventjs.proxy = {};\n\neventjs.proxy = (function(root) { \"use strict\";\n\nroot.dragElement = function(that, event) {\n\troot.drag({\n\t\tevent: event,\n\t\ttarget: that,\n\t\tposition: \"move\",\n\t\tlistener: function(event, self) {\n\t\t\tthat.style.left = self.x + \"px\";\n\t\t\tthat.style.top = self.y + \"px\";\n\t\t\teventjs.prevent(event);\n\t\t}\n\t});\n};\n\nroot.drag = function(conf) {\n\tconf.gesture = \"drag\";\n\tconf.onPointerDown = function (event) {\n\t\tif (root.pointerStart(event, self, conf)) {\n\t\t\tif (!conf.monitor) {\n\t\t\t\teventjs.add(conf.doc, \"mousemove\", conf.onPointerMove);\n\t\t\t\teventjs.add(conf.doc, \"mouseup\", conf.onPointerUp);\n\t\t\t}\n\t\t}\n\t\t// Process event listener.\n\t\tconf.onPointerMove(event, \"down\");\n\t};\n\tconf.onPointerMove = function (event, state) {\n\t\tif (!conf.tracker) return conf.onPointerDown(event);\n\t\tvar bbox = conf.bbox;\n\t\tvar touches = event.changedTouches || root.getCoords(event);\n\t\tvar length = touches.length;\n\t\tfor (var i = 0; i < length; i ++) {\n\t\t\tvar touch = touches[i];\n\t\t\tvar identifier = touch.identifier || Infinity;\n\t\t\tvar pt = conf.tracker[identifier];\n\t\t\t// Identifier defined outside of listener.\n\t\t\tif (!pt) continue;\n\t\t\tpt.pageX = touch.pageX;\n\t\t\tpt.pageY = touch.pageY;\n\t\t\t// Record data.\n\t\t\tself.state = state || \"move\";\n\t\t\tself.identifier = identifier;\n\t\t\tself.start = pt.start;\n\t\t\tself.fingers = conf.fingers;\n\t\t\tif (conf.position === \"differenceFromLast\") {\n\t\t\t\tself.x = (pt.pageX - pt.offsetX);\n\t\t\t\tself.y = (pt.pageY - pt.offsetY);\n\t\t\t\tpt.offsetX = pt.pageX;\n\t\t\t\tpt.offsetY = pt.pageY;\n\t\t\t} else {\n\t\t\t\tself.x = (pt.pageX - pt.offsetX);\n\t\t\t\tself.y = (pt.pageY - pt.offsetY);\n\t\t\t}\n\t\t\t///\n\t\t\tconf.listener(event, self);\n\t\t}\n\t};\n\tconf.onPointerUp = function(event) {\n\t\t// Remove tracking for touch.\n\t\tif (root.pointerEnd(event, self, conf, conf.onPointerMove)) {\n\t\t\tif (!conf.monitor) {\n\t\t\t\teventjs.remove(conf.doc, \"mousemove\", conf.onPointerMove);\n\t\t\t\teventjs.remove(conf.doc, \"mouseup\", conf.onPointerUp);\n\t\t\t}\n\t\t}\n\t};\n\t// Generate maintenance commands, and other configurations.\n\tvar self = root.pointerSetup(conf);\n\t// Attach events.\n\tif (conf.event) {\n\t\tconf.onPointerDown(conf.event);\n\t} else { //\n\t\teventjs.add(conf.target, \"mousedown\", conf.onPointerDown);\n\t\tif (conf.monitor) {\n\t\t\teventjs.add(conf.doc, \"mousemove\", conf.onPointerMove);\n\t\t\teventjs.add(conf.doc, \"mouseup\", conf.onPointerUp);\n\t\t}\n\t}\n\t// Return this object.\n\treturn self;\n};\n\neventjs.Gesture = eventjs.Gesture || {};\neventjs.Gesture._gestureHandlers = eventjs.Gesture._gestureHandlers || {};\neventjs.Gesture._gestureHandlers.drag = root.drag;\n\nreturn root;\n\n})(eventjs.proxy);\n/*:\n\t\"Gesture\" event proxy (2+ fingers).\n\t----------------------------------------------------\n\tCONFIGURE: minFingers, maxFingers.\n\t----------------------------------------------------\n\teventjs.add(window, \"gesture\", function(event, self) {\n\t\tconsole.log(\n\t\t\tself.x, // centroid\n\t\t\tself.y,\n\t\t\tself.rotation,\n\t\t\tself.scale,\n\t\t\tself.fingers,\n\t\t\tself.state\n\t\t);\n\t});\n*/\n\nif (typeof(eventjs) === \"undefined\") var eventjs = {};\nif (typeof(eventjs.proxy) === \"undefined\") eventjs.proxy = {};\n\neventjs.proxy = (function(root) { \"use strict\";\n\nvar RAD_DEG = Math.PI / 180;\nvar getCentroid = function(self, points) {\n\tvar centroidx = 0;\n\tvar centroidy = 0;\n\tvar length = 0;\n\tfor (var sid in points) {\n\t\tvar touch = points[sid];\n\t\tif (touch.up) continue;\n\t\tcentroidx += touch.move.x;\n\t\tcentroidy += touch.move.y;\n\t\tlength ++;\n\t}\n\tself.x = centroidx /= length;\n\tself.y = centroidy /= length;\n\treturn self;\n};\n\nroot.gesture = function(conf) {\n\tconf.gesture = conf.gesture || \"gesture\";\n\tconf.minFingers = conf.minFingers || conf.fingers || 2;\n\t// Tracking the events.\n\tconf.onPointerDown = function (event) {\n\t\tvar fingers = conf.fingers;\n\t\tif (root.pointerStart(event, self, conf)) {\n\t\t\teventjs.add(conf.doc, \"mousemove\", conf.onPointerMove);\n\t\t\teventjs.add(conf.doc, \"mouseup\", conf.onPointerUp);\n\t\t}\n\t\t// Record gesture start.\n\t\tif (conf.fingers === conf.minFingers && fingers !== conf.fingers) {\n\t\t\tself.fingers = conf.minFingers;\n\t\t\tself.scale = 1;\n\t\t\tself.rotation = 0;\n\t\t\tself.state = \"start\";\n\t\t\tvar sids = \"\"; //- FIXME(mud): can generate duplicate IDs.\n\t\t\tfor (var key in conf.tracker) sids += key;\n\t\t\tself.identifier = parseInt(sids);\n\t\t\tgetCentroid(self, conf.tracker);\n\t\t\tconf.listener(event, self);\n\t\t}\n\t};\n\t///\n\tconf.onPointerMove = function (event, state) {\n\t\tvar bbox = conf.bbox;\n\t\tvar points = conf.tracker;\n\t\tvar touches = event.changedTouches || root.getCoords(event);\n\t\tvar length = touches.length;\n\t\t// Update tracker coordinates.\n\t\tfor (var i = 0; i < length; i ++) {\n\t\t\tvar touch = touches[i];\n\t\t\tvar sid = touch.identifier || Infinity;\n\t\t\tvar pt = points[sid];\n\t\t\t// Check whether \"pt\" is used by another gesture.\n\t\t\tif (!pt) continue;\n\t\t\t// Find the actual coordinates.\n\t\t\tpt.move.x = (touch.pageX - bbox.x1);\n\t\t\tpt.move.y = (touch.pageY - bbox.y1);\n\t\t}\n\t\t///\n\t\tif (conf.fingers < conf.minFingers) return;\n\t\t///\n\t\tvar touches = [];\n\t\tvar scale = 0;\n\t\tvar rotation = 0;\n\n\t\t/// Calculate centroid of gesture.\n\t\tgetCentroid(self, points);\n\t\t///\n\t\tfor (var sid in points) {\n\t\t\tvar touch = points[sid];\n\t\t\tif (touch.up) continue;\n\t\t\tvar start = touch.start;\n\t\t\tif (!start.distance) {\n\t\t\t\tvar dx = start.x - self.x;\n\t\t\t\tvar dy = start.y - self.y;\n\t\t\t\tstart.distance = Math.sqrt(dx * dx + dy * dy);\n\t\t\t\tstart.angle = Math.atan2(dx, dy) / RAD_DEG;\n\t\t\t}\n\t\t\t// Calculate scale.\n\t\t\tvar dx = touch.move.x - self.x;\n\t\t\tvar dy = touch.move.y - self.y;\n\t\t\tvar distance = Math.sqrt(dx * dx + dy * dy);\n\t\t\tscale += distance / start.distance;\n\t\t\t// Calculate rotation.\n\t\t\tvar angle = Math.atan2(dx, dy) / RAD_DEG;\n\t\t\tvar rotate = (start.angle - angle + 360) % 360 - 180;\n\t\t\ttouch.DEG2 = touch.DEG1; // Previous degree.\n\t\t\ttouch.DEG1 = rotate > 0 ? rotate : -rotate; // Current degree.\n\t\t\tif (typeof(touch.DEG2) !== \"undefined\") {\n\t\t\t\tif (rotate > 0) {\n\t\t\t\t\ttouch.rotation += touch.DEG1 - touch.DEG2;\n\t\t\t\t} else {\n\t\t\t\t\ttouch.rotation -= touch.DEG1 - touch.DEG2;\n\t\t\t\t}\n\t\t\t\trotation += touch.rotation;\n\t\t\t}\n\t\t\t// Attach current points to self.\n\t\t\ttouches.push(touch.move);\n\t\t}\n\t\t///\n\t\tself.touches = touches;\n\t\tself.fingers = conf.fingers;\n\t\tself.scale = scale / conf.fingers;\n\t\tself.rotation = rotation / conf.fingers;\n\t\tself.state = \"change\";\n\t\tconf.listener(event, self);\n\t};\n\tconf.onPointerUp = function(event) {\n\t\t// Remove tracking for touch.\n\t\tvar fingers = conf.fingers;\n\t\tif (root.pointerEnd(event, self, conf)) {\n\t\t\teventjs.remove(conf.doc, \"mousemove\", conf.onPointerMove);\n\t\t\teventjs.remove(conf.doc, \"mouseup\", conf.onPointerUp);\n\t\t}\n\t\t// Check whether fingers has dropped below minFingers.\n\t\tif (fingers === conf.minFingers && conf.fingers < conf.minFingers) {\n\t\t\tself.fingers = conf.fingers;\n\t\t\tself.state = \"end\";\n\t\t\tconf.listener(event, self);\n\t\t}\n\t};\n\t// Generate maintenance commands, and other configurations.\n\tvar self = root.pointerSetup(conf);\n\t// Attach events.\n\teventjs.add(conf.target, \"mousedown\", conf.onPointerDown);\n\t// Return this object.\n\treturn self;\n};\n\neventjs.Gesture = eventjs.Gesture || {};\neventjs.Gesture._gestureHandlers = eventjs.Gesture._gestureHandlers || {};\neventjs.Gesture._gestureHandlers.gesture = root.gesture;\n\nreturn root;\n\n})(eventjs.proxy);\n/*:\n\t\"Pointer\" event proxy (1+ fingers).\n\t----------------------------------------------------\n\tCONFIGURE: minFingers, maxFingers.\n\t----------------------------------------------------\n\teventjs.add(window, \"gesture\", function(event, self) {\n\t\tconsole.log(self.rotation, self.scale, self.fingers, self.state);\n\t});\n*/\n\nif (typeof(eventjs) === \"undefined\") var eventjs = {};\nif (typeof(eventjs.proxy) === \"undefined\") eventjs.proxy = {};\n\neventjs.proxy = (function(root) { \"use strict\";\n\nroot.pointerdown =\nroot.pointermove =\nroot.pointerup = function(conf) {\n\tconf.gesture = conf.gesture || \"pointer\";\n\tif (conf.target.isPointerEmitter) return;\n\t// Tracking the events.\n\tvar isDown = true;\n\tconf.onPointerDown = function (event) {\n\t\tisDown = false;\n\t\tself.gesture = \"pointerdown\";\n\t\tconf.listener(event, self);\n\t};\n\tconf.onPointerMove = function (event) {\n\t\tself.gesture = \"pointermove\";\n\t\tconf.listener(event, self, isDown);\n\t};\n\tconf.onPointerUp = function (event) {\n\t\tisDown = true;\n\t\tself.gesture = \"pointerup\";\n\t\tconf.listener(event, self, true);\n\t};\n\t// Generate maintenance commands, and other configurations.\n\tvar self = root.pointerSetup(conf);\n\t// Attach events.\n\teventjs.add(conf.target, \"mousedown\", conf.onPointerDown);\n\teventjs.add(conf.target, \"mousemove\", conf.onPointerMove);\n\teventjs.add(conf.doc, \"mouseup\", conf.onPointerUp);\n\t// Return this object.\n\tconf.target.isPointerEmitter = true;\n\treturn self;\n};\n\neventjs.Gesture = eventjs.Gesture || {};\neventjs.Gesture._gestureHandlers = eventjs.Gesture._gestureHandlers || {};\neventjs.Gesture._gestureHandlers.pointerdown = root.pointerdown;\neventjs.Gesture._gestureHandlers.pointermove = root.pointermove;\neventjs.Gesture._gestureHandlers.pointerup = root.pointerup;\n\nreturn root;\n\n})(eventjs.proxy);\n/*:\n\t\"Device Motion\" and \"Shake\" event proxy.\n\t----------------------------------------------------\n\thttp://developer.android.com/reference/android/hardware/Sensoreventjs.html#values\n\t----------------------------------------------------\n\teventjs.add(window, \"shake\", function(event, self) {});\n\teventjs.add(window, \"devicemotion\", function(event, self) {\n\t\tconsole.log(self.acceleration, self.accelerationIncludingGravity);\n\t});\n*/\n\nif (typeof(eventjs) === \"undefined\") var eventjs = {};\nif (typeof(eventjs.proxy) === \"undefined\") eventjs.proxy = {};\n\neventjs.proxy = (function(root) { \"use strict\";\n\nroot.shake = function(conf) {\n\t// Externally accessible data.\n\tvar self = {\n\t\tgesture: \"devicemotion\",\n\t\tacceleration: {},\n\t\taccelerationIncludingGravity: {},\n\t\ttarget: conf.target,\n\t\tlistener: conf.listener,\n\t\tremove: function() {\n\t\t\twindow.removeEventListener('devicemotion', onDeviceMotion, false);\n\t\t}\n\t};\n\t// Setting up local variables.\n\tvar threshold = 4; // Gravitational threshold.\n\tvar timeout = 1000; // Timeout between shake events.\n\tvar timeframe = 200; // Time between shakes.\n\tvar shakes = 3; // Minimum shakes to trigger event.\n\tvar lastShake = (new Date()).getTime();\n\tvar gravity = { x: 0, y: 0, z: 0 };\n\tvar delta = {\n\t\tx: { count: 0, value: 0 },\n\t\ty: { count: 0, value: 0 },\n\t\tz: { count: 0, value: 0 }\n\t};\n\t// Tracking the events.\n\tvar onDeviceMotion = function(e) {\n\t\tvar alpha = 0.8; // Low pass filter.\n\t\tvar o = e.accelerationIncludingGravity;\n\t\tgravity.x = alpha * gravity.x + (1 - alpha) * o.x;\n\t\tgravity.y = alpha * gravity.y + (1 - alpha) * o.y;\n\t\tgravity.z = alpha * gravity.z + (1 - alpha) * o.z;\n\t\tself.accelerationIncludingGravity = gravity;\n\t\tself.acceleration.x = o.x - gravity.x;\n\t\tself.acceleration.y = o.y - gravity.y;\n\t\tself.acceleration.z = o.z - gravity.z;\n\t\t///\n\t\tif (conf.gesture === \"devicemotion\") {\n\t\t\tconf.listener(e, self);\n\t\t\treturn;\n\t\t}\n\t\tvar data = \"xyz\";\n\t\tvar now = (new Date()).getTime();\n\t\tfor (var n = 0, length = data.length; n < length; n ++) {\n\t\t\tvar letter = data[n];\n\t\t\tvar ACCELERATION = self.acceleration[letter];\n\t\t\tvar DELTA = delta[letter];\n\t\t\tvar abs = Math.abs(ACCELERATION);\n\t\t\t/// Check whether another shake event was recently registered.\n\t\t\tif (now - lastShake < timeout) continue;\n\t\t\t/// Check whether delta surpasses threshold.\n\t\t\tif (abs > threshold) {\n\t\t\t\tvar idx = now * ACCELERATION / abs;\n\t\t\t\tvar span = Math.abs(idx + DELTA.value);\n\t\t\t\t// Check whether last delta was registered within timeframe.\n\t\t\t\tif (DELTA.value && span < timeframe) {\n\t\t\t\t\tDELTA.value = idx;\n\t\t\t\t\tDELTA.count ++;\n\t\t\t\t\t// Check whether delta count has enough shakes.\n\t\t\t\t\tif (DELTA.count === shakes) {\n\t\t\t\t\t\tconf.listener(e, self);\n\t\t\t\t\t\t// Reset tracking.\n\t\t\t\t\t\tlastShake = now;\n\t\t\t\t\t\tDELTA.value = 0;\n\t\t\t\t\t\tDELTA.count = 0;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Track first shake.\n\t\t\t\t\tDELTA.value = idx;\n\t\t\t\t\tDELTA.count = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\t// Attach events.\n\tif (!window.addEventListener) return;\n\twindow.addEventListener('devicemotion', onDeviceMotion, false);\n\t// Return this object.\n\treturn self;\n};\n\neventjs.Gesture = eventjs.Gesture || {};\neventjs.Gesture._gestureHandlers = eventjs.Gesture._gestureHandlers || {};\neventjs.Gesture._gestureHandlers.shake = root.shake;\n\nreturn root;\n\n})(eventjs.proxy);\n/*:\n\t\"Swipe\" event proxy (1+ fingers).\n\t----------------------------------------------------\n\tCONFIGURE: snap, threshold, maxFingers.\n\t----------------------------------------------------\n\teventjs.add(window, \"swipe\", function(event, self) {\n\t\tconsole.log(self.velocity, self.angle);\n\t});\n*/\n\nif (typeof(eventjs) === \"undefined\") var eventjs = {};\nif (typeof(eventjs.proxy) === \"undefined\") eventjs.proxy = {};\n\neventjs.proxy = (function(root) { \"use strict\";\n\nvar RAD_DEG = Math.PI / 180;\n\nroot.swipe = function(conf) {\n\tconf.snap = conf.snap || 90; // angle snap.\n\tconf.threshold = conf.threshold || 1; // velocity threshold.\n\tconf.gesture = conf.gesture || \"swipe\";\n\t// Tracking the events.\n\tconf.onPointerDown = function (event) {\n\t\tif (root.pointerStart(event, self, conf)) {\n\t\t\teventjs.add(conf.doc, \"mousemove\", conf.onPointerMove).listener(event);\n\t\t\teventjs.add(conf.doc, \"mouseup\", conf.onPointerUp);\n\t\t}\n\t};\n\tconf.onPointerMove = function (event) {\n\t\tvar touches = event.changedTouches || root.getCoords(event);\n\t\tvar length = touches.length;\n\t\tfor (var i = 0; i < length; i ++) {\n\t\t\tvar touch = touches[i];\n\t\t\tvar sid = touch.identifier || Infinity;\n\t\t\tvar o = conf.tracker[sid];\n\t\t\t// Identifier defined outside of listener.\n\t\t\tif (!o) continue;\n\t\t\to.move.x = touch.pageX;\n\t\t\to.move.y = touch.pageY;\n\t\t\to.moveTime = (new Date()).getTime();\n\t\t}\n\t};\n\tconf.onPointerUp = function(event) {\n\t\tif (root.pointerEnd(event, self, conf)) {\n\t\t\teventjs.remove(conf.doc, \"mousemove\", conf.onPointerMove);\n\t\t\teventjs.remove(conf.doc, \"mouseup\", conf.onPointerUp);\n\t\t\t///\n\t\t\tvar velocity1;\n\t\t\tvar velocity2\n\t\t\tvar degree1;\n\t\t\tvar degree2;\n\t\t\t/// Calculate centroid of gesture.\n\t\t\tvar start = { x: 0, y: 0 };\n\t\t\tvar endx = 0;\n\t\t\tvar endy = 0;\n\t\t\tvar length = 0;\n\t\t\t///\n\t\t\tfor (var sid in conf.tracker) {\n\t\t\t\tvar touch = conf.tracker[sid];\n\t\t\t\tvar xdist = touch.move.x - touch.start.x;\n\t\t\t\tvar ydist = touch.move.y - touch.start.y;\n\t\t\t\t///\n\t\t\t\tendx += touch.move.x;\n\t\t\t\tendy += touch.move.y;\n\t\t\t\tstart.x += touch.start.x;\n\t\t\t\tstart.y += touch.start.y;\n\t\t\t\tlength ++;\n\t\t\t\t///\n\t\t\t\tvar distance = Math.sqrt(xdist * xdist + ydist * ydist);\n\t\t\t\tvar ms = touch.moveTime - touch.startTime;\n\t\t\t\tvar degree2 = Math.atan2(xdist, ydist) / RAD_DEG + 180;\n\t\t\t\tvar velocity2 = ms ? distance / ms : 0;\n\t\t\t\tif (typeof(degree1) === \"undefined\") {\n\t\t\t\t\tdegree1 = degree2;\n\t\t\t\t\tvelocity1 = velocity2;\n\t\t\t\t} else if (Math.abs(degree2 - degree1) <= 20) {\n\t\t\t\t\tdegree1 = (degree1 + degree2) / 2;\n\t\t\t\t\tvelocity1 = (velocity1 + velocity2) / 2;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t///\n\t\t\tvar fingers = conf.gestureFingers;\n\t\t\tif (conf.minFingers <= fingers && conf.maxFingers >= fingers) {\n\t\t\t\tif (velocity1 > conf.threshold) {\n\t\t\t\t\tstart.x /= length;\n\t\t\t\t\tstart.y /= length;\n\t\t\t\t\tself.start = start;\n\t\t\t\t\tself.x = endx / length;\n\t\t\t\t\tself.y = endy / length;\n\t\t\t\t\tself.angle = -((((degree1 / conf.snap + 0.5) >> 0) * conf.snap || 360) - 360);\n\t\t\t\t\tself.velocity = velocity1;\n\t\t\t\t\tself.fingers = fingers;\n\t\t\t\t\tself.state = \"swipe\";\n\t\t\t\t\tconf.listener(event, self);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\t// Generate maintenance commands, and other configurations.\n\tvar self = root.pointerSetup(conf);\n\t// Attach events.\n\teventjs.add(conf.target, \"mousedown\", conf.onPointerDown);\n\t// Return this object.\n\treturn self;\n};\n\neventjs.Gesture = eventjs.Gesture || {};\neventjs.Gesture._gestureHandlers = eventjs.Gesture._gestureHandlers || {};\neventjs.Gesture._gestureHandlers.swipe = root.swipe;\n\nreturn root;\n\n})(eventjs.proxy);\n/*:\n\t\"Tap\" and \"Longpress\" event proxy.\n\t----------------------------------------------------\n\tCONFIGURE: delay (longpress), timeout (tap).\n\t----------------------------------------------------\n\teventjs.add(window, \"tap\", function(event, self) {\n\t\tconsole.log(self.fingers);\n\t});\n\t----------------------------------------------------\n\tmulti-finger tap // touch an target for <= 250ms.\n\tmulti-finger longpress // touch an target for >= 500ms\n*/\n\nif (typeof(eventjs) === \"undefined\") var eventjs = {};\nif (typeof(eventjs.proxy) === \"undefined\") eventjs.proxy = {};\n\neventjs.proxy = (function(root) { \"use strict\";\n\nroot.longpress = function(conf) {\n\tconf.gesture = \"longpress\";\n\treturn root.tap(conf);\n};\n\nroot.tap = function(conf) {\n\tconf.delay = conf.delay || 500;\n\tconf.timeout = conf.timeout || 250;\n\tconf.driftDeviance = conf.driftDeviance || 10;\n\tconf.gesture = conf.gesture || \"tap\";\n\t// Setting up local variables.\n\tvar timestamp, timeout;\n\t// Tracking the events.\n\tconf.onPointerDown = function (event) {\n\t\tif (root.pointerStart(event, self, conf)) {\n\t\t\ttimestamp = (new Date()).getTime();\n\t\t\t// Initialize event listeners.\n\t\t\teventjs.add(conf.doc, \"mousemove\", conf.onPointerMove).listener(event);\n\t\t\teventjs.add(conf.doc, \"mouseup\", conf.onPointerUp);\n\t\t\t// Make sure this is a \"longpress\" event.\n\t\t\tif (conf.gesture !== \"longpress\") return;\n\t\t\ttimeout = setTimeout(function() {\n\t\t\t\tif (event.cancelBubble && ++event.cancelBubbleCount > 1) return;\n\t\t\t\t// Make sure no fingers have been changed.\n\t\t\t\tvar fingers = 0;\n\t\t\t\tfor (var key in conf.tracker) {\n\t\t\t\t\tvar point = conf.tracker[key];\n\t\t\t\t\tif (point.end === true) return;\n\t\t\t\t\tif (conf.cancel) return;\n\t\t\t\t\tfingers ++;\n\t\t\t\t}\n\t\t\t\t// Send callback.\n\t\t\t\tif (conf.minFingers <= fingers && conf.maxFingers >= fingers) {\n\t\t\t\t\tself.state = \"start\";\n\t\t\t\t\tself.fingers = fingers;\n\t\t\t\t\tself.x = point.start.x;\n\t\t\t\t\tself.y = point.start.y;\n\t\t\t\t\tconf.listener(event, self);\n\t\t\t\t}\n\t\t\t}, conf.delay);\n\t\t}\n\t};\n\tconf.onPointerMove = function (event) {\n\t\tvar bbox = conf.bbox;\n\t\tvar touches = event.changedTouches || root.getCoords(event);\n\t\tvar length = touches.length;\n\t\tfor (var i = 0; i < length; i ++) {\n\t\t\tvar touch = touches[i];\n\t\t\tvar identifier = touch.identifier || Infinity;\n\t\t\tvar pt = conf.tracker[identifier];\n\t\t\tif (!pt) continue;\n\t\t\tvar x = (touch.pageX - bbox.x1);\n\t\t\tvar y = (touch.pageY - bbox.y1);\n\t\t\t///\n\t\t\tvar dx = x - pt.start.x;\n\t\t\tvar dy = y - pt.start.y;\n\t\t\tvar distance = Math.sqrt(dx * dx + dy * dy);\n\t\t\tif (!(x > 0 && x < bbox.width && // Within target coordinates..\n\t\t\t\t y > 0 && y < bbox.height &&\n\t\t\t\t distance <= conf.driftDeviance)) { // Within drift deviance.\n\t\t\t\t// Cancel out this listener.\n\t\t\t\teventjs.remove(conf.doc, \"mousemove\", conf.onPointerMove);\n\t\t\t\tconf.cancel = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n\tconf.onPointerUp = function(event) {\n\t\tif (root.pointerEnd(event, self, conf)) {\n\t\t\tclearTimeout(timeout);\n\t\t\teventjs.remove(conf.doc, \"mousemove\", conf.onPointerMove);\n\t\t\teventjs.remove(conf.doc, \"mouseup\", conf.onPointerUp);\n\t\t\tif (event.cancelBubble && ++event.cancelBubbleCount > 1) return;\n\t\t\t// Callback release on longpress.\n\t\t\tif (conf.gesture === \"longpress\") {\n\t\t\t\tif (self.state === \"start\") {\n\t\t\t\t\tself.state = \"end\";\n\t\t\t\t\tconf.listener(event, self);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Cancel event due to movement.\n\t\t\tif (conf.cancel) return;\n\t\t\t// Ensure delay is within margins.\n\t\t\tif ((new Date()).getTime() - timestamp > conf.timeout) return;\n\t\t\t// Send callback.\n\t\t\tvar fingers = conf.gestureFingers;\n\t\t\tif (conf.minFingers <= fingers && conf.maxFingers >= fingers) {\n\t\t\t\tself.state = \"tap\";\n\t\t\t\tself.fingers = conf.gestureFingers;\n\t\t\t\tconf.listener(event, self);\n\t\t\t}\n\t\t}\n\t};\n\t// Generate maintenance commands, and other configurations.\n\tvar self = root.pointerSetup(conf);\n\t// Attach events.\n\teventjs.add(conf.target, \"mousedown\", conf.onPointerDown);\n\t// Return this object.\n\treturn self;\n};\n\neventjs.Gesture = eventjs.Gesture || {};\neventjs.Gesture._gestureHandlers = eventjs.Gesture._gestureHandlers || {};\neventjs.Gesture._gestureHandlers.tap = root.tap;\neventjs.Gesture._gestureHandlers.longpress = root.longpress;\n\nreturn root;\n\n})(eventjs.proxy);\n/*:\n\t\"Mouse Wheel\" event proxy.\n\t----------------------------------------------------\n\teventjs.add(window, \"wheel\", function(event, self) {\n\t\tconsole.log(self.state, self.wheelDelta);\n\t});\n*/\n\nif (typeof(eventjs) === \"undefined\") var eventjs = {};\nif (typeof(eventjs.proxy) === \"undefined\") eventjs.proxy = {};\n\neventjs.proxy = (function(root) { \"use strict\";\n\nroot.wheelPreventElasticBounce = function(el) {\n\tif (!el) return;\n\tif (typeof(el) === \"string\") el = document.querySelector(el);\n\teventjs.add(el, \"wheel\", function(event, self) {\n\t\tself.preventElasticBounce();\n\t\teventjs.stop(event);\n\t});\n};\n\nroot.wheel = function(conf) {\n\t// Configure event listener.\n\tvar interval;\n\tvar timeout = conf.timeout || 150;\n\tvar count = 0;\n\t// Externally accessible data.\n\tvar self = {\n\t\tgesture: \"wheel\",\n\t\tstate: \"start\",\n\t\twheelDelta: 0,\n\t\ttarget: conf.target,\n\t\tlistener: conf.listener,\n\t\tpreventElasticBounce: function(event) {\n\t\t\tvar target = this.target;\n\t\t\tvar scrollTop = target.scrollTop;\n\t\t\tvar top = scrollTop + target.offsetHeight;\n\t\t\tvar height = target.scrollHeight;\n\t\t\tif (top === height && this.wheelDelta <= 0) eventjs.cancel(event);\n\t\t\telse if (scrollTop === 0 && this.wheelDelta >= 0) eventjs.cancel(event);\n\t\t\teventjs.stop(event);\n\t\t},\n\t\tadd: function() {\n\t\t\tconf.target[add](type, onMouseWheel, false);\n\t\t},\n\t\tremove: function() {\n\t\t\tconf.target[remove](type, onMouseWheel, false);\n\t\t}\n\t};\n\t// Tracking the events.\n\tvar onMouseWheel = function(event) {\n\t\tevent = event || window.event;\n\t\tself.state = count++ ? \"change\" : \"start\";\n\t\tself.wheelDelta = event.detail ? event.detail * -20 : event.wheelDelta;\n\t\tconf.listener(event, self);\n\t\tclearTimeout(interval);\n\t\tinterval = setTimeout(function() {\n\t\t\tcount = 0;\n\t\t\tself.state = \"end\";\n\t\t\tself.wheelDelta = 0;\n\t\t\tconf.listener(event, self);\n\t\t}, timeout);\n\t};\n\t// Attach events.\n\tvar add = document.addEventListener ? \"addEventListener\" : \"attachEvent\";\n\tvar remove = document.removeEventListener ? \"removeEventListener\" : \"detachEvent\";\n\tvar type = eventjs.getEventSupport(\"mousewheel\") ? \"mousewheel\" : \"DOMMouseScroll\";\n\tconf.target[add](type, onMouseWheel, false);\n\t// Return this object.\n\treturn self;\n};\n\neventjs.Gesture = eventjs.Gesture || {};\neventjs.Gesture._gestureHandlers = eventjs.Gesture._gestureHandlers || {};\neventjs.Gesture._gestureHandlers.wheel = root.wheel;\n\nreturn root;\n\n})(eventjs.proxy);\n/*\n\t\"Orientation Change\"\n\t----------------------------------------------------\n\thttps://developer.apple.com/library/safari/documentation/SafariDOMAdditions/Reference/DeviceOrientationEventClassRef/DeviceOrientationEvent/DeviceOrientationEvent.html#//apple_ref/doc/uid/TP40010526\n\t----------------------------------------------------\n\tEvent.add(window, \"deviceorientation\", function(event, self) {});\n*/\n\nif (typeof(Event) === \"undefined\") var Event = {};\nif (typeof(Event.proxy) === \"undefined\") Event.proxy = {};\n\nEvent.proxy = (function(root) { \"use strict\";\n\nroot.orientation = function(conf) {\n\t// Externally accessible data.\n\tvar self = {\n\t\tgesture: \"orientationchange\",\n\t\tprevious: null, /* Report the previous orientation */\n\t\tcurrent: window.orientation,\n\t\ttarget: conf.target,\n\t\tlistener: conf.listener,\n\t\tremove: function() {\n\t\t\twindow.removeEventListener('orientationchange', onOrientationChange, false);\n\t\t}\n\t};\n\n\t// Tracking the events.\n\tvar onOrientationChange = function(e) {\n\n\t\tself.previous = self.current;\n\t\tself.current = window.orientation;\n\t if(self.previous !== null && self.previous != self.current) {\n\t\t\tconf.listener(e, self);\n\t\t\treturn;\n\t }\n\n\n\t};\n\t// Attach events.\n\tif (window.DeviceOrientationEvent) {\n \twindow.addEventListener(\"orientationchange\", onOrientationChange, false);\n \t}\n\t// Return this object.\n\treturn self;\n};\n\nEvent.Gesture = Event.Gesture || {};\nEvent.Gesture._gestureHandlers = Event.Gesture._gestureHandlers || {};\nEvent.Gesture._gestureHandlers.orientation = root.orientation;\n\nreturn root;\n\n})(Event.proxy);\n\n\n(function() {\n\n /**\n * @private\n * @param {String} eventName\n * @param {Function} handler\n */\n function _removeEventListener(eventName, handler) {\n if (!this.__eventListeners[eventName]) {\n return;\n }\n var eventListener = this.__eventListeners[eventName];\n if (handler) {\n eventListener[eventListener.indexOf(handler)] = false;\n }\n else {\n fabric.util.array.fill(eventListener, false);\n }\n }\n\n /**\n * Observes specified event\n * @memberOf fabric.Observable\n * @alias on\n * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Self} thisArg\n * @chainable\n */\n function on(eventName, handler) {\n if (!this.__eventListeners) {\n this.__eventListeners = { };\n }\n // one object with key/value pairs was passed\n if (arguments.length === 1) {\n for (var prop in eventName) {\n this.on(prop, eventName[prop]);\n }\n }\n else {\n if (!this.__eventListeners[eventName]) {\n this.__eventListeners[eventName] = [];\n }\n this.__eventListeners[eventName].push(handler);\n }\n return this;\n }\n\n /**\n * Stops event observing for a particular event handler. Calling this method\n * without arguments removes all handlers for all events\n * @memberOf fabric.Observable\n * @alias off\n * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function to be deleted from EventListeners\n * @return {Self} thisArg\n * @chainable\n */\n function off(eventName, handler) {\n if (!this.__eventListeners) {\n return this;\n }\n\n // remove all key/value pairs (event name -> event handler)\n if (arguments.length === 0) {\n for (eventName in this.__eventListeners) {\n _removeEventListener.call(this, eventName);\n }\n }\n // one object with key/value pairs was passed\n else if (arguments.length === 1 && typeof arguments[0] === 'object') {\n for (var prop in eventName) {\n _removeEventListener.call(this, prop, eventName[prop]);\n }\n }\n else {\n _removeEventListener.call(this, eventName, handler);\n }\n return this;\n }\n\n /**\n * Fires event with an optional options object\n * @memberOf fabric.Observable\n * @param {String} eventName Event name to fire\n * @param {Object} [options] Options object\n * @return {Self} thisArg\n * @chainable\n */\n function fire(eventName, options) {\n if (!this.__eventListeners) {\n return this;\n }\n\n var listenersForEvent = this.__eventListeners[eventName];\n if (!listenersForEvent) {\n return this;\n }\n\n for (var i = 0, len = listenersForEvent.length; i < len; i++) {\n listenersForEvent[i] && listenersForEvent[i].call(this, options || { });\n }\n this.__eventListeners[eventName] = listenersForEvent.filter(function(value) {\n return value !== false;\n });\n return this;\n }\n\n /**\n * @namespace fabric.Observable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events}\n * @see {@link http://fabricjs.com/events|Events demo}\n */\n fabric.Observable = {\n fire: fire,\n on: on,\n off: off,\n };\n})();\n\n\n/**\n * @namespace fabric.Collection\n */\nfabric.Collection = {\n\n _objects: [],\n\n /**\n * Adds objects to collection, Canvas or Group, then renders canvas\n * (if `renderOnAddRemove` is not `false`).\n * in case of Group no changes to bounding box are made.\n * Objects should be instances of (or inherit from) fabric.Object\n * Use of this function is highly discouraged for groups.\n * you can add a bunch of objects with the add method but then you NEED\n * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n * @param {...fabric.Object} object Zero or more fabric instances\n * @return {Self} thisArg\n * @chainable\n */\n add: function () {\n this._objects.push.apply(this._objects, arguments);\n if (this._onObjectAdded) {\n for (var i = 0, length = arguments.length; i < length; i++) {\n this._onObjectAdded(arguments[i]);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Inserts an object into collection at specified index, then renders canvas (if `renderOnAddRemove` is not `false`)\n * An object should be an instance of (or inherit from) fabric.Object\n * Use of this function is highly discouraged for groups.\n * you can add a bunch of objects with the insertAt method but then you NEED\n * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n * @param {Object} object Object to insert\n * @param {Number} index Index to insert object at\n * @param {Boolean} nonSplicing When `true`, no splicing (shifting) of objects occurs\n * @return {Self} thisArg\n * @chainable\n */\n insertAt: function (object, index, nonSplicing) {\n var objects = this._objects;\n if (nonSplicing) {\n objects[index] = object;\n }\n else {\n objects.splice(index, 0, object);\n }\n this._onObjectAdded && this._onObjectAdded(object);\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Removes objects from a collection, then renders canvas (if `renderOnAddRemove` is not `false`)\n * @param {...fabric.Object} object Zero or more fabric instances\n * @return {Self} thisArg\n * @chainable\n */\n remove: function() {\n var objects = this._objects,\n index, somethingRemoved = false;\n\n for (var i = 0, length = arguments.length; i < length; i++) {\n index = objects.indexOf(arguments[i]);\n\n // only call onObjectRemoved if an object was actually removed\n if (index !== -1) {\n somethingRemoved = true;\n objects.splice(index, 1);\n this._onObjectRemoved && this._onObjectRemoved(arguments[i]);\n }\n }\n\n this.renderOnAddRemove && somethingRemoved && this.requestRenderAll();\n return this;\n },\n\n /**\n * Executes given function for each object in this group\n * @param {Function} callback\n * Callback invoked with current object as first argument,\n * index - as second and an array of all objects - as third.\n * Callback is invoked in a context of Global Object (e.g. `window`)\n * when no `context` argument is given\n *\n * @param {Object} context Context (aka thisObject)\n * @return {Self} thisArg\n * @chainable\n */\n forEachObject: function(callback, context) {\n var objects = this.getObjects();\n for (var i = 0, len = objects.length; i < len; i++) {\n callback.call(context, objects[i], i, objects);\n }\n return this;\n },\n\n /**\n * Returns an array of children objects of this instance\n * Type parameter introduced in 1.3.10\n * since 2.3.5 this method return always a COPY of the array;\n * @param {String} [type] When specified, only objects of this type are returned\n * @return {Array}\n */\n getObjects: function(type) {\n if (typeof type === 'undefined') {\n return this._objects.concat();\n }\n return this._objects.filter(function(o) {\n return o.type === type;\n });\n },\n\n /**\n * Returns object at specified index\n * @param {Number} index\n * @return {Self} thisArg\n */\n item: function (index) {\n return this._objects[index];\n },\n\n /**\n * Returns true if collection contains no objects\n * @return {Boolean} true if collection is empty\n */\n isEmpty: function () {\n return this._objects.length === 0;\n },\n\n /**\n * Returns a size of a collection (i.e: length of an array containing its objects)\n * @return {Number} Collection size\n */\n size: function() {\n return this._objects.length;\n },\n\n /**\n * Returns true if collection contains an object\n * @param {Object} object Object to check against\n * @return {Boolean} `true` if collection contains an object\n */\n contains: function(object) {\n return this._objects.indexOf(object) > -1;\n },\n\n /**\n * Returns number representation of a collection complexity\n * @return {Number} complexity\n */\n complexity: function () {\n return this._objects.reduce(function (memo, current) {\n memo += current.complexity ? current.complexity() : 0;\n return memo;\n }, 0);\n }\n};\n\n\n/**\n * @namespace fabric.CommonMethods\n */\nfabric.CommonMethods = {\n\n /**\n * Sets object's properties from options\n * @param {Object} [options] Options object\n */\n _setOptions: function(options) {\n for (var prop in options) {\n this.set(prop, options[prop]);\n }\n },\n\n /**\n * @private\n * @param {Object} [filler] Options object\n * @param {String} [property] property to set the Gradient to\n */\n _initGradient: function(filler, property) {\n if (filler && filler.colorStops && !(filler instanceof fabric.Gradient)) {\n this.set(property, new fabric.Gradient(filler));\n }\n },\n\n /**\n * @private\n * @param {Object} [filler] Options object\n * @param {String} [property] property to set the Pattern to\n * @param {Function} [callback] callback to invoke after pattern load\n */\n _initPattern: function(filler, property, callback) {\n if (filler && filler.source && !(filler instanceof fabric.Pattern)) {\n this.set(property, new fabric.Pattern(filler, callback));\n }\n else {\n callback && callback();\n }\n },\n\n /**\n * @private\n */\n _setObject: function(obj) {\n for (var prop in obj) {\n this._set(prop, obj[prop]);\n }\n },\n\n /**\n * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n set: function(key, value) {\n if (typeof key === 'object') {\n this._setObject(key);\n }\n else {\n this._set(key, value);\n }\n return this;\n },\n\n _set: function(key, value) {\n this[key] = value;\n },\n\n /**\n * Toggles specified property from `true` to `false` or from `false` to `true`\n * @param {String} property Property to toggle\n * @return {fabric.Object} thisArg\n * @chainable\n */\n toggle: function(property) {\n var value = this.get(property);\n if (typeof value === 'boolean') {\n this.set(property, !value);\n }\n return this;\n },\n\n /**\n * Basic getter\n * @param {String} property Property name\n * @return {*} value of a property\n */\n get: function(property) {\n return this[property];\n }\n};\n\n\n(function(global) {\n\n var sqrt = Math.sqrt,\n atan2 = Math.atan2,\n pow = Math.pow,\n PiBy180 = Math.PI / 180,\n PiBy2 = Math.PI / 2;\n\n /**\n * @namespace fabric.util\n */\n fabric.util = {\n\n /**\n * Calculate the cos of an angle, avoiding returning floats for known results\n * @static\n * @memberOf fabric.util\n * @param {Number} angle the angle in radians or in degree\n * @return {Number}\n */\n cos: function(angle) {\n if (angle === 0) { return 1; }\n if (angle < 0) {\n // cos(a) = cos(-a)\n angle = -angle;\n }\n var angleSlice = angle / PiBy2;\n switch (angleSlice) {\n case 1: case 3: return 0;\n case 2: return -1;\n }\n return Math.cos(angle);\n },\n\n /**\n * Calculate the sin of an angle, avoiding returning floats for known results\n * @static\n * @memberOf fabric.util\n * @param {Number} angle the angle in radians or in degree\n * @return {Number}\n */\n sin: function(angle) {\n if (angle === 0) { return 0; }\n var angleSlice = angle / PiBy2, sign = 1;\n if (angle < 0) {\n // sin(-a) = -sin(a)\n sign = -1;\n }\n switch (angleSlice) {\n case 1: return sign;\n case 2: return 0;\n case 3: return -sign;\n }\n return Math.sin(angle);\n },\n\n /**\n * Removes value from an array.\n * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf`\n * @static\n * @memberOf fabric.util\n * @param {Array} array\n * @param {*} value\n * @return {Array} original array\n */\n removeFromArray: function(array, value) {\n var idx = array.indexOf(value);\n if (idx !== -1) {\n array.splice(idx, 1);\n }\n return array;\n },\n\n /**\n * Returns random number between 2 specified ones.\n * @static\n * @memberOf fabric.util\n * @param {Number} min lower limit\n * @param {Number} max upper limit\n * @return {Number} random value (between min and max)\n */\n getRandomInt: function(min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n },\n\n /**\n * Transforms degrees to radians.\n * @static\n * @memberOf fabric.util\n * @param {Number} degrees value in degrees\n * @return {Number} value in radians\n */\n degreesToRadians: function(degrees) {\n return degrees * PiBy180;\n },\n\n /**\n * Transforms radians to degrees.\n * @static\n * @memberOf fabric.util\n * @param {Number} radians value in radians\n * @return {Number} value in degrees\n */\n radiansToDegrees: function(radians) {\n return radians / PiBy180;\n },\n\n /**\n * Rotates `point` around `origin` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {fabric.Point} point The point to rotate\n * @param {fabric.Point} origin The origin of the rotation\n * @param {Number} radians The radians of the angle for the rotation\n * @return {fabric.Point} The new rotated point\n */\n rotatePoint: function(point, origin, radians) {\n point.subtractEquals(origin);\n var v = fabric.util.rotateVector(point, radians);\n return new fabric.Point(v.x, v.y).addEquals(origin);\n },\n\n /**\n * Rotates `vector` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {Object} vector The vector to rotate (x and y)\n * @param {Number} radians The radians of the angle for the rotation\n * @return {Object} The new rotated point\n */\n rotateVector: function(vector, radians) {\n var sin = fabric.util.sin(radians),\n cos = fabric.util.cos(radians),\n rx = vector.x * cos - vector.y * sin,\n ry = vector.x * sin + vector.y * cos;\n return {\n x: rx,\n y: ry\n };\n },\n\n /**\n * Apply transform t to point p\n * @static\n * @memberOf fabric.util\n * @param {fabric.Point} p The point to transform\n * @param {Array} t The transform\n * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied\n * @return {fabric.Point} The transformed point\n */\n transformPoint: function(p, t, ignoreOffset) {\n if (ignoreOffset) {\n return new fabric.Point(\n t[0] * p.x + t[2] * p.y,\n t[1] * p.x + t[3] * p.y\n );\n }\n return new fabric.Point(\n t[0] * p.x + t[2] * p.y + t[4],\n t[1] * p.x + t[3] * p.y + t[5]\n );\n },\n\n /**\n * Returns coordinates of points's bounding rectangle (left, top, width, height)\n * @param {Array} points 4 points array\n * @param {Array} [transform] an array of 6 numbers representing a 2x3 transform matrix\n * @return {Object} Object with left, top, width, height properties\n */\n makeBoundingBoxFromPoints: function(points, transform) {\n if (transform) {\n for (var i = 0; i < points.length; i++) {\n points[i] = fabric.util.transformPoint(points[i], transform);\n }\n }\n var xPoints = [points[0].x, points[1].x, points[2].x, points[3].x],\n minX = fabric.util.array.min(xPoints),\n maxX = fabric.util.array.max(xPoints),\n width = maxX - minX,\n yPoints = [points[0].y, points[1].y, points[2].y, points[3].y],\n minY = fabric.util.array.min(yPoints),\n maxY = fabric.util.array.max(yPoints),\n height = maxY - minY;\n\n return {\n left: minX,\n top: minY,\n width: width,\n height: height\n };\n },\n\n /**\n * Invert transformation t\n * @static\n * @memberOf fabric.util\n * @param {Array} t The transform\n * @return {Array} The inverted transform\n */\n invertTransform: function(t) {\n var a = 1 / (t[0] * t[3] - t[1] * t[2]),\n r = [a * t[3], -a * t[1], -a * t[2], a * t[0]],\n o = fabric.util.transformPoint({ x: t[4], y: t[5] }, r, true);\n r[4] = -o.x;\n r[5] = -o.y;\n return r;\n },\n\n /**\n * A wrapper around Number#toFixed, which contrary to native method returns number, not string.\n * @static\n * @memberOf fabric.util\n * @param {Number|String} number number to operate on\n * @param {Number} fractionDigits number of fraction digits to \"leave\"\n * @return {Number}\n */\n toFixed: function(number, fractionDigits) {\n return parseFloat(Number(number).toFixed(fractionDigits));\n },\n\n /**\n * Converts from attribute value to pixel value if applicable.\n * Returns converted pixels or original value not converted.\n * @param {Number|String} value number to operate on\n * @param {Number} fontSize\n * @return {Number|String}\n */\n parseUnit: function(value, fontSize) {\n var unit = /\\D{0,2}$/.exec(value),\n number = parseFloat(value);\n if (!fontSize) {\n fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n }\n switch (unit[0]) {\n case 'mm':\n return number * fabric.DPI / 25.4;\n\n case 'cm':\n return number * fabric.DPI / 2.54;\n\n case 'in':\n return number * fabric.DPI;\n\n case 'pt':\n return number * fabric.DPI / 72; // or * 4 / 3\n\n case 'pc':\n return number * fabric.DPI / 72 * 12; // or * 16\n\n case 'em':\n return number * fontSize;\n\n default:\n return number;\n }\n },\n\n /**\n * Function which always returns `false`.\n * @static\n * @memberOf fabric.util\n * @return {Boolean}\n */\n falseFunction: function() {\n return false;\n },\n\n /**\n * Returns klass \"Class\" object of given namespace\n * @memberOf fabric.util\n * @param {String} type Type of object (eg. 'circle')\n * @param {String} namespace Namespace to get klass \"Class\" object from\n * @return {Object} klass \"Class\"\n */\n getKlass: function(type, namespace) {\n // capitalize first letter only\n type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1));\n return fabric.util.resolveNamespace(namespace)[type];\n },\n\n /**\n * Returns array of attributes for given svg that fabric parses\n * @memberOf fabric.util\n * @param {String} type Type of svg element (eg. 'circle')\n * @return {Array} string names of supported attributes\n */\n getSvgAttributes: function(type) {\n var attributes = [\n 'instantiated_by_use',\n 'style',\n 'id',\n 'class'\n ];\n switch (type) {\n case 'linearGradient':\n attributes = attributes.concat(['x1', 'y1', 'x2', 'y2', 'gradientUnits', 'gradientTransform']);\n break;\n case 'radialGradient':\n attributes = attributes.concat(['gradientUnits', 'gradientTransform', 'cx', 'cy', 'r', 'fx', 'fy', 'fr']);\n break;\n case 'stop':\n attributes = attributes.concat(['offset', 'stop-color', 'stop-opacity']);\n break;\n }\n return attributes;\n },\n\n /**\n * Returns object of given namespace\n * @memberOf fabric.util\n * @param {String} namespace Namespace string e.g. 'fabric.Image.filter' or 'fabric'\n * @return {Object} Object for given namespace (default fabric)\n */\n resolveNamespace: function(namespace) {\n if (!namespace) {\n return fabric;\n }\n\n var parts = namespace.split('.'),\n len = parts.length, i,\n obj = global || fabric.window;\n\n for (i = 0; i < len; ++i) {\n obj = obj[parts[i]];\n }\n\n return obj;\n },\n\n /**\n * Loads image element from given url and passes it to a callback\n * @memberOf fabric.util\n * @param {String} url URL representing an image\n * @param {Function} callback Callback; invoked with loaded image\n * @param {*} [context] Context to invoke callback in\n * @param {Object} [crossOrigin] crossOrigin value to set image element to\n */\n loadImage: function(url, callback, context, crossOrigin) {\n if (!url) {\n callback && callback.call(context, url);\n return;\n }\n\n var img = fabric.util.createImage();\n\n /** @ignore */\n var onLoadCallback = function () {\n callback && callback.call(context, img, false);\n img = img.onload = img.onerror = null;\n };\n\n img.onload = onLoadCallback;\n /** @ignore */\n img.onerror = function() {\n fabric.log('Error loading ' + img.src);\n callback && callback.call(context, null, true);\n img = img.onload = img.onerror = null;\n };\n\n // data-urls appear to be buggy with crossOrigin\n // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767\n // see https://code.google.com/p/chromium/issues/detail?id=315152\n // https://bugzilla.mozilla.org/show_bug.cgi?id=935069\n // crossOrigin null is the same as not set.\n if (url.indexOf('data') !== 0 &&\n crossOrigin !== undefined &&\n crossOrigin !== null) {\n img.crossOrigin = crossOrigin;\n }\n\n // IE10 / IE11-Fix: SVG contents from data: URI\n // will only be available if the IMG is present\n // in the DOM (and visible)\n if (url.substring(0,14) === 'data:image/svg') {\n img.onload = null;\n fabric.util.loadImageInDom(img, onLoadCallback);\n }\n\n img.src = url;\n },\n\n /**\n * Attaches SVG image with data: URL to the dom\n * @memberOf fabric.util\n * @param {Object} img Image object with data:image/svg src\n * @param {Function} callback Callback; invoked with loaded image\n * @return {Object} DOM element (div containing the SVG image)\n */\n loadImageInDom: function(img, onLoadCallback) {\n var div = fabric.document.createElement('div');\n div.style.width = div.style.height = '1px';\n div.style.left = div.style.top = '-100%';\n div.style.position = 'absolute';\n div.appendChild(img);\n fabric.document.querySelector('body').appendChild(div);\n /**\n * Wrap in function to:\n * 1. Call existing callback\n * 2. Cleanup DOM\n */\n img.onload = function () {\n onLoadCallback();\n div.parentNode.removeChild(div);\n div = null;\n };\n },\n\n /**\n * Creates corresponding fabric instances from their object representations\n * @static\n * @memberOf fabric.util\n * @param {Array} objects Objects to enliven\n * @param {Function} callback Callback to invoke when all objects are created\n * @param {String} namespace Namespace to get klass \"Class\" object from\n * @param {Function} reviver Method for further parsing of object elements,\n * called after each fabric object created.\n */\n enlivenObjects: function(objects, callback, namespace, reviver) {\n objects = objects || [];\n\n var enlivenedObjects = [],\n numLoadedObjects = 0,\n numTotalObjects = objects.length;\n\n function onLoaded() {\n if (++numLoadedObjects === numTotalObjects) {\n callback && callback(enlivenedObjects.filter(function(obj) {\n // filter out undefined objects (objects that gave error)\n return obj;\n }));\n }\n }\n\n if (!numTotalObjects) {\n callback && callback(enlivenedObjects);\n return;\n }\n\n objects.forEach(function (o, index) {\n // if sparse array\n if (!o || !o.type) {\n onLoaded();\n return;\n }\n var klass = fabric.util.getKlass(o.type, namespace);\n klass.fromObject(o, function (obj, error) {\n error || (enlivenedObjects[index] = obj);\n reviver && reviver(o, obj, error);\n onLoaded();\n });\n });\n },\n\n /**\n * Create and wait for loading of patterns\n * @static\n * @memberOf fabric.util\n * @param {Array} patterns Objects to enliven\n * @param {Function} callback Callback to invoke when all objects are created\n * called after each fabric object created.\n */\n enlivenPatterns: function(patterns, callback) {\n patterns = patterns || [];\n\n function onLoaded() {\n if (++numLoadedPatterns === numPatterns) {\n callback && callback(enlivenedPatterns);\n }\n }\n\n var enlivenedPatterns = [],\n numLoadedPatterns = 0,\n numPatterns = patterns.length;\n\n if (!numPatterns) {\n callback && callback(enlivenedPatterns);\n return;\n }\n\n patterns.forEach(function (p, index) {\n if (p && p.source) {\n new fabric.Pattern(p, function(pattern) {\n enlivenedPatterns[index] = pattern;\n onLoaded();\n });\n }\n else {\n enlivenedPatterns[index] = p;\n onLoaded();\n }\n });\n },\n\n /**\n * Groups SVG elements (usually those retrieved from SVG document)\n * @static\n * @memberOf fabric.util\n * @param {Array} elements SVG elements to group\n * @param {Object} [options] Options object\n * @param {String} path Value to set sourcePath to\n * @return {fabric.Object|fabric.Group}\n */\n groupSVGElements: function(elements, options, path) {\n var object;\n if (elements && elements.length === 1) {\n return elements[0];\n }\n if (options) {\n if (options.width && options.height) {\n options.centerPoint = {\n x: options.width / 2,\n y: options.height / 2\n };\n }\n else {\n delete options.width;\n delete options.height;\n }\n }\n object = new fabric.Group(elements, options);\n if (typeof path !== 'undefined') {\n object.sourcePath = path;\n }\n return object;\n },\n\n /**\n * Populates an object with properties of another object\n * @static\n * @memberOf fabric.util\n * @param {Object} source Source object\n * @param {Object} destination Destination object\n * @return {Array} properties Properties names to include\n */\n populateWithProperties: function(source, destination, properties) {\n if (properties && Object.prototype.toString.call(properties) === '[object Array]') {\n for (var i = 0, len = properties.length; i < len; i++) {\n if (properties[i] in source) {\n destination[properties[i]] = source[properties[i]];\n }\n }\n }\n },\n\n /**\n * Draws a dashed line between two points\n *\n * This method is used to draw dashed line around selection area.\n * See dotted stroke in canvas\n *\n * @param {CanvasRenderingContext2D} ctx context\n * @param {Number} x start x coordinate\n * @param {Number} y start y coordinate\n * @param {Number} x2 end x coordinate\n * @param {Number} y2 end y coordinate\n * @param {Array} da dash array pattern\n */\n drawDashedLine: function(ctx, x, y, x2, y2, da) {\n var dx = x2 - x,\n dy = y2 - y,\n len = sqrt(dx * dx + dy * dy),\n rot = atan2(dy, dx),\n dc = da.length,\n di = 0,\n draw = true;\n\n ctx.save();\n ctx.translate(x, y);\n ctx.moveTo(0, 0);\n ctx.rotate(rot);\n\n x = 0;\n while (len > x) {\n x += da[di++ % dc];\n if (x > len) {\n x = len;\n }\n ctx[draw ? 'lineTo' : 'moveTo'](x, 0);\n draw = !draw;\n }\n\n ctx.restore();\n },\n\n /**\n * Creates canvas element\n * @static\n * @memberOf fabric.util\n * @return {CanvasElement} initialized canvas element\n */\n createCanvasElement: function() {\n return fabric.document.createElement('canvas');\n },\n\n /**\n * Creates a canvas element that is a copy of another and is also painted\n * @param {CanvasElement} canvas to copy size and content of\n * @static\n * @memberOf fabric.util\n * @return {CanvasElement} initialized canvas element\n */\n copyCanvasElement: function(canvas) {\n var newCanvas = fabric.util.createCanvasElement();\n newCanvas.width = canvas.width;\n newCanvas.height = canvas.height;\n newCanvas.getContext('2d').drawImage(canvas, 0, 0);\n return newCanvas;\n },\n\n /**\n * since 2.6.0 moved from canvas instance to utility.\n * @param {CanvasElement} canvasEl to copy size and content of\n * @param {String} format 'jpeg' or 'png', in some browsers 'webp' is ok too\n * @param {Number} quality <= 1 and > 0\n * @static\n * @memberOf fabric.util\n * @return {String} data url\n */\n toDataURL: function(canvasEl, format, quality) {\n return canvasEl.toDataURL('image/' + format, quality);\n },\n\n /**\n * Creates image element (works on client and node)\n * @static\n * @memberOf fabric.util\n * @return {HTMLImageElement} HTML image element\n */\n createImage: function() {\n return fabric.document.createElement('img');\n },\n\n /**\n * Multiply matrix A by matrix B to nest transformations\n * @static\n * @memberOf fabric.util\n * @param {Array} a First transformMatrix\n * @param {Array} b Second transformMatrix\n * @param {Boolean} is2x2 flag to multiply matrices as 2x2 matrices\n * @return {Array} The product of the two transform matrices\n */\n multiplyTransformMatrices: function(a, b, is2x2) {\n // Matrix multiply a * b\n return [\n a[0] * b[0] + a[2] * b[1],\n a[1] * b[0] + a[3] * b[1],\n a[0] * b[2] + a[2] * b[3],\n a[1] * b[2] + a[3] * b[3],\n is2x2 ? 0 : a[0] * b[4] + a[2] * b[5] + a[4],\n is2x2 ? 0 : a[1] * b[4] + a[3] * b[5] + a[5]\n ];\n },\n\n /**\n * Decomposes standard 2x3 matrix into transform components\n * @static\n * @memberOf fabric.util\n * @param {Array} a transformMatrix\n * @return {Object} Components of transform\n */\n qrDecompose: function(a) {\n var angle = atan2(a[1], a[0]),\n denom = pow(a[0], 2) + pow(a[1], 2),\n scaleX = sqrt(denom),\n scaleY = (a[0] * a[3] - a[2] * a[1]) / scaleX,\n skewX = atan2(a[0] * a[2] + a[1] * a [3], denom);\n return {\n angle: angle / PiBy180,\n scaleX: scaleX,\n scaleY: scaleY,\n skewX: skewX / PiBy180,\n skewY: 0,\n translateX: a[4],\n translateY: a[5]\n };\n },\n\n /**\n * Returns a transform matrix starting from an object of the same kind of\n * the one returned from qrDecompose, useful also if you want to calculate some\n * transformations from an object that is not enlived yet\n * @static\n * @memberOf fabric.util\n * @param {Object} options\n * @param {Number} [options.angle] angle in degrees\n * @return {Number[]} transform matrix\n */\n calcRotateMatrix: function(options) {\n if (!options.angle) {\n return fabric.iMatrix.concat();\n }\n var theta = fabric.util.degreesToRadians(options.angle),\n cos = fabric.util.cos(theta),\n sin = fabric.util.sin(theta);\n return [cos, sin, -sin, cos, 0, 0];\n },\n\n /**\n * Returns a transform matrix starting from an object of the same kind of\n * the one returned from qrDecompose, useful also if you want to calculate some\n * transformations from an object that is not enlived yet.\n * is called DimensionsTransformMatrix because those properties are the one that influence\n * the size of the resulting box of the object.\n * @static\n * @memberOf fabric.util\n * @param {Object} options\n * @param {Number} [options.scaleX]\n * @param {Number} [options.scaleY]\n * @param {Boolean} [options.flipX]\n * @param {Boolean} [options.flipY]\n * @param {Number} [options.skewX]\n * @param {Number} [options.skewX]\n * @return {Number[]} transform matrix\n */\n calcDimensionsMatrix: function(options) {\n var scaleX = typeof options.scaleX === 'undefined' ? 1 : options.scaleX,\n scaleY = typeof options.scaleY === 'undefined' ? 1 : options.scaleY,\n scaleMatrix = [\n options.flipX ? -scaleX : scaleX,\n 0,\n 0,\n options.flipY ? -scaleY : scaleY,\n 0,\n 0],\n multiply = fabric.util.multiplyTransformMatrices,\n degreesToRadians = fabric.util.degreesToRadians;\n if (options.skewX) {\n scaleMatrix = multiply(\n scaleMatrix,\n [1, 0, Math.tan(degreesToRadians(options.skewX)), 1],\n true);\n }\n if (options.skewY) {\n scaleMatrix = multiply(\n scaleMatrix,\n [1, Math.tan(degreesToRadians(options.skewY)), 0, 1],\n true);\n }\n return scaleMatrix;\n },\n\n /**\n * Returns a transform matrix starting from an object of the same kind of\n * the one returned from qrDecompose, useful also if you want to calculate some\n * transformations from an object that is not enlived yet\n * @static\n * @memberOf fabric.util\n * @param {Object} options\n * @param {Number} [options.angle]\n * @param {Number} [options.scaleX]\n * @param {Number} [options.scaleY]\n * @param {Boolean} [options.flipX]\n * @param {Boolean} [options.flipY]\n * @param {Number} [options.skewX]\n * @param {Number} [options.skewX]\n * @param {Number} [options.translateX]\n * @param {Number} [options.translateY]\n * @return {Number[]} transform matrix\n */\n composeMatrix: function(options) {\n var matrix = [1, 0, 0, 1, options.translateX || 0, options.translateY || 0],\n multiply = fabric.util.multiplyTransformMatrices;\n if (options.angle) {\n matrix = multiply(matrix, fabric.util.calcRotateMatrix(options));\n }\n if (options.scaleX !== 1 || options.scaleY !== 1 ||\n options.skewX || options.skewY || options.flipX || options.flipY) {\n matrix = multiply(matrix, fabric.util.calcDimensionsMatrix(options));\n }\n return matrix;\n },\n\n /**\n * reset an object transform state to neutral. Top and left are not accounted for\n * @static\n * @memberOf fabric.util\n * @param {fabric.Object} target object to transform\n */\n resetObjectTransform: function (target) {\n target.scaleX = 1;\n target.scaleY = 1;\n target.skewX = 0;\n target.skewY = 0;\n target.flipX = false;\n target.flipY = false;\n target.rotate(0);\n },\n\n /**\n * Extract Object transform values\n * @static\n * @memberOf fabric.util\n * @param {fabric.Object} target object to read from\n * @return {Object} Components of transform\n */\n saveObjectTransform: function (target) {\n return {\n scaleX: target.scaleX,\n scaleY: target.scaleY,\n skewX: target.skewX,\n skewY: target.skewY,\n angle: target.angle,\n left: target.left,\n flipX: target.flipX,\n flipY: target.flipY,\n top: target.top\n };\n },\n\n /**\n * Returns true if context has transparent pixel\n * at specified location (taking tolerance into account)\n * @param {CanvasRenderingContext2D} ctx context\n * @param {Number} x x coordinate\n * @param {Number} y y coordinate\n * @param {Number} tolerance Tolerance\n */\n isTransparent: function(ctx, x, y, tolerance) {\n\n // If tolerance is > 0 adjust start coords to take into account.\n // If moves off Canvas fix to 0\n if (tolerance > 0) {\n if (x > tolerance) {\n x -= tolerance;\n }\n else {\n x = 0;\n }\n if (y > tolerance) {\n y -= tolerance;\n }\n else {\n y = 0;\n }\n }\n\n var _isTransparent = true, i, temp,\n imageData = ctx.getImageData(x, y, (tolerance * 2) || 1, (tolerance * 2) || 1),\n l = imageData.data.length;\n\n // Split image data - for tolerance > 1, pixelDataSize = 4;\n for (i = 3; i < l; i += 4) {\n temp = imageData.data[i];\n _isTransparent = temp <= 0;\n if (_isTransparent === false) {\n break; // Stop if colour found\n }\n }\n\n imageData = null;\n\n return _isTransparent;\n },\n\n /**\n * Parse preserveAspectRatio attribute from element\n * @param {string} attribute to be parsed\n * @return {Object} an object containing align and meetOrSlice attribute\n */\n parsePreserveAspectRatioAttribute: function(attribute) {\n var meetOrSlice = 'meet', alignX = 'Mid', alignY = 'Mid',\n aspectRatioAttrs = attribute.split(' '), align;\n\n if (aspectRatioAttrs && aspectRatioAttrs.length) {\n meetOrSlice = aspectRatioAttrs.pop();\n if (meetOrSlice !== 'meet' && meetOrSlice !== 'slice') {\n align = meetOrSlice;\n meetOrSlice = 'meet';\n }\n else if (aspectRatioAttrs.length) {\n align = aspectRatioAttrs.pop();\n }\n }\n //divide align in alignX and alignY\n alignX = align !== 'none' ? align.slice(1, 4) : 'none';\n alignY = align !== 'none' ? align.slice(5, 8) : 'none';\n return {\n meetOrSlice: meetOrSlice,\n alignX: alignX,\n alignY: alignY\n };\n },\n\n /**\n * Clear char widths cache for the given font family or all the cache if no\n * fontFamily is specified.\n * Use it if you know you are loading fonts in a lazy way and you are not waiting\n * for custom fonts to load properly when adding text objects to the canvas.\n * If a text object is added when its own font is not loaded yet, you will get wrong\n * measurement and so wrong bounding boxes.\n * After the font cache is cleared, either change the textObject text content or call\n * initDimensions() to trigger a recalculation\n * @memberOf fabric.util\n * @param {String} [fontFamily] font family to clear\n */\n clearFabricFontCache: function(fontFamily) {\n fontFamily = (fontFamily || '').toLowerCase();\n if (!fontFamily) {\n fabric.charWidthsCache = { };\n }\n else if (fabric.charWidthsCache[fontFamily]) {\n delete fabric.charWidthsCache[fontFamily];\n }\n },\n\n /**\n * Given current aspect ratio, determines the max width and height that can\n * respect the total allowed area for the cache.\n * @memberOf fabric.util\n * @param {Number} ar aspect ratio\n * @param {Number} maximumArea Maximum area you want to achieve\n * @return {Object.x} Limited dimensions by X\n * @return {Object.y} Limited dimensions by Y\n */\n limitDimsByArea: function(ar, maximumArea) {\n var roughWidth = Math.sqrt(maximumArea * ar),\n perfLimitSizeY = Math.floor(maximumArea / roughWidth);\n return { x: Math.floor(roughWidth), y: perfLimitSizeY };\n },\n\n capValue: function(min, value, max) {\n return Math.max(min, Math.min(value, max));\n },\n\n /**\n * Finds the scale for the object source to fit inside the object destination,\n * keeping aspect ratio intact.\n * respect the total allowed area for the cache.\n * @memberOf fabric.util\n * @param {Object | fabric.Object} source\n * @param {Number} source.height natural unscaled height of the object\n * @param {Number} source.width natural unscaled width of the object\n * @param {Object | fabric.Object} destination\n * @param {Number} destination.height natural unscaled height of the object\n * @param {Number} destination.width natural unscaled width of the object\n * @return {Number} scale factor to apply to source to fit into destination\n */\n findScaleToFit: function(source, destination) {\n return Math.min(destination.width / source.width, destination.height / source.height);\n },\n\n /**\n * Finds the scale for the object source to cover entirely the object destination,\n * keeping aspect ratio intact.\n * respect the total allowed area for the cache.\n * @memberOf fabric.util\n * @param {Object | fabric.Object} source\n * @param {Number} source.height natural unscaled height of the object\n * @param {Number} source.width natural unscaled width of the object\n * @param {Object | fabric.Object} destination\n * @param {Number} destination.height natural unscaled height of the object\n * @param {Number} destination.width natural unscaled width of the object\n * @return {Number} scale factor to apply to source to cover destination\n */\n findScaleToCover: function(source, destination) {\n return Math.max(destination.width / source.width, destination.height / source.height);\n },\n\n /**\n * given an array of 6 number returns something like `\"matrix(...numbers)\"`\n * @memberOf fabric.util\n * @param {Array} transform an array with 6 numbers\n * @return {String} transform matrix for svg\n * @return {Object.y} Limited dimensions by Y\n */\n matrixToSVG: function(transform) {\n return 'matrix(' + transform.map(function(value) {\n return fabric.util.toFixed(value, fabric.Object.NUM_FRACTION_DIGITS);\n }).join(' ') + ')';\n },\n\n /**\n * given an object and a transform, apply the inverse transform to the object,\n * this is equivalent to remove from that object that transformation, so that\n * added in a space with the removed transform, the object will be the same as before.\n * Removing from an object a transform that scale by 2 is like scaling it by 1/2.\n * Removing from an object a transfrom that rotate by 30deg is like rotating by 30deg\n * in the opposite direction.\n * This util is used to add objects inside transformed groups or nested groups.\n * @memberOf fabric.util\n * @param {fabric.Object} object the object you want to transform\n * @param {Array} transform the destination transform\n */\n removeTransformFromObject: function(object, transform) {\n var inverted = fabric.util.invertTransform(transform),\n finalTransform = fabric.util.multiplyTransformMatrices(inverted, object.calcOwnMatrix());\n fabric.util.applyTransformToObject(object, finalTransform);\n },\n\n /**\n * given an object and a transform, apply the transform to the object.\n * this is equivalent to change the space where the object is drawn.\n * Adding to an object a transform that scale by 2 is like scaling it by 2.\n * This is used when removing an object from an active selection for example.\n * @memberOf fabric.util\n * @param {fabric.Object} object the object you want to transform\n * @param {Array} transform the destination transform\n */\n addTransformToObject: function(object, transform) {\n fabric.util.applyTransformToObject(\n object,\n fabric.util.multiplyTransformMatrices(transform, object.calcOwnMatrix())\n );\n },\n\n /**\n * discard an object transform state and apply the one from the matrix.\n * @memberOf fabric.util\n * @param {fabric.Object} object the object you want to transform\n * @param {Array} transform the destination transform\n */\n applyTransformToObject: function(object, transform) {\n var options = fabric.util.qrDecompose(transform),\n center = new fabric.Point(options.translateX, options.translateY);\n object.flipX = false;\n object.flipY = false;\n object.set('scaleX', options.scaleX);\n object.set('scaleY', options.scaleY);\n object.skewX = options.skewX;\n object.skewY = options.skewY;\n object.angle = options.angle;\n object.setPositionByOrigin(center, 'center', 'center');\n },\n\n /**\n * given a width and height, return the size of the bounding box\n * that can contains the box with width/height with applied transform\n * described in options.\n * Use to calculate the boxes around objects for controls.\n * @memberOf fabric.util\n * @param {Number} width\n * @param {Number} height\n * @param {Object} options\n * @param {Number} options.scaleX\n * @param {Number} options.scaleY\n * @param {Number} options.skewX\n * @param {Number} options.skewY\n * @return {Object.x} width of containing\n * @return {Object.y} height of containing\n */\n sizeAfterTransform: function(width, height, options) {\n var dimX = width / 2, dimY = height / 2,\n points = [\n {\n x: -dimX,\n y: -dimY\n },\n {\n x: dimX,\n y: -dimY\n },\n {\n x: -dimX,\n y: dimY\n },\n {\n x: dimX,\n y: dimY\n }],\n transformMatrix = fabric.util.calcDimensionsMatrix(options),\n bbox = fabric.util.makeBoundingBoxFromPoints(points, transformMatrix);\n return {\n x: bbox.width,\n y: bbox.height,\n };\n }\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n var _join = Array.prototype.join,\n commandLengths = {\n m: 2,\n l: 2,\n h: 1,\n v: 1,\n c: 6,\n s: 4,\n q: 4,\n t: 2,\n a: 7\n },\n repeatedCommands = {\n m: 'l',\n M: 'L'\n };\n function segmentToBezier(th2, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY) {\n var costh2 = fabric.util.cos(th2),\n sinth2 = fabric.util.sin(th2),\n costh3 = fabric.util.cos(th3),\n sinth3 = fabric.util.sin(th3),\n toX = cosTh * rx * costh3 - sinTh * ry * sinth3 + cx1,\n toY = sinTh * rx * costh3 + cosTh * ry * sinth3 + cy1,\n cp1X = fromX + mT * ( -cosTh * rx * sinth2 - sinTh * ry * costh2),\n cp1Y = fromY + mT * ( -sinTh * rx * sinth2 + cosTh * ry * costh2),\n cp2X = toX + mT * ( cosTh * rx * sinth3 + sinTh * ry * costh3),\n cp2Y = toY + mT * ( sinTh * rx * sinth3 - cosTh * ry * costh3);\n\n return ['C',\n cp1X, cp1Y,\n cp2X, cp2Y,\n toX, toY\n ];\n }\n\n /* Adapted from http://dxr.mozilla.org/mozilla-central/source/content/svg/content/src/nsSVGPathDataParser.cpp\n * by Andrea Bogazzi code is under MPL. if you don't have a copy of the license you can take it here\n * http://mozilla.org/MPL/2.0/\n */\n function arcToSegments(toX, toY, rx, ry, large, sweep, rotateX) {\n var PI = Math.PI, th = rotateX * PI / 180,\n sinTh = fabric.util.sin(th),\n cosTh = fabric.util.cos(th),\n fromX = 0, fromY = 0;\n\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n\n var px = -cosTh * toX * 0.5 - sinTh * toY * 0.5,\n py = -cosTh * toY * 0.5 + sinTh * toX * 0.5,\n rx2 = rx * rx, ry2 = ry * ry, py2 = py * py, px2 = px * px,\n pl = rx2 * ry2 - rx2 * py2 - ry2 * px2,\n root = 0;\n\n if (pl < 0) {\n var s = Math.sqrt(1 - pl / (rx2 * ry2));\n rx *= s;\n ry *= s;\n }\n else {\n root = (large === sweep ? -1.0 : 1.0) *\n Math.sqrt( pl / (rx2 * py2 + ry2 * px2));\n }\n\n var cx = root * rx * py / ry,\n cy = -root * ry * px / rx,\n cx1 = cosTh * cx - sinTh * cy + toX * 0.5,\n cy1 = sinTh * cx + cosTh * cy + toY * 0.5,\n mTheta = calcVectorAngle(1, 0, (px - cx) / rx, (py - cy) / ry),\n dtheta = calcVectorAngle((px - cx) / rx, (py - cy) / ry, (-px - cx) / rx, (-py - cy) / ry);\n\n if (sweep === 0 && dtheta > 0) {\n dtheta -= 2 * PI;\n }\n else if (sweep === 1 && dtheta < 0) {\n dtheta += 2 * PI;\n }\n\n // Convert into cubic bezier segments <= 90deg\n var segments = Math.ceil(Math.abs(dtheta / PI * 2)),\n result = [], mDelta = dtheta / segments,\n mT = 8 / 3 * Math.sin(mDelta / 4) * Math.sin(mDelta / 4) / Math.sin(mDelta / 2),\n th3 = mTheta + mDelta;\n\n for (var i = 0; i < segments; i++) {\n result[i] = segmentToBezier(mTheta, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY);\n fromX = result[i][5];\n fromY = result[i][6];\n mTheta = th3;\n th3 += mDelta;\n }\n return result;\n }\n\n /*\n * Private\n */\n function calcVectorAngle(ux, uy, vx, vy) {\n var ta = Math.atan2(uy, ux),\n tb = Math.atan2(vy, vx);\n if (tb >= ta) {\n return tb - ta;\n }\n else {\n return 2 * Math.PI - (ta - tb);\n }\n }\n\n /**\n * Calculate bounding box of a beziercurve\n * @param {Number} x0 starting point\n * @param {Number} y0\n * @param {Number} x1 first control point\n * @param {Number} y1\n * @param {Number} x2 secondo control point\n * @param {Number} y2\n * @param {Number} x3 end of bezier\n * @param {Number} y3\n */\n // taken from http://jsbin.com/ivomiq/56/edit no credits available for that.\n // TODO: can we normalize this with the starting points set at 0 and then translated the bbox?\n function getBoundsOfCurve(x0, y0, x1, y1, x2, y2, x3, y3) {\n var argsString;\n if (fabric.cachesBoundsOfCurve) {\n argsString = _join.call(arguments);\n if (fabric.boundsOfCurveCache[argsString]) {\n return fabric.boundsOfCurveCache[argsString];\n }\n }\n\n var sqrt = Math.sqrt,\n min = Math.min, max = Math.max,\n abs = Math.abs, tvalues = [],\n bounds = [[], []],\n a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n\n for (var i = 0; i < 2; ++i) {\n if (i > 0) {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n\n if (abs(a) < 1e-12) {\n if (abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n if (b2ac < 0) {\n continue;\n }\n sqrtb2ac = sqrt(b2ac);\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n var x, y, j = tvalues.length, jlen = j, mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n x = (mt * mt * mt * x0) + (3 * mt * mt * t * x1) + (3 * mt * t * t * x2) + (t * t * t * x3);\n bounds[0][j] = x;\n\n y = (mt * mt * mt * y0) + (3 * mt * mt * t * y1) + (3 * mt * t * t * y2) + (t * t * t * y3);\n bounds[1][j] = y;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n var result = [\n {\n x: min.apply(null, bounds[0]),\n y: min.apply(null, bounds[1])\n },\n {\n x: max.apply(null, bounds[0]),\n y: max.apply(null, bounds[1])\n }\n ];\n if (fabric.cachesBoundsOfCurve) {\n fabric.boundsOfCurveCache[argsString] = result;\n }\n return result;\n }\n\n /**\n * Converts arc to a bunch of bezier curves\n * @param {Number} fx starting point x\n * @param {Number} fy starting point y\n * @param {Array} coords Arc command\n */\n function fromArcToBeziers(fx, fy, coords) {\n var rx = coords[1],\n ry = coords[2],\n rot = coords[3],\n large = coords[4],\n sweep = coords[5],\n tx = coords[6],\n ty = coords[7],\n segsNorm = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (var i = 0, len = segsNorm.length; i < len; i++) {\n segsNorm[i][1] += fx;\n segsNorm[i][2] += fy;\n segsNorm[i][3] += fx;\n segsNorm[i][4] += fy;\n segsNorm[i][5] += fx;\n segsNorm[i][6] += fy;\n }\n return segsNorm;\n };\n\n /**\n * This function take a parsed SVG path and make it simpler for fabricJS logic.\n * simplification consist of: only UPPERCASE absolute commands ( relative converted to absolute )\n * S converted in C, T converted in Q, A converted in C.\n * @param {Array} path the array of commands of a parsed svg path for fabric.Path\n * @return {Array} the simplified array of commands of a parsed svg path for fabric.Path\n */\n function makePathSimpler(path) {\n // x and y represent the last point of the path. the previous command point.\n // we add them to each relative command to make it an absolute comment.\n // we also swap the v V h H with L, because are easier to transform.\n var x = 0, y = 0, len = path.length,\n // x1 and y1 represent the last point of the subpath. the subpath is started with\n // m or M command. When a z or Z command is drawn, x and y need to be resetted to\n // the last x1 and y1.\n x1 = 0, y1 = 0, current, i, converted,\n // previous will host the letter of the previous command, to handle S and T.\n // controlX and controlY will host the previous reflected control point\n destinationPath = [], previous, controlX, controlY;\n for (i = 0; i < len; ++i) {\n converted = false;\n current = path[i].slice(0);\n switch (current[0]) { // first letter\n case 'l': // lineto, relative\n current[0] = 'L';\n current[1] += x;\n current[2] += y;\n // falls through\n case 'L':\n x = current[1];\n y = current[2];\n break;\n case 'h': // horizontal lineto, relative\n current[1] += x;\n // falls through\n case 'H':\n current[0] = 'L';\n current[2] = y;\n x = current[1];\n break;\n case 'v': // vertical lineto, relative\n current[1] += y;\n // falls through\n case 'V':\n current[0] = 'L';\n y = current[1];\n current[1] = x;\n current[2] = y;\n break;\n case 'm': // moveTo, relative\n current[0] = 'M';\n current[1] += x;\n current[2] += y;\n // falls through\n case 'M':\n x = current[1];\n y = current[2];\n x1 = current[1];\n y1 = current[2];\n break;\n case 'c': // bezierCurveTo, relative\n current[0] = 'C';\n current[1] += x;\n current[2] += y;\n current[3] += x;\n current[4] += y;\n current[5] += x;\n current[6] += y;\n // falls through\n case 'C':\n controlX = current[3];\n controlY = current[4];\n x = current[5];\n y = current[6];\n break;\n case 's': // shorthand cubic bezierCurveTo, relative\n current[0] = 'S';\n current[1] += x;\n current[2] += y;\n current[3] += x;\n current[4] += y;\n // falls through\n case 'S':\n // would be sScC but since we are swapping sSc for C, we check just that.\n if (previous === 'C') {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n else {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n x = current[3];\n y = current[4];\n current[0] = 'C';\n current[5] = current[3];\n current[6] = current[4];\n current[3] = current[1];\n current[4] = current[2];\n current[1] = controlX;\n current[2] = controlY;\n // current[3] and current[4] are NOW the second control point.\n // we keep it for the next reflection.\n controlX = current[3];\n controlY = current[4];\n break;\n case 'q': // quadraticCurveTo, relative\n current[0] = 'Q';\n current[1] += x;\n current[2] += y;\n current[3] += x;\n current[4] += y;\n // falls through\n case 'Q':\n controlX = current[1];\n controlY = current[2];\n x = current[3];\n y = current[4];\n break;\n case 't': // shorthand quadraticCurveTo, relative\n current[0] = 'T';\n current[1] += x;\n current[2] += y;\n // falls through\n case 'T':\n if (previous === 'Q') {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n else {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n current[0] = 'Q';\n x = current[1];\n y = current[2];\n current[1] = controlX;\n current[2] = controlY;\n current[3] = x;\n current[4] = y;\n break;\n case 'a':\n current[0] = 'A';\n current[6] += x;\n current[7] += y;\n // falls through\n case 'A':\n converted = true;\n destinationPath = destinationPath.concat(fromArcToBeziers(x, y, current));\n x = current[6];\n y = current[7];\n break;\n case 'z':\n case 'Z':\n x = x1;\n y = y1;\n break;\n default:\n }\n if (!converted) {\n destinationPath.push(current);\n }\n previous = current[0];\n }\n return destinationPath;\n };\n\n /**\n * Calc length from point x1,y1 to x2,y2\n * @param {Number} x1 starting point x\n * @param {Number} y1 starting point y\n * @param {Number} x2 starting point x\n * @param {Number} y2 starting point y\n * @return {Number} length of segment\n */\n function calcLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n\n // functions for the Cubic beizer\n // taken from: https://github.com/konvajs/konva/blob/7.0.5/src/shapes/Path.ts#L350\n function CB1(t) {\n return t * t * t;\n }\n function CB2(t) {\n return 3 * t * t * (1 - t);\n }\n function CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n function CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\n\n function getPointOnCubicBezierIterator(p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n return function(pct) {\n var c1 = CB1(pct), c2 = CB2(pct), c3 = CB3(pct), c4 = CB4(pct);\n return {\n x: p4x * c1 + p3x * c2 + p2x * c3 + p1x * c4,\n y: p4y * c1 + p3y * c2 + p2y * c3 + p1y * c4\n };\n };\n }\n\n function getTangentCubicIterator(p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n return function (pct) {\n var invT = 1 - pct,\n tangentX = (3 * invT * invT * (p2x - p1x)) + (6 * invT * pct * (p3x - p2x)) +\n (3 * pct * pct * (p4x - p3x)),\n tangentY = (3 * invT * invT * (p2y - p1y)) + (6 * invT * pct * (p3y - p2y)) +\n (3 * pct * pct * (p4y - p3y));\n return Math.atan2(tangentY, tangentX);\n };\n }\n\n function QB1(t) {\n return t * t;\n }\n\n function QB2(t) {\n return 2 * t * (1 - t);\n }\n\n function QB3(t) {\n return (1 - t) * (1 - t);\n }\n\n function getPointOnQuadraticBezierIterator(p1x, p1y, p2x, p2y, p3x, p3y) {\n return function(pct) {\n var c1 = QB1(pct), c2 = QB2(pct), c3 = QB3(pct);\n return {\n x: p3x * c1 + p2x * c2 + p1x * c3,\n y: p3y * c1 + p2y * c2 + p1y * c3\n };\n };\n }\n\n function getTangentQuadraticIterator(p1x, p1y, p2x, p2y, p3x, p3y) {\n return function (pct) {\n var invT = 1 - pct,\n tangentX = (2 * invT * (p2x - p1x)) + (2 * pct * (p3x - p2x)),\n tangentY = (2 * invT * (p2y - p1y)) + (2 * pct * (p3y - p2y));\n return Math.atan2(tangentY, tangentX);\n };\n }\n\n\n // this will run over a path segment ( a cubic or quadratic segment) and approximate it\n // with 100 segemnts. This will good enough to calculate the length of the curve\n function pathIterator(iterator, x1, y1) {\n var tempP = { x: x1, y: y1 }, p, tmpLen = 0, perc;\n for (perc = 0.01; perc <= 1; perc += 0.01) {\n p = iterator(perc);\n tmpLen += calcLineLength(tempP.x, tempP.y, p.x, p.y);\n tempP = p;\n }\n return tmpLen;\n }\n\n /**\n * Given a pathInfo, and a distance in pixels, find the percentage from 0 to 1\n * that correspond to that pixels run over the path.\n * The percentage will be then used to find the correct point on the canvas for the path.\n * @param {Array} segInfo fabricJS collection of information on a parsed path\n * @param {Number} distance from starting point, in pixels.\n * @return {Object} info object with x and y ( the point on canvas ) and angle, the tangent on that point;\n */\n function findPercentageForDistance(segInfo, distance) {\n var perc = 0, tmpLen = 0, iterator = segInfo.iterator, tempP = { x: segInfo.x, y: segInfo.y },\n p, nextLen, nextStep = 0.01, angleFinder = segInfo.angleFinder, lastPerc;\n // nextStep > 0.0001 covers 0.00015625 that 1/64th of 1/100\n // the path\n while (tmpLen < distance && perc <= 1 && nextStep > 0.0001) {\n p = iterator(perc);\n lastPerc = perc;\n nextLen = calcLineLength(tempP.x, tempP.y, p.x, p.y);\n // compare tmpLen each cycle with distance, decide next perc to test.\n if ((nextLen + tmpLen) > distance) {\n // we discard this step and we make smaller steps.\n nextStep /= 2;\n perc -= nextStep;\n }\n else {\n tempP = p;\n perc += nextStep;\n tmpLen += nextLen;\n }\n }\n p.angle = angleFinder(lastPerc);\n return p;\n }\n\n /**\n * Run over a parsed and simplifed path and extrac some informations.\n * informations are length of each command and starting point\n * @param {Array} path fabricJS parsed path commands\n * @return {Array} path commands informations\n */\n function getPathSegmentsInfo(path) {\n var totalLength = 0, len = path.length, current,\n //x2 and y2 are the coords of segment start\n //x1 and y1 are the coords of the current point\n x1 = 0, y1 = 0, x2 = 0, y2 = 0, info = [], iterator, tempInfo, angleFinder;\n for (var i = 0; i < len; i++) {\n current = path[i];\n tempInfo = {\n x: x1,\n y: y1,\n command: current[0],\n };\n switch (current[0]) { //first letter\n case 'M':\n tempInfo.length = 0;\n x2 = x1 = current[1];\n y2 = y1 = current[2];\n break;\n case 'L':\n tempInfo.length = calcLineLength(x1, y1, current[1], current[2]);\n x1 = current[1];\n y1 = current[2];\n break;\n case 'C':\n iterator = getPointOnCubicBezierIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6]\n );\n angleFinder = getTangentCubicIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6]\n );\n tempInfo.iterator = iterator;\n tempInfo.angleFinder = angleFinder;\n tempInfo.length = pathIterator(iterator, x1, y1);\n x1 = current[5];\n y1 = current[6];\n break;\n case 'Q':\n iterator = getPointOnQuadraticBezierIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4]\n );\n angleFinder = getTangentQuadraticIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4]\n );\n tempInfo.iterator = iterator;\n tempInfo.angleFinder = angleFinder;\n tempInfo.length = pathIterator(iterator, x1, y1);\n x1 = current[3];\n y1 = current[4];\n break;\n case 'Z':\n case 'z':\n // we add those in order to ease calculations later\n tempInfo.destX = x2;\n tempInfo.destY = y2;\n tempInfo.length = calcLineLength(x1, y1, x2, y2);\n x1 = x2;\n y1 = y2;\n break;\n }\n totalLength += tempInfo.length;\n info.push(tempInfo);\n }\n info.push({ length: totalLength, x: x1, y: y1 });\n return info;\n }\n\n function getPointOnPath(path, distance, infos) {\n if (!infos) {\n infos = getPathSegmentsInfo(path);\n }\n var i = 0;\n while ((distance - infos[i].length > 0) && i < (infos.length - 2)) {\n distance -= infos[i].length;\n i++;\n }\n // var distance = infos[infos.length - 1] * perc;\n var segInfo = infos[i], segPercent = distance / segInfo.length,\n command = segInfo.command, segment = path[i], info;\n\n switch (command) {\n case 'M':\n return { x: segInfo.x, y: segInfo.y, angle: 0 };\n case 'Z':\n case 'z':\n info = new fabric.Point(segInfo.x, segInfo.y).lerp(\n new fabric.Point(segInfo.destX, segInfo.destY),\n segPercent\n );\n info.angle = Math.atan2(segInfo.destY - segInfo.y, segInfo.destX - segInfo.x);\n return info;\n case 'L':\n info = new fabric.Point(segInfo.x, segInfo.y).lerp(\n new fabric.Point(segment[1], segment[2]),\n segPercent\n );\n info.angle = Math.atan2(segment[2] - segInfo.y, segment[1] - segInfo.x);\n return info;\n case 'C':\n return findPercentageForDistance(segInfo, distance);\n case 'Q':\n return findPercentageForDistance(segInfo, distance);\n }\n }\n\n function parsePath(pathString) {\n var result = [],\n coords = [],\n currentPath,\n parsed,\n re = fabric.rePathCommand,\n rNumber = '[-+]?(?:\\\\d*\\\\.\\\\d+|\\\\d+\\\\.?)(?:[eE][-+]?\\\\d+)?\\\\s*',\n rNumberCommaWsp = '(' + rNumber + ')' + fabric.commaWsp,\n rFlagCommaWsp = '([01])' + fabric.commaWsp + '?',\n rArcSeq = rNumberCommaWsp + '?' + rNumberCommaWsp + '?' + rNumberCommaWsp + rFlagCommaWsp + rFlagCommaWsp +\n rNumberCommaWsp + '?(' + rNumber + ')',\n regArcArgumentSequence = new RegExp(rArcSeq, 'g'),\n match,\n coordsStr,\n // one of commands (m,M,l,L,q,Q,c,C,etc.) followed by non-command characters (i.e. command values)\n path;\n if (!pathString || !pathString.match) {\n return result;\n }\n path = pathString.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi);\n\n for (var i = 0, coordsParsed, len = path.length; i < len; i++) {\n currentPath = path[i];\n\n coordsStr = currentPath.slice(1).trim();\n coords.length = 0;\n\n var command = currentPath.charAt(0);\n coordsParsed = [command];\n\n if (command.toLowerCase() === 'a') {\n // arcs have special flags that apparently don't require spaces so handle special\n for (var args; (args = regArcArgumentSequence.exec(coordsStr));) {\n for (var j = 1; j < args.length; j++) {\n coords.push(args[j]);\n }\n }\n }\n else {\n while ((match = re.exec(coordsStr))) {\n coords.push(match[0]);\n }\n }\n\n for (var j = 0, jlen = coords.length; j < jlen; j++) {\n parsed = parseFloat(coords[j]);\n if (!isNaN(parsed)) {\n coordsParsed.push(parsed);\n }\n }\n\n var commandLength = commandLengths[command.toLowerCase()],\n repeatedCommand = repeatedCommands[command] || command;\n\n if (coordsParsed.length - 1 > commandLength) {\n for (var k = 1, klen = coordsParsed.length; k < klen; k += commandLength) {\n result.push([command].concat(coordsParsed.slice(k, k + commandLength)));\n command = repeatedCommand;\n }\n }\n else {\n result.push(coordsParsed);\n }\n }\n\n return result;\n };\n\n /**\n * Calculate bounding box of a elliptic-arc\n * @deprecated\n * @param {Number} fx start point of arc\n * @param {Number} fy\n * @param {Number} rx horizontal radius\n * @param {Number} ry vertical radius\n * @param {Number} rot angle of horizontal axis\n * @param {Number} large 1 or 0, whatever the arc is the big or the small on the 2 points\n * @param {Number} sweep 1 or 0, 1 clockwise or counterclockwise direction\n * @param {Number} tx end point of arc\n * @param {Number} ty\n */\n function getBoundsOfArc(fx, fy, rx, ry, rot, large, sweep, tx, ty) {\n\n var fromX = 0, fromY = 0, bound, bounds = [],\n segs = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (var i = 0, len = segs.length; i < len; i++) {\n bound = getBoundsOfCurve(fromX, fromY, segs[i][1], segs[i][2], segs[i][3], segs[i][4], segs[i][5], segs[i][6]);\n bounds.push({ x: bound[0].x + fx, y: bound[0].y + fy });\n bounds.push({ x: bound[1].x + fx, y: bound[1].y + fy });\n fromX = segs[i][5];\n fromY = segs[i][6];\n }\n return bounds;\n };\n\n /**\n * Draws arc\n * @deprecated\n * @param {CanvasRenderingContext2D} ctx\n * @param {Number} fx\n * @param {Number} fy\n * @param {Array} coords coords of the arc, without the front 'A/a'\n */\n function drawArc(ctx, fx, fy, coords) {\n coords = coords.slice(0).unshift('X'); // command A or a does not matter\n var beziers = fromArcToBeziers(fx, fy, coords);\n beziers.forEach(function(bezier) {\n ctx.bezierCurveTo.apply(ctx, bezier.slice(1));\n });\n };\n\n fabric.util.parsePath = parsePath;\n fabric.util.makePathSimpler = makePathSimpler;\n fabric.util.getPathSegmentsInfo = getPathSegmentsInfo;\n fabric.util.fromArcToBeziers = fromArcToBeziers;\n /**\n * Typo of `fromArcToBeziers` kept for not breaking the api once corrected.\n * Will be removed in fabric 5.0\n * @deprecated\n */\n fabric.util.fromArcToBeizers = fromArcToBeziers;\n fabric.util.getBoundsOfCurve = getBoundsOfCurve;\n fabric.util.getPointOnPath = getPointOnPath;\n // kept because we do not want to make breaking changes.\n // but useless and deprecated.\n fabric.util.getBoundsOfArc = getBoundsOfArc;\n fabric.util.drawArc = drawArc;\n})();\n\n\n(function() {\n\n var slice = Array.prototype.slice;\n\n /**\n * Invokes method on all items in a given array\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} method Name of a method to invoke\n * @return {Array}\n */\n function invoke(array, method) {\n var args = slice.call(arguments, 2), result = [];\n for (var i = 0, len = array.length; i < len; i++) {\n result[i] = args.length ? array[i][method].apply(array[i], args) : array[i][method].call(array[i]);\n }\n return result;\n }\n\n /**\n * Finds maximum value in array (not necessarily \"first\" one)\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} byProperty\n * @return {*}\n */\n function max(array, byProperty) {\n return find(array, byProperty, function(value1, value2) {\n return value1 >= value2;\n });\n }\n\n /**\n * Finds minimum value in array (not necessarily \"first\" one)\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} byProperty\n * @return {*}\n */\n function min(array, byProperty) {\n return find(array, byProperty, function(value1, value2) {\n return value1 < value2;\n });\n }\n\n /**\n * @private\n */\n function fill(array, value) {\n var k = array.length;\n while (k--) {\n array[k] = value;\n }\n return array;\n }\n\n /**\n * @private\n */\n function find(array, byProperty, condition) {\n if (!array || array.length === 0) {\n return;\n }\n\n var i = array.length - 1,\n result = byProperty ? array[i][byProperty] : array[i];\n if (byProperty) {\n while (i--) {\n if (condition(array[i][byProperty], result)) {\n result = array[i][byProperty];\n }\n }\n }\n else {\n while (i--) {\n if (condition(array[i], result)) {\n result = array[i];\n }\n }\n }\n return result;\n }\n\n /**\n * @namespace fabric.util.array\n */\n fabric.util.array = {\n fill: fill,\n invoke: invoke,\n min: min,\n max: max\n };\n\n})();\n\n\n(function() {\n /**\n * Copies all enumerable properties of one js object to another\n * this does not and cannot compete with generic utils.\n * Does not clone or extend fabric.Object subclasses.\n * This is mostly for internal use and has extra handling for fabricJS objects\n * it skips the canvas and group properties in deep cloning.\n * @memberOf fabric.util.object\n * @param {Object} destination Where to copy to\n * @param {Object} source Where to copy from\n * @return {Object}\n */\n\n function extend(destination, source, deep) {\n // JScript DontEnum bug is not taken care of\n // the deep clone is for internal use, is not meant to avoid\n // javascript traps or cloning html element or self referenced objects.\n if (deep) {\n if (!fabric.isLikelyNode && source instanceof Element) {\n // avoid cloning deep images, canvases,\n destination = source;\n }\n else if (source instanceof Array) {\n destination = [];\n for (var i = 0, len = source.length; i < len; i++) {\n destination[i] = extend({ }, source[i], deep);\n }\n }\n else if (source && typeof source === 'object') {\n for (var property in source) {\n if (property === 'canvas' || property === 'group') {\n // we do not want to clone this props at all.\n // we want to keep the keys in the copy\n destination[property] = null;\n }\n else if (source.hasOwnProperty(property)) {\n destination[property] = extend({ }, source[property], deep);\n }\n }\n }\n else {\n // this sounds odd for an extend but is ok for recursive use\n destination = source;\n }\n }\n else {\n for (var property in source) {\n destination[property] = source[property];\n }\n }\n return destination;\n }\n\n /**\n * Creates an empty object and copies all enumerable properties of another object to it\n * @memberOf fabric.util.object\n * TODO: this function return an empty object if you try to clone null\n * @param {Object} object Object to clone\n * @return {Object}\n */\n function clone(object, deep) {\n return extend({ }, object, deep);\n }\n\n /** @namespace fabric.util.object */\n fabric.util.object = {\n extend: extend,\n clone: clone\n };\n fabric.util.object.extend(fabric.util, fabric.Observable);\n})();\n\n\n(function() {\n\n /**\n * Camelizes a string\n * @memberOf fabric.util.string\n * @param {String} string String to camelize\n * @return {String} Camelized version of a string\n */\n function camelize(string) {\n return string.replace(/-+(.)?/g, function(match, character) {\n return character ? character.toUpperCase() : '';\n });\n }\n\n /**\n * Capitalizes a string\n * @memberOf fabric.util.string\n * @param {String} string String to capitalize\n * @param {Boolean} [firstLetterOnly] If true only first letter is capitalized\n * and other letters stay untouched, if false first letter is capitalized\n * and other letters are converted to lowercase.\n * @return {String} Capitalized version of a string\n */\n function capitalize(string, firstLetterOnly) {\n return string.charAt(0).toUpperCase() +\n (firstLetterOnly ? string.slice(1) : string.slice(1).toLowerCase());\n }\n\n /**\n * Escapes XML in a string\n * @memberOf fabric.util.string\n * @param {String} string String to escape\n * @return {String} Escaped version of a string\n */\n function escapeXml(string) {\n return string.replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(//g, '>');\n }\n\n /**\n * Divide a string in the user perceived single units\n * @memberOf fabric.util.string\n * @param {String} textstring String to escape\n * @return {Array} array containing the graphemes\n */\n function graphemeSplit(textstring) {\n var i = 0, chr, graphemes = [];\n for (i = 0, chr; i < textstring.length; i++) {\n if ((chr = getWholeChar(textstring, i)) === false) {\n continue;\n }\n graphemes.push(chr);\n }\n return graphemes;\n }\n\n // taken from mdn in the charAt doc page.\n function getWholeChar(str, i) {\n var code = str.charCodeAt(i);\n\n if (isNaN(code)) {\n return ''; // Position not found\n }\n if (code < 0xD800 || code > 0xDFFF) {\n return str.charAt(i);\n }\n\n // High surrogate (could change last hex to 0xDB7F to treat high private\n // surrogates as single characters)\n if (0xD800 <= code && code <= 0xDBFF) {\n if (str.length <= (i + 1)) {\n throw 'High surrogate without following low surrogate';\n }\n var next = str.charCodeAt(i + 1);\n if (0xDC00 > next || next > 0xDFFF) {\n throw 'High surrogate without following low surrogate';\n }\n return str.charAt(i) + str.charAt(i + 1);\n }\n // Low surrogate (0xDC00 <= code && code <= 0xDFFF)\n if (i === 0) {\n throw 'Low surrogate without preceding high surrogate';\n }\n var prev = str.charCodeAt(i - 1);\n\n // (could change last hex to 0xDB7F to treat high private\n // surrogates as single characters)\n if (0xD800 > prev || prev > 0xDBFF) {\n throw 'Low surrogate without preceding high surrogate';\n }\n // We can pass over low surrogates now as the second component\n // in a pair which we have already processed\n return false;\n }\n\n\n /**\n * String utilities\n * @namespace fabric.util.string\n */\n fabric.util.string = {\n camelize: camelize,\n capitalize: capitalize,\n escapeXml: escapeXml,\n graphemeSplit: graphemeSplit\n };\n})();\n\n\n(function() {\n\n var slice = Array.prototype.slice, emptyFunction = function() { },\n\n IS_DONTENUM_BUGGY = (function() {\n for (var p in { toString: 1 }) {\n if (p === 'toString') {\n return false;\n }\n }\n return true;\n })(),\n\n /** @ignore */\n addMethods = function(klass, source, parent) {\n for (var property in source) {\n\n if (property in klass.prototype &&\n typeof klass.prototype[property] === 'function' &&\n (source[property] + '').indexOf('callSuper') > -1) {\n\n klass.prototype[property] = (function(property) {\n return function() {\n\n var superclass = this.constructor.superclass;\n this.constructor.superclass = parent;\n var returnValue = source[property].apply(this, arguments);\n this.constructor.superclass = superclass;\n\n if (property !== 'initialize') {\n return returnValue;\n }\n };\n })(property);\n }\n else {\n klass.prototype[property] = source[property];\n }\n\n if (IS_DONTENUM_BUGGY) {\n if (source.toString !== Object.prototype.toString) {\n klass.prototype.toString = source.toString;\n }\n if (source.valueOf !== Object.prototype.valueOf) {\n klass.prototype.valueOf = source.valueOf;\n }\n }\n }\n };\n\n function Subclass() { }\n\n function callSuper(methodName) {\n var parentMethod = null,\n _this = this;\n\n // climb prototype chain to find method not equal to callee's method\n while (_this.constructor.superclass) {\n var superClassMethod = _this.constructor.superclass.prototype[methodName];\n if (_this[methodName] !== superClassMethod) {\n parentMethod = superClassMethod;\n break;\n }\n // eslint-disable-next-line\n _this = _this.constructor.superclass.prototype;\n }\n\n if (!parentMethod) {\n return console.log('tried to callSuper ' + methodName + ', method not found in prototype chain', this);\n }\n\n return (arguments.length > 1)\n ? parentMethod.apply(this, slice.call(arguments, 1))\n : parentMethod.call(this);\n }\n\n /**\n * Helper for creation of \"classes\".\n * @memberOf fabric.util\n * @param {Function} [parent] optional \"Class\" to inherit from\n * @param {Object} [properties] Properties shared by all instances of this class\n * (be careful modifying objects defined here as this would affect all instances)\n */\n function createClass() {\n var parent = null,\n properties = slice.call(arguments, 0);\n\n if (typeof properties[0] === 'function') {\n parent = properties.shift();\n }\n function klass() {\n this.initialize.apply(this, arguments);\n }\n\n klass.superclass = parent;\n klass.subclasses = [];\n\n if (parent) {\n Subclass.prototype = parent.prototype;\n klass.prototype = new Subclass();\n parent.subclasses.push(klass);\n }\n for (var i = 0, length = properties.length; i < length; i++) {\n addMethods(klass, properties[i], parent);\n }\n if (!klass.prototype.initialize) {\n klass.prototype.initialize = emptyFunction;\n }\n klass.prototype.constructor = klass;\n klass.prototype.callSuper = callSuper;\n return klass;\n }\n\n fabric.util.createClass = createClass;\n})();\n\n\n(function () {\n // since ie11 can use addEventListener but they do not support options, i need to check\n var couldUseAttachEvent = !!fabric.document.createElement('div').attachEvent,\n touchEvents = ['touchstart', 'touchmove', 'touchend'];\n /**\n * Adds an event listener to an element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {String} eventName\n * @param {Function} handler\n */\n fabric.util.addListener = function(element, eventName, handler, options) {\n element && element.addEventListener(eventName, handler, couldUseAttachEvent ? false : options);\n };\n\n /**\n * Removes an event listener from an element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {String} eventName\n * @param {Function} handler\n */\n fabric.util.removeListener = function(element, eventName, handler, options) {\n element && element.removeEventListener(eventName, handler, couldUseAttachEvent ? false : options);\n };\n\n function getTouchInfo(event) {\n var touchProp = event.changedTouches;\n if (touchProp && touchProp[0]) {\n return touchProp[0];\n }\n return event;\n }\n\n fabric.util.getPointer = function(event) {\n var element = event.target,\n scroll = fabric.util.getScrollLeftTop(element),\n _evt = getTouchInfo(event);\n return {\n x: _evt.clientX + scroll.left,\n y: _evt.clientY + scroll.top\n };\n };\n\n fabric.util.isTouchEvent = function(event) {\n return touchEvents.indexOf(event.type) > -1 || event.pointerType === 'touch';\n };\n})();\n\n\n(function () {\n\n /**\n * Cross-browser wrapper for setting element's style\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {Object} styles\n * @return {HTMLElement} Element that was passed as a first argument\n */\n function setStyle(element, styles) {\n var elementStyle = element.style;\n if (!elementStyle) {\n return element;\n }\n if (typeof styles === 'string') {\n element.style.cssText += ';' + styles;\n return styles.indexOf('opacity') > -1\n ? setOpacity(element, styles.match(/opacity:\\s*(\\d?\\.?\\d*)/)[1])\n : element;\n }\n for (var property in styles) {\n if (property === 'opacity') {\n setOpacity(element, styles[property]);\n }\n else {\n var normalizedProperty = (property === 'float' || property === 'cssFloat')\n ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat')\n : property;\n elementStyle[normalizedProperty] = styles[property];\n }\n }\n return element;\n }\n\n var parseEl = fabric.document.createElement('div'),\n supportsOpacity = typeof parseEl.style.opacity === 'string',\n supportsFilters = typeof parseEl.style.filter === 'string',\n reOpacity = /alpha\\s*\\(\\s*opacity\\s*=\\s*([^\\)]+)\\)/,\n\n /** @ignore */\n setOpacity = function (element) { return element; };\n\n if (supportsOpacity) {\n /** @ignore */\n setOpacity = function(element, value) {\n element.style.opacity = value;\n return element;\n };\n }\n else if (supportsFilters) {\n /** @ignore */\n setOpacity = function(element, value) {\n var es = element.style;\n if (element.currentStyle && !element.currentStyle.hasLayout) {\n es.zoom = 1;\n }\n if (reOpacity.test(es.filter)) {\n value = value >= 0.9999 ? '' : ('alpha(opacity=' + (value * 100) + ')');\n es.filter = es.filter.replace(reOpacity, value);\n }\n else {\n es.filter += ' alpha(opacity=' + (value * 100) + ')';\n }\n return element;\n };\n }\n\n fabric.util.setStyle = setStyle;\n\n})();\n\n\n(function() {\n\n var _slice = Array.prototype.slice;\n\n /**\n * Takes id and returns an element with that id (if one exists in a document)\n * @memberOf fabric.util\n * @param {String|HTMLElement} id\n * @return {HTMLElement|null}\n */\n function getById(id) {\n return typeof id === 'string' ? fabric.document.getElementById(id) : id;\n }\n\n var sliceCanConvertNodelists,\n /**\n * Converts an array-like object (e.g. arguments or NodeList) to an array\n * @memberOf fabric.util\n * @param {Object} arrayLike\n * @return {Array}\n */\n toArray = function(arrayLike) {\n return _slice.call(arrayLike, 0);\n };\n\n try {\n sliceCanConvertNodelists = toArray(fabric.document.childNodes) instanceof Array;\n }\n catch (err) { }\n\n if (!sliceCanConvertNodelists) {\n toArray = function(arrayLike) {\n var arr = new Array(arrayLike.length), i = arrayLike.length;\n while (i--) {\n arr[i] = arrayLike[i];\n }\n return arr;\n };\n }\n\n /**\n * Creates specified element with specified attributes\n * @memberOf fabric.util\n * @param {String} tagName Type of an element to create\n * @param {Object} [attributes] Attributes to set on an element\n * @return {HTMLElement} Newly created element\n */\n function makeElement(tagName, attributes) {\n var el = fabric.document.createElement(tagName);\n for (var prop in attributes) {\n if (prop === 'class') {\n el.className = attributes[prop];\n }\n else if (prop === 'for') {\n el.htmlFor = attributes[prop];\n }\n else {\n el.setAttribute(prop, attributes[prop]);\n }\n }\n return el;\n }\n\n /**\n * Adds class to an element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to add class to\n * @param {String} className Class to add to an element\n */\n function addClass(element, className) {\n if (element && (' ' + element.className + ' ').indexOf(' ' + className + ' ') === -1) {\n element.className += (element.className ? ' ' : '') + className;\n }\n }\n\n /**\n * Wraps element with another element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to wrap\n * @param {HTMLElement|String} wrapper Element to wrap with\n * @param {Object} [attributes] Attributes to set on a wrapper\n * @return {HTMLElement} wrapper\n */\n function wrapElement(element, wrapper, attributes) {\n if (typeof wrapper === 'string') {\n wrapper = makeElement(wrapper, attributes);\n }\n if (element.parentNode) {\n element.parentNode.replaceChild(wrapper, element);\n }\n wrapper.appendChild(element);\n return wrapper;\n }\n\n /**\n * Returns element scroll offsets\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to operate on\n * @return {Object} Object with left/top values\n */\n function getScrollLeftTop(element) {\n\n var left = 0,\n top = 0,\n docElement = fabric.document.documentElement,\n body = fabric.document.body || {\n scrollLeft: 0, scrollTop: 0\n };\n\n // While loop checks (and then sets element to) .parentNode OR .host\n // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n // but the .parentNode of a root ShadowDOM node will always be null, instead\n // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n while (element && (element.parentNode || element.host)) {\n\n // Set element to element parent, or 'host' in case of ShadowDOM\n element = element.parentNode || element.host;\n\n if (element === fabric.document) {\n left = body.scrollLeft || docElement.scrollLeft || 0;\n top = body.scrollTop || docElement.scrollTop || 0;\n }\n else {\n left += element.scrollLeft || 0;\n top += element.scrollTop || 0;\n }\n\n if (element.nodeType === 1 && element.style.position === 'fixed') {\n break;\n }\n }\n\n return { left: left, top: top };\n }\n\n /**\n * Returns offset for a given element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to get offset for\n * @return {Object} Object with \"left\" and \"top\" properties\n */\n function getElementOffset(element) {\n var docElem,\n doc = element && element.ownerDocument,\n box = { left: 0, top: 0 },\n offset = { left: 0, top: 0 },\n scrollLeftTop,\n offsetAttributes = {\n borderLeftWidth: 'left',\n borderTopWidth: 'top',\n paddingLeft: 'left',\n paddingTop: 'top'\n };\n\n if (!doc) {\n return offset;\n }\n\n for (var attr in offsetAttributes) {\n offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0;\n }\n\n docElem = doc.documentElement;\n if ( typeof element.getBoundingClientRect !== 'undefined' ) {\n box = element.getBoundingClientRect();\n }\n\n scrollLeftTop = getScrollLeftTop(element);\n\n return {\n left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,\n top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top\n };\n }\n\n /**\n * Returns style attribute value of a given element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to get style attribute for\n * @param {String} attr Style attribute to get for element\n * @return {String} Style attribute value of the given element.\n */\n var getElementStyle;\n if (fabric.document.defaultView && fabric.document.defaultView.getComputedStyle) {\n getElementStyle = function(element, attr) {\n var style = fabric.document.defaultView.getComputedStyle(element, null);\n return style ? style[attr] : undefined;\n };\n }\n else {\n getElementStyle = function(element, attr) {\n var value = element.style[attr];\n if (!value && element.currentStyle) {\n value = element.currentStyle[attr];\n }\n return value;\n };\n }\n\n (function () {\n var style = fabric.document.documentElement.style,\n selectProp = 'userSelect' in style\n ? 'userSelect'\n : 'MozUserSelect' in style\n ? 'MozUserSelect'\n : 'WebkitUserSelect' in style\n ? 'WebkitUserSelect'\n : 'KhtmlUserSelect' in style\n ? 'KhtmlUserSelect'\n : '';\n\n /**\n * Makes element unselectable\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to make unselectable\n * @return {HTMLElement} Element that was passed in\n */\n function makeElementUnselectable(element) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = fabric.util.falseFunction;\n }\n if (selectProp) {\n element.style[selectProp] = 'none';\n }\n else if (typeof element.unselectable === 'string') {\n element.unselectable = 'on';\n }\n return element;\n }\n\n /**\n * Makes element selectable\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to make selectable\n * @return {HTMLElement} Element that was passed in\n */\n function makeElementSelectable(element) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = null;\n }\n if (selectProp) {\n element.style[selectProp] = '';\n }\n else if (typeof element.unselectable === 'string') {\n element.unselectable = '';\n }\n return element;\n }\n\n fabric.util.makeElementUnselectable = makeElementUnselectable;\n fabric.util.makeElementSelectable = makeElementSelectable;\n })();\n\n function getNodeCanvas(element) {\n var impl = fabric.jsdomImplForWrapper(element);\n return impl._canvas || impl._image;\n };\n\n function cleanUpJsdomNode(element) {\n if (!fabric.isLikelyNode) {\n return;\n }\n var impl = fabric.jsdomImplForWrapper(element);\n if (impl) {\n impl._image = null;\n impl._canvas = null;\n // unsure if necessary\n impl._currentSrc = null;\n impl._attributes = null;\n impl._classList = null;\n }\n }\n\n function setImageSmoothing(ctx, value) {\n ctx.imageSmoothingEnabled = ctx.imageSmoothingEnabled || ctx.webkitImageSmoothingEnabled\n || ctx.mozImageSmoothingEnabled || ctx.msImageSmoothingEnabled || ctx.oImageSmoothingEnabled;\n ctx.imageSmoothingEnabled = value;\n }\n\n /**\n * setImageSmoothing sets the context imageSmoothingEnabled property.\n * Used by canvas and by ImageObject.\n * @memberOf fabric.util\n * @since 4.0.0\n * @param {HTMLRenderingContext2D} ctx to set on\n * @param {Boolean} value true or false\n */\n fabric.util.setImageSmoothing = setImageSmoothing;\n fabric.util.getById = getById;\n fabric.util.toArray = toArray;\n fabric.util.addClass = addClass;\n fabric.util.makeElement = makeElement;\n fabric.util.wrapElement = wrapElement;\n fabric.util.getScrollLeftTop = getScrollLeftTop;\n fabric.util.getElementOffset = getElementOffset;\n fabric.util.getNodeCanvas = getNodeCanvas;\n fabric.util.cleanUpJsdomNode = cleanUpJsdomNode;\n\n})();\n\n\n(function() {\n\n function addParamToUrl(url, param) {\n return url + (/\\?/.test(url) ? '&' : '?') + param;\n }\n\n function emptyFn() { }\n\n /**\n * Cross-browser abstraction for sending XMLHttpRequest\n * @memberOf fabric.util\n * @param {String} url URL to send XMLHttpRequest to\n * @param {Object} [options] Options object\n * @param {String} [options.method=\"GET\"]\n * @param {String} [options.parameters] parameters to append to url in GET or in body\n * @param {String} [options.body] body to send with POST or PUT request\n * @param {Function} options.onComplete Callback to invoke when request is completed\n * @return {XMLHttpRequest} request\n */\n function request(url, options) {\n options || (options = { });\n\n var method = options.method ? options.method.toUpperCase() : 'GET',\n onComplete = options.onComplete || function() { },\n xhr = new fabric.window.XMLHttpRequest(),\n body = options.body || options.parameters;\n\n /** @ignore */\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n onComplete(xhr);\n xhr.onreadystatechange = emptyFn;\n }\n };\n\n if (method === 'GET') {\n body = null;\n if (typeof options.parameters === 'string') {\n url = addParamToUrl(url, options.parameters);\n }\n }\n\n xhr.open(method, url, true);\n\n if (method === 'POST' || method === 'PUT') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n\n xhr.send(body);\n return xhr;\n }\n\n fabric.util.request = request;\n})();\n\n\n/**\n * Wrapper around `console.log` (when available)\n * @param {*} [values] Values to log\n */\nfabric.log = console.log;\n\n/**\n * Wrapper around `console.warn` (when available)\n * @param {*} [values] Values to log as a warning\n */\nfabric.warn = console.warn;\n\n\n(function() {\n\n function noop() {\n return false;\n }\n\n function defaultEasing(t, b, c, d) {\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n }\n\n /**\n * Changes value from one to another within certain period of time, invoking callbacks as value is being changed.\n * @memberOf fabric.util\n * @param {Object} [options] Animation options\n * @param {Function} [options.onChange] Callback; invoked on every value change\n * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n * @param {Number} [options.startValue=0] Starting value\n * @param {Number} [options.endValue=100] Ending value\n * @param {Number} [options.byValue=100] Value to modify the property by\n * @param {Function} [options.easing] Easing function\n * @param {Number} [options.duration=500] Duration of change (in ms)\n * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called.\n */\n function animate(options) {\n\n requestAnimFrame(function(timestamp) {\n options || (options = { });\n\n var start = timestamp || +new Date(),\n duration = options.duration || 500,\n finish = start + duration, time,\n onChange = options.onChange || noop,\n abort = options.abort || noop,\n onComplete = options.onComplete || noop,\n easing = options.easing || defaultEasing,\n startValue = 'startValue' in options ? options.startValue : 0,\n endValue = 'endValue' in options ? options.endValue : 100,\n byValue = options.byValue || endValue - startValue;\n\n options.onStart && options.onStart();\n\n (function tick(ticktime) {\n // TODO: move abort call after calculation\n // and pass (current,valuePerc, timePerc) as arguments\n time = ticktime || +new Date();\n var currentTime = time > finish ? duration : (time - start),\n timePerc = currentTime / duration,\n current = easing(currentTime, startValue, byValue, duration),\n valuePerc = Math.abs((current - startValue) / byValue);\n if (abort()) {\n onComplete(endValue, 1, 1);\n return;\n }\n if (time > finish) {\n onChange(endValue, 1, 1);\n onComplete(endValue, 1, 1);\n return;\n }\n else {\n onChange(current, valuePerc, timePerc);\n requestAnimFrame(tick);\n }\n })(start);\n });\n }\n\n var _requestAnimFrame = fabric.window.requestAnimationFrame ||\n fabric.window.webkitRequestAnimationFrame ||\n fabric.window.mozRequestAnimationFrame ||\n fabric.window.oRequestAnimationFrame ||\n fabric.window.msRequestAnimationFrame ||\n function(callback) {\n return fabric.window.setTimeout(callback, 1000 / 60);\n };\n\n var _cancelAnimFrame = fabric.window.cancelAnimationFrame || fabric.window.clearTimeout;\n\n /**\n * requestAnimationFrame polyfill based on http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n * In order to get a precise start time, `requestAnimFrame` should be called as an entry into the method\n * @memberOf fabric.util\n * @param {Function} callback Callback to invoke\n * @param {DOMElement} element optional Element to associate with animation\n */\n function requestAnimFrame() {\n return _requestAnimFrame.apply(fabric.window, arguments);\n }\n\n function cancelAnimFrame() {\n return _cancelAnimFrame.apply(fabric.window, arguments);\n }\n\n fabric.util.animate = animate;\n fabric.util.requestAnimFrame = requestAnimFrame;\n fabric.util.cancelAnimFrame = cancelAnimFrame;\n})();\n\n\n(function() {\n // Calculate an in-between color. Returns a \"rgba()\" string.\n // Credit: Edwin Martin \n // http://www.bitstorm.org/jquery/color-animation/jquery.animate-colors.js\n function calculateColor(begin, end, pos) {\n var color = 'rgba('\n + parseInt((begin[0] + pos * (end[0] - begin[0])), 10) + ','\n + parseInt((begin[1] + pos * (end[1] - begin[1])), 10) + ','\n + parseInt((begin[2] + pos * (end[2] - begin[2])), 10);\n\n color += ',' + (begin && end ? parseFloat(begin[3] + pos * (end[3] - begin[3])) : 1);\n color += ')';\n return color;\n }\n\n /**\n * Changes the color from one to another within certain period of time, invoking callbacks as value is being changed.\n * @memberOf fabric.util\n * @param {String} fromColor The starting color in hex or rgb(a) format.\n * @param {String} toColor The starting color in hex or rgb(a) format.\n * @param {Number} [duration] Duration of change (in ms).\n * @param {Object} [options] Animation options\n * @param {Function} [options.onChange] Callback; invoked on every value change\n * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n * @param {Function} [options.colorEasing] Easing function. Note that this function only take two arguments (currentTime, duration). Thus the regular animation easing functions cannot be used.\n * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called.\n */\n function animateColor(fromColor, toColor, duration, options) {\n var startColor = new fabric.Color(fromColor).getSource(),\n endColor = new fabric.Color(toColor).getSource(),\n originalOnComplete = options.onComplete,\n originalOnChange = options.onChange;\n options = options || {};\n\n fabric.util.animate(fabric.util.object.extend(options, {\n duration: duration || 500,\n startValue: startColor,\n endValue: endColor,\n byValue: endColor,\n easing: function (currentTime, startValue, byValue, duration) {\n var posValue = options.colorEasing\n ? options.colorEasing(currentTime, duration)\n : 1 - Math.cos(currentTime / duration * (Math.PI / 2));\n return calculateColor(startValue, byValue, posValue);\n },\n // has to take in account for color restoring;\n onComplete: function(current, valuePerc, timePerc) {\n if (originalOnComplete) {\n return originalOnComplete(\n calculateColor(endColor, endColor, 0),\n valuePerc,\n timePerc\n );\n }\n },\n onChange: function(current, valuePerc, timePerc) {\n if (originalOnChange) {\n if (Array.isArray(current)) {\n return originalOnChange(\n calculateColor(current, current, 0),\n valuePerc,\n timePerc\n );\n }\n originalOnChange(current, valuePerc, timePerc);\n }\n }\n }));\n }\n\n fabric.util.animateColor = animateColor;\n\n})();\n\n\n(function() {\n\n function normalize(a, c, p, s) {\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n //handle the 0/0 case:\n if (c === 0 && a === 0) {\n s = p / (2 * Math.PI) * Math.asin(1);\n }\n else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n }\n return { a: a, c: c, p: p, s: s };\n }\n\n function elastic(opts, t, d) {\n return opts.a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin( (t * d - opts.s) * (2 * Math.PI) / opts.p );\n }\n\n /**\n * Cubic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n }\n\n /**\n * Cubic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutCubic(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t + b;\n }\n return c / 2 * ((t -= 2) * t * t + 2) + b;\n }\n\n /**\n * Quartic easing in\n * @memberOf fabric.util.ease\n */\n function easeInQuart(t, b, c, d) {\n return c * (t /= d) * t * t * t + b;\n }\n\n /**\n * Quartic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutQuart(t, b, c, d) {\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n }\n\n /**\n * Quartic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutQuart(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t * t + b;\n }\n return -c / 2 * ((t -= 2) * t * t * t - 2) + b;\n }\n\n /**\n * Quintic easing in\n * @memberOf fabric.util.ease\n */\n function easeInQuint(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n }\n\n /**\n * Quintic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutQuint(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n }\n\n /**\n * Quintic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutQuint(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t * t * t + b;\n }\n return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;\n }\n\n /**\n * Sinusoidal easing in\n * @memberOf fabric.util.ease\n */\n function easeInSine(t, b, c, d) {\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n }\n\n /**\n * Sinusoidal easing out\n * @memberOf fabric.util.ease\n */\n function easeOutSine(t, b, c, d) {\n return c * Math.sin(t / d * (Math.PI / 2)) + b;\n }\n\n /**\n * Sinusoidal easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutSine(t, b, c, d) {\n return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n }\n\n /**\n * Exponential easing in\n * @memberOf fabric.util.ease\n */\n function easeInExpo(t, b, c, d) {\n return (t === 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;\n }\n\n /**\n * Exponential easing out\n * @memberOf fabric.util.ease\n */\n function easeOutExpo(t, b, c, d) {\n return (t === d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n }\n\n /**\n * Exponential easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutExpo(t, b, c, d) {\n if (t === 0) {\n return b;\n }\n if (t === d) {\n return b + c;\n }\n t /= d / 2;\n if (t < 1) {\n return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n }\n return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;\n }\n\n /**\n * Circular easing in\n * @memberOf fabric.util.ease\n */\n function easeInCirc(t, b, c, d) {\n return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n }\n\n /**\n * Circular easing out\n * @memberOf fabric.util.ease\n */\n function easeOutCirc(t, b, c, d) {\n return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n }\n\n /**\n * Circular easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutCirc(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n }\n return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n }\n\n /**\n * Elastic easing in\n * @memberOf fabric.util.ease\n */\n function easeInElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d;\n if (t === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n var opts = normalize(a, c, p, s);\n return -elastic(opts, t, d) + b;\n }\n\n /**\n * Elastic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d;\n if (t === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n var opts = normalize(a, c, p, s);\n return opts.a * Math.pow(2, -10 * t) * Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) + opts.c + b;\n }\n\n /**\n * Elastic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d / 2;\n if (t === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n var opts = normalize(a, c, p, s);\n if (t < 1) {\n return -0.5 * elastic(opts, t, d) + b;\n }\n return opts.a * Math.pow(2, -10 * (t -= 1)) *\n Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) * 0.5 + opts.c + b;\n }\n\n /**\n * Backwards easing in\n * @memberOf fabric.util.ease\n */\n function easeInBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n }\n\n /**\n * Backwards easing out\n * @memberOf fabric.util.ease\n */\n function easeOutBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n\n /**\n * Backwards easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n t /= d / 2;\n if (t < 1) {\n return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;\n }\n return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;\n }\n\n /**\n * Bouncing easing in\n * @memberOf fabric.util.ease\n */\n function easeInBounce(t, b, c, d) {\n return c - easeOutBounce (d - t, 0, c, d) + b;\n }\n\n /**\n * Bouncing easing out\n * @memberOf fabric.util.ease\n */\n function easeOutBounce(t, b, c, d) {\n if ((t /= d) < (1 / 2.75)) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < (2 / 2.75)) {\n return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b;\n }\n else if (t < (2.5 / 2.75)) {\n return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b;\n }\n }\n\n /**\n * Bouncing easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutBounce(t, b, c, d) {\n if (t < d / 2) {\n return easeInBounce (t * 2, 0, c, d) * 0.5 + b;\n }\n return easeOutBounce(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n\n /**\n * Easing functions\n * See Easing Equations by Robert Penner\n * @namespace fabric.util.ease\n */\n fabric.util.ease = {\n\n /**\n * Quadratic easing in\n * @memberOf fabric.util.ease\n */\n easeInQuad: function(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n\n /**\n * Quadratic easing out\n * @memberOf fabric.util.ease\n */\n easeOutQuad: function(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n\n /**\n * Quadratic easing in and out\n * @memberOf fabric.util.ease\n */\n easeInOutQuad: function(t, b, c, d) {\n t /= (d / 2);\n if (t < 1) {\n return c / 2 * t * t + b;\n }\n return -c / 2 * ((--t) * (t - 2) - 1) + b;\n },\n\n /**\n * Cubic easing in\n * @memberOf fabric.util.ease\n */\n easeInCubic: function(t, b, c, d) {\n return c * (t /= d) * t * t + b;\n },\n\n easeOutCubic: easeOutCubic,\n easeInOutCubic: easeInOutCubic,\n easeInQuart: easeInQuart,\n easeOutQuart: easeOutQuart,\n easeInOutQuart: easeInOutQuart,\n easeInQuint: easeInQuint,\n easeOutQuint: easeOutQuint,\n easeInOutQuint: easeInOutQuint,\n easeInSine: easeInSine,\n easeOutSine: easeOutSine,\n easeInOutSine: easeInOutSine,\n easeInExpo: easeInExpo,\n easeOutExpo: easeOutExpo,\n easeInOutExpo: easeInOutExpo,\n easeInCirc: easeInCirc,\n easeOutCirc: easeOutCirc,\n easeInOutCirc: easeInOutCirc,\n easeInElastic: easeInElastic,\n easeOutElastic: easeOutElastic,\n easeInOutElastic: easeInOutElastic,\n easeInBack: easeInBack,\n easeOutBack: easeOutBack,\n easeInOutBack: easeInOutBack,\n easeInBounce: easeInBounce,\n easeOutBounce: easeOutBounce,\n easeInOutBounce: easeInOutBounce\n };\n\n})();\n\n\n(function(global) {\n\n 'use strict';\n\n /**\n * @name fabric\n * @namespace\n */\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n toFixed = fabric.util.toFixed,\n parseUnit = fabric.util.parseUnit,\n multiplyTransformMatrices = fabric.util.multiplyTransformMatrices,\n\n svgValidTagNames = ['path', 'circle', 'polygon', 'polyline', 'ellipse', 'rect', 'line',\n 'image', 'text'],\n svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'],\n svgInvalidAncestors = ['pattern', 'defs', 'symbol', 'metadata', 'clipPath', 'mask', 'desc'],\n svgValidParents = ['symbol', 'g', 'a', 'svg', 'clipPath', 'defs'],\n\n attributesMap = {\n cx: 'left',\n x: 'left',\n r: 'radius',\n cy: 'top',\n y: 'top',\n display: 'visible',\n visibility: 'visible',\n transform: 'transformMatrix',\n 'fill-opacity': 'fillOpacity',\n 'fill-rule': 'fillRule',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'letter-spacing': 'charSpacing',\n 'paint-order': 'paintFirst',\n 'stroke-dasharray': 'strokeDashArray',\n 'stroke-dashoffset': 'strokeDashOffset',\n 'stroke-linecap': 'strokeLineCap',\n 'stroke-linejoin': 'strokeLineJoin',\n 'stroke-miterlimit': 'strokeMiterLimit',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-width': 'strokeWidth',\n 'text-decoration': 'textDecoration',\n 'text-anchor': 'textAnchor',\n opacity: 'opacity',\n 'clip-path': 'clipPath',\n 'clip-rule': 'clipRule',\n 'vector-effect': 'strokeUniform',\n 'image-rendering': 'imageSmoothing',\n },\n\n colorAttributes = {\n stroke: 'strokeOpacity',\n fill: 'fillOpacity'\n },\n\n fSize = 'font-size', cPath = 'clip-path';\n\n fabric.svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames);\n fabric.svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements);\n fabric.svgInvalidAncestorsRegEx = getSvgRegex(svgInvalidAncestors);\n fabric.svgValidParentsRegEx = getSvgRegex(svgValidParents);\n\n fabric.cssRules = { };\n fabric.gradientDefs = { };\n fabric.clipPaths = { };\n\n function normalizeAttr(attr) {\n // transform attribute names\n if (attr in attributesMap) {\n return attributesMap[attr];\n }\n return attr;\n }\n\n function normalizeValue(attr, value, parentAttributes, fontSize) {\n var isArray = Object.prototype.toString.call(value) === '[object Array]',\n parsed;\n\n if ((attr === 'fill' || attr === 'stroke') && value === 'none') {\n value = '';\n }\n else if (attr === 'strokeUniform') {\n return (value === 'non-scaling-stroke');\n }\n else if (attr === 'strokeDashArray') {\n if (value === 'none') {\n value = null;\n }\n else {\n value = value.replace(/,/g, ' ').split(/\\s+/).map(parseFloat);\n }\n }\n else if (attr === 'transformMatrix') {\n if (parentAttributes && parentAttributes.transformMatrix) {\n value = multiplyTransformMatrices(\n parentAttributes.transformMatrix, fabric.parseTransformAttribute(value));\n }\n else {\n value = fabric.parseTransformAttribute(value);\n }\n }\n else if (attr === 'visible') {\n value = value !== 'none' && value !== 'hidden';\n // display=none on parent element always takes precedence over child element\n if (parentAttributes && parentAttributes.visible === false) {\n value = false;\n }\n }\n else if (attr === 'opacity') {\n value = parseFloat(value);\n if (parentAttributes && typeof parentAttributes.opacity !== 'undefined') {\n value *= parentAttributes.opacity;\n }\n }\n else if (attr === 'textAnchor' /* text-anchor */) {\n value = value === 'start' ? 'left' : value === 'end' ? 'right' : 'center';\n }\n else if (attr === 'charSpacing') {\n // parseUnit returns px and we convert it to em\n parsed = parseUnit(value, fontSize) / fontSize * 1000;\n }\n else if (attr === 'paintFirst') {\n var fillIndex = value.indexOf('fill');\n var strokeIndex = value.indexOf('stroke');\n var value = 'fill';\n if (fillIndex > -1 && strokeIndex > -1 && strokeIndex < fillIndex) {\n value = 'stroke';\n }\n else if (fillIndex === -1 && strokeIndex > -1) {\n value = 'stroke';\n }\n }\n else if (attr === 'href' || attr === 'xlink:href' || attr === 'font') {\n return value;\n }\n else if (attr === 'imageSmoothing') {\n return (value === 'optimizeQuality');\n }\n else {\n parsed = isArray ? value.map(parseUnit) : parseUnit(value, fontSize);\n }\n\n return (!isArray && isNaN(parsed) ? value : parsed);\n }\n\n /**\n * @private\n */\n function getSvgRegex(arr) {\n return new RegExp('^(' + arr.join('|') + ')\\\\b', 'i');\n }\n\n /**\n * @private\n * @param {Object} attributes Array of attributes to parse\n */\n function _setStrokeFillOpacity(attributes) {\n for (var attr in colorAttributes) {\n\n if (typeof attributes[colorAttributes[attr]] === 'undefined' || attributes[attr] === '') {\n continue;\n }\n\n if (typeof attributes[attr] === 'undefined') {\n if (!fabric.Object.prototype[attr]) {\n continue;\n }\n attributes[attr] = fabric.Object.prototype[attr];\n }\n\n if (attributes[attr].indexOf('url(') === 0) {\n continue;\n }\n\n var color = new fabric.Color(attributes[attr]);\n attributes[attr] = color.setAlpha(toFixed(color.getAlpha() * attributes[colorAttributes[attr]], 2)).toRgba();\n }\n return attributes;\n }\n\n /**\n * @private\n */\n function _getMultipleNodes(doc, nodeNames) {\n var nodeName, nodeArray = [], nodeList, i, len;\n for (i = 0, len = nodeNames.length; i < len; i++) {\n nodeName = nodeNames[i];\n nodeList = doc.getElementsByTagName(nodeName);\n nodeArray = nodeArray.concat(Array.prototype.slice.call(nodeList));\n }\n return nodeArray;\n }\n\n /**\n * Parses \"transform\" attribute, returning an array of values\n * @static\n * @function\n * @memberOf fabric\n * @param {String} attributeValue String containing attribute value\n * @return {Array} Array of 6 elements representing transformation matrix\n */\n fabric.parseTransformAttribute = (function() {\n function rotateMatrix(matrix, args) {\n var cos = fabric.util.cos(args[0]), sin = fabric.util.sin(args[0]),\n x = 0, y = 0;\n if (args.length === 3) {\n x = args[1];\n y = args[2];\n }\n\n matrix[0] = cos;\n matrix[1] = sin;\n matrix[2] = -sin;\n matrix[3] = cos;\n matrix[4] = x - (cos * x - sin * y);\n matrix[5] = y - (sin * x + cos * y);\n }\n\n function scaleMatrix(matrix, args) {\n var multiplierX = args[0],\n multiplierY = (args.length === 2) ? args[1] : args[0];\n\n matrix[0] = multiplierX;\n matrix[3] = multiplierY;\n }\n\n function skewMatrix(matrix, args, pos) {\n matrix[pos] = Math.tan(fabric.util.degreesToRadians(args[0]));\n }\n\n function translateMatrix(matrix, args) {\n matrix[4] = args[0];\n if (args.length === 2) {\n matrix[5] = args[1];\n }\n }\n\n // identity matrix\n var iMatrix = fabric.iMatrix,\n\n // == begin transform regexp\n number = fabric.reNum,\n\n commaWsp = fabric.commaWsp,\n\n skewX = '(?:(skewX)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n skewY = '(?:(skewY)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n rotate = '(?:(rotate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + ')' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n scale = '(?:(scale)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n translate = '(?:(translate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n matrix = '(?:(matrix)\\\\s*\\\\(\\\\s*' +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' +\n '\\\\s*\\\\))',\n\n transform = '(?:' +\n matrix + '|' +\n translate + '|' +\n scale + '|' +\n rotate + '|' +\n skewX + '|' +\n skewY +\n ')',\n\n transforms = '(?:' + transform + '(?:' + commaWsp + '*' + transform + ')*' + ')',\n\n transformList = '^\\\\s*(?:' + transforms + '?)\\\\s*$',\n\n // http://www.w3.org/TR/SVG/coords.html#TransformAttribute\n reTransformList = new RegExp(transformList),\n // == end transform regexp\n\n reTransform = new RegExp(transform, 'g');\n\n return function(attributeValue) {\n\n // start with identity matrix\n var matrix = iMatrix.concat(),\n matrices = [];\n\n // return if no argument was given or\n // an argument does not match transform attribute regexp\n if (!attributeValue || (attributeValue && !reTransformList.test(attributeValue))) {\n return matrix;\n }\n\n attributeValue.replace(reTransform, function(match) {\n\n var m = new RegExp(transform).exec(match).filter(function (match) {\n // match !== '' && match != null\n return (!!match);\n }),\n operation = m[1],\n args = m.slice(2).map(parseFloat);\n\n switch (operation) {\n case 'translate':\n translateMatrix(matrix, args);\n break;\n case 'rotate':\n args[0] = fabric.util.degreesToRadians(args[0]);\n rotateMatrix(matrix, args);\n break;\n case 'scale':\n scaleMatrix(matrix, args);\n break;\n case 'skewX':\n skewMatrix(matrix, args, 2);\n break;\n case 'skewY':\n skewMatrix(matrix, args, 1);\n break;\n case 'matrix':\n matrix = args;\n break;\n }\n\n // snapshot current matrix into matrices array\n matrices.push(matrix.concat());\n // reset\n matrix = iMatrix.concat();\n });\n\n var combinedMatrix = matrices[0];\n while (matrices.length > 1) {\n matrices.shift();\n combinedMatrix = fabric.util.multiplyTransformMatrices(combinedMatrix, matrices[0]);\n }\n return combinedMatrix;\n };\n })();\n\n /**\n * @private\n */\n function parseStyleString(style, oStyle) {\n var attr, value;\n style.replace(/;\\s*$/, '').split(';').forEach(function (chunk) {\n var pair = chunk.split(':');\n\n attr = pair[0].trim().toLowerCase();\n value = pair[1].trim();\n\n oStyle[attr] = value;\n });\n }\n\n /**\n * @private\n */\n function parseStyleObject(style, oStyle) {\n var attr, value;\n for (var prop in style) {\n if (typeof style[prop] === 'undefined') {\n continue;\n }\n\n attr = prop.toLowerCase();\n value = style[prop];\n\n oStyle[attr] = value;\n }\n }\n\n /**\n * @private\n */\n function getGlobalStylesForElement(element, svgUid) {\n var styles = { };\n for (var rule in fabric.cssRules[svgUid]) {\n if (elementMatchesRule(element, rule.split(' '))) {\n for (var property in fabric.cssRules[svgUid][rule]) {\n styles[property] = fabric.cssRules[svgUid][rule][property];\n }\n }\n }\n return styles;\n }\n\n /**\n * @private\n */\n function elementMatchesRule(element, selectors) {\n var firstMatching, parentMatching = true;\n //start from rightmost selector.\n firstMatching = selectorMatches(element, selectors.pop());\n if (firstMatching && selectors.length) {\n parentMatching = doesSomeParentMatch(element, selectors);\n }\n return firstMatching && parentMatching && (selectors.length === 0);\n }\n\n function doesSomeParentMatch(element, selectors) {\n var selector, parentMatching = true;\n while (element.parentNode && element.parentNode.nodeType === 1 && selectors.length) {\n if (parentMatching) {\n selector = selectors.pop();\n }\n element = element.parentNode;\n parentMatching = selectorMatches(element, selector);\n }\n return selectors.length === 0;\n }\n\n /**\n * @private\n */\n function selectorMatches(element, selector) {\n var nodeName = element.nodeName,\n classNames = element.getAttribute('class'),\n id = element.getAttribute('id'), matcher, i;\n // i check if a selector matches slicing away part from it.\n // if i get empty string i should match\n matcher = new RegExp('^' + nodeName, 'i');\n selector = selector.replace(matcher, '');\n if (id && selector.length) {\n matcher = new RegExp('#' + id + '(?![a-zA-Z\\\\-]+)', 'i');\n selector = selector.replace(matcher, '');\n }\n if (classNames && selector.length) {\n classNames = classNames.split(' ');\n for (i = classNames.length; i--;) {\n matcher = new RegExp('\\\\.' + classNames[i] + '(?![a-zA-Z\\\\-]+)', 'i');\n selector = selector.replace(matcher, '');\n }\n }\n return selector.length === 0;\n }\n\n /**\n * @private\n * to support IE8 missing getElementById on SVGdocument and on node xmlDOM\n */\n function elementById(doc, id) {\n var el;\n doc.getElementById && (el = doc.getElementById(id));\n if (el) {\n return el;\n }\n var node, i, len, nodelist = doc.getElementsByTagName('*');\n for (i = 0, len = nodelist.length; i < len; i++) {\n node = nodelist[i];\n if (id === node.getAttribute('id')) {\n return node;\n }\n }\n }\n\n /**\n * @private\n */\n function parseUseDirectives(doc) {\n var nodelist = _getMultipleNodes(doc, ['use', 'svg:use']), i = 0;\n while (nodelist.length && i < nodelist.length) {\n var el = nodelist[i],\n xlinkAttribute = el.getAttribute('xlink:href') || el.getAttribute('href');\n\n if (xlinkAttribute === null) {\n return;\n }\n\n var xlink = xlinkAttribute.substr(1),\n x = el.getAttribute('x') || 0,\n y = el.getAttribute('y') || 0,\n el2 = elementById(doc, xlink).cloneNode(true),\n currentTrans = (el2.getAttribute('transform') || '') + ' translate(' + x + ', ' + y + ')',\n parentNode,\n oldLength = nodelist.length, attr,\n j,\n attrs,\n len,\n namespace = fabric.svgNS;\n\n applyViewboxTransform(el2);\n if (/^svg$/i.test(el2.nodeName)) {\n var el3 = el2.ownerDocument.createElementNS(namespace, 'g');\n for (j = 0, attrs = el2.attributes, len = attrs.length; j < len; j++) {\n attr = attrs.item(j);\n el3.setAttributeNS(namespace, attr.nodeName, attr.nodeValue);\n }\n // el2.firstChild != null\n while (el2.firstChild) {\n el3.appendChild(el2.firstChild);\n }\n el2 = el3;\n }\n\n for (j = 0, attrs = el.attributes, len = attrs.length; j < len; j++) {\n attr = attrs.item(j);\n if (attr.nodeName === 'x' || attr.nodeName === 'y' ||\n attr.nodeName === 'xlink:href' || attr.nodeName === 'href') {\n continue;\n }\n\n if (attr.nodeName === 'transform') {\n currentTrans = attr.nodeValue + ' ' + currentTrans;\n }\n else {\n el2.setAttribute(attr.nodeName, attr.nodeValue);\n }\n }\n\n el2.setAttribute('transform', currentTrans);\n el2.setAttribute('instantiated_by_use', '1');\n el2.removeAttribute('id');\n parentNode = el.parentNode;\n parentNode.replaceChild(el2, el);\n // some browsers do not shorten nodelist after replaceChild (IE8)\n if (nodelist.length === oldLength) {\n i++;\n }\n }\n }\n\n // http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute\n // matches, e.g.: +14.56e-12, etc.\n var reViewBoxAttrValue = new RegExp(\n '^' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*' +\n '$'\n );\n\n /**\n * Add a element that envelop all child elements and makes the viewbox transformMatrix descend on all elements\n */\n function applyViewboxTransform(element) {\n if (!fabric.svgViewBoxElementsRegEx.test(element.nodeName)) {\n return;\n }\n var viewBoxAttr = element.getAttribute('viewBox'),\n scaleX = 1,\n scaleY = 1,\n minX = 0,\n minY = 0,\n viewBoxWidth, viewBoxHeight, matrix, el,\n widthAttr = element.getAttribute('width'),\n heightAttr = element.getAttribute('height'),\n x = element.getAttribute('x') || 0,\n y = element.getAttribute('y') || 0,\n preserveAspectRatio = element.getAttribute('preserveAspectRatio') || '',\n missingViewBox = (!viewBoxAttr || !(viewBoxAttr = viewBoxAttr.match(reViewBoxAttrValue))),\n missingDimAttr = (!widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%'),\n toBeParsed = missingViewBox && missingDimAttr,\n parsedDim = { }, translateMatrix = '', widthDiff = 0, heightDiff = 0;\n\n parsedDim.width = 0;\n parsedDim.height = 0;\n parsedDim.toBeParsed = toBeParsed;\n\n if (missingViewBox) {\n if (((x || y) && element.parentNode && element.parentNode.nodeName !== '#document')) {\n translateMatrix = ' translate(' + parseUnit(x) + ' ' + parseUnit(y) + ') ';\n matrix = (element.getAttribute('transform') || '') + translateMatrix;\n element.setAttribute('transform', matrix);\n element.removeAttribute('x');\n element.removeAttribute('y');\n }\n }\n\n if (toBeParsed) {\n return parsedDim;\n }\n\n if (missingViewBox) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n // set a transform for elements that have x y and are inner(only) SVGs\n return parsedDim;\n }\n minX = -parseFloat(viewBoxAttr[1]);\n minY = -parseFloat(viewBoxAttr[2]);\n viewBoxWidth = parseFloat(viewBoxAttr[3]);\n viewBoxHeight = parseFloat(viewBoxAttr[4]);\n parsedDim.minX = minX;\n parsedDim.minY = minY;\n parsedDim.viewBoxWidth = viewBoxWidth;\n parsedDim.viewBoxHeight = viewBoxHeight;\n if (!missingDimAttr) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n scaleX = parsedDim.width / viewBoxWidth;\n scaleY = parsedDim.height / viewBoxHeight;\n }\n else {\n parsedDim.width = viewBoxWidth;\n parsedDim.height = viewBoxHeight;\n }\n\n // default is to preserve aspect ratio\n preserveAspectRatio = fabric.util.parsePreserveAspectRatioAttribute(preserveAspectRatio);\n if (preserveAspectRatio.alignX !== 'none') {\n //translate all container for the effect of Mid, Min, Max\n if (preserveAspectRatio.meetOrSlice === 'meet') {\n scaleY = scaleX = (scaleX > scaleY ? scaleY : scaleX);\n // calculate additional translation to move the viewbox\n }\n if (preserveAspectRatio.meetOrSlice === 'slice') {\n scaleY = scaleX = (scaleX > scaleY ? scaleX : scaleY);\n // calculate additional translation to move the viewbox\n }\n widthDiff = parsedDim.width - viewBoxWidth * scaleX;\n heightDiff = parsedDim.height - viewBoxHeight * scaleX;\n if (preserveAspectRatio.alignX === 'Mid') {\n widthDiff /= 2;\n }\n if (preserveAspectRatio.alignY === 'Mid') {\n heightDiff /= 2;\n }\n if (preserveAspectRatio.alignX === 'Min') {\n widthDiff = 0;\n }\n if (preserveAspectRatio.alignY === 'Min') {\n heightDiff = 0;\n }\n }\n\n if (scaleX === 1 && scaleY === 1 && minX === 0 && minY === 0 && x === 0 && y === 0) {\n return parsedDim;\n }\n if ((x || y) && element.parentNode.nodeName !== '#document') {\n translateMatrix = ' translate(' + parseUnit(x) + ' ' + parseUnit(y) + ') ';\n }\n\n matrix = translateMatrix + ' matrix(' + scaleX +\n ' 0' +\n ' 0 ' +\n scaleY + ' ' +\n (minX * scaleX + widthDiff) + ' ' +\n (minY * scaleY + heightDiff) + ') ';\n // seems unused.\n // parsedDim.viewboxTransform = fabric.parseTransformAttribute(matrix);\n if (element.nodeName === 'svg') {\n el = element.ownerDocument.createElementNS(fabric.svgNS, 'g');\n // element.firstChild != null\n while (element.firstChild) {\n el.appendChild(element.firstChild);\n }\n element.appendChild(el);\n }\n else {\n el = element;\n el.removeAttribute('x');\n el.removeAttribute('y');\n matrix = el.getAttribute('transform') + matrix;\n }\n el.setAttribute('transform', matrix);\n return parsedDim;\n }\n\n function hasAncestorWithNodeName(element, nodeName) {\n while (element && (element = element.parentNode)) {\n if (element.nodeName && nodeName.test(element.nodeName.replace('svg:', ''))\n && !element.getAttribute('instantiated_by_use')) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Parses an SVG document, converts it to an array of corresponding fabric.* instances and passes them to a callback\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @param {Function} callback Callback to call when parsing is finished;\n * It's being passed an array of elements (parsed from a document).\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [parsingOptions] options for parsing document\n * @param {String} [parsingOptions.crossOrigin] crossOrigin settings\n */\n fabric.parseSVGDocument = function(doc, callback, reviver, parsingOptions) {\n if (!doc) {\n return;\n }\n\n parseUseDirectives(doc);\n\n var svgUid = fabric.Object.__uid++, i, len,\n options = applyViewboxTransform(doc),\n descendants = fabric.util.toArray(doc.getElementsByTagName('*'));\n options.crossOrigin = parsingOptions && parsingOptions.crossOrigin;\n options.svgUid = svgUid;\n\n if (descendants.length === 0 && fabric.isLikelyNode) {\n // we're likely in node, where \"o3-xml\" library fails to gEBTN(\"*\")\n // https://github.com/ajaxorg/node-o3-xml/issues/21\n descendants = doc.selectNodes('//*[name(.)!=\"svg\"]');\n var arr = [];\n for (i = 0, len = descendants.length; i < len; i++) {\n arr[i] = descendants[i];\n }\n descendants = arr;\n }\n\n var elements = descendants.filter(function(el) {\n applyViewboxTransform(el);\n return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', '')) &&\n !hasAncestorWithNodeName(el, fabric.svgInvalidAncestorsRegEx); // http://www.w3.org/TR/SVG/struct.html#DefsElement\n });\n if (!elements || (elements && !elements.length)) {\n callback && callback([], {});\n return;\n }\n var clipPaths = { };\n descendants.filter(function(el) {\n return el.nodeName.replace('svg:', '') === 'clipPath';\n }).forEach(function(el) {\n var id = el.getAttribute('id');\n clipPaths[id] = fabric.util.toArray(el.getElementsByTagName('*')).filter(function(el) {\n return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', ''));\n });\n });\n fabric.gradientDefs[svgUid] = fabric.getGradientDefs(doc);\n fabric.cssRules[svgUid] = fabric.getCSSRules(doc);\n fabric.clipPaths[svgUid] = clipPaths;\n // Precedence of rules: style > class > attribute\n fabric.parseElements(elements, function(instances, elements) {\n if (callback) {\n callback(instances, options, elements, descendants);\n delete fabric.gradientDefs[svgUid];\n delete fabric.cssRules[svgUid];\n delete fabric.clipPaths[svgUid];\n }\n }, clone(options), reviver, parsingOptions);\n };\n\n function recursivelyParseGradientsXlink(doc, gradient) {\n var gradientsAttrs = ['gradientTransform', 'x1', 'x2', 'y1', 'y2', 'gradientUnits', 'cx', 'cy', 'r', 'fx', 'fy'],\n xlinkAttr = 'xlink:href',\n xLink = gradient.getAttribute(xlinkAttr).substr(1),\n referencedGradient = elementById(doc, xLink);\n if (referencedGradient && referencedGradient.getAttribute(xlinkAttr)) {\n recursivelyParseGradientsXlink(doc, referencedGradient);\n }\n gradientsAttrs.forEach(function(attr) {\n if (referencedGradient && !gradient.hasAttribute(attr) && referencedGradient.hasAttribute(attr)) {\n gradient.setAttribute(attr, referencedGradient.getAttribute(attr));\n }\n });\n if (!gradient.children.length) {\n var referenceClone = referencedGradient.cloneNode(true);\n while (referenceClone.firstChild) {\n gradient.appendChild(referenceClone.firstChild);\n }\n }\n gradient.removeAttribute(xlinkAttr);\n }\n\n var reFontDeclaration = new RegExp(\n '(normal|italic)?\\\\s*(normal|small-caps)?\\\\s*' +\n '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\\\s*(' +\n fabric.reNum +\n '(?:px|cm|mm|em|pt|pc|in)*)(?:\\\\/(normal|' + fabric.reNum + '))?\\\\s+(.*)');\n\n extend(fabric, {\n /**\n * Parses a short font declaration, building adding its properties to a style object\n * @static\n * @function\n * @memberOf fabric\n * @param {String} value font declaration\n * @param {Object} oStyle definition\n */\n parseFontDeclaration: function(value, oStyle) {\n var match = value.match(reFontDeclaration);\n\n if (!match) {\n return;\n }\n var fontStyle = match[1],\n // font variant is not used\n // fontVariant = match[2],\n fontWeight = match[3],\n fontSize = match[4],\n lineHeight = match[5],\n fontFamily = match[6];\n\n if (fontStyle) {\n oStyle.fontStyle = fontStyle;\n }\n if (fontWeight) {\n oStyle.fontWeight = isNaN(parseFloat(fontWeight)) ? fontWeight : parseFloat(fontWeight);\n }\n if (fontSize) {\n oStyle.fontSize = parseUnit(fontSize);\n }\n if (fontFamily) {\n oStyle.fontFamily = fontFamily;\n }\n if (lineHeight) {\n oStyle.lineHeight = lineHeight === 'normal' ? 1 : lineHeight;\n }\n },\n\n /**\n * Parses an SVG document, returning all of the gradient declarations found in it\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @return {Object} Gradient definitions; key corresponds to element id, value -- to gradient definition element\n */\n getGradientDefs: function(doc) {\n var tagArray = [\n 'linearGradient',\n 'radialGradient',\n 'svg:linearGradient',\n 'svg:radialGradient'],\n elList = _getMultipleNodes(doc, tagArray),\n el, j = 0, gradientDefs = { };\n j = elList.length;\n while (j--) {\n el = elList[j];\n if (el.getAttribute('xlink:href')) {\n recursivelyParseGradientsXlink(doc, el);\n }\n gradientDefs[el.getAttribute('id')] = el;\n }\n return gradientDefs;\n },\n\n /**\n * Returns an object of attributes' name/value, given element and an array of attribute names;\n * Parses parent \"g\" nodes recursively upwards.\n * @static\n * @memberOf fabric\n * @param {DOMElement} element Element to parse\n * @param {Array} attributes Array of attributes to parse\n * @return {Object} object containing parsed attributes' names/values\n */\n parseAttributes: function(element, attributes, svgUid) {\n\n if (!element) {\n return;\n }\n\n var value,\n parentAttributes = { },\n fontSize, parentFontSize;\n\n if (typeof svgUid === 'undefined') {\n svgUid = element.getAttribute('svgUid');\n }\n // if there's a parent container (`g` or `a` or `symbol` node), parse its attributes recursively upwards\n if (element.parentNode && fabric.svgValidParentsRegEx.test(element.parentNode.nodeName)) {\n parentAttributes = fabric.parseAttributes(element.parentNode, attributes, svgUid);\n }\n\n var ownAttributes = attributes.reduce(function(memo, attr) {\n value = element.getAttribute(attr);\n if (value) { // eslint-disable-line\n memo[attr] = value;\n }\n return memo;\n }, { });\n // add values parsed from style, which take precedence over attributes\n // (see: http://www.w3.org/TR/SVG/styling.html#UsingPresentationAttributes)\n var cssAttrs = extend(\n getGlobalStylesForElement(element, svgUid),\n fabric.parseStyleAttribute(element)\n );\n ownAttributes = extend(\n ownAttributes,\n cssAttrs\n );\n if (cssAttrs[cPath]) {\n element.setAttribute(cPath, cssAttrs[cPath]);\n }\n fontSize = parentFontSize = parentAttributes.fontSize || fabric.Text.DEFAULT_SVG_FONT_SIZE;\n if (ownAttributes[fSize]) {\n // looks like the minimum should be 9px when dealing with ems. this is what looks like in browsers.\n ownAttributes[fSize] = fontSize = parseUnit(ownAttributes[fSize], parentFontSize);\n }\n\n var normalizedAttr, normalizedValue, normalizedStyle = {};\n for (var attr in ownAttributes) {\n normalizedAttr = normalizeAttr(attr);\n normalizedValue = normalizeValue(normalizedAttr, ownAttributes[attr], parentAttributes, fontSize);\n normalizedStyle[normalizedAttr] = normalizedValue;\n }\n if (normalizedStyle && normalizedStyle.font) {\n fabric.parseFontDeclaration(normalizedStyle.font, normalizedStyle);\n }\n var mergedAttrs = extend(parentAttributes, normalizedStyle);\n return fabric.svgValidParentsRegEx.test(element.nodeName) ? mergedAttrs : _setStrokeFillOpacity(mergedAttrs);\n },\n\n /**\n * Transforms an array of svg elements to corresponding fabric.* instances\n * @static\n * @memberOf fabric\n * @param {Array} elements Array of elements to parse\n * @param {Function} callback Being passed an array of fabric instances (transformed from SVG elements)\n * @param {Object} [options] Options object\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n */\n parseElements: function(elements, callback, options, reviver, parsingOptions) {\n new fabric.ElementsParser(elements, callback, options, reviver, parsingOptions).parse();\n },\n\n /**\n * Parses \"style\" attribute, retuning an object with values\n * @static\n * @memberOf fabric\n * @param {SVGElement} element Element to parse\n * @return {Object} Objects with values parsed from style attribute of an element\n */\n parseStyleAttribute: function(element) {\n var oStyle = { },\n style = element.getAttribute('style');\n\n if (!style) {\n return oStyle;\n }\n\n if (typeof style === 'string') {\n parseStyleString(style, oStyle);\n }\n else {\n parseStyleObject(style, oStyle);\n }\n\n return oStyle;\n },\n\n /**\n * Parses \"points\" attribute, returning an array of values\n * @static\n * @memberOf fabric\n * @param {String} points points attribute string\n * @return {Array} array of points\n */\n parsePointsAttribute: function(points) {\n\n // points attribute is required and must not be empty\n if (!points) {\n return null;\n }\n\n // replace commas with whitespace and remove bookending whitespace\n points = points.replace(/,/g, ' ').trim();\n\n points = points.split(/\\s+/);\n var parsedPoints = [], i, len;\n\n for (i = 0, len = points.length; i < len; i += 2) {\n parsedPoints.push({\n x: parseFloat(points[i]),\n y: parseFloat(points[i + 1])\n });\n }\n\n // odd number of points is an error\n // if (parsedPoints.length % 2 !== 0) {\n // return null;\n // }\n\n return parsedPoints;\n },\n\n /**\n * Returns CSS rules for a given SVG document\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @return {Object} CSS rules of this document\n */\n getCSSRules: function(doc) {\n var styles = doc.getElementsByTagName('style'), i, len,\n allRules = { }, rules;\n\n // very crude parsing of style contents\n for (i = 0, len = styles.length; i < len; i++) {\n var styleContents = styles[i].textContent;\n\n // remove comments\n styleContents = styleContents.replace(/\\/\\*[\\s\\S]*?\\*\\//g, '');\n if (styleContents.trim() === '') {\n continue;\n }\n rules = styleContents.match(/[^{]*\\{[\\s\\S]*?\\}/g);\n rules = rules.map(function(rule) { return rule.trim(); });\n // eslint-disable-next-line no-loop-func\n rules.forEach(function(rule) {\n\n var match = rule.match(/([\\s\\S]*?)\\s*\\{([^}]*)\\}/),\n ruleObj = { }, declaration = match[2].trim(),\n propertyValuePairs = declaration.replace(/;$/, '').split(/\\s*;\\s*/);\n\n for (i = 0, len = propertyValuePairs.length; i < len; i++) {\n var pair = propertyValuePairs[i].split(/\\s*:\\s*/),\n property = pair[0],\n value = pair[1];\n ruleObj[property] = value;\n }\n rule = match[1];\n rule.split(',').forEach(function(_rule) {\n _rule = _rule.replace(/^svg/i, '').trim();\n if (_rule === '') {\n return;\n }\n if (allRules[_rule]) {\n fabric.util.object.extend(allRules[_rule], ruleObj);\n }\n else {\n allRules[_rule] = fabric.util.object.clone(ruleObj);\n }\n });\n });\n }\n return allRules;\n },\n\n /**\n * Takes url corresponding to an SVG document, and parses it into a set of fabric objects.\n * Note that SVG is fetched via XMLHttpRequest, so it needs to conform to SOP (Same Origin Policy)\n * @memberOf fabric\n * @param {String} url\n * @param {Function} callback\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [options] Object containing options for parsing\n * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources\n */\n loadSVGFromURL: function(url, callback, reviver, options) {\n\n url = url.replace(/^\\n\\s*/, '').trim();\n new fabric.util.request(url, {\n method: 'get',\n onComplete: onComplete\n });\n\n function onComplete(r) {\n\n var xml = r.responseXML;\n if (!xml || !xml.documentElement) {\n callback && callback(null);\n return false;\n }\n\n fabric.parseSVGDocument(xml.documentElement, function (results, _options, elements, allElements) {\n callback && callback(results, _options, elements, allElements);\n }, reviver, options);\n }\n },\n\n /**\n * Takes string corresponding to an SVG document, and parses it into a set of fabric objects\n * @memberOf fabric\n * @param {String} string\n * @param {Function} callback\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [options] Object containing options for parsing\n * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources\n */\n loadSVGFromString: function(string, callback, reviver, options) {\n var parser = new fabric.window.DOMParser(),\n doc = parser.parseFromString(string.trim(), 'text/xml');\n fabric.parseSVGDocument(doc.documentElement, function (results, _options, elements, allElements) {\n callback(results, _options, elements, allElements);\n }, reviver, options);\n }\n });\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\nfabric.ElementsParser = function(elements, callback, options, reviver, parsingOptions, doc) {\n this.elements = elements;\n this.callback = callback;\n this.options = options;\n this.reviver = reviver;\n this.svgUid = (options && options.svgUid) || 0;\n this.parsingOptions = parsingOptions;\n this.regexUrl = /^url\\(['\"]?#([^'\"]+)['\"]?\\)/g;\n this.doc = doc;\n};\n\n(function(proto) {\n proto.parse = function() {\n this.instances = new Array(this.elements.length);\n this.numElements = this.elements.length;\n this.createObjects();\n };\n\n proto.createObjects = function() {\n var _this = this;\n this.elements.forEach(function(element, i) {\n element.setAttribute('svgUid', _this.svgUid);\n _this.createObject(element, i);\n });\n };\n\n proto.findTag = function(el) {\n return fabric[fabric.util.string.capitalize(el.tagName.replace('svg:', ''))];\n };\n\n proto.createObject = function(el, index) {\n var klass = this.findTag(el);\n if (klass && klass.fromElement) {\n try {\n klass.fromElement(el, this.createCallback(index, el), this.options);\n }\n catch (err) {\n fabric.log(err);\n }\n }\n else {\n this.checkIfDone();\n }\n };\n\n proto.createCallback = function(index, el) {\n var _this = this;\n return function(obj) {\n var _options;\n _this.resolveGradient(obj, el, 'fill');\n _this.resolveGradient(obj, el, 'stroke');\n if (obj instanceof fabric.Image && obj._originalElement) {\n _options = obj.parsePreserveAspectRatioAttribute(el);\n }\n obj._removeTransformMatrix(_options);\n _this.resolveClipPath(obj, el);\n _this.reviver && _this.reviver(el, obj);\n _this.instances[index] = obj;\n _this.checkIfDone();\n };\n };\n\n proto.extractPropertyDefinition = function(obj, property, storage) {\n var value = obj[property], regex = this.regexUrl;\n if (!regex.test(value)) {\n return;\n }\n regex.lastIndex = 0;\n var id = regex.exec(value)[1];\n regex.lastIndex = 0;\n return fabric[storage][this.svgUid][id];\n };\n\n proto.resolveGradient = function(obj, el, property) {\n var gradientDef = this.extractPropertyDefinition(obj, property, 'gradientDefs');\n if (gradientDef) {\n var opacityAttr = el.getAttribute(property + '-opacity');\n var gradient = fabric.Gradient.fromElement(gradientDef, obj, opacityAttr, this.options);\n obj.set(property, gradient);\n }\n };\n\n proto.createClipPathCallback = function(obj, container) {\n return function(_newObj) {\n _newObj._removeTransformMatrix();\n _newObj.fillRule = _newObj.clipRule;\n container.push(_newObj);\n };\n };\n\n proto.resolveClipPath = function(obj, usingElement) {\n var clipPath = this.extractPropertyDefinition(obj, 'clipPath', 'clipPaths'),\n element, klass, objTransformInv, container, gTransform, options;\n if (clipPath) {\n container = [];\n objTransformInv = fabric.util.invertTransform(obj.calcTransformMatrix());\n // move the clipPath tag as sibling to the real element that is using it\n var clipPathTag = clipPath[0].parentNode;\n var clipPathOwner = usingElement;\n while (clipPathOwner.parentNode && clipPathOwner.getAttribute('clip-path') !== obj.clipPath) {\n clipPathOwner = clipPathOwner.parentNode;\n }\n clipPathOwner.parentNode.appendChild(clipPathTag);\n for (var i = 0; i < clipPath.length; i++) {\n element = clipPath[i];\n klass = this.findTag(element);\n klass.fromElement(\n element,\n this.createClipPathCallback(obj, container),\n this.options\n );\n }\n if (container.length === 1) {\n clipPath = container[0];\n }\n else {\n clipPath = new fabric.Group(container);\n }\n gTransform = fabric.util.multiplyTransformMatrices(\n objTransformInv,\n clipPath.calcTransformMatrix()\n );\n if (clipPath.clipPath) {\n this.resolveClipPath(clipPath, clipPathOwner);\n }\n var options = fabric.util.qrDecompose(gTransform);\n clipPath.flipX = false;\n clipPath.flipY = false;\n clipPath.set('scaleX', options.scaleX);\n clipPath.set('scaleY', options.scaleY);\n clipPath.angle = options.angle;\n clipPath.skewX = options.skewX;\n clipPath.skewY = 0;\n clipPath.setPositionByOrigin({ x: options.translateX, y: options.translateY }, 'center', 'center');\n obj.clipPath = clipPath;\n }\n else {\n // if clip-path does not resolve to any element, delete the property.\n delete obj.clipPath;\n }\n };\n\n proto.checkIfDone = function() {\n if (--this.numElements === 0) {\n this.instances = this.instances.filter(function(el) {\n // eslint-disable-next-line no-eq-null, eqeqeq\n return el != null;\n });\n this.callback(this.instances, this.elements);\n }\n };\n})(fabric.ElementsParser.prototype);\n\n\n(function(global) {\n\n 'use strict';\n\n /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Point) {\n fabric.warn('fabric.Point is already defined');\n return;\n }\n\n fabric.Point = Point;\n\n /**\n * Point class\n * @class fabric.Point\n * @memberOf fabric\n * @constructor\n * @param {Number} x\n * @param {Number} y\n * @return {fabric.Point} thisArg\n */\n function Point(x, y) {\n this.x = x;\n this.y = y;\n }\n\n Point.prototype = /** @lends fabric.Point.prototype */ {\n\n type: 'point',\n\n constructor: Point,\n\n /**\n * Adds another point to this one and returns another one\n * @param {fabric.Point} that\n * @return {fabric.Point} new Point instance with added values\n */\n add: function (that) {\n return new Point(this.x + that.x, this.y + that.y);\n },\n\n /**\n * Adds another point to this one\n * @param {fabric.Point} that\n * @return {fabric.Point} thisArg\n * @chainable\n */\n addEquals: function (that) {\n this.x += that.x;\n this.y += that.y;\n return this;\n },\n\n /**\n * Adds value to this point and returns a new one\n * @param {Number} scalar\n * @return {fabric.Point} new Point with added value\n */\n scalarAdd: function (scalar) {\n return new Point(this.x + scalar, this.y + scalar);\n },\n\n /**\n * Adds value to this point\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n scalarAddEquals: function (scalar) {\n this.x += scalar;\n this.y += scalar;\n return this;\n },\n\n /**\n * Subtracts another point from this point and returns a new one\n * @param {fabric.Point} that\n * @return {fabric.Point} new Point object with subtracted values\n */\n subtract: function (that) {\n return new Point(this.x - that.x, this.y - that.y);\n },\n\n /**\n * Subtracts another point from this point\n * @param {fabric.Point} that\n * @return {fabric.Point} thisArg\n * @chainable\n */\n subtractEquals: function (that) {\n this.x -= that.x;\n this.y -= that.y;\n return this;\n },\n\n /**\n * Subtracts value from this point and returns a new one\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n scalarSubtract: function (scalar) {\n return new Point(this.x - scalar, this.y - scalar);\n },\n\n /**\n * Subtracts value from this point\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n scalarSubtractEquals: function (scalar) {\n this.x -= scalar;\n this.y -= scalar;\n return this;\n },\n\n /**\n * Multiplies this point by a value and returns a new one\n * TODO: rename in scalarMultiply in 2.0\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n multiply: function (scalar) {\n return new Point(this.x * scalar, this.y * scalar);\n },\n\n /**\n * Multiplies this point by a value\n * TODO: rename in scalarMultiplyEquals in 2.0\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n multiplyEquals: function (scalar) {\n this.x *= scalar;\n this.y *= scalar;\n return this;\n },\n\n /**\n * Divides this point by a value and returns a new one\n * TODO: rename in scalarDivide in 2.0\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n divide: function (scalar) {\n return new Point(this.x / scalar, this.y / scalar);\n },\n\n /**\n * Divides this point by a value\n * TODO: rename in scalarDivideEquals in 2.0\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n divideEquals: function (scalar) {\n this.x /= scalar;\n this.y /= scalar;\n return this;\n },\n\n /**\n * Returns true if this point is equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n eq: function (that) {\n return (this.x === that.x && this.y === that.y);\n },\n\n /**\n * Returns true if this point is less than another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n lt: function (that) {\n return (this.x < that.x && this.y < that.y);\n },\n\n /**\n * Returns true if this point is less than or equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n lte: function (that) {\n return (this.x <= that.x && this.y <= that.y);\n },\n\n /**\n\n * Returns true if this point is greater another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n gt: function (that) {\n return (this.x > that.x && this.y > that.y);\n },\n\n /**\n * Returns true if this point is greater than or equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n gte: function (that) {\n return (this.x >= that.x && this.y >= that.y);\n },\n\n /**\n * Returns new point which is the result of linear interpolation with this one and another one\n * @param {fabric.Point} that\n * @param {Number} t , position of interpolation, between 0 and 1 default 0.5\n * @return {fabric.Point}\n */\n lerp: function (that, t) {\n if (typeof t === 'undefined') {\n t = 0.5;\n }\n t = Math.max(Math.min(1, t), 0);\n return new Point(this.x + (that.x - this.x) * t, this.y + (that.y - this.y) * t);\n },\n\n /**\n * Returns distance from this point and another one\n * @param {fabric.Point} that\n * @return {Number}\n */\n distanceFrom: function (that) {\n var dx = this.x - that.x,\n dy = this.y - that.y;\n return Math.sqrt(dx * dx + dy * dy);\n },\n\n /**\n * Returns the point between this point and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n midPointFrom: function (that) {\n return this.lerp(that);\n },\n\n /**\n * Returns a new point which is the min of this and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n min: function (that) {\n return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y));\n },\n\n /**\n * Returns a new point which is the max of this and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n max: function (that) {\n return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y));\n },\n\n /**\n * Returns string representation of this point\n * @return {String}\n */\n toString: function () {\n return this.x + ',' + this.y;\n },\n\n /**\n * Sets x/y of this point\n * @param {Number} x\n * @param {Number} y\n * @chainable\n */\n setXY: function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n },\n\n /**\n * Sets x of this point\n * @param {Number} x\n * @chainable\n */\n setX: function (x) {\n this.x = x;\n return this;\n },\n\n /**\n * Sets y of this point\n * @param {Number} y\n * @chainable\n */\n setY: function (y) {\n this.y = y;\n return this;\n },\n\n /**\n * Sets x/y of this point from another point\n * @param {fabric.Point} that\n * @chainable\n */\n setFromPoint: function (that) {\n this.x = that.x;\n this.y = that.y;\n return this;\n },\n\n /**\n * Swaps x/y of this point and another point\n * @param {fabric.Point} that\n */\n swap: function (that) {\n var x = this.x,\n y = this.y;\n this.x = that.x;\n this.y = that.y;\n that.x = x;\n that.y = y;\n },\n\n /**\n * return a cloned instance of the point\n * @return {fabric.Point}\n */\n clone: function () {\n return new Point(this.x, this.y);\n }\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Intersection) {\n fabric.warn('fabric.Intersection is already defined');\n return;\n }\n\n /**\n * Intersection class\n * @class fabric.Intersection\n * @memberOf fabric\n * @constructor\n */\n function Intersection(status) {\n this.status = status;\n this.points = [];\n }\n\n fabric.Intersection = Intersection;\n\n fabric.Intersection.prototype = /** @lends fabric.Intersection.prototype */ {\n\n constructor: Intersection,\n\n /**\n * Appends a point to intersection\n * @param {fabric.Point} point\n * @return {fabric.Intersection} thisArg\n * @chainable\n */\n appendPoint: function (point) {\n this.points.push(point);\n return this;\n },\n\n /**\n * Appends points to intersection\n * @param {Array} points\n * @return {fabric.Intersection} thisArg\n * @chainable\n */\n appendPoints: function (points) {\n this.points = this.points.concat(points);\n return this;\n }\n };\n\n /**\n * Checks if one line intersects another\n * TODO: rename in intersectSegmentSegment\n * @static\n * @param {fabric.Point} a1\n * @param {fabric.Point} a2\n * @param {fabric.Point} b1\n * @param {fabric.Point} b2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectLineLine = function (a1, a2, b1, b2) {\n var result,\n uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x),\n ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x),\n uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n if (uB !== 0) {\n var ua = uaT / uB,\n ub = ubT / uB;\n if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) {\n result = new Intersection('Intersection');\n result.appendPoint(new fabric.Point(a1.x + ua * (a2.x - a1.x), a1.y + ua * (a2.y - a1.y)));\n }\n else {\n result = new Intersection();\n }\n }\n else {\n if (uaT === 0 || ubT === 0) {\n result = new Intersection('Coincident');\n }\n else {\n result = new Intersection('Parallel');\n }\n }\n return result;\n };\n\n /**\n * Checks if line intersects polygon\n * TODO: rename in intersectSegmentPolygon\n * fix detection of coincident\n * @static\n * @param {fabric.Point} a1\n * @param {fabric.Point} a2\n * @param {Array} points\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectLinePolygon = function(a1, a2, points) {\n var result = new Intersection(),\n length = points.length,\n b1, b2, inter, i;\n\n for (i = 0; i < length; i++) {\n b1 = points[i];\n b2 = points[(i + 1) % length];\n inter = Intersection.intersectLineLine(a1, a2, b1, b2);\n\n result.appendPoints(inter.points);\n }\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n /**\n * Checks if polygon intersects another polygon\n * @static\n * @param {Array} points1\n * @param {Array} points2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectPolygonPolygon = function (points1, points2) {\n var result = new Intersection(),\n length = points1.length, i;\n\n for (i = 0; i < length; i++) {\n var a1 = points1[i],\n a2 = points1[(i + 1) % length],\n inter = Intersection.intersectLinePolygon(a1, a2, points2);\n\n result.appendPoints(inter.points);\n }\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n /**\n * Checks if polygon intersects rectangle\n * @static\n * @param {Array} points\n * @param {fabric.Point} r1\n * @param {fabric.Point} r2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectPolygonRectangle = function (points, r1, r2) {\n var min = r1.min(r2),\n max = r1.max(r2),\n topRight = new fabric.Point(max.x, min.y),\n bottomLeft = new fabric.Point(min.x, max.y),\n inter1 = Intersection.intersectLinePolygon(min, topRight, points),\n inter2 = Intersection.intersectLinePolygon(topRight, max, points),\n inter3 = Intersection.intersectLinePolygon(max, bottomLeft, points),\n inter4 = Intersection.intersectLinePolygon(bottomLeft, min, points),\n result = new Intersection();\n\n result.appendPoints(inter1.points);\n result.appendPoints(inter2.points);\n result.appendPoints(inter3.points);\n result.appendPoints(inter4.points);\n\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Color) {\n fabric.warn('fabric.Color is already defined.');\n return;\n }\n\n /**\n * Color class\n * The purpose of {@link fabric.Color} is to abstract and encapsulate common color operations;\n * {@link fabric.Color} is a constructor and creates instances of {@link fabric.Color} objects.\n *\n * @class fabric.Color\n * @param {String} color optional in hex or rgb(a) or hsl format or from known color list\n * @return {fabric.Color} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#colors}\n */\n function Color(color) {\n if (!color) {\n this.setSource([0, 0, 0, 1]);\n }\n else {\n this._tryParsingColor(color);\n }\n }\n\n fabric.Color = Color;\n\n fabric.Color.prototype = /** @lends fabric.Color.prototype */ {\n\n /**\n * @private\n * @param {String|Array} color Color value to parse\n */\n _tryParsingColor: function(color) {\n var source;\n\n if (color in Color.colorNameMap) {\n color = Color.colorNameMap[color];\n }\n\n if (color === 'transparent') {\n source = [255, 255, 255, 0];\n }\n\n if (!source) {\n source = Color.sourceFromHex(color);\n }\n if (!source) {\n source = Color.sourceFromRgb(color);\n }\n if (!source) {\n source = Color.sourceFromHsl(color);\n }\n if (!source) {\n //if color is not recognize let's make black as canvas does\n source = [0, 0, 0, 1];\n }\n if (source) {\n this.setSource(source);\n }\n },\n\n /**\n * Adapted from https://github.com/mjijackson\n * @private\n * @param {Number} r Red color value\n * @param {Number} g Green color value\n * @param {Number} b Blue color value\n * @return {Array} Hsl color\n */\n _rgbToHsl: function(r, g, b) {\n r /= 255; g /= 255; b /= 255;\n\n var h, s, l,\n max = fabric.util.array.max([r, g, b]),\n min = fabric.util.array.min([r, g, b]);\n\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return [\n Math.round(h * 360),\n Math.round(s * 100),\n Math.round(l * 100)\n ];\n },\n\n /**\n * Returns source of this color (where source is an array representation; ex: [200, 200, 100, 1])\n * @return {Array}\n */\n getSource: function() {\n return this._source;\n },\n\n /**\n * Sets source of this color (where source is an array representation; ex: [200, 200, 100, 1])\n * @param {Array} source\n */\n setSource: function(source) {\n this._source = source;\n },\n\n /**\n * Returns color representation in RGB format\n * @return {String} ex: rgb(0-255,0-255,0-255)\n */\n toRgb: function() {\n var source = this.getSource();\n return 'rgb(' + source[0] + ',' + source[1] + ',' + source[2] + ')';\n },\n\n /**\n * Returns color representation in RGBA format\n * @return {String} ex: rgba(0-255,0-255,0-255,0-1)\n */\n toRgba: function() {\n var source = this.getSource();\n return 'rgba(' + source[0] + ',' + source[1] + ',' + source[2] + ',' + source[3] + ')';\n },\n\n /**\n * Returns color representation in HSL format\n * @return {String} ex: hsl(0-360,0%-100%,0%-100%)\n */\n toHsl: function() {\n var source = this.getSource(),\n hsl = this._rgbToHsl(source[0], source[1], source[2]);\n\n return 'hsl(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%)';\n },\n\n /**\n * Returns color representation in HSLA format\n * @return {String} ex: hsla(0-360,0%-100%,0%-100%,0-1)\n */\n toHsla: function() {\n var source = this.getSource(),\n hsl = this._rgbToHsl(source[0], source[1], source[2]);\n\n return 'hsla(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%,' + source[3] + ')';\n },\n\n /**\n * Returns color representation in HEX format\n * @return {String} ex: FF5555\n */\n toHex: function() {\n var source = this.getSource(), r, g, b;\n\n r = source[0].toString(16);\n r = (r.length === 1) ? ('0' + r) : r;\n\n g = source[1].toString(16);\n g = (g.length === 1) ? ('0' + g) : g;\n\n b = source[2].toString(16);\n b = (b.length === 1) ? ('0' + b) : b;\n\n return r.toUpperCase() + g.toUpperCase() + b.toUpperCase();\n },\n\n /**\n * Returns color representation in HEXA format\n * @return {String} ex: FF5555CC\n */\n toHexa: function() {\n var source = this.getSource(), a;\n\n a = Math.round(source[3] * 255);\n a = a.toString(16);\n a = (a.length === 1) ? ('0' + a) : a;\n\n return this.toHex() + a.toUpperCase();\n },\n\n /**\n * Gets value of alpha channel for this color\n * @return {Number} 0-1\n */\n getAlpha: function() {\n return this.getSource()[3];\n },\n\n /**\n * Sets value of alpha channel for this color\n * @param {Number} alpha Alpha value 0-1\n * @return {fabric.Color} thisArg\n */\n setAlpha: function(alpha) {\n var source = this.getSource();\n source[3] = alpha;\n this.setSource(source);\n return this;\n },\n\n /**\n * Transforms color to its grayscale representation\n * @return {fabric.Color} thisArg\n */\n toGrayscale: function() {\n var source = this.getSource(),\n average = parseInt((source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0), 10),\n currentAlpha = source[3];\n this.setSource([average, average, average, currentAlpha]);\n return this;\n },\n\n /**\n * Transforms color to its black and white representation\n * @param {Number} threshold\n * @return {fabric.Color} thisArg\n */\n toBlackWhite: function(threshold) {\n var source = this.getSource(),\n average = (source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0),\n currentAlpha = source[3];\n\n threshold = threshold || 127;\n\n average = (Number(average) < Number(threshold)) ? 0 : 255;\n this.setSource([average, average, average, currentAlpha]);\n return this;\n },\n\n /**\n * Overlays color with another color\n * @param {String|fabric.Color} otherColor\n * @return {fabric.Color} thisArg\n */\n overlayWith: function(otherColor) {\n if (!(otherColor instanceof Color)) {\n otherColor = new Color(otherColor);\n }\n\n var result = [],\n alpha = this.getAlpha(),\n otherAlpha = 0.5,\n source = this.getSource(),\n otherSource = otherColor.getSource(), i;\n\n for (i = 0; i < 3; i++) {\n result.push(Math.round((source[i] * (1 - otherAlpha)) + (otherSource[i] * otherAlpha)));\n }\n\n result[3] = alpha;\n this.setSource(result);\n return this;\n }\n };\n\n /**\n * Regex matching color in RGB or RGBA formats (ex: rgb(0, 0, 0), rgba(255, 100, 10, 0.5), rgba( 255 , 100 , 10 , 0.5 ), rgb(1,1,1), rgba(100%, 60%, 10%, 0.5))\n * @static\n * @field\n * @memberOf fabric.Color\n */\n // eslint-disable-next-line max-len\n fabric.Color.reRGBa = /^rgba?\\(\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*(?:\\s*,\\s*((?:\\d*\\.?\\d+)?)\\s*)?\\)$/i;\n\n /**\n * Regex matching color in HSL or HSLA formats (ex: hsl(200, 80%, 10%), hsla(300, 50%, 80%, 0.5), hsla( 300 , 50% , 80% , 0.5 ))\n * @static\n * @field\n * @memberOf fabric.Color\n */\n fabric.Color.reHSLa = /^hsla?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3}\\%)\\s*,\\s*(\\d{1,3}\\%)\\s*(?:\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)$/i;\n\n /**\n * Regex matching color in HEX format (ex: #FF5544CC, #FF5555, 010155, aff)\n * @static\n * @field\n * @memberOf fabric.Color\n */\n fabric.Color.reHex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\n /**\n * Map of the 148 color names with HEX code\n * @static\n * @field\n * @memberOf fabric.Color\n * @see: https://www.w3.org/TR/css3-color/#svg-color\n */\n fabric.Color.colorNameMap = {\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgrey: '#A9A9A9',\n darkgreen: '#006400',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n grey: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgrey: '#D3D3D3',\n lightgreen: '#90EE90',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n };\n\n /**\n * @private\n * @param {Number} p\n * @param {Number} q\n * @param {Number} t\n * @return {Number}\n */\n function hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n }\n\n /**\n * Returns new color object, when given a color in RGB format\n * @memberOf fabric.Color\n * @param {String} color Color value ex: rgb(0-255,0-255,0-255)\n * @return {fabric.Color}\n */\n fabric.Color.fromRgb = function(color) {\n return Color.fromSource(Color.sourceFromRgb(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in RGB or RGBA format\n * @memberOf fabric.Color\n * @param {String} color Color value ex: rgb(0-255,0-255,0-255), rgb(0%-100%,0%-100%,0%-100%)\n * @return {Array} source\n */\n fabric.Color.sourceFromRgb = function(color) {\n var match = color.match(Color.reRGBa);\n if (match) {\n var r = parseInt(match[1], 10) / (/%$/.test(match[1]) ? 100 : 1) * (/%$/.test(match[1]) ? 255 : 1),\n g = parseInt(match[2], 10) / (/%$/.test(match[2]) ? 100 : 1) * (/%$/.test(match[2]) ? 255 : 1),\n b = parseInt(match[3], 10) / (/%$/.test(match[3]) ? 100 : 1) * (/%$/.test(match[3]) ? 255 : 1);\n\n return [\n parseInt(r, 10),\n parseInt(g, 10),\n parseInt(b, 10),\n match[4] ? parseFloat(match[4]) : 1\n ];\n }\n };\n\n /**\n * Returns new color object, when given a color in RGBA format\n * @static\n * @function\n * @memberOf fabric.Color\n * @param {String} color\n * @return {fabric.Color}\n */\n fabric.Color.fromRgba = Color.fromRgb;\n\n /**\n * Returns new color object, when given a color in HSL format\n * @param {String} color Color value ex: hsl(0-260,0%-100%,0%-100%)\n * @memberOf fabric.Color\n * @return {fabric.Color}\n */\n fabric.Color.fromHsl = function(color) {\n return Color.fromSource(Color.sourceFromHsl(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HSL or HSLA format.\n * Adapted from https://github.com/mjijackson\n * @memberOf fabric.Color\n * @param {String} color Color value ex: hsl(0-360,0%-100%,0%-100%) or hsla(0-360,0%-100%,0%-100%, 0-1)\n * @return {Array} source\n * @see http://http://www.w3.org/TR/css3-color/#hsl-color\n */\n fabric.Color.sourceFromHsl = function(color) {\n var match = color.match(Color.reHSLa);\n if (!match) {\n return;\n }\n\n var h = (((parseFloat(match[1]) % 360) + 360) % 360) / 360,\n s = parseFloat(match[2]) / (/%$/.test(match[2]) ? 100 : 1),\n l = parseFloat(match[3]) / (/%$/.test(match[3]) ? 100 : 1),\n r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n }\n else {\n var q = l <= 0.5 ? l * (s + 1) : l + s - l * s,\n p = l * 2 - q;\n\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255),\n match[4] ? parseFloat(match[4]) : 1\n ];\n };\n\n /**\n * Returns new color object, when given a color in HSLA format\n * @static\n * @function\n * @memberOf fabric.Color\n * @param {String} color\n * @return {fabric.Color}\n */\n fabric.Color.fromHsla = Color.fromHsl;\n\n /**\n * Returns new color object, when given a color in HEX format\n * @static\n * @memberOf fabric.Color\n * @param {String} color Color value ex: FF5555\n * @return {fabric.Color}\n */\n fabric.Color.fromHex = function(color) {\n return Color.fromSource(Color.sourceFromHex(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HEX format\n * @static\n * @memberOf fabric.Color\n * @param {String} color ex: FF5555 or FF5544CC (RGBa)\n * @return {Array} source\n */\n fabric.Color.sourceFromHex = function(color) {\n if (color.match(Color.reHex)) {\n var value = color.slice(color.indexOf('#') + 1),\n isShortNotation = (value.length === 3 || value.length === 4),\n isRGBa = (value.length === 8 || value.length === 4),\n r = isShortNotation ? (value.charAt(0) + value.charAt(0)) : value.substring(0, 2),\n g = isShortNotation ? (value.charAt(1) + value.charAt(1)) : value.substring(2, 4),\n b = isShortNotation ? (value.charAt(2) + value.charAt(2)) : value.substring(4, 6),\n a = isRGBa ? (isShortNotation ? (value.charAt(3) + value.charAt(3)) : value.substring(6, 8)) : 'FF';\n\n return [\n parseInt(r, 16),\n parseInt(g, 16),\n parseInt(b, 16),\n parseFloat((parseInt(a, 16) / 255).toFixed(2))\n ];\n }\n };\n\n /**\n * Returns new color object, when given color in array representation (ex: [200, 100, 100, 0.5])\n * @static\n * @memberOf fabric.Color\n * @param {Array} source\n * @return {fabric.Color}\n */\n fabric.Color.fromSource = function(source) {\n var oColor = new Color();\n oColor.setSource(source);\n return oColor;\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n scaleMap = ['e', 'se', 's', 'sw', 'w', 'nw', 'n', 'ne', 'e'],\n skewMap = ['ns', 'nesw', 'ew', 'nwse'],\n controls = {},\n LEFT = 'left', TOP = 'top', RIGHT = 'right', BOTTOM = 'bottom', CENTER = 'center',\n opposite = {\n top: BOTTOM,\n bottom: TOP,\n left: RIGHT,\n right: LEFT,\n center: CENTER,\n }, radiansToDegrees = fabric.util.radiansToDegrees,\n sign = (Math.sign || function(x) { return ((x > 0) - (x < 0)) || +x; });\n\n /**\n * Combine control position and object angle to find the control direction compared\n * to the object center.\n * @param {fabric.Object} fabricObject the fabric object for which we are rendering controls\n * @param {fabric.Control} control the control class\n * @return {Number} 0 - 7 a quadrant number\n */\n function findCornerQuadrant(fabricObject, control) {\n var cornerAngle = fabricObject.angle + radiansToDegrees(Math.atan2(control.y, control.x)) + 360;\n return Math.round((cornerAngle % 360) / 45);\n }\n\n function fireEvent(eventName, options) {\n var target = options.transform.target,\n canvas = target.canvas,\n canvasOptions = fabric.util.object.clone(options);\n canvasOptions.target = target;\n canvas && canvas.fire('object:' + eventName, canvasOptions);\n target.fire(eventName, options);\n }\n\n /**\n * Inspect event and fabricObject properties to understand if the scaling action\n * @param {Event} eventData from the user action\n * @param {fabric.Object} fabricObject the fabric object about to scale\n * @return {Boolean} true if scale is proportional\n */\n function scaleIsProportional(eventData, fabricObject) {\n var canvas = fabricObject.canvas, uniScaleKey = canvas.uniScaleKey,\n uniformIsToggled = eventData[uniScaleKey];\n return (canvas.uniformScaling && !uniformIsToggled) ||\n (!canvas.uniformScaling && uniformIsToggled);\n }\n\n /**\n * Checks if transform is centered\n * @param {Object} transform transform data\n * @return {Boolean} true if transform is centered\n */\n function isTransformCentered(transform) {\n return transform.originX === CENTER && transform.originY === CENTER;\n }\n\n /**\n * Inspect fabricObject to understand if the current scaling action is allowed\n * @param {fabric.Object} fabricObject the fabric object about to scale\n * @param {String} by 'x' or 'y' or ''\n * @param {Boolean} scaleProportionally true if we are trying to scale proportionally\n * @return {Boolean} true if scaling is not allowed at current conditions\n */\n function scalingIsForbidden(fabricObject, by, scaleProportionally) {\n var lockX = fabricObject.lockScalingX, lockY = fabricObject.lockScalingY;\n if (lockX && lockY) {\n return true;\n }\n if (!by && (lockX || lockY) && scaleProportionally) {\n return true;\n }\n if (lockX && by === 'x') {\n return true;\n }\n if (lockY && by === 'y') {\n return true;\n }\n return false;\n }\n\n /**\n * return the correct cursor style for the scale action\n * @param {Event} eventData the javascript event that is causing the scale\n * @param {fabric.Control} control the control that is interested in the action\n * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n * @return {String} a valid css string for the cursor\n */\n function scaleCursorStyleHandler(eventData, control, fabricObject) {\n var notAllowed = 'not-allowed',\n scaleProportionally = scaleIsProportional(eventData, fabricObject),\n by = '';\n if (control.x !== 0 && control.y === 0) {\n by = 'x';\n }\n else if (control.x === 0 && control.y !== 0) {\n by = 'y';\n }\n if (scalingIsForbidden(fabricObject, by, scaleProportionally)) {\n return notAllowed;\n }\n var n = findCornerQuadrant(fabricObject, control);\n return scaleMap[n] + '-resize';\n }\n\n /**\n * return the correct cursor style for the skew action\n * @param {Event} eventData the javascript event that is causing the scale\n * @param {fabric.Control} control the control that is interested in the action\n * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n * @return {String} a valid css string for the cursor\n */\n function skewCursorStyleHandler(eventData, control, fabricObject) {\n var notAllowed = 'not-allowed';\n if (control.x !== 0 && fabricObject.lockSkewingY) {\n return notAllowed;\n }\n if (control.y !== 0 && fabricObject.lockSkewingX) {\n return notAllowed;\n }\n var n = findCornerQuadrant(fabricObject, control) % 4;\n return skewMap[n] + '-resize';\n }\n\n /**\n * Combine skew and scale style handlers to cover fabric standard use case\n * @param {Event} eventData the javascript event that is causing the scale\n * @param {fabric.Control} control the control that is interested in the action\n * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n * @return {String} a valid css string for the cursor\n */\n function scaleSkewCursorStyleHandler(eventData, control, fabricObject) {\n if (eventData[fabricObject.canvas.altActionKey]) {\n return controls.skewCursorStyleHandler(eventData, control, fabricObject);\n }\n return controls.scaleCursorStyleHandler(eventData, control, fabricObject);\n }\n\n /**\n * Inspect event, control and fabricObject to return the correct action name\n * @param {Event} eventData the javascript event that is causing the scale\n * @param {fabric.Control} control the control that is interested in the action\n * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n * @return {String} an action name\n */\n function scaleOrSkewActionName(eventData, control, fabricObject) {\n var isAlternative = eventData[fabricObject.canvas.altActionKey];\n if (control.x === 0) {\n // then is scaleY or skewX\n return isAlternative ? 'skewX' : 'scaleY';\n }\n if (control.y === 0) {\n // then is scaleY or skewX\n return isAlternative ? 'skewY' : 'scaleX';\n }\n }\n\n /**\n * Find the correct style for the control that is used for rotation.\n * this function is very simple and it just take care of not-allowed or standard cursor\n * @param {Event} eventData the javascript event that is causing the scale\n * @param {fabric.Control} control the control that is interested in the action\n * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n * @return {String} a valid css string for the cursor\n */\n function rotationStyleHandler(eventData, control, fabricObject) {\n if (fabricObject.lockRotation) {\n return 'not-allowed';\n }\n return control.cursorStyle;\n }\n\n function commonEventInfo(eventData, transform, x, y) {\n return {\n e: eventData,\n transform: transform,\n pointer: {\n x: x,\n y: y,\n }\n };\n }\n\n /**\n * Wrap an action handler with saving/restoring object position on the transform.\n * this is the code that permits to objects to keep their position while transforming.\n * @param {Function} actionHandler the function to wrap\n * @return {Function} a function with an action handler signature\n */\n function wrapWithFixedAnchor(actionHandler) {\n return function(eventData, transform, x, y) {\n var target = transform.target, centerPoint = target.getCenterPoint(),\n constraint = target.translateToOriginPoint(centerPoint, transform.originX, transform.originY),\n actionPerformed = actionHandler(eventData, transform, x, y);\n target.setPositionByOrigin(constraint, transform.originX, transform.originY);\n return actionPerformed;\n };\n }\n\n /**\n * Wrap an action handler with firing an event if the action is performed\n * @param {Function} actionHandler the function to wrap\n * @return {Function} a function with an action handler signature\n */\n function wrapWithFireEvent(eventName, actionHandler) {\n return function(eventData, transform, x, y) {\n var actionPerformed = actionHandler(eventData, transform, x, y);\n if (actionPerformed) {\n fireEvent(eventName, commonEventInfo(eventData, transform, x, y));\n }\n return actionPerformed;\n };\n }\n\n /**\n * Transforms a point described by x and y in a distance from the top left corner of the object\n * bounding box.\n * @param {Object} transform\n * @param {String} originX\n * @param {String} originY\n * @param {number} x\n * @param {number} y\n * @return {Fabric.Point} the normalized point\n */\n function getLocalPoint(transform, originX, originY, x, y) {\n var target = transform.target,\n control = target.controls[transform.corner],\n zoom = target.canvas.getZoom(),\n padding = target.padding / zoom,\n localPoint = target.toLocalPoint(new fabric.Point(x, y), originX, originY);\n if (localPoint.x >= padding) {\n localPoint.x -= padding;\n }\n if (localPoint.x <= -padding) {\n localPoint.x += padding;\n }\n if (localPoint.y >= padding) {\n localPoint.y -= padding;\n }\n if (localPoint.y <= padding) {\n localPoint.y += padding;\n }\n localPoint.x -= control.offsetX;\n localPoint.y -= control.offsetY;\n return localPoint;\n }\n\n /**\n * Detect if the fabric object is flipped on one side.\n * @param {fabric.Object} target\n * @return {Boolean} true if one flip, but not two.\n */\n function targetHasOneFlip(target) {\n return target.flipX !== target.flipY;\n }\n\n /**\n * Utility function to compensate the scale factor when skew is applied on both axes\n * @private\n */\n function compensateScaleForSkew(target, oppositeSkew, scaleToCompensate, axis, reference) {\n if (target[oppositeSkew] !== 0) {\n var newDim = target._getTransformedDimensions()[axis];\n var newValue = reference / newDim * target[scaleToCompensate];\n target.set(scaleToCompensate, newValue);\n }\n }\n\n /**\n * Action handler for skewing on the X axis\n * @private\n */\n function skewObjectX(eventData, transform, x, y) {\n var target = transform.target,\n // find how big the object would be, if there was no skewX. takes in account scaling\n dimNoSkew = target._getTransformedDimensions(0, target.skewY),\n localPoint = getLocalPoint(transform, transform.originX, transform.originY, x, y),\n // the mouse is in the center of the object, and we want it to stay there.\n // so the object will grow twice as much as the mouse.\n // this makes the skew growth to localPoint * 2 - dimNoSkew.\n totalSkewSize = Math.abs(localPoint.x * 2) - dimNoSkew.x,\n currentSkew = target.skewX, newSkew;\n if (totalSkewSize < 2) {\n // let's make it easy to go back to position 0.\n newSkew = 0;\n }\n else {\n newSkew = radiansToDegrees(\n Math.atan2((totalSkewSize / target.scaleX), (dimNoSkew.y / target.scaleY))\n );\n // now we have to find the sign of the skew.\n // it mostly depend on the origin of transformation.\n if (transform.originX === LEFT && transform.originY === BOTTOM) {\n newSkew = -newSkew;\n }\n if (transform.originX === RIGHT && transform.originY === TOP) {\n newSkew = -newSkew;\n }\n if (targetHasOneFlip(target)) {\n newSkew = -newSkew;\n }\n }\n var hasSkewed = currentSkew !== newSkew;\n if (hasSkewed) {\n var dimBeforeSkewing = target._getTransformedDimensions().y;\n target.set('skewX', newSkew);\n compensateScaleForSkew(target, 'skewY', 'scaleY', 'y', dimBeforeSkewing);\n }\n return hasSkewed;\n }\n\n /**\n * Action handler for skewing on the Y axis\n * @private\n */\n function skewObjectY(eventData, transform, x, y) {\n var target = transform.target,\n // find how big the object would be, if there was no skewX. takes in account scaling\n dimNoSkew = target._getTransformedDimensions(target.skewX, 0),\n localPoint = getLocalPoint(transform, transform.originX, transform.originY, x, y),\n // the mouse is in the center of the object, and we want it to stay there.\n // so the object will grow twice as much as the mouse.\n // this makes the skew growth to localPoint * 2 - dimNoSkew.\n totalSkewSize = Math.abs(localPoint.y * 2) - dimNoSkew.y,\n currentSkew = target.skewY, newSkew;\n if (totalSkewSize < 2) {\n // let's make it easy to go back to position 0.\n newSkew = 0;\n }\n else {\n newSkew = radiansToDegrees(\n Math.atan2((totalSkewSize / target.scaleY), (dimNoSkew.x / target.scaleX))\n );\n // now we have to find the sign of the skew.\n // it mostly depend on the origin of transformation.\n if (transform.originX === LEFT && transform.originY === BOTTOM) {\n newSkew = -newSkew;\n }\n if (transform.originX === RIGHT && transform.originY === TOP) {\n newSkew = -newSkew;\n }\n if (targetHasOneFlip(target)) {\n newSkew = -newSkew;\n }\n }\n var hasSkewed = currentSkew !== newSkew;\n if (hasSkewed) {\n var dimBeforeSkewing = target._getTransformedDimensions().x;\n target.set('skewY', newSkew);\n compensateScaleForSkew(target, 'skewX', 'scaleX', 'x', dimBeforeSkewing);\n }\n return hasSkewed;\n }\n\n /**\n * Wrapped Action handler for skewing on the Y axis, takes care of the\n * skew direction and determine the correct transform origin for the anchor point\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function skewHandlerX(eventData, transform, x, y) {\n // step1 figure out and change transform origin.\n // if skewX > 0 and originY bottom we anchor on right\n // if skewX > 0 and originY top we anchor on left\n // if skewX < 0 and originY bottom we anchor on left\n // if skewX < 0 and originY top we anchor on right\n // if skewX is 0, we look for mouse position to understand where are we going.\n var target = transform.target, currentSkew = target.skewX, originX, originY = transform.originY;\n if (target.lockSkewingX) {\n return false;\n }\n if (currentSkew === 0) {\n var localPointFromCenter = getLocalPoint(transform, CENTER, CENTER, x, y);\n if (localPointFromCenter.x > 0) {\n // we are pulling right, anchor left;\n originX = LEFT;\n }\n else {\n // we are pulling right, anchor right\n originX = RIGHT;\n }\n }\n else {\n if (currentSkew > 0) {\n originX = originY === TOP ? LEFT : RIGHT;\n }\n if (currentSkew < 0) {\n originX = originY === TOP ? RIGHT : LEFT;\n }\n // is the object flipped on one side only? swap the origin.\n if (targetHasOneFlip(target)) {\n originX = originX === LEFT ? RIGHT : LEFT;\n }\n }\n\n // once we have the origin, we find the anchor point\n transform.originX = originX;\n var finalHandler = wrapWithFireEvent('skewing', wrapWithFixedAnchor(skewObjectX));\n return finalHandler(eventData, transform, x, y);\n }\n\n /**\n * Wrapped Action handler for skewing on the Y axis, takes care of the\n * skew direction and determine the correct transform origin for the anchor point\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function skewHandlerY(eventData, transform, x, y) {\n // step1 figure out and change transform origin.\n // if skewY > 0 and originX left we anchor on top\n // if skewY > 0 and originX right we anchor on bottom\n // if skewY < 0 and originX left we anchor on bottom\n // if skewY < 0 and originX right we anchor on top\n // if skewY is 0, we look for mouse position to understand where are we going.\n var target = transform.target, currentSkew = target.skewY, originY, originX = transform.originX;\n if (target.lockSkewingY) {\n return false;\n }\n if (currentSkew === 0) {\n var localPointFromCenter = getLocalPoint(transform, CENTER, CENTER, x, y);\n if (localPointFromCenter.y > 0) {\n // we are pulling down, anchor up;\n originY = TOP;\n }\n else {\n // we are pulling up, anchor down\n originY = BOTTOM;\n }\n }\n else {\n if (currentSkew > 0) {\n originY = originX === LEFT ? TOP : BOTTOM;\n }\n if (currentSkew < 0) {\n originY = originX === LEFT ? BOTTOM : TOP;\n }\n // is the object flipped on one side only? swap the origin.\n if (targetHasOneFlip(target)) {\n originY = originY === TOP ? BOTTOM : TOP;\n }\n }\n\n // once we have the origin, we find the anchor point\n transform.originY = originY;\n var finalHandler = wrapWithFireEvent('skewing', wrapWithFixedAnchor(skewObjectY));\n return finalHandler(eventData, transform, x, y);\n }\n\n /**\n * Action handler for rotation and snapping, without anchor point.\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n * @private\n */\n function rotationWithSnapping(eventData, transform, x, y) {\n var t = transform,\n target = t.target,\n pivotPoint = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY);\n\n if (target.lockRotation) {\n return false;\n }\n\n var lastAngle = Math.atan2(t.ey - pivotPoint.y, t.ex - pivotPoint.x),\n curAngle = Math.atan2(y - pivotPoint.y, x - pivotPoint.x),\n angle = radiansToDegrees(curAngle - lastAngle + t.theta),\n hasRotated = true;\n\n if (target.snapAngle > 0) {\n var snapAngle = target.snapAngle,\n snapThreshold = target.snapThreshold || snapAngle,\n rightAngleLocked = Math.ceil(angle / snapAngle) * snapAngle,\n leftAngleLocked = Math.floor(angle / snapAngle) * snapAngle;\n\n if (Math.abs(angle - leftAngleLocked) < snapThreshold) {\n angle = leftAngleLocked;\n }\n else if (Math.abs(angle - rightAngleLocked) < snapThreshold) {\n angle = rightAngleLocked;\n }\n }\n\n // normalize angle to positive value\n if (angle < 0) {\n angle = 360 + angle;\n }\n angle %= 360;\n\n hasRotated = target.angle !== angle;\n target.angle = angle;\n return hasRotated;\n }\n\n /**\n * Basic scaling logic, reused with different constrain for scaling X,Y, freely or equally.\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @param {Object} options additional information for scaling\n * @param {String} options.by 'x', 'y', 'equally' or '' to indicate type of scaling\n * @return {Boolean} true if some change happened\n * @private\n */\n function scaleObject(eventData, transform, x, y, options) {\n options = options || {};\n var target = transform.target,\n lockScalingX = target.lockScalingX, lockScalingY = target.lockScalingY,\n by = options.by, newPoint, scaleX, scaleY, dim,\n scaleProportionally = scaleIsProportional(eventData, target),\n forbidScaling = scalingIsForbidden(target, by, scaleProportionally),\n signX, signY, gestureScale = transform.gestureScale;\n\n if (forbidScaling) {\n return false;\n }\n if (gestureScale) {\n scaleX = transform.scaleX * gestureScale;\n scaleY = transform.scaleY * gestureScale;\n }\n else {\n newPoint = getLocalPoint(transform, transform.originX, transform.originY, x, y);\n // use of sign: We use sign to detect change of direction of an action. sign usually change when\n // we cross the origin point with the mouse. So a scale flip for example. There is an issue when scaling\n // by center and scaling using one middle control ( default: mr, mt, ml, mb), the mouse movement can easily\n // cross many time the origin point and flip the object. so we need a way to filter out the noise.\n // This ternary here should be ok to filter out X scaling when we want Y only and vice versa.\n signX = by !== 'y' ? sign(newPoint.x) : 1;\n signY = by !== 'x' ? sign(newPoint.y) : 1;\n if (!transform.signX) {\n transform.signX = signX;\n }\n if (!transform.signY) {\n transform.signY = signY;\n }\n\n if (target.lockScalingFlip &&\n (transform.signX !== signX || transform.signY !== signY)\n ) {\n return false;\n }\n\n dim = target._getTransformedDimensions();\n // missing detection of flip and logic to switch the origin\n if (scaleProportionally && !by) {\n // uniform scaling\n var distance = Math.abs(newPoint.x) + Math.abs(newPoint.y),\n original = transform.original,\n originalDistance = Math.abs(dim.x * original.scaleX / target.scaleX) +\n Math.abs(dim.y * original.scaleY / target.scaleY),\n scale = distance / originalDistance;\n scaleX = original.scaleX * scale;\n scaleY = original.scaleY * scale;\n }\n else {\n scaleX = Math.abs(newPoint.x * target.scaleX / dim.x);\n scaleY = Math.abs(newPoint.y * target.scaleY / dim.y);\n }\n // if we are scaling by center, we need to double the scale\n if (isTransformCentered(transform)) {\n scaleX *= 2;\n scaleY *= 2;\n }\n if (transform.signX !== signX && by !== 'y') {\n transform.originX = opposite[transform.originX];\n scaleX *= -1;\n transform.signX = signX;\n }\n if (transform.signY !== signY && by !== 'x') {\n transform.originY = opposite[transform.originY];\n scaleY *= -1;\n transform.signY = signY;\n }\n }\n // minScale is taken are in the setter.\n var oldScaleX = target.scaleX, oldScaleY = target.scaleY;\n if (!by) {\n !lockScalingX && target.set('scaleX', scaleX);\n !lockScalingY && target.set('scaleY', scaleY);\n }\n else {\n // forbidden cases already handled on top here.\n by === 'x' && target.set('scaleX', scaleX);\n by === 'y' && target.set('scaleY', scaleY);\n }\n return oldScaleX !== target.scaleX || oldScaleY !== target.scaleY;\n }\n\n /**\n * Generic scaling logic, to scale from corners either equally or freely.\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function scaleObjectFromCorner(eventData, transform, x, y) {\n return scaleObject(eventData, transform, x, y);\n }\n\n /**\n * Scaling logic for the X axis.\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function scaleObjectX(eventData, transform, x, y) {\n return scaleObject(eventData, transform, x, y , { by: 'x' });\n }\n\n /**\n * Scaling logic for the Y axis.\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function scaleObjectY(eventData, transform, x, y) {\n return scaleObject(eventData, transform, x, y , { by: 'y' });\n }\n\n /**\n * Composed action handler to either scale Y or skew X\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function scalingYOrSkewingX(eventData, transform, x, y) {\n // ok some safety needed here.\n if (eventData[transform.target.canvas.altActionKey]) {\n return controls.skewHandlerX(eventData, transform, x, y);\n }\n return controls.scalingY(eventData, transform, x, y);\n }\n\n /**\n * Composed action handler to either scale X or skew Y\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function scalingXOrSkewingY(eventData, transform, x, y) {\n // ok some safety needed here.\n if (eventData[transform.target.canvas.altActionKey]) {\n return controls.skewHandlerY(eventData, transform, x, y);\n }\n return controls.scalingX(eventData, transform, x, y);\n }\n\n /**\n * Action handler to change textbox width\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function changeWidth(eventData, transform, x, y) {\n var target = transform.target, localPoint = getLocalPoint(transform, transform.originX, transform.originY, x, y),\n strokePadding = target.strokeWidth / (target.strokeUniform ? target.scaleX : 1),\n multiplier = isTransformCentered(transform) ? 2 : 1,\n oldWidth = target.width,\n newWidth = Math.abs(localPoint.x * multiplier / target.scaleX) - strokePadding;\n target.set('width', Math.max(newWidth, 0));\n return oldWidth !== newWidth;\n }\n\n /**\n * Action handler\n * @private\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if the translation occurred\n */\n function dragHandler(eventData, transform, x, y) {\n var target = transform.target,\n newLeft = x - transform.offsetX,\n newTop = y - transform.offsetY,\n moveX = !target.get('lockMovementX') && target.left !== newLeft,\n moveY = !target.get('lockMovementY') && target.top !== newTop;\n moveX && target.set('left', newLeft);\n moveY && target.set('top', newTop);\n if (moveX || moveY) {\n fireEvent('moving', commonEventInfo(eventData, transform, x, y));\n }\n return moveX || moveY;\n }\n\n controls.scaleCursorStyleHandler = scaleCursorStyleHandler;\n controls.skewCursorStyleHandler = skewCursorStyleHandler;\n controls.scaleSkewCursorStyleHandler = scaleSkewCursorStyleHandler;\n controls.rotationWithSnapping = wrapWithFireEvent('rotating', wrapWithFixedAnchor(rotationWithSnapping));\n controls.scalingEqually = wrapWithFireEvent('scaling', wrapWithFixedAnchor( scaleObjectFromCorner));\n controls.scalingX = wrapWithFireEvent('scaling', wrapWithFixedAnchor(scaleObjectX));\n controls.scalingY = wrapWithFireEvent('scaling', wrapWithFixedAnchor(scaleObjectY));\n controls.scalingYOrSkewingX = scalingYOrSkewingX;\n controls.scalingXOrSkewingY = scalingXOrSkewingY;\n controls.changeWidth = wrapWithFireEvent('resizing', wrapWithFixedAnchor(changeWidth));\n controls.skewHandlerX = skewHandlerX;\n controls.skewHandlerY = skewHandlerY;\n controls.dragHandler = dragHandler;\n controls.scaleOrSkewActionName = scaleOrSkewActionName;\n controls.rotationStyleHandler = rotationStyleHandler;\n controls.fireEvent = fireEvent;\n controls.wrapWithFixedAnchor = wrapWithFixedAnchor;\n controls.wrapWithFireEvent = wrapWithFireEvent;\n controls.getLocalPoint = getLocalPoint;\n fabric.controlsUtils = controls;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n degreesToRadians = fabric.util.degreesToRadians,\n controls = fabric.controlsUtils;\n\n /**\n * Render a round control, as per fabric features.\n * This function is written to respect object properties like transparentCorners, cornerSize\n * cornerColor, cornerStrokeColor\n * plus the addition of offsetY and offsetX.\n * @param {CanvasRenderingContext2D} ctx context to render on\n * @param {Number} left x coordinate where the control center should be\n * @param {Number} top y coordinate where the control center should be\n * @param {Object} styleOverride override for fabric.Object controls style\n * @param {fabric.Object} fabricObject the fabric object for which we are rendering controls\n */\n function renderCircleControl (ctx, left, top, styleOverride, fabricObject) {\n styleOverride = styleOverride || {};\n var xSize = this.sizeX || styleOverride.cornerSize || fabricObject.cornerSize,\n ySize = this.sizeY || styleOverride.cornerSize || fabricObject.cornerSize,\n transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ?\n styleOverride.transparentCorners : fabricObject.transparentCorners,\n methodName = transparentCorners ? 'stroke' : 'fill',\n stroke = !transparentCorners && (styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor),\n myLeft = left,\n myTop = top, size;\n ctx.save();\n ctx.fillStyle = styleOverride.cornerColor || fabricObject.cornerColor;\n ctx.strokeStyle = styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor;\n // as soon as fabric react v5, remove ie11, use proper ellipse code.\n if (xSize > ySize) {\n size = xSize;\n ctx.scale(1.0, ySize / xSize);\n myTop = top * xSize / ySize;\n }\n else if (ySize > xSize) {\n size = ySize;\n ctx.scale(xSize / ySize, 1.0);\n myLeft = left * ySize / xSize;\n }\n else {\n size = xSize;\n }\n // this is still wrong\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.arc(myLeft, myTop, size / 2, 0, 2 * Math.PI, false);\n ctx[methodName]();\n if (stroke) {\n ctx.stroke();\n }\n ctx.restore();\n }\n\n /**\n * Render a square control, as per fabric features.\n * This function is written to respect object properties like transparentCorners, cornerSize\n * cornerColor, cornerStrokeColor\n * plus the addition of offsetY and offsetX.\n * @param {CanvasRenderingContext2D} ctx context to render on\n * @param {Number} left x coordinate where the control center should be\n * @param {Number} top y coordinate where the control center should be\n * @param {Object} styleOverride override for fabric.Object controls style\n * @param {fabric.Object} fabricObject the fabric object for which we are rendering controls\n */\n function renderSquareControl(ctx, left, top, styleOverride, fabricObject) {\n styleOverride = styleOverride || {};\n var xSize = this.sizeX || styleOverride.cornerSize || fabricObject.cornerSize,\n ySize = this.sizeY || styleOverride.cornerSize || fabricObject.cornerSize,\n transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ?\n styleOverride.transparentCorners : fabricObject.transparentCorners,\n methodName = transparentCorners ? 'stroke' : 'fill',\n stroke = !transparentCorners && (\n styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor\n ), xSizeBy2 = xSize / 2, ySizeBy2 = ySize / 2;\n ctx.save();\n ctx.fillStyle = styleOverride.cornerColor || fabricObject.cornerColor;\n ctx.strokeStyle = styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor;\n // this is still wrong\n ctx.lineWidth = 1;\n ctx.translate(left, top);\n ctx.rotate(degreesToRadians(fabricObject.angle));\n // this does not work, and fixed with ( && ) does not make sense.\n // to have real transparent corners we need the controls on upperCanvas\n // transparentCorners || ctx.clearRect(-xSizeBy2, -ySizeBy2, xSize, ySize);\n ctx[methodName + 'Rect'](-xSizeBy2, -ySizeBy2, xSize, ySize);\n if (stroke) {\n ctx.strokeRect(-xSizeBy2, -ySizeBy2, xSize, ySize);\n }\n ctx.restore();\n }\n\n controls.renderCircleControl = renderCircleControl;\n controls.renderSquareControl = renderSquareControl;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n function Control(options) {\n for (var i in options) {\n this[i] = options[i];\n }\n }\n\n fabric.Control = Control;\n\n fabric.Control.prototype = /** @lends fabric.Control.prototype */ {\n\n /**\n * keep track of control visibility.\n * mainly for backward compatibility.\n * if you do not want to see a control, you can remove it\n * from the controlset.\n * @type {Boolean}\n * @default true\n */\n visible: true,\n\n /**\n * Name of the action that the control will likely execute.\n * This is optional. FabricJS uses to identify what the user is doing for some\n * extra optimizations. If you are writing a custom control and you want to know\n * somewhere else in the code what is going on, you can use this string here.\n * you can also provide a custom getActionName if your control run multiple actions\n * depending on some external state.\n * default to scale since is the most common, used on 4 corners by default\n * @type {String}\n * @default 'scale'\n */\n actionName: 'scale',\n\n /**\n * Drawing angle of the control.\n * NOT used for now, but name marked as needed for internal logic\n * example: to reuse the same drawing function for different rotated controls\n * @type {Number}\n * @default 0\n */\n angle: 0,\n\n /**\n * Relative position of the control. X\n * 0,0 is the center of the Object, while -0.5 (left) or 0.5 (right) are the extremities\n * of the bounding box.\n * @type {Number}\n * @default 0\n */\n x: 0,\n\n /**\n * Relative position of the control. Y\n * 0,0 is the center of the Object, while -0.5 (top) or 0.5 (bottom) are the extremities\n * of the bounding box.\n * @type {Number}\n * @default 0\n */\n y: 0,\n\n /**\n * Horizontal offset of the control from the defined position. In pixels\n * Positive offset moves the control to the right, negative to the left.\n * It used when you want to have position of control that does not scale with\n * the bounding box. Example: rotation control is placed at x:0, y: 0.5 on\n * the boundindbox, with an offset of 30 pixels vertically. Those 30 pixels will\n * stay 30 pixels no matter how the object is big. Another example is having 2\n * controls in the corner, that stay in the same position when the object scale.\n * of the bounding box.\n * @type {Number}\n * @default 0\n */\n offsetX: 0,\n\n /**\n * Vertical offset of the control from the defined position. In pixels\n * Positive offset moves the control to the bottom, negative to the top.\n * @type {Number}\n * @default 0\n */\n offsetY: 0,\n\n /**\n * Sets the length of the control. If null, defaults to object's cornerSize.\n * Expects both sizeX and sizeY to be set when set.\n * @type {?Number}\n * @default null\n */\n sizeX: null,\n\n /**\n * Sets the height of the control. If null, defaults to object's cornerSize.\n * Expects both sizeX and sizeY to be set when set.\n * @type {?Number}\n * @default null\n */\n sizeY: null,\n\n /**\n * Sets the length of the touch area of the control. If null, defaults to object's touchCornerSize.\n * Expects both touchSizeX and touchSizeY to be set when set.\n * @type {?Number}\n * @default null\n */\n touchSizeX: null,\n\n /**\n * Sets the height of the touch area of the control. If null, defaults to object's touchCornerSize.\n * Expects both touchSizeX and touchSizeY to be set when set.\n * @type {?Number}\n * @default null\n */\n touchSizeY: null,\n\n /**\n * Css cursor style to display when the control is hovered.\n * if the method `cursorStyleHandler` is provided, this property is ignored.\n * @type {String}\n * @default 'crosshair'\n */\n cursorStyle: 'crosshair',\n\n /**\n * If controls has an offsetY or offsetX, draw a line that connects\n * the control to the bounding box\n * @type {Boolean}\n * @default false\n */\n withConnection: false,\n\n /**\n * The control actionHandler, provide one to handle action ( control being moved )\n * @param {Event} eventData the native mouse event\n * @param {Object} transformData properties of the current transform\n * @param {Number} x x position of the cursor\n * @param {Number} y y position of the cursor\n * @return {Boolean} true if the action/event modified the object\n */\n actionHandler: function(/* eventData, transformData, x, y */) { },\n\n /**\n * The control handler for mouse down, provide one to handle mouse down on control\n * @param {Event} eventData the native mouse event\n * @param {Object} transformData properties of the current transform\n * @param {Number} x x position of the cursor\n * @param {Number} y y position of the cursor\n * @return {Boolean} true if the action/event modified the object\n */\n mouseDownHandler: function(/* eventData, transformData, x, y */) { },\n\n /**\n * The control mouseUpHandler, provide one to handle an effect on mouse up.\n * @param {Event} eventData the native mouse event\n * @param {Object} transformData properties of the current transform\n * @param {Number} x x position of the cursor\n * @param {Number} y y position of the cursor\n * @return {Boolean} true if the action/event modified the object\n */\n mouseUpHandler: function(/* eventData, transformData, x, y */) { },\n\n /**\n * Returns control actionHandler\n * @param {Event} eventData the native mouse event\n * @param {fabric.Object} fabricObject on which the control is displayed\n * @param {fabric.Control} control control for which the action handler is being asked\n * @return {Function} the action handler\n */\n getActionHandler: function(/* eventData, fabricObject, control */) {\n return this.actionHandler;\n },\n\n /**\n * Returns control mouseDown handler\n * @param {Event} eventData the native mouse event\n * @param {fabric.Object} fabricObject on which the control is displayed\n * @param {fabric.Control} control control for which the action handler is being asked\n * @return {Function} the action handler\n */\n getMouseDownHandler: function(/* eventData, fabricObject, control */) {\n return this.mouseDownHandler;\n },\n\n /**\n * Returns control mouseUp handler\n * @param {Event} eventData the native mouse event\n * @param {fabric.Object} fabricObject on which the control is displayed\n * @param {fabric.Control} control control for which the action handler is being asked\n * @return {Function} the action handler\n */\n getMouseUpHandler: function(/* eventData, fabricObject, control */) {\n return this.mouseUpHandler;\n },\n\n /**\n * Returns control cursorStyle for css using cursorStyle. If you need a more elaborate\n * function you can pass one in the constructor\n * the cursorStyle property\n * @param {Event} eventData the native mouse event\n * @param {fabric.Control} control the current control ( likely this)\n * @param {fabric.Object} object on which the control is displayed\n * @return {String}\n */\n cursorStyleHandler: function(eventData, control /* fabricObject */) {\n return control.cursorStyle;\n },\n\n /**\n * Returns the action name. The basic implementation just return the actionName property.\n * @param {Event} eventData the native mouse event\n * @param {fabric.Control} control the current control ( likely this)\n * @param {fabric.Object} object on which the control is displayed\n * @return {String}\n */\n getActionName: function(eventData, control /* fabricObject */) {\n return control.actionName;\n },\n\n /**\n * Returns controls visibility\n * @param {fabric.Object} object on which the control is displayed\n * @param {String} controlKey key where the control is memorized on the\n * @return {Boolean}\n */\n getVisibility: function(fabricObject, controlKey) {\n var objectVisibility = fabricObject._controlsVisibility;\n if (objectVisibility && typeof objectVisibility[controlKey] !== 'undefined') {\n return objectVisibility[controlKey];\n }\n return this.visible;\n },\n\n /**\n * Sets controls visibility\n * @param {Boolean} visibility for the object\n * @return {Void}\n */\n setVisibility: function(visibility /* name, fabricObject */) {\n this.visible = visibility;\n },\n\n\n positionHandler: function(dim, finalMatrix /*, fabricObject, currentControl */) {\n var point = fabric.util.transformPoint({\n x: this.x * dim.x + this.offsetX,\n y: this.y * dim.y + this.offsetY }, finalMatrix);\n return point;\n },\n\n /**\n * Returns the coords for this control based on object values.\n * @param {Number} objectAngle angle from the fabric object holding the control\n * @param {Number} objectCornerSize cornerSize from the fabric object holding the control (or touchCornerSize if\n * isTouch is true)\n * @param {Number} centerX x coordinate where the control center should be\n * @param {Number} centerY y coordinate where the control center should be\n * @param {boolean} isTouch true if touch corner, false if normal corner\n */\n calcCornerCoords: function(objectAngle, objectCornerSize, centerX, centerY, isTouch) {\n var cosHalfOffset,\n sinHalfOffset,\n cosHalfOffsetComp,\n sinHalfOffsetComp,\n xSize = (isTouch) ? this.touchSizeX : this.sizeX,\n ySize = (isTouch) ? this.touchSizeY : this.sizeY;\n if (xSize && ySize && xSize !== ySize) {\n // handle rectangular corners\n var controlTriangleAngle = Math.atan2(ySize, xSize);\n var cornerHypotenuse = Math.sqrt(xSize * xSize + ySize * ySize) / 2;\n var newTheta = controlTriangleAngle - fabric.util.degreesToRadians(objectAngle);\n var newThetaComp = Math.PI / 2 - controlTriangleAngle - fabric.util.degreesToRadians(objectAngle);\n cosHalfOffset = cornerHypotenuse * fabric.util.cos(newTheta);\n sinHalfOffset = cornerHypotenuse * fabric.util.sin(newTheta);\n // use complementary angle for two corners\n cosHalfOffsetComp = cornerHypotenuse * fabric.util.cos(newThetaComp);\n sinHalfOffsetComp = cornerHypotenuse * fabric.util.sin(newThetaComp);\n }\n else {\n // handle square corners\n // use default object corner size unless size is defined\n var cornerSize = (xSize && ySize) ? xSize : objectCornerSize;\n /* 0.7071067812 stands for sqrt(2)/2 */\n cornerHypotenuse = cornerSize * 0.7071067812;\n // complementary angles are equal since they're both 45 degrees\n var newTheta = fabric.util.degreesToRadians(45 - objectAngle);\n cosHalfOffset = cosHalfOffsetComp = cornerHypotenuse * fabric.util.cos(newTheta);\n sinHalfOffset = sinHalfOffsetComp = cornerHypotenuse * fabric.util.sin(newTheta);\n }\n\n return {\n tl: {\n x: centerX - sinHalfOffsetComp,\n y: centerY - cosHalfOffsetComp,\n },\n tr: {\n x: centerX + cosHalfOffset,\n y: centerY - sinHalfOffset,\n },\n bl: {\n x: centerX - cosHalfOffset,\n y: centerY + sinHalfOffset,\n },\n br: {\n x: centerX + sinHalfOffsetComp,\n y: centerY + cosHalfOffsetComp,\n },\n };\n },\n\n /**\n * Render function for the control.\n * When this function runs the context is unscaled. unrotate. Just retina scaled.\n * all the functions will have to translate to the point left,top before starting Drawing\n * if they want to draw a control where the position is detected.\n * left and top are the result of the positionHandler function\n * @param {RenderingContext2D} ctx the context where the control will be drawn\n * @param {Number} left position of the canvas where we are about to render the control.\n * @param {Number} top position of the canvas where we are about to render the control.\n * @param {Object} styleOverride\n * @param {fabric.Object} fabricObject the object where the control is about to be rendered\n */\n render: function(ctx, left, top, styleOverride, fabricObject) {\n styleOverride = styleOverride || {};\n switch (styleOverride.cornerStyle || fabricObject.cornerStyle) {\n case 'circle':\n fabric.controlsUtils.renderCircleControl.call(this, ctx, left, top, styleOverride, fabricObject);\n break;\n default:\n fabric.controlsUtils.renderSquareControl.call(this, ctx, left, top, styleOverride, fabricObject);\n }\n },\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n /* _FROM_SVG_START_ */\n function getColorStop(el, multiplier) {\n var style = el.getAttribute('style'),\n offset = el.getAttribute('offset') || 0,\n color, colorAlpha, opacity, i;\n\n // convert percents to absolute values\n offset = parseFloat(offset) / (/%$/.test(offset) ? 100 : 1);\n offset = offset < 0 ? 0 : offset > 1 ? 1 : offset;\n if (style) {\n var keyValuePairs = style.split(/\\s*;\\s*/);\n\n if (keyValuePairs[keyValuePairs.length - 1] === '') {\n keyValuePairs.pop();\n }\n\n for (i = keyValuePairs.length; i--; ) {\n\n var split = keyValuePairs[i].split(/\\s*:\\s*/),\n key = split[0].trim(),\n value = split[1].trim();\n\n if (key === 'stop-color') {\n color = value;\n }\n else if (key === 'stop-opacity') {\n opacity = value;\n }\n }\n }\n\n if (!color) {\n color = el.getAttribute('stop-color') || 'rgb(0,0,0)';\n }\n if (!opacity) {\n opacity = el.getAttribute('stop-opacity');\n }\n\n color = new fabric.Color(color);\n colorAlpha = color.getAlpha();\n opacity = isNaN(parseFloat(opacity)) ? 1 : parseFloat(opacity);\n opacity *= colorAlpha * multiplier;\n\n return {\n offset: offset,\n color: color.toRgb(),\n opacity: opacity\n };\n }\n\n function getLinearCoords(el) {\n return {\n x1: el.getAttribute('x1') || 0,\n y1: el.getAttribute('y1') || 0,\n x2: el.getAttribute('x2') || '100%',\n y2: el.getAttribute('y2') || 0\n };\n }\n\n function getRadialCoords(el) {\n return {\n x1: el.getAttribute('fx') || el.getAttribute('cx') || '50%',\n y1: el.getAttribute('fy') || el.getAttribute('cy') || '50%',\n r1: 0,\n x2: el.getAttribute('cx') || '50%',\n y2: el.getAttribute('cy') || '50%',\n r2: el.getAttribute('r') || '50%'\n };\n }\n /* _FROM_SVG_END_ */\n\n var clone = fabric.util.object.clone;\n\n /**\n * Gradient class\n * @class fabric.Gradient\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#gradients}\n * @see {@link fabric.Gradient#initialize} for constructor definition\n */\n fabric.Gradient = fabric.util.createClass(/** @lends fabric.Gradient.prototype */ {\n\n /**\n * Horizontal offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n offsetX: 0,\n\n /**\n * Vertical offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n offsetY: 0,\n\n /**\n * A transform matrix to apply to the gradient before painting.\n * Imported from svg gradients, is not applied with the current transform in the center.\n * Before this transform is applied, the origin point is at the top left corner of the object\n * plus the addition of offsetY and offsetX.\n * @type Number[]\n * @default null\n */\n gradientTransform: null,\n\n /**\n * coordinates units for coords.\n * If `pixels`, the number of coords are in the same unit of width / height.\n * If set as `percentage` the coords are still a number, but 1 means 100% of width\n * for the X and 100% of the height for the y. It can be bigger than 1 and negative.\n * allowed values pixels or percentage.\n * @type String\n * @default 'pixels'\n */\n gradientUnits: 'pixels',\n\n /**\n * Gradient type linear or radial\n * @type String\n * @default 'pixels'\n */\n type: 'linear',\n\n /**\n * Constructor\n * @param {Object} options Options object with type, coords, gradientUnits and colorStops\n * @param {Object} [options.type] gradient type linear or radial\n * @param {Object} [options.gradientUnits] gradient units\n * @param {Object} [options.offsetX] SVG import compatibility\n * @param {Object} [options.offsetY] SVG import compatibility\n * @param {Object[]} options.colorStops contains the colorstops.\n * @param {Object} options.coords contains the coords of the gradient\n * @param {Number} [options.coords.x1] X coordiante of the first point for linear or of the focal point for radial\n * @param {Number} [options.coords.y1] Y coordiante of the first point for linear or of the focal point for radial\n * @param {Number} [options.coords.x2] X coordiante of the second point for linear or of the center point for radial\n * @param {Number} [options.coords.y2] Y coordiante of the second point for linear or of the center point for radial\n * @param {Number} [options.coords.r1] only for radial gradient, radius of the inner circle\n * @param {Number} [options.coords.r2] only for radial gradient, radius of the external circle\n * @return {fabric.Gradient} thisArg\n */\n initialize: function(options) {\n options || (options = { });\n options.coords || (options.coords = { });\n\n var coords, _this = this;\n\n // sets everything, then coords and colorstops get sets again\n Object.keys(options).forEach(function(option) {\n _this[option] = options[option];\n });\n\n if (this.id) {\n this.id += '_' + fabric.Object.__uid++;\n }\n else {\n this.id = fabric.Object.__uid++;\n }\n\n coords = {\n x1: options.coords.x1 || 0,\n y1: options.coords.y1 || 0,\n x2: options.coords.x2 || 0,\n y2: options.coords.y2 || 0\n };\n\n if (this.type === 'radial') {\n coords.r1 = options.coords.r1 || 0;\n coords.r2 = options.coords.r2 || 0;\n }\n\n this.coords = coords;\n this.colorStops = options.colorStops.slice();\n },\n\n /**\n * Adds another colorStop\n * @param {Object} colorStop Object with offset and color\n * @return {fabric.Gradient} thisArg\n */\n addColorStop: function(colorStops) {\n for (var position in colorStops) {\n var color = new fabric.Color(colorStops[position]);\n this.colorStops.push({\n offset: parseFloat(position),\n color: color.toRgb(),\n opacity: color.getAlpha()\n });\n }\n return this;\n },\n\n /**\n * Returns object representation of a gradient\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object}\n */\n toObject: function(propertiesToInclude) {\n var object = {\n type: this.type,\n coords: this.coords,\n colorStops: this.colorStops,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n gradientUnits: this.gradientUnits,\n gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform\n };\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n\n return object;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of an gradient\n * @param {Object} object Object to create a gradient for\n * @return {String} SVG representation of an gradient (linear/radial)\n */\n toSVG: function(object, options) {\n var coords = clone(this.coords, true), i, len, options = options || {},\n markup, commonAttributes, colorStops = clone(this.colorStops, true),\n needsSwap = coords.r1 > coords.r2,\n transform = this.gradientTransform ? this.gradientTransform.concat() : fabric.iMatrix.concat(),\n offsetX = -this.offsetX, offsetY = -this.offsetY,\n withViewport = !!options.additionalTransform,\n gradientUnits = this.gradientUnits === 'pixels' ? 'userSpaceOnUse' : 'objectBoundingBox';\n // colorStops must be sorted ascending\n colorStops.sort(function(a, b) {\n return a.offset - b.offset;\n });\n\n if (gradientUnits === 'objectBoundingBox') {\n offsetX /= object.width;\n offsetY /= object.height;\n }\n else {\n offsetX += object.width / 2;\n offsetY += object.height / 2;\n }\n if (object.type === 'path' && this.gradientUnits !== 'percentage') {\n offsetX -= object.pathOffset.x;\n offsetY -= object.pathOffset.y;\n }\n\n\n transform[4] -= offsetX;\n transform[5] -= offsetY;\n\n commonAttributes = 'id=\"SVGID_' + this.id +\n '\" gradientUnits=\"' + gradientUnits + '\"';\n commonAttributes += ' gradientTransform=\"' + (withViewport ?\n options.additionalTransform + ' ' : '') + fabric.util.matrixToSVG(transform) + '\" ';\n\n if (this.type === 'linear') {\n markup = [\n '\\n'\n ];\n }\n else if (this.type === 'radial') {\n // svg radial gradient has just 1 radius. the biggest.\n markup = [\n '\\n'\n ];\n }\n\n if (this.type === 'radial') {\n if (needsSwap) {\n // svg goes from internal to external radius. if radius are inverted, swap color stops.\n colorStops = colorStops.concat();\n colorStops.reverse();\n for (i = 0, len = colorStops.length; i < len; i++) {\n colorStops[i].offset = 1 - colorStops[i].offset;\n }\n }\n var minRadius = Math.min(coords.r1, coords.r2);\n if (minRadius > 0) {\n // i have to shift all colorStops and add new one in 0.\n var maxRadius = Math.max(coords.r1, coords.r2),\n percentageShift = minRadius / maxRadius;\n for (i = 0, len = colorStops.length; i < len; i++) {\n colorStops[i].offset += percentageShift * (1 - colorStops[i].offset);\n }\n }\n }\n\n for (i = 0, len = colorStops.length; i < len; i++) {\n var colorStop = colorStops[i];\n markup.push(\n '\\n'\n );\n }\n\n markup.push((this.type === 'linear' ? '\\n' : '\\n'));\n\n return markup.join('');\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns an instance of CanvasGradient\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {CanvasGradient}\n */\n toLive: function(ctx) {\n var gradient, coords = fabric.util.object.clone(this.coords), i, len;\n\n if (!this.type) {\n return;\n }\n\n if (this.type === 'linear') {\n gradient = ctx.createLinearGradient(\n coords.x1, coords.y1, coords.x2, coords.y2);\n }\n else if (this.type === 'radial') {\n gradient = ctx.createRadialGradient(\n coords.x1, coords.y1, coords.r1, coords.x2, coords.y2, coords.r2);\n }\n\n for (i = 0, len = this.colorStops.length; i < len; i++) {\n var color = this.colorStops[i].color,\n opacity = this.colorStops[i].opacity,\n offset = this.colorStops[i].offset;\n\n if (typeof opacity !== 'undefined') {\n color = new fabric.Color(color).setAlpha(opacity).toRgba();\n }\n gradient.addColorStop(offset, color);\n }\n\n return gradient;\n }\n });\n\n fabric.util.object.extend(fabric.Gradient, {\n\n /* _FROM_SVG_START_ */\n /**\n * Returns {@link fabric.Gradient} instance from an SVG element\n * @static\n * @memberOf fabric.Gradient\n * @param {SVGGradientElement} el SVG gradient element\n * @param {fabric.Object} instance\n * @param {String} opacityAttr A fill-opacity or stroke-opacity attribute to multiply to each stop's opacity.\n * @param {Object} svgOptions an object containing the size of the SVG in order to parse correctly gradients\n * that uses gradientUnits as 'userSpaceOnUse' and percentages.\n * @param {Object.number} viewBoxWidth width part of the viewBox attribute on svg\n * @param {Object.number} viewBoxHeight height part of the viewBox attribute on svg\n * @param {Object.number} width width part of the svg tag if viewBox is not specified\n * @param {Object.number} height height part of the svg tag if viewBox is not specified\n * @return {fabric.Gradient} Gradient instance\n * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement\n * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement\n */\n fromElement: function(el, instance, opacityAttr, svgOptions) {\n /**\n * @example:\n *\n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n * \n *\n */\n\n var multiplier = parseFloat(opacityAttr) / (/%$/.test(opacityAttr) ? 100 : 1);\n multiplier = multiplier < 0 ? 0 : multiplier > 1 ? 1 : multiplier;\n if (isNaN(multiplier)) {\n multiplier = 1;\n }\n\n var colorStopEls = el.getElementsByTagName('stop'),\n type,\n gradientUnits = el.getAttribute('gradientUnits') === 'userSpaceOnUse' ?\n 'pixels' : 'percentage',\n gradientTransform = el.getAttribute('gradientTransform') || '',\n colorStops = [],\n coords, i, offsetX = 0, offsetY = 0,\n transformMatrix;\n if (el.nodeName === 'linearGradient' || el.nodeName === 'LINEARGRADIENT') {\n type = 'linear';\n coords = getLinearCoords(el);\n }\n else {\n type = 'radial';\n coords = getRadialCoords(el);\n }\n\n for (i = colorStopEls.length; i--; ) {\n colorStops.push(getColorStop(colorStopEls[i], multiplier));\n }\n\n transformMatrix = fabric.parseTransformAttribute(gradientTransform);\n\n __convertPercentUnitsToValues(instance, coords, svgOptions, gradientUnits);\n\n if (gradientUnits === 'pixels') {\n offsetX = -instance.left;\n offsetY = -instance.top;\n }\n\n var gradient = new fabric.Gradient({\n id: el.getAttribute('id'),\n type: type,\n coords: coords,\n colorStops: colorStops,\n gradientUnits: gradientUnits,\n gradientTransform: transformMatrix,\n offsetX: offsetX,\n offsetY: offsetY,\n });\n\n return gradient;\n }\n /* _FROM_SVG_END_ */\n });\n\n /**\n * @private\n */\n function __convertPercentUnitsToValues(instance, options, svgOptions, gradientUnits) {\n var propValue, finalValue;\n Object.keys(options).forEach(function(prop) {\n propValue = options[prop];\n if (propValue === 'Infinity') {\n finalValue = 1;\n }\n else if (propValue === '-Infinity') {\n finalValue = 0;\n }\n else {\n finalValue = parseFloat(options[prop], 10);\n if (typeof propValue === 'string' && /^(\\d+\\.\\d+)%|(\\d+)%$/.test(propValue)) {\n finalValue *= 0.01;\n if (gradientUnits === 'pixels') {\n // then we need to fix those percentages here in svg parsing\n if (prop === 'x1' || prop === 'x2' || prop === 'r2') {\n finalValue *= svgOptions.viewBoxWidth || svgOptions.width;\n }\n if (prop === 'y1' || prop === 'y2') {\n finalValue *= svgOptions.viewBoxHeight || svgOptions.height;\n }\n }\n }\n }\n options[prop] = finalValue;\n });\n }\n})();\n\n\n(function() {\n\n 'use strict';\n\n var toFixed = fabric.util.toFixed;\n\n /**\n * Pattern class\n * @class fabric.Pattern\n * @see {@link http://fabricjs.com/patterns|Pattern demo}\n * @see {@link http://fabricjs.com/dynamic-patterns|DynamicPattern demo}\n * @see {@link fabric.Pattern#initialize} for constructor definition\n */\n\n\n fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ {\n\n /**\n * Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat)\n * @type String\n * @default\n */\n repeat: 'repeat',\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX: 0,\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY: 0,\n\n /**\n * crossOrigin value (one of \"\", \"anonymous\", \"use-credentials\")\n * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes\n * @type String\n * @default\n */\n crossOrigin: '',\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @type Array\n * @default\n */\n patternTransform: null,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {Function} [callback] function to invoke after callback init.\n * @return {fabric.Pattern} thisArg\n */\n initialize: function(options, callback) {\n options || (options = { });\n\n this.id = fabric.Object.__uid++;\n this.setOptions(options);\n if (!options.source || (options.source && typeof options.source !== 'string')) {\n callback && callback(this);\n return;\n }\n else {\n // img src string\n var _this = this;\n this.source = fabric.util.createImage();\n fabric.util.loadImage(options.source, function(img, isError) {\n _this.source = img;\n callback && callback(_this, isError);\n }, null, this.crossOrigin);\n }\n },\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of a pattern instance\n */\n toObject: function(propertiesToInclude) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n source, object;\n\n // element\n if (typeof this.source.src === 'string') {\n source = this.source.src;\n }\n // element\n else if (typeof this.source === 'object' && this.source.toDataURL) {\n source = this.source.toDataURL();\n }\n\n object = {\n type: 'pattern',\n source: source,\n repeat: this.repeat,\n crossOrigin: this.crossOrigin,\n offsetX: toFixed(this.offsetX, NUM_FRACTION_DIGITS),\n offsetY: toFixed(this.offsetY, NUM_FRACTION_DIGITS),\n patternTransform: this.patternTransform ? this.patternTransform.concat() : null\n };\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n\n return object;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a pattern\n * @param {fabric.Object} object\n * @return {String} SVG representation of a pattern\n */\n toSVG: function(object) {\n var patternSource = typeof this.source === 'function' ? this.source() : this.source,\n patternWidth = patternSource.width / object.width,\n patternHeight = patternSource.height / object.height,\n patternOffsetX = this.offsetX / object.width,\n patternOffsetY = this.offsetY / object.height,\n patternImgSrc = '';\n if (this.repeat === 'repeat-x' || this.repeat === 'no-repeat') {\n patternHeight = 1;\n if (patternOffsetY) {\n patternHeight += Math.abs(patternOffsetY);\n }\n }\n if (this.repeat === 'repeat-y' || this.repeat === 'no-repeat') {\n patternWidth = 1;\n if (patternOffsetX) {\n patternWidth += Math.abs(patternOffsetX);\n }\n\n }\n if (patternSource.src) {\n patternImgSrc = patternSource.src;\n }\n else if (patternSource.toDataURL) {\n patternImgSrc = patternSource.toDataURL();\n }\n\n return '\\n' +\n '\\n' +\n '\\n';\n },\n /* _TO_SVG_END_ */\n\n setOptions: function(options) {\n for (var prop in options) {\n this[prop] = options[prop];\n }\n },\n\n /**\n * Returns an instance of CanvasPattern\n * @param {CanvasRenderingContext2D} ctx Context to create pattern\n * @return {CanvasPattern}\n */\n toLive: function(ctx) {\n var source = this.source;\n // if the image failed to load, return, and allow rest to continue loading\n if (!source) {\n return '';\n }\n\n // if an image\n if (typeof source.src !== 'undefined') {\n if (!source.complete) {\n return '';\n }\n if (source.naturalWidth === 0 || source.naturalHeight === 0) {\n return '';\n }\n }\n return ctx.createPattern(source, this.repeat);\n }\n });\n})();\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n toFixed = fabric.util.toFixed;\n\n if (fabric.Shadow) {\n fabric.warn('fabric.Shadow is already defined.');\n return;\n }\n\n /**\n * Shadow class\n * @class fabric.Shadow\n * @see {@link http://fabricjs.com/shadows|Shadow demo}\n * @see {@link fabric.Shadow#initialize} for constructor definition\n */\n fabric.Shadow = fabric.util.createClass(/** @lends fabric.Shadow.prototype */ {\n\n /**\n * Shadow color\n * @type String\n * @default\n */\n color: 'rgb(0,0,0)',\n\n /**\n * Shadow blur\n * @type Number\n */\n blur: 0,\n\n /**\n * Shadow horizontal offset\n * @type Number\n * @default\n */\n offsetX: 0,\n\n /**\n * Shadow vertical offset\n * @type Number\n * @default\n */\n offsetY: 0,\n\n /**\n * Whether the shadow should affect stroke operations\n * @type Boolean\n * @default\n */\n affectStroke: false,\n\n /**\n * Indicates whether toObject should include default values\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * When `false`, the shadow will scale with the object.\n * When `true`, the shadow's offsetX, offsetY, and blur will not be affected by the object's scale.\n * default to false\n * @type Boolean\n * @default\n */\n nonScaling: false,\n\n /**\n * Constructor\n * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. \"rgba(0,0,0,0.2) 2px 2px 10px\")\n * @return {fabric.Shadow} thisArg\n */\n initialize: function(options) {\n\n if (typeof options === 'string') {\n options = this._parseShadow(options);\n }\n\n for (var prop in options) {\n this[prop] = options[prop];\n }\n\n this.id = fabric.Object.__uid++;\n },\n\n /**\n * @private\n * @param {String} shadow Shadow value to parse\n * @return {Object} Shadow object with color, offsetX, offsetY and blur\n */\n _parseShadow: function(shadow) {\n var shadowStr = shadow.trim(),\n offsetsAndBlur = fabric.Shadow.reOffsetsAndBlur.exec(shadowStr) || [],\n color = shadowStr.replace(fabric.Shadow.reOffsetsAndBlur, '') || 'rgb(0,0,0)';\n\n return {\n color: color.trim(),\n offsetX: parseFloat(offsetsAndBlur[1], 10) || 0,\n offsetY: parseFloat(offsetsAndBlur[2], 10) || 0,\n blur: parseFloat(offsetsAndBlur[3], 10) || 0\n };\n },\n\n /**\n * Returns a string representation of an instance\n * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow\n * @return {String} Returns CSS3 text-shadow declaration\n */\n toString: function() {\n return [this.offsetX, this.offsetY, this.blur, this.color].join('px ');\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a shadow\n * @param {fabric.Object} object\n * @return {String} SVG representation of a shadow\n */\n toSVG: function(object) {\n var fBoxX = 40, fBoxY = 40, NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n offset = fabric.util.rotateVector(\n { x: this.offsetX, y: this.offsetY },\n fabric.util.degreesToRadians(-object.angle)),\n BLUR_BOX = 20, color = new fabric.Color(this.color);\n\n if (object.width && object.height) {\n //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion\n // we add some extra space to filter box to contain the blur ( 20 )\n fBoxX = toFixed((Math.abs(offset.x) + this.blur) / object.width, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX;\n fBoxY = toFixed((Math.abs(offset.y) + this.blur) / object.height, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX;\n }\n if (object.flipX) {\n offset.x *= -1;\n }\n if (object.flipY) {\n offset.y *= -1;\n }\n\n return (\n '\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\t\\n' +\n '\\t\\t\\n' +\n '\\t\\n' +\n '\\n');\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns object representation of a shadow\n * @return {Object} Object representation of a shadow instance\n */\n toObject: function() {\n if (this.includeDefaultValues) {\n return {\n color: this.color,\n blur: this.blur,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n affectStroke: this.affectStroke,\n nonScaling: this.nonScaling\n };\n }\n var obj = { }, proto = fabric.Shadow.prototype;\n\n ['color', 'blur', 'offsetX', 'offsetY', 'affectStroke', 'nonScaling'].forEach(function(prop) {\n if (this[prop] !== proto[prop]) {\n obj[prop] = this[prop];\n }\n }, this);\n\n return obj;\n }\n });\n\n /**\n * Regex matching shadow offsetX, offsetY and blur (ex: \"2px 2px 10px rgba(0,0,0,0.2)\", \"rgb(0,255,0) 2px 2px\")\n * @static\n * @field\n * @memberOf fabric.Shadow\n */\n // eslint-disable-next-line max-len\n fabric.Shadow.reOffsetsAndBlur = /(?:\\s|^)(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?(\\d+(?:\\.\\d*)?(?:px)?)?(?:\\s?|$)(?:$|\\s)/;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function () {\n\n 'use strict';\n\n if (fabric.StaticCanvas) {\n fabric.warn('fabric.StaticCanvas is already defined.');\n return;\n }\n\n // aliases for faster resolution\n var extend = fabric.util.object.extend,\n getElementOffset = fabric.util.getElementOffset,\n removeFromArray = fabric.util.removeFromArray,\n toFixed = fabric.util.toFixed,\n transformPoint = fabric.util.transformPoint,\n invertTransform = fabric.util.invertTransform,\n getNodeCanvas = fabric.util.getNodeCanvas,\n createCanvasElement = fabric.util.createCanvasElement,\n\n CANVAS_INIT_ERROR = new Error('Could not initialize `canvas` element');\n\n /**\n * Static canvas class\n * @class fabric.StaticCanvas\n * @mixes fabric.Collection\n * @mixes fabric.Observable\n * @see {@link http://fabricjs.com/static_canvas|StaticCanvas demo}\n * @see {@link fabric.StaticCanvas#initialize} for constructor definition\n * @fires before:render\n * @fires after:render\n * @fires canvas:cleared\n * @fires object:added\n * @fires object:removed\n */\n fabric.StaticCanvas = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Constructor\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(el, options) {\n options || (options = { });\n this.renderAndResetBound = this.renderAndReset.bind(this);\n this.requestRenderAllBound = this.requestRenderAll.bind(this);\n this._initStatic(el, options);\n },\n\n /**\n * Background color of canvas instance.\n * Should be set via {@link fabric.StaticCanvas#setBackgroundColor}.\n * @type {(String|fabric.Pattern)}\n * @default\n */\n backgroundColor: '',\n\n /**\n * Background image of canvas instance.\n * since 2.4.0 image caching is active, please when putting an image as background, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type fabric.Image\n * @default\n */\n backgroundImage: null,\n\n /**\n * Overlay color of canvas instance.\n * Should be set via {@link fabric.StaticCanvas#setOverlayColor}\n * @since 1.3.9\n * @type {(String|fabric.Pattern)}\n * @default\n */\n overlayColor: '',\n\n /**\n * Overlay image of canvas instance.\n * since 2.4.0 image caching is active, please when putting an image as overlay, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type fabric.Image\n * @default\n */\n overlayImage: null,\n\n /**\n * Indicates whether toObject/toDatalessObject should include default values\n * if set to false, takes precedence over the object value.\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * Indicates whether objects' state should be saved\n * @type Boolean\n * @default\n */\n stateful: false,\n\n /**\n * Indicates whether {@link fabric.Collection.add}, {@link fabric.Collection.insertAt} and {@link fabric.Collection.remove},\n * {@link fabric.StaticCanvas.moveTo}, {@link fabric.StaticCanvas.clear} and many more, should also re-render canvas.\n * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once\n * since the renders are quequed and executed one per frame.\n * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() )\n * Left default to true to do not break documentation and old app, fiddles.\n * @type Boolean\n * @default\n */\n renderOnAddRemove: true,\n\n /**\n * Indicates whether object controls (borders/controls) are rendered above overlay image\n * @type Boolean\n * @default\n */\n controlsAboveOverlay: false,\n\n /**\n * Indicates whether the browser can be scrolled when using a touchscreen and dragging on the canvas\n * @type Boolean\n * @default\n */\n allowTouchScrolling: false,\n\n /**\n * Indicates whether this canvas will use image smoothing, this is on by default in browsers\n * @type Boolean\n * @default\n */\n imageSmoothingEnabled: true,\n\n /**\n * The transformation (in the format of Canvas transform) which focuses the viewport\n * @type Array\n * @default\n */\n viewportTransform: fabric.iMatrix.concat(),\n\n /**\n * if set to false background image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @default\n */\n backgroundVpt: true,\n\n /**\n * if set to false overlya image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @default\n */\n overlayVpt: true,\n\n /**\n * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens\n * @type Boolean\n * @default\n */\n enableRetinaScaling: true,\n\n /**\n * Describe canvas element extension over design\n * properties are tl,tr,bl,br.\n * if canvas is not zoomed/panned those points are the four corner of canvas\n * if canvas is viewportTransformed you those points indicate the extension\n * of canvas element in plain untrasformed coordinates\n * The coordinates get updated with @method calcViewportBoundaries.\n * @memberOf fabric.StaticCanvas.prototype\n */\n vptCoords: { },\n\n /**\n * Based on vptCoords and object.aCoords, skip rendering of objects that\n * are not included in current viewport.\n * May greatly help in applications with crowded canvas and use of zoom/pan\n * If One of the corner of the bounding box of the object is on the canvas\n * the objects get rendered.\n * @memberOf fabric.StaticCanvas.prototype\n * @type Boolean\n * @default\n */\n skipOffscreen: true,\n\n /**\n * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n * the clipPath object gets used when the canvas has rendered, and the context is placed in the\n * top left corner of the canvas.\n * clipPath will clip away controls, if you do not want this to happen use controlsAboveOverlay = true\n * @type fabric.Object\n */\n clipPath: undefined,\n\n /**\n * @private\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n */\n _initStatic: function(el, options) {\n var cb = this.requestRenderAllBound;\n this._objects = [];\n this._createLowerCanvas(el);\n this._initOptions(options);\n // only initialize retina scaling once\n if (!this.interactive) {\n this._initRetinaScaling();\n }\n\n if (options.overlayImage) {\n this.setOverlayImage(options.overlayImage, cb);\n }\n if (options.backgroundImage) {\n this.setBackgroundImage(options.backgroundImage, cb);\n }\n if (options.backgroundColor) {\n this.setBackgroundColor(options.backgroundColor, cb);\n }\n if (options.overlayColor) {\n this.setOverlayColor(options.overlayColor, cb);\n }\n this.calcOffset();\n },\n\n /**\n * @private\n */\n _isRetinaScaling: function() {\n return (fabric.devicePixelRatio !== 1 && this.enableRetinaScaling);\n },\n\n /**\n * @private\n * @return {Number} retinaScaling if applied, otherwise 1;\n */\n getRetinaScaling: function() {\n return this._isRetinaScaling() ? fabric.devicePixelRatio : 1;\n },\n\n /**\n * @private\n */\n _initRetinaScaling: function() {\n if (!this._isRetinaScaling()) {\n return;\n }\n var scaleRatio = fabric.devicePixelRatio;\n this.__initRetinaScaling(scaleRatio, this.lowerCanvasEl, this.contextContainer);\n if (this.upperCanvasEl) {\n this.__initRetinaScaling(scaleRatio, this.upperCanvasEl, this.contextTop);\n }\n },\n\n __initRetinaScaling: function(scaleRatio, canvas, context) {\n canvas.setAttribute('width', this.width * scaleRatio);\n canvas.setAttribute('height', this.height * scaleRatio);\n context.scale(scaleRatio, scaleRatio);\n },\n\n\n /**\n * Calculates canvas element offset relative to the document\n * This method is also attached as \"resize\" event handler of window\n * @return {fabric.Canvas} instance\n * @chainable\n */\n calcOffset: function () {\n this._offset = getElementOffset(this.lowerCanvasEl);\n return this;\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#overlayImage|overlay image} for this canvas\n * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set overlay to\n * @param {Function} callback callback to invoke when image is loaded and set as an overlay\n * @param {Object} [options] Optional options to set for the {@link fabric.Image|overlay image}.\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/MnzHT/|jsFiddle demo}\n * @example Normal overlayImage with left/top = 0\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * // Needed to position overlayImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example overlayImage with different properties\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top'\n * });\n * @example Stretched overlayImage #1 - width/height correspond to canvas width/height\n * fabric.Image.fromURL('http://fabricjs.com/assets/jail_cell_bars.png', function(img, isError) {\n * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'});\n * canvas.setOverlayImage(img, canvas.renderAll.bind(canvas));\n * });\n * @example Stretched overlayImage #2 - width/height correspond to canvas width/height\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * width: canvas.width,\n * height: canvas.height,\n * // Needed to position overlayImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example overlayImage loaded from cross-origin\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top',\n * crossOrigin: 'anonymous'\n * });\n */\n setOverlayImage: function (image, callback, options) {\n return this.__setBgOverlayImage('overlayImage', image, callback, options);\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#backgroundImage|background image} for this canvas\n * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set background to\n * @param {Function} callback Callback to invoke when image is loaded and set as background\n * @param {Object} [options] Optional options to set for the {@link fabric.Image|background image}.\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/djnr8o7a/28/|jsFiddle demo}\n * @example Normal backgroundImage with left/top = 0\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * // Needed to position backgroundImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example backgroundImage with different properties\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top'\n * });\n * @example Stretched backgroundImage #1 - width/height correspond to canvas width/height\n * fabric.Image.fromURL('http://fabricjs.com/assets/honey_im_subtle.png', function(img, isError) {\n * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'});\n * canvas.setBackgroundImage(img, canvas.renderAll.bind(canvas));\n * });\n * @example Stretched backgroundImage #2 - width/height correspond to canvas width/height\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * width: canvas.width,\n * height: canvas.height,\n * // Needed to position backgroundImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example backgroundImage loaded from cross-origin\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top',\n * crossOrigin: 'anonymous'\n * });\n */\n // TODO: fix stretched examples\n setBackgroundImage: function (image, callback, options) {\n return this.__setBgOverlayImage('backgroundImage', image, callback, options);\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#overlayColor|foreground color} for this canvas\n * @param {(String|fabric.Pattern)} overlayColor Color or pattern to set foreground color to\n * @param {Function} callback Callback to invoke when foreground color is set\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/pB55h/|jsFiddle demo}\n * @example Normal overlayColor - color value\n * canvas.setOverlayColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as overlayColor\n * canvas.setOverlayColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png'\n * }, canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as overlayColor with repeat and offset\n * canvas.setOverlayColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png',\n * repeat: 'repeat',\n * offsetX: 200,\n * offsetY: 100\n * }, canvas.renderAll.bind(canvas));\n */\n setOverlayColor: function(overlayColor, callback) {\n return this.__setBgOverlayColor('overlayColor', overlayColor, callback);\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#backgroundColor|background color} for this canvas\n * @param {(String|fabric.Pattern)} backgroundColor Color or pattern to set background color to\n * @param {Function} callback Callback to invoke when background color is set\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/hXzvk/|jsFiddle demo}\n * @example Normal backgroundColor - color value\n * canvas.setBackgroundColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as backgroundColor\n * canvas.setBackgroundColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png'\n * }, canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as backgroundColor with repeat and offset\n * canvas.setBackgroundColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png',\n * repeat: 'repeat',\n * offsetX: 200,\n * offsetY: 100\n * }, canvas.renderAll.bind(canvas));\n */\n setBackgroundColor: function(backgroundColor, callback) {\n return this.__setBgOverlayColor('backgroundColor', backgroundColor, callback);\n },\n\n /**\n * @private\n * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundImage|backgroundImage}\n * or {@link fabric.StaticCanvas#overlayImage|overlayImage})\n * @param {(fabric.Image|String|null)} image fabric.Image instance, URL of an image or null to set background or overlay to\n * @param {Function} callback Callback to invoke when image is loaded and set as background or overlay. The first argument is the created image, the second argument is a flag indicating whether an error occurred or not.\n * @param {Object} [options] Optional options to set for the {@link fabric.Image|image}.\n */\n __setBgOverlayImage: function(property, image, callback, options) {\n if (typeof image === 'string') {\n fabric.util.loadImage(image, function(img, isError) {\n if (img) {\n var instance = new fabric.Image(img, options);\n this[property] = instance;\n instance.canvas = this;\n }\n callback && callback(img, isError);\n }, this, options && options.crossOrigin);\n }\n else {\n options && image.setOptions(options);\n this[property] = image;\n image && (image.canvas = this);\n callback && callback(image, false);\n }\n\n return this;\n },\n\n /**\n * @private\n * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundColor|backgroundColor}\n * or {@link fabric.StaticCanvas#overlayColor|overlayColor})\n * @param {(Object|String|null)} color Object with pattern information, color value or null\n * @param {Function} [callback] Callback is invoked when color is set\n */\n __setBgOverlayColor: function(property, color, callback) {\n this[property] = color;\n this._initGradient(color, property);\n this._initPattern(color, property, callback);\n return this;\n },\n\n /**\n * @private\n */\n _createCanvasElement: function() {\n var element = createCanvasElement();\n if (!element) {\n throw CANVAS_INIT_ERROR;\n }\n if (!element.style) {\n element.style = { };\n }\n if (typeof element.getContext === 'undefined') {\n throw CANVAS_INIT_ERROR;\n }\n return element;\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initOptions: function (options) {\n var lowerCanvasEl = this.lowerCanvasEl;\n this._setOptions(options);\n\n this.width = this.width || parseInt(lowerCanvasEl.width, 10) || 0;\n this.height = this.height || parseInt(lowerCanvasEl.height, 10) || 0;\n\n if (!this.lowerCanvasEl.style) {\n return;\n }\n\n lowerCanvasEl.width = this.width;\n lowerCanvasEl.height = this.height;\n\n lowerCanvasEl.style.width = this.width + 'px';\n lowerCanvasEl.style.height = this.height + 'px';\n\n this.viewportTransform = this.viewportTransform.slice();\n },\n\n /**\n * Creates a bottom canvas\n * @private\n * @param {HTMLElement} [canvasEl]\n */\n _createLowerCanvas: function (canvasEl) {\n // canvasEl === 'HTMLCanvasElement' does not work on jsdom/node\n if (canvasEl && canvasEl.getContext) {\n this.lowerCanvasEl = canvasEl;\n }\n else {\n this.lowerCanvasEl = fabric.util.getById(canvasEl) || this._createCanvasElement();\n }\n\n fabric.util.addClass(this.lowerCanvasEl, 'lower-canvas');\n\n if (this.interactive) {\n this._applyCanvasStyle(this.lowerCanvasEl);\n }\n\n this.contextContainer = this.lowerCanvasEl.getContext('2d');\n },\n\n /**\n * Returns canvas width (in px)\n * @return {Number}\n */\n getWidth: function () {\n return this.width;\n },\n\n /**\n * Returns canvas height (in px)\n * @return {Number}\n */\n getHeight: function () {\n return this.height;\n },\n\n /**\n * Sets width of this canvas instance\n * @param {Number|String} value Value to set width to\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setWidth: function (value, options) {\n return this.setDimensions({ width: value }, options);\n },\n\n /**\n * Sets height of this canvas instance\n * @param {Number|String} value Value to set height to\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setHeight: function (value, options) {\n return this.setDimensions({ height: value }, options);\n },\n\n /**\n * Sets dimensions (width, height) of this canvas instance. when options.cssOnly flag active you should also supply the unit of measure (px/%/em)\n * @param {Object} dimensions Object with width/height properties\n * @param {Number|String} [dimensions.width] Width of canvas element\n * @param {Number|String} [dimensions.height] Height of canvas element\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n setDimensions: function (dimensions, options) {\n var cssValue;\n\n options = options || {};\n\n for (var prop in dimensions) {\n cssValue = dimensions[prop];\n\n if (!options.cssOnly) {\n this._setBackstoreDimension(prop, dimensions[prop]);\n cssValue += 'px';\n this.hasLostContext = true;\n }\n\n if (!options.backstoreOnly) {\n this._setCssDimension(prop, cssValue);\n }\n }\n if (this._isCurrentlyDrawing) {\n this.freeDrawingBrush && this.freeDrawingBrush._setBrushStyles();\n }\n this._initRetinaScaling();\n this.calcOffset();\n\n if (!options.cssOnly) {\n this.requestRenderAll();\n }\n\n return this;\n },\n\n /**\n * Helper for setting width/height\n * @private\n * @param {String} prop property (width|height)\n * @param {Number} value value to set property to\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n _setBackstoreDimension: function (prop, value) {\n this.lowerCanvasEl[prop] = value;\n\n if (this.upperCanvasEl) {\n this.upperCanvasEl[prop] = value;\n }\n\n if (this.cacheCanvasEl) {\n this.cacheCanvasEl[prop] = value;\n }\n\n this[prop] = value;\n\n return this;\n },\n\n /**\n * Helper for setting css width/height\n * @private\n * @param {String} prop property (width|height)\n * @param {String} value value to set property to\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n _setCssDimension: function (prop, value) {\n this.lowerCanvasEl.style[prop] = value;\n\n if (this.upperCanvasEl) {\n this.upperCanvasEl.style[prop] = value;\n }\n\n if (this.wrapperEl) {\n this.wrapperEl.style[prop] = value;\n }\n\n return this;\n },\n\n /**\n * Returns canvas zoom level\n * @return {Number}\n */\n getZoom: function () {\n return this.viewportTransform[0];\n },\n\n /**\n * Sets viewport transform of this canvas instance\n * @param {Array} vpt the transform in the form of context.transform\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setViewportTransform: function (vpt) {\n var activeObject = this._activeObject,\n backgroundObject = this.backgroundImage,\n overlayObject = this.overlayImage,\n object, i, len;\n this.viewportTransform = vpt;\n for (i = 0, len = this._objects.length; i < len; i++) {\n object = this._objects[i];\n object.group || object.setCoords(true);\n }\n if (activeObject) {\n activeObject.setCoords();\n }\n if (backgroundObject) {\n backgroundObject.setCoords(true);\n }\n if (overlayObject) {\n overlayObject.setCoords(true);\n }\n this.calcViewportBoundaries();\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Sets zoom level of this canvas instance, the zoom centered around point\n * meaning that following zoom to point with the same point will have the visual\n * effect of the zoom originating from that point. The point won't move.\n * It has nothing to do with canvas center or visual center of the viewport.\n * @param {fabric.Point} point to zoom with respect to\n * @param {Number} value to set zoom to, less than 1 zooms out\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n zoomToPoint: function (point, value) {\n // TODO: just change the scale, preserve other transformations\n var before = point, vpt = this.viewportTransform.slice(0);\n point = transformPoint(point, invertTransform(this.viewportTransform));\n vpt[0] = value;\n vpt[3] = value;\n var after = transformPoint(point, vpt);\n vpt[4] += before.x - after.x;\n vpt[5] += before.y - after.y;\n return this.setViewportTransform(vpt);\n },\n\n /**\n * Sets zoom level of this canvas instance\n * @param {Number} value to set zoom to, less than 1 zooms out\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setZoom: function (value) {\n this.zoomToPoint(new fabric.Point(0, 0), value);\n return this;\n },\n\n /**\n * Pan viewport so as to place point at top left corner of canvas\n * @param {fabric.Point} point to move to\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n absolutePan: function (point) {\n var vpt = this.viewportTransform.slice(0);\n vpt[4] = -point.x;\n vpt[5] = -point.y;\n return this.setViewportTransform(vpt);\n },\n\n /**\n * Pans viewpoint relatively\n * @param {fabric.Point} point (position vector) to move by\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n relativePan: function (point) {\n return this.absolutePan(new fabric.Point(\n -point.x - this.viewportTransform[4],\n -point.y - this.viewportTransform[5]\n ));\n },\n\n /**\n * Returns <canvas> element corresponding to this instance\n * @return {HTMLCanvasElement}\n */\n getElement: function () {\n return this.lowerCanvasEl;\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was added\n */\n _onObjectAdded: function(obj) {\n this.stateful && obj.setupState();\n obj._set('canvas', this);\n obj.setCoords();\n this.fire('object:added', { target: obj });\n obj.fire('added');\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was removed\n */\n _onObjectRemoved: function(obj) {\n this.fire('object:removed', { target: obj });\n obj.fire('removed');\n delete obj.canvas;\n },\n\n /**\n * Clears specified context of canvas element\n * @param {CanvasRenderingContext2D} ctx Context to clear\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clearContext: function(ctx) {\n ctx.clearRect(0, 0, this.width, this.height);\n return this;\n },\n\n /**\n * Returns context of canvas where objects are drawn\n * @return {CanvasRenderingContext2D}\n */\n getContext: function () {\n return this.contextContainer;\n },\n\n /**\n * Clears all contexts (background, main, top) of an instance\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clear: function () {\n this._objects.length = 0;\n this.backgroundImage = null;\n this.overlayImage = null;\n this.backgroundColor = '';\n this.overlayColor = '';\n if (this._hasITextHandlers) {\n this.off('mouse:up', this._mouseUpITextHandler);\n this._iTextInstances = null;\n this._hasITextHandlers = false;\n }\n this.clearContext(this.contextContainer);\n this.fire('canvas:cleared');\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Renders the canvas\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAll: function () {\n var canvasToDrawOn = this.contextContainer;\n this.renderCanvas(canvasToDrawOn, this._objects);\n return this;\n },\n\n /**\n * Function created to be instance bound at initialization\n * used in requestAnimationFrame rendering\n * Let the fabricJS call it. If you call it manually you could have more\n * animationFrame stacking on to of each other\n * for an imperative rendering, use canvas.renderAll\n * @private\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAndReset: function() {\n this.isRendering = 0;\n this.renderAll();\n },\n\n /**\n * Append a renderAll request to next animation frame.\n * unless one is already in progress, in that case nothing is done\n * a boolean flag will avoid appending more.\n * @return {fabric.Canvas} instance\n * @chainable\n */\n requestRenderAll: function () {\n if (!this.isRendering) {\n this.isRendering = fabric.util.requestAnimFrame(this.renderAndResetBound);\n }\n return this;\n },\n\n /**\n * Calculate the position of the 4 corner of canvas with current viewportTransform.\n * helps to determinate when an object is in the current rendering viewport using\n * object absolute coordinates ( aCoords )\n * @return {Object} points.tl\n * @chainable\n */\n calcViewportBoundaries: function() {\n var points = { }, width = this.width, height = this.height,\n iVpt = invertTransform(this.viewportTransform);\n points.tl = transformPoint({ x: 0, y: 0 }, iVpt);\n points.br = transformPoint({ x: width, y: height }, iVpt);\n points.tr = new fabric.Point(points.br.x, points.tl.y);\n points.bl = new fabric.Point(points.tl.x, points.br.y);\n this.vptCoords = points;\n return points;\n },\n\n cancelRequestedRender: function() {\n if (this.isRendering) {\n fabric.util.cancelAnimFrame(this.isRendering);\n this.isRendering = 0;\n }\n },\n\n /**\n * Renders background, objects, overlay and controls.\n * @param {CanvasRenderingContext2D} ctx\n * @param {Array} objects to render\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderCanvas: function(ctx, objects) {\n var v = this.viewportTransform, path = this.clipPath;\n this.cancelRequestedRender();\n this.calcViewportBoundaries();\n this.clearContext(ctx);\n fabric.util.setImageSmoothing(ctx, this.imageSmoothingEnabled);\n this.fire('before:render', { ctx: ctx, });\n this._renderBackground(ctx);\n\n ctx.save();\n //apply viewport transform once for all rendering process\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n this._renderObjects(ctx, objects);\n ctx.restore();\n if (!this.controlsAboveOverlay && this.interactive) {\n this.drawControls(ctx);\n }\n if (path) {\n path.canvas = this;\n // needed to setup a couple of variables\n path.shouldCache();\n path._transformDone = true;\n path.renderCache({ forClipping: true });\n this.drawClipPathOnCanvas(ctx);\n }\n this._renderOverlay(ctx);\n if (this.controlsAboveOverlay && this.interactive) {\n this.drawControls(ctx);\n }\n this.fire('after:render', { ctx: ctx, });\n },\n\n /**\n * Paint the cached clipPath on the lowerCanvasEl\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawClipPathOnCanvas: function(ctx) {\n var v = this.viewportTransform, path = this.clipPath;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n // DEBUG: uncomment this line, comment the following\n // ctx.globalAlpha = 0.4;\n ctx.globalCompositeOperation = 'destination-in';\n path.transform(ctx);\n ctx.scale(1 / path.zoomX, 1 / path.zoomY);\n ctx.drawImage(path._cacheCanvas, -path.cacheTranslationX, -path.cacheTranslationY);\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Array} objects to render\n */\n _renderObjects: function(ctx, objects) {\n var i, len;\n for (i = 0, len = objects.length; i < len; ++i) {\n objects[i] && objects[i].render(ctx);\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {string} property 'background' or 'overlay'\n */\n _renderBackgroundOrOverlay: function(ctx, property) {\n var fill = this[property + 'Color'], object = this[property + 'Image'],\n v = this.viewportTransform, needsVpt = this[property + 'Vpt'];\n if (!fill && !object) {\n return;\n }\n if (fill) {\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.width, 0);\n ctx.lineTo(this.width, this.height);\n ctx.lineTo(0, this.height);\n ctx.closePath();\n ctx.fillStyle = fill.toLive\n ? fill.toLive(ctx, this)\n : fill;\n if (needsVpt) {\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n }\n ctx.transform(1, 0, 0, 1, fill.offsetX || 0, fill.offsetY || 0);\n var m = fill.gradientTransform || fill.patternTransform;\n m && ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n ctx.fill();\n ctx.restore();\n }\n if (object) {\n ctx.save();\n if (needsVpt) {\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n }\n object.render(ctx);\n ctx.restore();\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderBackground: function(ctx) {\n this._renderBackgroundOrOverlay(ctx, 'background');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderOverlay: function(ctx) {\n this._renderBackgroundOrOverlay(ctx, 'overlay');\n },\n\n /**\n * Returns coordinates of a center of canvas.\n * Returned value is an object with top and left properties\n * @return {Object} object with \"top\" and \"left\" number values\n */\n getCenter: function () {\n return {\n top: this.height / 2,\n left: this.width / 2\n };\n },\n\n /**\n * Centers object horizontally in the canvas\n * @param {fabric.Object} object Object to center horizontally\n * @return {fabric.Canvas} thisArg\n */\n centerObjectH: function (object) {\n return this._centerObject(object, new fabric.Point(this.getCenter().left, object.getCenterPoint().y));\n },\n\n /**\n * Centers object vertically in the canvas\n * @param {fabric.Object} object Object to center vertically\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n centerObjectV: function (object) {\n return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, this.getCenter().top));\n },\n\n /**\n * Centers object vertically and horizontally in the canvas\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n centerObject: function(object) {\n var center = this.getCenter();\n\n return this._centerObject(object, new fabric.Point(center.left, center.top));\n },\n\n /**\n * Centers object vertically and horizontally in the viewport\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n viewportCenterObject: function(object) {\n var vpCenter = this.getVpCenter();\n\n return this._centerObject(object, vpCenter);\n },\n\n /**\n * Centers object horizontally in the viewport, object.top is unchanged\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n viewportCenterObjectH: function(object) {\n var vpCenter = this.getVpCenter();\n this._centerObject(object, new fabric.Point(vpCenter.x, object.getCenterPoint().y));\n return this;\n },\n\n /**\n * Centers object Vertically in the viewport, object.top is unchanged\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n viewportCenterObjectV: function(object) {\n var vpCenter = this.getVpCenter();\n\n return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, vpCenter.y));\n },\n\n /**\n * Calculate the point in canvas that correspond to the center of actual viewport.\n * @return {fabric.Point} vpCenter, viewport center\n * @chainable\n */\n getVpCenter: function() {\n var center = this.getCenter(),\n iVpt = invertTransform(this.viewportTransform);\n return transformPoint({ x: center.left, y: center.top }, iVpt);\n },\n\n /**\n * @private\n * @param {fabric.Object} object Object to center\n * @param {fabric.Point} center Center point\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n _centerObject: function(object, center) {\n object.setPositionByOrigin(center, 'center', 'center');\n object.setCoords();\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Returns dataless JSON representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {String} json string\n */\n toDatalessJSON: function (propertiesToInclude) {\n return this.toDatalessObject(propertiesToInclude);\n },\n\n /**\n * Returns object representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function (propertiesToInclude) {\n return this._toObjectMethod('toObject', propertiesToInclude);\n },\n\n /**\n * Returns dataless object representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function (propertiesToInclude) {\n return this._toObjectMethod('toDatalessObject', propertiesToInclude);\n },\n\n /**\n * @private\n */\n _toObjectMethod: function (methodName, propertiesToInclude) {\n\n var clipPath = this.clipPath, data = {\n version: fabric.version,\n objects: this._toObjects(methodName, propertiesToInclude),\n };\n if (clipPath) {\n data.clipPath = this._toObject(this.clipPath, methodName, propertiesToInclude);\n }\n extend(data, this.__serializeBgOverlay(methodName, propertiesToInclude));\n\n fabric.util.populateWithProperties(this, data, propertiesToInclude);\n\n return data;\n },\n\n /**\n * @private\n */\n _toObjects: function(methodName, propertiesToInclude) {\n return this._objects.filter(function(object) {\n return !object.excludeFromExport;\n }).map(function(instance) {\n return this._toObject(instance, methodName, propertiesToInclude);\n }, this);\n },\n\n /**\n * @private\n */\n _toObject: function(instance, methodName, propertiesToInclude) {\n var originalValue;\n\n if (!this.includeDefaultValues) {\n originalValue = instance.includeDefaultValues;\n instance.includeDefaultValues = false;\n }\n\n var object = instance[methodName](propertiesToInclude);\n if (!this.includeDefaultValues) {\n instance.includeDefaultValues = originalValue;\n }\n return object;\n },\n\n /**\n * @private\n */\n __serializeBgOverlay: function(methodName, propertiesToInclude) {\n var data = { }, bgImage = this.backgroundImage, overlay = this.overlayImage;\n\n if (this.backgroundColor) {\n data.background = this.backgroundColor.toObject\n ? this.backgroundColor.toObject(propertiesToInclude)\n : this.backgroundColor;\n }\n\n if (this.overlayColor) {\n data.overlay = this.overlayColor.toObject\n ? this.overlayColor.toObject(propertiesToInclude)\n : this.overlayColor;\n }\n if (bgImage && !bgImage.excludeFromExport) {\n data.backgroundImage = this._toObject(bgImage, methodName, propertiesToInclude);\n }\n if (overlay && !overlay.excludeFromExport) {\n data.overlayImage = this._toObject(overlay, methodName, propertiesToInclude);\n }\n\n return data;\n },\n\n /* _TO_SVG_START_ */\n /**\n * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true,\n * a zoomed canvas will then produce zoomed SVG output.\n * @type Boolean\n * @default\n */\n svgViewportTransformation: true,\n\n /**\n * Returns SVG representation of canvas\n * @function\n * @param {Object} [options] Options object for SVG output\n * @param {Boolean} [options.suppressPreamble=false] If true xml tag is not included\n * @param {Object} [options.viewBox] SVG viewbox object\n * @param {Number} [options.viewBox.x] x-coordinate of viewbox\n * @param {Number} [options.viewBox.y] y-coordinate of viewbox\n * @param {Number} [options.viewBox.width] Width of viewbox\n * @param {Number} [options.viewBox.height] Height of viewbox\n * @param {String} [options.encoding=UTF-8] Encoding of SVG output\n * @param {String} [options.width] desired width of svg with or without units\n * @param {String} [options.height] desired height of svg with or without units\n * @param {Function} [reviver] Method for further parsing of svg elements, called after each fabric object converted into svg representation.\n * @return {String} SVG string\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/jQ3ZZ/|jsFiddle demo}\n * @example Normal SVG output\n * var svg = canvas.toSVG();\n * @example SVG output without preamble (without <?xml ../>)\n * var svg = canvas.toSVG({suppressPreamble: true});\n * @example SVG output with viewBox attribute\n * var svg = canvas.toSVG({\n * viewBox: {\n * x: 100,\n * y: 100,\n * width: 200,\n * height: 300\n * }\n * });\n * @example SVG output with different encoding (default: UTF-8)\n * var svg = canvas.toSVG({encoding: 'ISO-8859-1'});\n * @example Modify SVG output with reviver function\n * var svg = canvas.toSVG(null, function(svg) {\n * return svg.replace('stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; ', '');\n * });\n */\n toSVG: function(options, reviver) {\n options || (options = { });\n options.reviver = reviver;\n var markup = [];\n\n this._setSVGPreamble(markup, options);\n this._setSVGHeader(markup, options);\n if (this.clipPath) {\n markup.push('\\n');\n }\n this._setSVGBgOverlayColor(markup, 'background');\n this._setSVGBgOverlayImage(markup, 'backgroundImage', reviver);\n this._setSVGObjects(markup, reviver);\n if (this.clipPath) {\n markup.push('\\n');\n }\n this._setSVGBgOverlayColor(markup, 'overlay');\n this._setSVGBgOverlayImage(markup, 'overlayImage', reviver);\n\n markup.push('');\n\n return markup.join('');\n },\n\n /**\n * @private\n */\n _setSVGPreamble: function(markup, options) {\n if (options.suppressPreamble) {\n return;\n }\n markup.push(\n '\\n',\n '\\n'\n );\n },\n\n /**\n * @private\n */\n _setSVGHeader: function(markup, options) {\n var width = options.width || this.width,\n height = options.height || this.height,\n vpt, viewBox = 'viewBox=\"0 0 ' + this.width + ' ' + this.height + '\" ',\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n\n if (options.viewBox) {\n viewBox = 'viewBox=\"' +\n options.viewBox.x + ' ' +\n options.viewBox.y + ' ' +\n options.viewBox.width + ' ' +\n options.viewBox.height + '\" ';\n }\n else {\n if (this.svgViewportTransformation) {\n vpt = this.viewportTransform;\n viewBox = 'viewBox=\"' +\n toFixed(-vpt[4] / vpt[0], NUM_FRACTION_DIGITS) + ' ' +\n toFixed(-vpt[5] / vpt[3], NUM_FRACTION_DIGITS) + ' ' +\n toFixed(this.width / vpt[0], NUM_FRACTION_DIGITS) + ' ' +\n toFixed(this.height / vpt[3], NUM_FRACTION_DIGITS) + '\" ';\n }\n }\n\n markup.push(\n '\\n',\n 'Created with Fabric.js ', fabric.version, '\\n',\n '\\n',\n this.createSVGFontFacesMarkup(),\n this.createSVGRefElementsMarkup(),\n this.createSVGClipPathMarkup(options),\n '\\n'\n );\n },\n\n createSVGClipPathMarkup: function(options) {\n var clipPath = this.clipPath;\n if (clipPath) {\n clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++;\n return '\\n' +\n this.clipPath.toClipPathSVG(options.reviver) +\n '\\n';\n }\n return '';\n },\n\n /**\n * Creates markup containing SVG referenced elements like patterns, gradients etc.\n * @return {String}\n */\n createSVGRefElementsMarkup: function() {\n var _this = this,\n markup = ['background', 'overlay'].map(function(prop) {\n var fill = _this[prop + 'Color'];\n if (fill && fill.toLive) {\n var shouldTransform = _this[prop + 'Vpt'], vpt = _this.viewportTransform,\n object = {\n width: _this.width / (shouldTransform ? vpt[0] : 1),\n height: _this.height / (shouldTransform ? vpt[3] : 1)\n };\n return fill.toSVG(\n object,\n { additionalTransform: shouldTransform ? fabric.util.matrixToSVG(vpt) : '' }\n );\n }\n });\n return markup.join('');\n },\n\n /**\n * Creates markup containing SVG font faces,\n * font URLs for font faces must be collected by developers\n * and are not extracted from the DOM by fabricjs\n * @param {Array} objects Array of fabric objects\n * @return {String}\n */\n createSVGFontFacesMarkup: function() {\n var markup = '', fontList = { }, obj, fontFamily,\n style, row, rowIndex, _char, charIndex, i, len,\n fontPaths = fabric.fontPaths, objects = [];\n\n this._objects.forEach(function add(object) {\n objects.push(object);\n if (object._objects) {\n object._objects.forEach(add);\n }\n });\n\n for (i = 0, len = objects.length; i < len; i++) {\n obj = objects[i];\n fontFamily = obj.fontFamily;\n if (obj.type.indexOf('text') === -1 || fontList[fontFamily] || !fontPaths[fontFamily]) {\n continue;\n }\n fontList[fontFamily] = true;\n if (!obj.styles) {\n continue;\n }\n style = obj.styles;\n for (rowIndex in style) {\n row = style[rowIndex];\n for (charIndex in row) {\n _char = row[charIndex];\n fontFamily = _char.fontFamily;\n if (!fontList[fontFamily] && fontPaths[fontFamily]) {\n fontList[fontFamily] = true;\n }\n }\n }\n }\n\n for (var j in fontList) {\n markup += [\n '\\t\\t@font-face {\\n',\n '\\t\\t\\tfont-family: \\'', j, '\\';\\n',\n '\\t\\t\\tsrc: url(\\'', fontPaths[j], '\\');\\n',\n '\\t\\t}\\n'\n ].join('');\n }\n\n if (markup) {\n markup = [\n '\\t\\n'\n ].join('');\n }\n\n return markup;\n },\n\n /**\n * @private\n */\n _setSVGObjects: function(markup, reviver) {\n var instance, i, len, objects = this._objects;\n for (i = 0, len = objects.length; i < len; i++) {\n instance = objects[i];\n if (instance.excludeFromExport) {\n continue;\n }\n this._setSVGObject(markup, instance, reviver);\n }\n },\n\n /**\n * @private\n */\n _setSVGObject: function(markup, instance, reviver) {\n markup.push(instance.toSVG(reviver));\n },\n\n /**\n * @private\n */\n _setSVGBgOverlayImage: function(markup, property, reviver) {\n if (this[property] && !this[property].excludeFromExport && this[property].toSVG) {\n markup.push(this[property].toSVG(reviver));\n }\n },\n\n /**\n * @private\n */\n _setSVGBgOverlayColor: function(markup, property) {\n var filler = this[property + 'Color'], vpt = this.viewportTransform, finalWidth = this.width,\n finalHeight = this.height;\n if (!filler) {\n return;\n }\n if (filler.toLive) {\n var repeat = filler.repeat, iVpt = fabric.util.invertTransform(vpt), shouldInvert = this[property + 'Vpt'],\n additionalTransform = shouldInvert ? fabric.util.matrixToSVG(iVpt) : '';\n markup.push(\n '\\n'\n );\n }\n else {\n markup.push(\n '\\n'\n );\n }\n },\n /* _TO_SVG_END_ */\n\n /**\n * Moves an object or the objects of a multiple selection\n * to the bottom of the stack of drawn objects\n * @param {fabric.Object} object Object to send to back\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n sendToBack: function (object) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, objs;\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = objs.length; i--;) {\n obj = objs[i];\n removeFromArray(this._objects, obj);\n this._objects.unshift(obj);\n }\n }\n else {\n removeFromArray(this._objects, object);\n this._objects.unshift(object);\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Moves an object or the objects of a multiple selection\n * to the top of the stack of drawn objects\n * @param {fabric.Object} object Object to send\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n bringToFront: function (object) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, objs;\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = 0; i < objs.length; i++) {\n obj = objs[i];\n removeFromArray(this._objects, obj);\n this._objects.push(obj);\n }\n }\n else {\n removeFromArray(this._objects, object);\n this._objects.push(object);\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Moves an object or a selection down in stack of drawn objects\n * An optional parameter, intersecting allows to move the object in behind\n * the first intersecting object. Where intersection is calculated with\n * bounding box. If no intersection is found, there will not be change in the\n * stack.\n * @param {fabric.Object} object Object to send\n * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n sendBackwards: function (object, intersecting) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, idx, newIdx, objs, objsMoved = 0;\n\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = 0; i < objs.length; i++) {\n obj = objs[i];\n idx = this._objects.indexOf(obj);\n if (idx > 0 + objsMoved) {\n newIdx = idx - 1;\n removeFromArray(this._objects, obj);\n this._objects.splice(newIdx, 0, obj);\n }\n objsMoved++;\n }\n }\n else {\n idx = this._objects.indexOf(object);\n if (idx !== 0) {\n // if object is not on the bottom of stack\n newIdx = this._findNewLowerIndex(object, idx, intersecting);\n removeFromArray(this._objects, object);\n this._objects.splice(newIdx, 0, object);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * @private\n */\n _findNewLowerIndex: function(object, idx, intersecting) {\n var newIdx, i;\n\n if (intersecting) {\n newIdx = idx;\n\n // traverse down the stack looking for the nearest intersecting object\n for (i = idx - 1; i >= 0; --i) {\n\n var isIntersecting = object.intersectsWithObject(this._objects[i]) ||\n object.isContainedWithinObject(this._objects[i]) ||\n this._objects[i].isContainedWithinObject(object);\n\n if (isIntersecting) {\n newIdx = i;\n break;\n }\n }\n }\n else {\n newIdx = idx - 1;\n }\n\n return newIdx;\n },\n\n /**\n * Moves an object or a selection up in stack of drawn objects\n * An optional parameter, intersecting allows to move the object in front\n * of the first intersecting object. Where intersection is calculated with\n * bounding box. If no intersection is found, there will not be change in the\n * stack.\n * @param {fabric.Object} object Object to send\n * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n bringForward: function (object, intersecting) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, idx, newIdx, objs, objsMoved = 0;\n\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = objs.length; i--;) {\n obj = objs[i];\n idx = this._objects.indexOf(obj);\n if (idx < this._objects.length - 1 - objsMoved) {\n newIdx = idx + 1;\n removeFromArray(this._objects, obj);\n this._objects.splice(newIdx, 0, obj);\n }\n objsMoved++;\n }\n }\n else {\n idx = this._objects.indexOf(object);\n if (idx !== this._objects.length - 1) {\n // if object is not on top of stack (last item in an array)\n newIdx = this._findNewUpperIndex(object, idx, intersecting);\n removeFromArray(this._objects, object);\n this._objects.splice(newIdx, 0, object);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * @private\n */\n _findNewUpperIndex: function(object, idx, intersecting) {\n var newIdx, i, len;\n\n if (intersecting) {\n newIdx = idx;\n\n // traverse up the stack looking for the nearest intersecting object\n for (i = idx + 1, len = this._objects.length; i < len; ++i) {\n\n var isIntersecting = object.intersectsWithObject(this._objects[i]) ||\n object.isContainedWithinObject(this._objects[i]) ||\n this._objects[i].isContainedWithinObject(object);\n\n if (isIntersecting) {\n newIdx = i;\n break;\n }\n }\n }\n else {\n newIdx = idx + 1;\n }\n\n return newIdx;\n },\n\n /**\n * Moves an object to specified level in stack of drawn objects\n * @param {fabric.Object} object Object to send\n * @param {Number} index Position to move to\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n moveTo: function (object, index) {\n removeFromArray(this._objects, object);\n this._objects.splice(index, 0, object);\n return this.renderOnAddRemove && this.requestRenderAll();\n },\n\n /**\n * Clears a canvas element and dispose objects\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n dispose: function () {\n // cancel eventually ongoing renders\n if (this.isRendering) {\n fabric.util.cancelAnimFrame(this.isRendering);\n this.isRendering = 0;\n }\n this.forEachObject(function(object) {\n object.dispose && object.dispose();\n });\n this._objects = [];\n if (this.backgroundImage && this.backgroundImage.dispose) {\n this.backgroundImage.dispose();\n }\n this.backgroundImage = null;\n if (this.overlayImage && this.overlayImage.dispose) {\n this.overlayImage.dispose();\n }\n this.overlayImage = null;\n this._iTextInstances = null;\n this.contextContainer = null;\n fabric.util.cleanUpJsdomNode(this.lowerCanvasEl);\n this.lowerCanvasEl = undefined;\n return this;\n },\n\n /**\n * Returns a string representation of an instance\n * @return {String} string representation of an instance\n */\n toString: function () {\n return '#';\n }\n });\n\n extend(fabric.StaticCanvas.prototype, fabric.Observable);\n extend(fabric.StaticCanvas.prototype, fabric.Collection);\n extend(fabric.StaticCanvas.prototype, fabric.DataURLExporter);\n\n extend(fabric.StaticCanvas, /** @lends fabric.StaticCanvas */ {\n\n /**\n * @static\n * @type String\n * @default\n */\n EMPTY_JSON: '{\"objects\": [], \"background\": \"white\"}',\n\n /**\n * Provides a way to check support of some of the canvas methods\n * (either those of HTMLCanvasElement itself, or rendering context)\n *\n * @param {String} methodName Method to check support for;\n * Could be one of \"setLineDash\"\n * @return {Boolean | null} `true` if method is supported (or at least exists),\n * `null` if canvas element or context can not be initialized\n */\n supports: function (methodName) {\n var el = createCanvasElement();\n\n if (!el || !el.getContext) {\n return null;\n }\n\n var ctx = el.getContext('2d');\n if (!ctx) {\n return null;\n }\n\n switch (methodName) {\n\n case 'setLineDash':\n return typeof ctx.setLineDash !== 'undefined';\n\n default:\n return null;\n }\n }\n });\n\n /**\n * Returns Object representation of canvas\n * this alias is provided because if you call JSON.stringify on an instance,\n * the toJSON object will be invoked if it exists.\n * Having a toJSON method means you can do JSON.stringify(myCanvas)\n * @function\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} JSON compatible object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/pec86/|jsFiddle demo}\n * @example JSON without additional properties\n * var json = canvas.toJSON();\n * @example JSON with additional properties included\n * var json = canvas.toJSON(['lockMovementX', 'lockMovementY', 'lockRotation', 'lockScalingX', 'lockScalingY']);\n * @example JSON without default values\n * canvas.includeDefaultValues = false;\n * var json = canvas.toJSON();\n */\n fabric.StaticCanvas.prototype.toJSON = fabric.StaticCanvas.prototype.toObject;\n\n if (fabric.isLikelyNode) {\n fabric.StaticCanvas.prototype.createPNGStream = function() {\n var impl = getNodeCanvas(this.lowerCanvasEl);\n return impl && impl.createPNGStream();\n };\n fabric.StaticCanvas.prototype.createJPEGStream = function(opts) {\n var impl = getNodeCanvas(this.lowerCanvasEl);\n return impl && impl.createJPEGStream(opts);\n };\n }\n})();\n\n\n/**\n * BaseBrush class\n * @class fabric.BaseBrush\n * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo}\n */\nfabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype */ {\n\n /**\n * Color of a brush\n * @type String\n * @default\n */\n color: 'rgb(0, 0, 0)',\n\n /**\n * Width of a brush, has to be a Number, no string literals\n * @type Number\n * @default\n */\n width: 1,\n\n /**\n * Shadow object representing shadow of this shape.\n * Backwards incompatibility note: This property replaces \"shadowColor\" (String), \"shadowOffsetX\" (Number),\n * \"shadowOffsetY\" (Number) and \"shadowBlur\" (Number) since v1.2.12\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * Line endings style of a brush (one of \"butt\", \"round\", \"square\")\n * @type String\n * @default\n */\n strokeLineCap: 'round',\n\n /**\n * Corner style of a brush (one of \"bevel\", \"round\", \"miter\")\n * @type String\n * @default\n */\n strokeLineJoin: 'round',\n\n /**\n * Maximum miter length (used for strokeLineJoin = \"miter\") of a brush's\n * @type Number\n * @default\n */\n strokeMiterLimit: 10,\n\n /**\n * Stroke Dash Array.\n * @type Array\n * @default\n */\n strokeDashArray: null,\n\n /**\n * When `true`, the free drawing is limited to the whiteboard size. Default to false.\n * @type Boolean\n * @default false\n */\n\n limitedToCanvasSize: false,\n\n\n /**\n * Sets brush styles\n * @private\n */\n _setBrushStyles: function() {\n var ctx = this.canvas.contextTop;\n ctx.strokeStyle = this.color;\n ctx.lineWidth = this.width;\n ctx.lineCap = this.strokeLineCap;\n ctx.miterLimit = this.strokeMiterLimit;\n ctx.lineJoin = this.strokeLineJoin;\n if (fabric.StaticCanvas.supports('setLineDash')) {\n ctx.setLineDash(this.strokeDashArray || []);\n }\n },\n\n /**\n * Sets the transformation on given context\n * @param {RenderingContext2d} ctx context to render on\n * @private\n */\n _saveAndTransform: function(ctx) {\n var v = this.canvas.viewportTransform;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n },\n\n /**\n * Sets brush shadow styles\n * @private\n */\n _setShadow: function() {\n if (!this.shadow) {\n return;\n }\n\n var canvas = this.canvas,\n shadow = this.shadow,\n ctx = canvas.contextTop,\n zoom = canvas.getZoom();\n if (canvas && canvas._isRetinaScaling()) {\n zoom *= fabric.devicePixelRatio;\n }\n\n ctx.shadowColor = shadow.color;\n ctx.shadowBlur = shadow.blur * zoom;\n ctx.shadowOffsetX = shadow.offsetX * zoom;\n ctx.shadowOffsetY = shadow.offsetY * zoom;\n },\n\n needsFullRender: function() {\n var color = new fabric.Color(this.color);\n return color.getAlpha() < 1 || !!this.shadow;\n },\n\n /**\n * Removes brush shadow styles\n * @private\n */\n _resetShadow: function() {\n var ctx = this.canvas.contextTop;\n\n ctx.shadowColor = '';\n ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0;\n },\n\n /**\n * Check is pointer is outside canvas boundaries\n * @param {Object} pointer\n * @private\n */\n _isOutSideCanvas: function(pointer) {\n return pointer.x < 0 || pointer.x > this.canvas.getWidth() || pointer.y < 0 || pointer.y > this.canvas.getHeight();\n }\n});\n\n\n(function() {\n /**\n * PencilBrush class\n * @class fabric.PencilBrush\n * @extends fabric.BaseBrush\n */\n fabric.PencilBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.PencilBrush.prototype */ {\n\n /**\n * Discard points that are less than `decimate` pixel distant from each other\n * @type Number\n * @default 0.4\n */\n decimate: 0.4,\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.PencilBrush} Instance of a pencil brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this._points = [];\n },\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Object} pointer\n */\n _drawSegment: function (ctx, p1, p2) {\n var midPoint = p1.midPointFrom(p2);\n ctx.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y);\n return midPoint;\n },\n\n /**\n * Invoked on mouse down\n * @param {Object} pointer\n */\n onMouseDown: function(pointer, options) {\n if (!this.canvas._isMainEvent(options.e)) {\n return;\n }\n this._prepareForDrawing(pointer);\n // capture coordinates immediately\n // this allows to draw dots (when movement never occurs)\n this._captureDrawingPath(pointer);\n this._render();\n },\n\n /**\n * Invoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer, options) {\n if (!this.canvas._isMainEvent(options.e)) {\n return;\n }\n if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n return;\n }\n if (this._captureDrawingPath(pointer) && this._points.length > 1) {\n if (this.needsFullRender()) {\n // redraw curve\n // clear top canvas\n this.canvas.clearContext(this.canvas.contextTop);\n this._render();\n }\n else {\n var points = this._points, length = points.length, ctx = this.canvas.contextTop;\n // draw the curve update\n this._saveAndTransform(ctx);\n if (this.oldEnd) {\n ctx.beginPath();\n ctx.moveTo(this.oldEnd.x, this.oldEnd.y);\n }\n this.oldEnd = this._drawSegment(ctx, points[length - 2], points[length - 1], true);\n ctx.stroke();\n ctx.restore();\n }\n }\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function(options) {\n if (!this.canvas._isMainEvent(options.e)) {\n return true;\n }\n this.oldEnd = undefined;\n this._finalizeAndAddPath();\n return false;\n },\n\n /**\n * @private\n * @param {Object} pointer Actual mouse position related to the canvas.\n */\n _prepareForDrawing: function(pointer) {\n\n var p = new fabric.Point(pointer.x, pointer.y);\n\n this._reset();\n this._addPoint(p);\n this.canvas.contextTop.moveTo(p.x, p.y);\n },\n\n /**\n * @private\n * @param {fabric.Point} point Point to be added to points array\n */\n _addPoint: function(point) {\n if (this._points.length > 1 && point.eq(this._points[this._points.length - 1])) {\n return false;\n }\n this._points.push(point);\n return true;\n },\n\n /**\n * Clear points array and set contextTop canvas style.\n * @private\n */\n _reset: function() {\n this._points = [];\n this._setBrushStyles();\n this._setShadow();\n },\n\n /**\n * @private\n * @param {Object} pointer Actual mouse position related to the canvas.\n */\n _captureDrawingPath: function(pointer) {\n var pointerPoint = new fabric.Point(pointer.x, pointer.y);\n return this._addPoint(pointerPoint);\n },\n\n /**\n * Draw a smooth path on the topCanvas using quadraticCurveTo\n * @private\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, len,\n p1 = this._points[0],\n p2 = this._points[1];\n\n this._saveAndTransform(ctx);\n ctx.beginPath();\n //if we only have 2 points in the path and they are the same\n //it means that the user only clicked the canvas without moving the mouse\n //then we should be drawing a dot. A path isn't drawn between two identical dots\n //that's why we set them apart a bit\n if (this._points.length === 2 && p1.x === p2.x && p1.y === p2.y) {\n var width = this.width / 1000;\n p1 = new fabric.Point(p1.x, p1.y);\n p2 = new fabric.Point(p2.x, p2.y);\n p1.x -= width;\n p2.x += width;\n }\n ctx.moveTo(p1.x, p1.y);\n\n for (i = 1, len = this._points.length; i < len; i++) {\n // we pick the point between pi + 1 & pi + 2 as the\n // end point and p1 as our control point.\n this._drawSegment(ctx, p1, p2);\n p1 = this._points[i];\n p2 = this._points[i + 1];\n }\n // Draw last line as a straight line while\n // we wait for the next point to be able to calculate\n // the bezier control point\n ctx.lineTo(p1.x, p1.y);\n ctx.stroke();\n ctx.restore();\n },\n\n /**\n * Converts points to SVG path\n * @param {Array} points Array of points\n * @return {String} SVG path\n */\n convertPointsToSVGPath: function(points) {\n var path = [], i, width = this.width / 1000,\n p1 = new fabric.Point(points[0].x, points[0].y),\n p2 = new fabric.Point(points[1].x, points[1].y),\n len = points.length, multSignX = 1, multSignY = 0, manyPoints = len > 2;\n\n if (manyPoints) {\n multSignX = points[2].x < p2.x ? -1 : points[2].x === p2.x ? 0 : 1;\n multSignY = points[2].y < p2.y ? -1 : points[2].y === p2.y ? 0 : 1;\n }\n path.push('M ', p1.x - multSignX * width, ' ', p1.y - multSignY * width, ' ');\n for (i = 1; i < len; i++) {\n if (!p1.eq(p2)) {\n var midPoint = p1.midPointFrom(p2);\n // p1 is our bezier control point\n // midpoint is our endpoint\n // start point is p(i-1) value.\n path.push('Q ', p1.x, ' ', p1.y, ' ', midPoint.x, ' ', midPoint.y, ' ');\n }\n p1 = points[i];\n if ((i + 1) < points.length) {\n p2 = points[i + 1];\n }\n }\n if (manyPoints) {\n multSignX = p1.x > points[i - 2].x ? 1 : p1.x === points[i - 2].x ? 0 : -1;\n multSignY = p1.y > points[i - 2].y ? 1 : p1.y === points[i - 2].y ? 0 : -1;\n }\n path.push('L ', p1.x + multSignX * width, ' ', p1.y + multSignY * width);\n return path;\n },\n\n /**\n * Creates fabric.Path object to add on canvas\n * @param {String} pathData Path data\n * @return {fabric.Path} Path to add on canvas\n */\n createPath: function(pathData) {\n var path = new fabric.Path(pathData, {\n fill: null,\n stroke: this.color,\n strokeWidth: this.width,\n strokeLineCap: this.strokeLineCap,\n strokeMiterLimit: this.strokeMiterLimit,\n strokeLineJoin: this.strokeLineJoin,\n strokeDashArray: this.strokeDashArray,\n });\n if (this.shadow) {\n this.shadow.affectStroke = true;\n path.shadow = new fabric.Shadow(this.shadow);\n }\n\n return path;\n },\n\n /**\n * Decimate points array with the decimate value\n */\n decimatePoints: function(points, distance) {\n if (points.length <= 2) {\n return points;\n }\n var zoom = this.canvas.getZoom(), adjustedDistance = Math.pow(distance / zoom, 2),\n i, l = points.length - 1, lastPoint = points[0], newPoints = [lastPoint],\n cDistance;\n for (i = 1; i < l - 1; i++) {\n cDistance = Math.pow(lastPoint.x - points[i].x, 2) + Math.pow(lastPoint.y - points[i].y, 2);\n if (cDistance >= adjustedDistance) {\n lastPoint = points[i];\n newPoints.push(lastPoint);\n }\n }\n /**\n * Add the last point from the original line to the end of the array.\n * This ensures decimate doesn't delete the last point on the line, and ensures the line is > 1 point.\n */\n newPoints.push(points[l]);\n return newPoints;\n },\n\n /**\n * On mouseup after drawing the path on contextTop canvas\n * we use the points captured to create an new fabric path object\n * and add it to the fabric canvas.\n */\n _finalizeAndAddPath: function() {\n var ctx = this.canvas.contextTop;\n ctx.closePath();\n if (this.decimate) {\n this._points = this.decimatePoints(this._points, this.decimate);\n }\n var pathData = this.convertPointsToSVGPath(this._points).join('');\n if (pathData === 'M 0 0 Q 0 0 0 0 L 0 0') {\n // do not create 0 width/height paths, as they are\n // rendered inconsistently across browsers\n // Firefox 4, for example, renders a dot,\n // whereas Chrome 10 renders nothing\n this.canvas.requestRenderAll();\n return;\n }\n\n var path = this.createPath(pathData);\n this.canvas.clearContext(this.canvas.contextTop);\n this.canvas.fire('before:path:created', { path: path });\n this.canvas.add(path);\n this.canvas.requestRenderAll();\n path.setCoords();\n this._resetShadow();\n\n\n // fire event 'path' created\n this.canvas.fire('path:created', { path: path });\n }\n });\n})();\n\n\n/**\n * CircleBrush class\n * @class fabric.CircleBrush\n */\nfabric.CircleBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.CircleBrush.prototype */ {\n\n /**\n * Width of a brush\n * @type Number\n * @default\n */\n width: 10,\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.CircleBrush} Instance of a circle brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this.points = [];\n },\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Object} pointer\n */\n drawDot: function(pointer) {\n var point = this.addPoint(pointer),\n ctx = this.canvas.contextTop;\n this._saveAndTransform(ctx);\n this.dot(ctx, point);\n ctx.restore();\n },\n\n dot: function(ctx, point) {\n ctx.fillStyle = point.fill;\n ctx.beginPath();\n ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n },\n\n /**\n * Invoked on mouse down\n */\n onMouseDown: function(pointer) {\n this.points.length = 0;\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n this.drawDot(pointer);\n },\n\n /**\n * Render the full state of the brush\n * @private\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, len,\n points = this.points;\n this._saveAndTransform(ctx);\n for (i = 0, len = points.length; i < len; i++) {\n this.dot(ctx, points[i]);\n }\n ctx.restore();\n },\n\n /**\n * Invoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer) {\n if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n return;\n }\n if (this.needsFullRender()) {\n this.canvas.clearContext(this.canvas.contextTop);\n this.addPoint(pointer);\n this._render();\n }\n else {\n this.drawDot(pointer);\n }\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function() {\n var originalRenderOnAddRemove = this.canvas.renderOnAddRemove, i, len;\n this.canvas.renderOnAddRemove = false;\n\n var circles = [];\n\n for (i = 0, len = this.points.length; i < len; i++) {\n var point = this.points[i],\n circle = new fabric.Circle({\n radius: point.radius,\n left: point.x,\n top: point.y,\n originX: 'center',\n originY: 'center',\n fill: point.fill\n });\n\n this.shadow && (circle.shadow = new fabric.Shadow(this.shadow));\n\n circles.push(circle);\n }\n var group = new fabric.Group(circles);\n group.canvas = this.canvas;\n\n this.canvas.fire('before:path:created', { path: group });\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n },\n\n /**\n * @param {Object} pointer\n * @return {fabric.Point} Just added pointer point\n */\n addPoint: function(pointer) {\n var pointerPoint = new fabric.Point(pointer.x, pointer.y),\n\n circleRadius = fabric.util.getRandomInt(\n Math.max(0, this.width - 20), this.width + 20) / 2,\n\n circleColor = new fabric.Color(this.color)\n .setAlpha(fabric.util.getRandomInt(0, 100) / 100)\n .toRgba();\n\n pointerPoint.radius = circleRadius;\n pointerPoint.fill = circleColor;\n\n this.points.push(pointerPoint);\n\n return pointerPoint;\n }\n});\n\n\n/**\n * SprayBrush class\n * @class fabric.SprayBrush\n */\nfabric.SprayBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabric.SprayBrush.prototype */ {\n\n /**\n * Width of a spray\n * @type Number\n * @default\n */\n width: 10,\n\n /**\n * Density of a spray (number of dots per chunk)\n * @type Number\n * @default\n */\n density: 20,\n\n /**\n * Width of spray dots\n * @type Number\n * @default\n */\n dotWidth: 1,\n\n /**\n * Width variance of spray dots\n * @type Number\n * @default\n */\n dotWidthVariance: 1,\n\n /**\n * Whether opacity of a dot should be random\n * @type Boolean\n * @default\n */\n randomOpacity: false,\n\n /**\n * Whether overlapping dots (rectangles) should be removed (for performance reasons)\n * @type Boolean\n * @default\n */\n optimizeOverlapping: true,\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.SprayBrush} Instance of a spray brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this.sprayChunks = [];\n },\n\n /**\n * Invoked on mouse down\n * @param {Object} pointer\n */\n onMouseDown: function(pointer) {\n this.sprayChunks.length = 0;\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n\n this.addSprayChunk(pointer);\n this.render(this.sprayChunkPoints);\n },\n\n /**\n * Invoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer) {\n if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n return;\n }\n this.addSprayChunk(pointer);\n this.render(this.sprayChunkPoints);\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function() {\n var originalRenderOnAddRemove = this.canvas.renderOnAddRemove;\n this.canvas.renderOnAddRemove = false;\n\n var rects = [];\n\n for (var i = 0, ilen = this.sprayChunks.length; i < ilen; i++) {\n var sprayChunk = this.sprayChunks[i];\n\n for (var j = 0, jlen = sprayChunk.length; j < jlen; j++) {\n\n var rect = new fabric.Rect({\n width: sprayChunk[j].width,\n height: sprayChunk[j].width,\n left: sprayChunk[j].x + 1,\n top: sprayChunk[j].y + 1,\n originX: 'center',\n originY: 'center',\n fill: this.color\n });\n rects.push(rect);\n }\n }\n\n if (this.optimizeOverlapping) {\n rects = this._getOptimizedRects(rects);\n }\n\n var group = new fabric.Group(rects);\n this.shadow && group.set('shadow', new fabric.Shadow(this.shadow));\n this.canvas.fire('before:path:created', { path: group });\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n },\n\n /**\n * @private\n * @param {Array} rects\n */\n _getOptimizedRects: function(rects) {\n\n // avoid creating duplicate rects at the same coordinates\n var uniqueRects = { }, key, i, len;\n\n for (i = 0, len = rects.length; i < len; i++) {\n key = rects[i].left + '' + rects[i].top;\n if (!uniqueRects[key]) {\n uniqueRects[key] = rects[i];\n }\n }\n var uniqueRectsArray = [];\n for (key in uniqueRects) {\n uniqueRectsArray.push(uniqueRects[key]);\n }\n\n return uniqueRectsArray;\n },\n\n /**\n * Render new chunk of spray brush\n */\n render: function(sprayChunk) {\n var ctx = this.canvas.contextTop, i, len;\n ctx.fillStyle = this.color;\n\n this._saveAndTransform(ctx);\n\n for (i = 0, len = sprayChunk.length; i < len; i++) {\n var point = sprayChunk[i];\n if (typeof point.opacity !== 'undefined') {\n ctx.globalAlpha = point.opacity;\n }\n ctx.fillRect(point.x, point.y, point.width, point.width);\n }\n ctx.restore();\n },\n\n /**\n * Render all spray chunks\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, ilen;\n ctx.fillStyle = this.color;\n\n this._saveAndTransform(ctx);\n\n for (i = 0, ilen = this.sprayChunks.length; i < ilen; i++) {\n this.render(this.sprayChunks[i]);\n }\n ctx.restore();\n },\n\n /**\n * @param {Object} pointer\n */\n addSprayChunk: function(pointer) {\n this.sprayChunkPoints = [];\n\n var x, y, width, radius = this.width / 2, i;\n\n for (i = 0; i < this.density; i++) {\n\n x = fabric.util.getRandomInt(pointer.x - radius, pointer.x + radius);\n y = fabric.util.getRandomInt(pointer.y - radius, pointer.y + radius);\n\n if (this.dotWidthVariance) {\n width = fabric.util.getRandomInt(\n // bottom clamp width to 1\n Math.max(1, this.dotWidth - this.dotWidthVariance),\n this.dotWidth + this.dotWidthVariance);\n }\n else {\n width = this.dotWidth;\n }\n\n var point = new fabric.Point(x, y);\n point.width = width;\n\n if (this.randomOpacity) {\n point.opacity = fabric.util.getRandomInt(0, 100) / 100;\n }\n\n this.sprayChunkPoints.push(point);\n }\n\n this.sprayChunks.push(this.sprayChunkPoints);\n }\n});\n\n\n/**\n * PatternBrush class\n * @class fabric.PatternBrush\n * @extends fabric.BaseBrush\n */\nfabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fabric.PatternBrush.prototype */ {\n\n getPatternSrc: function() {\n\n var dotWidth = 20,\n dotDistance = 5,\n patternCanvas = fabric.util.createCanvasElement(),\n patternCtx = patternCanvas.getContext('2d');\n\n patternCanvas.width = patternCanvas.height = dotWidth + dotDistance;\n\n patternCtx.fillStyle = this.color;\n patternCtx.beginPath();\n patternCtx.arc(dotWidth / 2, dotWidth / 2, dotWidth / 2, 0, Math.PI * 2, false);\n patternCtx.closePath();\n patternCtx.fill();\n\n return patternCanvas;\n },\n\n getPatternSrcFunction: function() {\n return String(this.getPatternSrc).replace('this.color', '\"' + this.color + '\"');\n },\n\n /**\n * Creates \"pattern\" instance property\n */\n getPattern: function() {\n return this.canvas.contextTop.createPattern(this.source || this.getPatternSrc(), 'repeat');\n },\n\n /**\n * Sets brush styles\n */\n _setBrushStyles: function() {\n this.callSuper('_setBrushStyles');\n this.canvas.contextTop.strokeStyle = this.getPattern();\n },\n\n /**\n * Creates path\n */\n createPath: function(pathData) {\n var path = this.callSuper('createPath', pathData),\n topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2);\n\n path.stroke = new fabric.Pattern({\n source: this.source || this.getPatternSrcFunction(),\n offsetX: -topLeft.x,\n offsetY: -topLeft.y\n });\n return path;\n }\n});\n\n\n(function() {\n\n var getPointer = fabric.util.getPointer,\n degreesToRadians = fabric.util.degreesToRadians,\n abs = Math.abs,\n supportLineDash = fabric.StaticCanvas.supports('setLineDash'),\n isTouchEvent = fabric.util.isTouchEvent,\n STROKE_OFFSET = 0.5;\n\n /**\n * Canvas class\n * @class fabric.Canvas\n * @extends fabric.StaticCanvas\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#canvas}\n * @see {@link fabric.Canvas#initialize} for constructor definition\n *\n * @fires object:modified at the end of a transform or any change when statefull is true\n * @fires object:rotating while an object is being rotated from the control\n * @fires object:scaling while an object is being scaled by controls\n * @fires object:moving while an object is being dragged\n * @fires object:skewing while an object is being skewed from the controls\n *\n * @fires before:transform before a transform is is started\n * @fires before:selection:cleared\n * @fires selection:cleared\n * @fires selection:updated\n * @fires selection:created\n *\n * @fires path:created after a drawing operation ends and the path is added\n * @fires mouse:down\n * @fires mouse:move\n * @fires mouse:up\n * @fires mouse:down:before on mouse down, before the inner fabric logic runs\n * @fires mouse:move:before on mouse move, before the inner fabric logic runs\n * @fires mouse:up:before on mouse up, before the inner fabric logic runs\n * @fires mouse:over\n * @fires mouse:out\n * @fires mouse:dblclick whenever a native dbl click event fires on the canvas.\n *\n * @fires dragover\n * @fires dragenter\n * @fires dragleave\n * @fires drop\n * @fires after:render at the end of the render process, receives the context in the callback\n * @fires before:render at start the render process, receives the context in the callback\n *\n * the following events are deprecated:\n * @fires object:rotated at the end of a rotation transform\n * @fires object:scaled at the end of a scale transform\n * @fires object:moved at the end of translation transform\n * @fires object:skewed at the end of a skew transform\n */\n fabric.Canvas = fabric.util.createClass(fabric.StaticCanvas, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * Constructor\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(el, options) {\n options || (options = { });\n this.renderAndResetBound = this.renderAndReset.bind(this);\n this.requestRenderAllBound = this.requestRenderAll.bind(this);\n this._initStatic(el, options);\n this._initInteractive();\n this._createCacheCanvas();\n },\n\n /**\n * When true, objects can be transformed by one side (unproportionally)\n * when dragged on the corners that normally would not do that.\n * @type Boolean\n * @default\n * @since fabric 4.0 // changed name and default value\n */\n uniformScaling: true,\n\n /**\n * Indicates which key switches uniform scaling.\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled.\n * totally wrong named. this sounds like `uniform scaling`\n * if Canvas.uniformScaling is true, pressing this will set it to false\n * and viceversa.\n * @since 1.6.2\n * @type String\n * @default\n */\n uniScaleKey: 'shiftKey',\n\n /**\n * When true, objects use center point as the origin of scale transformation.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredScaling: false,\n\n /**\n * When true, objects use center point as the origin of rotate transformation.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredRotation: false,\n\n /**\n * Indicates which key enable centered Transform\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n centeredKey: 'altKey',\n\n /**\n * Indicates which key enable alternate action on corner\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n altActionKey: 'shiftKey',\n\n /**\n * Indicates that canvas is interactive. This property should not be changed.\n * @type Boolean\n * @default\n */\n interactive: true,\n\n /**\n * Indicates whether group selection should be enabled\n * @type Boolean\n * @default\n */\n selection: true,\n\n /**\n * Indicates which key or keys enable multiple click selection\n * Pass value as a string or array of strings\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or empty or containing any other string that is not a modifier key\n * feature is disabled.\n * @since 1.6.2\n * @type String|Array\n * @default\n */\n selectionKey: 'shiftKey',\n\n /**\n * Indicates which key enable alternative selection\n * in case of target overlapping with active object\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * For a series of reason that come from the general expectations on how\n * things should work, this feature works only for preserveObjectStacking true.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled.\n * @since 1.6.5\n * @type null|String\n * @default\n */\n altSelectionKey: null,\n\n /**\n * Color of selection\n * @type String\n * @default\n */\n selectionColor: 'rgba(100, 100, 255, 0.3)', // blue\n\n /**\n * Default dash array pattern\n * If not empty the selection border is dashed\n * @type Array\n */\n selectionDashArray: [],\n\n /**\n * Color of the border of selection (usually slightly darker than color of selection itself)\n * @type String\n * @default\n */\n selectionBorderColor: 'rgba(255, 255, 255, 0.3)',\n\n /**\n * Width of a line used in object/group selection\n * @type Number\n * @default\n */\n selectionLineWidth: 1,\n\n /**\n * Select only shapes that are fully contained in the dragged selection rectangle.\n * @type Boolean\n * @default\n */\n selectionFullyContained: false,\n\n /**\n * Default cursor value used when hovering over an object on canvas\n * @type String\n * @default\n */\n hoverCursor: 'move',\n\n /**\n * Default cursor value used when moving an object on canvas\n * @type String\n * @default\n */\n moveCursor: 'move',\n\n /**\n * Default cursor value used for the entire canvas\n * @type String\n * @default\n */\n defaultCursor: 'default',\n\n /**\n * Cursor value used during free drawing\n * @type String\n * @default\n */\n freeDrawingCursor: 'crosshair',\n\n /**\n * Cursor value used for rotation point\n * @type String\n * @default\n */\n rotationCursor: 'crosshair',\n\n /**\n * Cursor value used for disabled elements ( corners with disabled action )\n * @type String\n * @since 2.0.0\n * @default\n */\n notAllowedCursor: 'not-allowed',\n\n /**\n * Default element class that's given to wrapper (div) element of canvas\n * @type String\n * @default\n */\n containerClass: 'canvas-container',\n\n /**\n * When true, object detection happens on per-pixel basis rather than on per-bounding-box\n * @type Boolean\n * @default\n */\n perPixelTargetFind: false,\n\n /**\n * Number of pixels around target pixel to tolerate (consider active) during object detection\n * @type Number\n * @default\n */\n targetFindTolerance: 0,\n\n /**\n * When true, target detection is skipped. Target detection will return always undefined.\n * click selection won't work anymore, events will fire with no targets.\n * if something is selected before setting it to true, it will be deselected at the first click.\n * area selection will still work. check the `selection` property too.\n * if you deactivate both, you should look into staticCanvas.\n * @type Boolean\n * @default\n */\n skipTargetFind: false,\n\n /**\n * When true, mouse events on canvas (mousedown/mousemove/mouseup) result in free drawing.\n * After mousedown, mousemove creates a shape,\n * and then mouseup finalizes it and adds an instance of `fabric.Path` onto canvas.\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-4#free_drawing}\n * @type Boolean\n * @default\n */\n isDrawingMode: false,\n\n /**\n * Indicates whether objects should remain in current stack position when selected.\n * When false objects are brought to top and rendered as part of the selection group\n * @type Boolean\n * @default\n */\n preserveObjectStacking: false,\n\n /**\n * Indicates the angle that an object will lock to while rotating.\n * @type Number\n * @since 1.6.7\n * @default\n */\n snapAngle: 0,\n\n /**\n * Indicates the distance from the snapAngle the rotation will lock to the snapAngle.\n * When `null`, the snapThreshold will default to the snapAngle.\n * @type null|Number\n * @since 1.6.7\n * @default\n */\n snapThreshold: null,\n\n /**\n * Indicates if the right click on canvas can output the context menu or not\n * @type Boolean\n * @since 1.6.5\n * @default\n */\n stopContextMenu: false,\n\n /**\n * Indicates if the canvas can fire right click events\n * @type Boolean\n * @since 1.6.5\n * @default\n */\n fireRightClick: false,\n\n /**\n * Indicates if the canvas can fire middle click events\n * @type Boolean\n * @since 1.7.8\n * @default\n */\n fireMiddleClick: false,\n\n /**\n * Keep track of the subTargets for Mouse Events\n * @type fabric.Object[]\n */\n targets: [],\n\n /**\n * Keep track of the hovered target\n * @type fabric.Object\n * @private\n */\n _hoveredTarget: null,\n\n /**\n * hold the list of nested targets hovered\n * @type fabric.Object[]\n * @private\n */\n _hoveredTargets: [],\n\n /**\n * @private\n */\n _initInteractive: function() {\n this._currentTransform = null;\n this._groupSelector = null;\n this._initWrapperElement();\n this._createUpperCanvas();\n this._initEventListeners();\n\n this._initRetinaScaling();\n\n this.freeDrawingBrush = fabric.PencilBrush && new fabric.PencilBrush(this);\n\n this.calcOffset();\n },\n\n /**\n * Divides objects in two groups, one to render immediately\n * and one to render as activeGroup.\n * @return {Array} objects to render immediately and pushes the other in the activeGroup.\n */\n _chooseObjectsToRender: function() {\n var activeObjects = this.getActiveObjects(),\n object, objsToRender, activeGroupObjects;\n\n if (activeObjects.length > 0 && !this.preserveObjectStacking) {\n objsToRender = [];\n activeGroupObjects = [];\n for (var i = 0, length = this._objects.length; i < length; i++) {\n object = this._objects[i];\n if (activeObjects.indexOf(object) === -1 ) {\n objsToRender.push(object);\n }\n else {\n activeGroupObjects.push(object);\n }\n }\n if (activeObjects.length > 1) {\n this._activeObject._objects = activeGroupObjects;\n }\n objsToRender.push.apply(objsToRender, activeGroupObjects);\n }\n else {\n objsToRender = this._objects;\n }\n return objsToRender;\n },\n\n /**\n * Renders both the top canvas and the secondary container canvas.\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAll: function () {\n if (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) {\n this.clearContext(this.contextTop);\n this.contextTopDirty = false;\n }\n if (this.hasLostContext) {\n this.renderTopLayer(this.contextTop);\n }\n var canvasToDrawOn = this.contextContainer;\n this.renderCanvas(canvasToDrawOn, this._chooseObjectsToRender());\n return this;\n },\n\n renderTopLayer: function(ctx) {\n ctx.save();\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this.freeDrawingBrush && this.freeDrawingBrush._render();\n this.contextTopDirty = true;\n }\n // we render the top context - last object\n if (this.selection && this._groupSelector) {\n this._drawSelection(ctx);\n this.contextTopDirty = true;\n }\n ctx.restore();\n },\n\n /**\n * Method to render only the top canvas.\n * Also used to render the group selection box.\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n renderTop: function () {\n var ctx = this.contextTop;\n this.clearContext(ctx);\n this.renderTopLayer(ctx);\n this.fire('after:render');\n return this;\n },\n\n /**\n * @private\n */\n _normalizePointer: function (object, pointer) {\n var m = object.calcTransformMatrix(),\n invertedM = fabric.util.invertTransform(m),\n vptPointer = this.restorePointerVpt(pointer);\n return fabric.util.transformPoint(vptPointer, invertedM);\n },\n\n /**\n * Returns true if object is transparent at a certain location\n * @param {fabric.Object} target Object to check\n * @param {Number} x Left coordinate\n * @param {Number} y Top coordinate\n * @return {Boolean}\n */\n isTargetTransparent: function (target, x, y) {\n // in case the target is the activeObject, we cannot execute this optimization\n // because we need to draw controls too.\n if (target.shouldCache() && target._cacheCanvas && target !== this._activeObject) {\n var normalizedPointer = this._normalizePointer(target, {x: x, y: y}),\n targetRelativeX = Math.max(target.cacheTranslationX + (normalizedPointer.x * target.zoomX), 0),\n targetRelativeY = Math.max(target.cacheTranslationY + (normalizedPointer.y * target.zoomY), 0);\n\n var isTransparent = fabric.util.isTransparent(\n target._cacheContext, Math.round(targetRelativeX), Math.round(targetRelativeY), this.targetFindTolerance);\n\n return isTransparent;\n }\n\n var ctx = this.contextCache,\n originalColor = target.selectionBackgroundColor, v = this.viewportTransform;\n\n target.selectionBackgroundColor = '';\n\n this.clearContext(ctx);\n\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n target.render(ctx);\n ctx.restore();\n\n target.selectionBackgroundColor = originalColor;\n\n var isTransparent = fabric.util.isTransparent(\n ctx, x, y, this.targetFindTolerance);\n\n return isTransparent;\n },\n\n /**\n * takes an event and determines if selection key has been pressed\n * @private\n * @param {Event} e Event object\n */\n _isSelectionKeyPressed: function(e) {\n var selectionKeyPressed = false;\n\n if (Object.prototype.toString.call(this.selectionKey) === '[object Array]') {\n selectionKeyPressed = !!this.selectionKey.find(function(key) { return e[key] === true; });\n }\n else {\n selectionKeyPressed = e[this.selectionKey];\n }\n\n return selectionKeyPressed;\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _shouldClearSelection: function (e, target) {\n var activeObjects = this.getActiveObjects(),\n activeObject = this._activeObject;\n\n return (\n !target\n ||\n (target &&\n activeObject &&\n activeObjects.length > 1 &&\n activeObjects.indexOf(target) === -1 &&\n activeObject !== target &&\n !this._isSelectionKeyPressed(e))\n ||\n (target && !target.evented)\n ||\n (target &&\n !target.selectable &&\n activeObject &&\n activeObject !== target)\n );\n },\n\n /**\n * centeredScaling from object can't override centeredScaling from canvas.\n * this should be fixed, since object setting should take precedence over canvas.\n * also this should be something that will be migrated in the control properties.\n * as ability to define the origin of the transformation that the control provide.\n * @private\n * @param {fabric.Object} target\n * @param {String} action\n * @param {Boolean} altKey\n */\n _shouldCenterTransform: function (target, action, altKey) {\n if (!target) {\n return;\n }\n\n var centerTransform;\n\n if (action === 'scale' || action === 'scaleX' || action === 'scaleY' || action === 'resizing') {\n centerTransform = this.centeredScaling || target.centeredScaling;\n }\n else if (action === 'rotate') {\n centerTransform = this.centeredRotation || target.centeredRotation;\n }\n\n return centerTransform ? !altKey : altKey;\n },\n\n /**\n * should disappear before release 4.0\n * @private\n */\n _getOriginFromCorner: function(target, corner) {\n var origin = {\n x: target.originX,\n y: target.originY\n };\n\n if (corner === 'ml' || corner === 'tl' || corner === 'bl') {\n origin.x = 'right';\n }\n else if (corner === 'mr' || corner === 'tr' || corner === 'br') {\n origin.x = 'left';\n }\n\n if (corner === 'tl' || corner === 'mt' || corner === 'tr') {\n origin.y = 'bottom';\n }\n else if (corner === 'bl' || corner === 'mb' || corner === 'br') {\n origin.y = 'top';\n }\n return origin;\n },\n\n /**\n * @private\n * @param {Boolean} alreadySelected true if target is already selected\n * @param {String} corner a string representing the corner ml, mr, tl ...\n * @param {Event} e Event object\n * @param {fabric.Object} [target] inserted back to help overriding. Unused\n */\n _getActionFromCorner: function(alreadySelected, corner, e, target) {\n if (!corner || !alreadySelected) {\n return 'drag';\n }\n var control = target.controls[corner];\n return control.getActionName(e, control, target);\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _setupCurrentTransform: function (e, target, alreadySelected) {\n if (!target) {\n return;\n }\n\n var pointer = this.getPointer(e), corner = target.__corner,\n control = target.controls[corner],\n actionHandler = (alreadySelected && corner) ?\n control.getActionHandler(e, target, control) : fabric.controlsUtils.dragHandler,\n action = this._getActionFromCorner(alreadySelected, corner, e, target),\n origin = this._getOriginFromCorner(target, corner),\n altKey = e[this.centeredKey],\n transform = {\n target: target,\n action: action,\n actionHandler: actionHandler,\n corner: corner,\n scaleX: target.scaleX,\n scaleY: target.scaleY,\n skewX: target.skewX,\n skewY: target.skewY,\n // used by transation\n offsetX: pointer.x - target.left,\n offsetY: pointer.y - target.top,\n originX: origin.x,\n originY: origin.y,\n ex: pointer.x,\n ey: pointer.y,\n lastX: pointer.x,\n lastY: pointer.y,\n // unsure they are useful anymore.\n // left: target.left,\n // top: target.top,\n theta: degreesToRadians(target.angle),\n // end of unsure\n width: target.width * target.scaleX,\n shiftKey: e.shiftKey,\n altKey: altKey,\n original: fabric.util.saveObjectTransform(target),\n };\n\n if (this._shouldCenterTransform(target, action, altKey)) {\n transform.originX = 'center';\n transform.originY = 'center';\n }\n transform.original.originX = origin.x;\n transform.original.originY = origin.y;\n this._currentTransform = transform;\n this._beforeTransform(e);\n },\n\n /**\n * Set the cursor type of the canvas element\n * @param {String} value Cursor type of the canvas element.\n * @see http://www.w3.org/TR/css3-ui/#cursor\n */\n setCursor: function (value) {\n this.upperCanvasEl.style.cursor = value;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx to draw the selection on\n */\n _drawSelection: function (ctx) {\n var groupSelector = this._groupSelector,\n left = groupSelector.left,\n top = groupSelector.top,\n aleft = abs(left),\n atop = abs(top);\n\n if (this.selectionColor) {\n ctx.fillStyle = this.selectionColor;\n\n ctx.fillRect(\n groupSelector.ex - ((left > 0) ? 0 : -left),\n groupSelector.ey - ((top > 0) ? 0 : -top),\n aleft,\n atop\n );\n }\n\n if (!this.selectionLineWidth || !this.selectionBorderColor) {\n return;\n }\n ctx.lineWidth = this.selectionLineWidth;\n ctx.strokeStyle = this.selectionBorderColor;\n\n // selection border\n if (this.selectionDashArray.length > 1 && !supportLineDash) {\n\n var px = groupSelector.ex + STROKE_OFFSET - ((left > 0) ? 0 : aleft),\n py = groupSelector.ey + STROKE_OFFSET - ((top > 0) ? 0 : atop);\n\n ctx.beginPath();\n\n fabric.util.drawDashedLine(ctx, px, py, px + aleft, py, this.selectionDashArray);\n fabric.util.drawDashedLine(ctx, px, py + atop - 1, px + aleft, py + atop - 1, this.selectionDashArray);\n fabric.util.drawDashedLine(ctx, px, py, px, py + atop, this.selectionDashArray);\n fabric.util.drawDashedLine(ctx, px + aleft - 1, py, px + aleft - 1, py + atop, this.selectionDashArray);\n\n ctx.closePath();\n ctx.stroke();\n }\n else {\n fabric.Object.prototype._setLineDash.call(this, ctx, this.selectionDashArray);\n ctx.strokeRect(\n groupSelector.ex + STROKE_OFFSET - ((left > 0) ? 0 : aleft),\n groupSelector.ey + STROKE_OFFSET - ((top > 0) ? 0 : atop),\n aleft,\n atop\n );\n }\n },\n\n /**\n * Method that determines what object we are clicking on\n * the skipGroup parameter is for internal use, is needed for shift+click action\n * 11/09/2018 TODO: would be cool if findTarget could discern between being a full target\n * or the outside part of the corner.\n * @param {Event} e mouse event\n * @param {Boolean} skipGroup when true, activeGroup is skipped and only objects are traversed through\n * @return {fabric.Object} the target found\n */\n findTarget: function (e, skipGroup) {\n if (this.skipTargetFind) {\n return;\n }\n\n var ignoreZoom = true,\n pointer = this.getPointer(e, ignoreZoom),\n activeObject = this._activeObject,\n aObjects = this.getActiveObjects(),\n activeTarget, activeTargetSubs,\n isTouch = isTouchEvent(e),\n shouldLookForActive = (aObjects.length > 1 && !skipGroup) || aObjects.length === 1;\n\n // first check current group (if one exists)\n // active group does not check sub targets like normal groups.\n // if active group just exits.\n this.targets = [];\n\n // if we hit the corner of an activeObject, let's return that.\n if (shouldLookForActive && activeObject._findTargetCorner(pointer, isTouch)) {\n return activeObject;\n }\n if (aObjects.length > 1 && !skipGroup && activeObject === this._searchPossibleTargets([activeObject], pointer)) {\n return activeObject;\n }\n if (aObjects.length === 1 &&\n activeObject === this._searchPossibleTargets([activeObject], pointer)) {\n if (!this.preserveObjectStacking) {\n return activeObject;\n }\n else {\n activeTarget = activeObject;\n activeTargetSubs = this.targets;\n this.targets = [];\n }\n }\n var target = this._searchPossibleTargets(this._objects, pointer);\n if (e[this.altSelectionKey] && target && activeTarget && target !== activeTarget) {\n target = activeTarget;\n this.targets = activeTargetSubs;\n }\n return target;\n },\n\n /**\n * Checks point is inside the object.\n * @param {Object} [pointer] x,y object of point coordinates we want to check.\n * @param {fabric.Object} obj Object to test against\n * @param {Object} [globalPointer] x,y object of point coordinates relative to canvas used to search per pixel target.\n * @return {Boolean} true if point is contained within an area of given object\n * @private\n */\n _checkTarget: function(pointer, obj, globalPointer) {\n if (obj &&\n obj.visible &&\n obj.evented &&\n // http://www.geog.ubc.ca/courses/klink/gis.notes/ncgia/u32.html\n // http://idav.ucdavis.edu/~okreylos/TAship/Spring2000/PointInPolygon.html\n obj.containsPoint(pointer)\n ) {\n if ((this.perPixelTargetFind || obj.perPixelTargetFind) && !obj.isEditing) {\n var isTransparent = this.isTargetTransparent(obj, globalPointer.x, globalPointer.y);\n if (!isTransparent) {\n return true;\n }\n }\n else {\n return true;\n }\n }\n },\n\n /**\n * Function used to search inside objects an object that contains pointer in bounding box or that contains pointerOnCanvas when painted\n * @param {Array} [objects] objects array to look into\n * @param {Object} [pointer] x,y object of point coordinates we want to check.\n * @return {fabric.Object} object that contains pointer\n * @private\n */\n _searchPossibleTargets: function(objects, pointer) {\n // Cache all targets where their bounding box contains point.\n var target, i = objects.length, subTarget;\n // Do not check for currently grouped objects, since we check the parent group itself.\n // until we call this function specifically to search inside the activeGroup\n while (i--) {\n var objToCheck = objects[i];\n var pointerToUse = objToCheck.group ?\n this._normalizePointer(objToCheck.group, pointer) : pointer;\n if (this._checkTarget(pointerToUse, objToCheck, pointer)) {\n target = objects[i];\n if (target.subTargetCheck && target instanceof fabric.Group) {\n subTarget = this._searchPossibleTargets(target._objects, pointer);\n subTarget && this.targets.push(subTarget);\n }\n break;\n }\n }\n return target;\n },\n\n /**\n * Returns pointer coordinates without the effect of the viewport\n * @param {Object} pointer with \"x\" and \"y\" number values\n * @return {Object} object with \"x\" and \"y\" number values\n */\n restorePointerVpt: function(pointer) {\n return fabric.util.transformPoint(\n pointer,\n fabric.util.invertTransform(this.viewportTransform)\n );\n },\n\n /**\n * Returns pointer coordinates relative to canvas.\n * Can return coordinates with or without viewportTransform.\n * ignoreZoom false gives back coordinates that represent\n * the point clicked on canvas element.\n * ignoreZoom true gives back coordinates after being processed\n * by the viewportTransform ( sort of coordinates of what is displayed\n * on the canvas where you are clicking.\n * ignoreZoom true = HTMLElement coordinates relative to top,left\n * ignoreZoom false, default = fabric space coordinates, the same used for shape position\n * To interact with your shapes top and left you want to use ignoreZoom true\n * most of the time, while ignoreZoom false will give you coordinates\n * compatible with the object.oCoords system.\n * of the time.\n * @param {Event} e\n * @param {Boolean} ignoreZoom\n * @return {Object} object with \"x\" and \"y\" number values\n */\n getPointer: function (e, ignoreZoom) {\n // return cached values if we are in the event processing chain\n if (this._absolutePointer && !ignoreZoom) {\n return this._absolutePointer;\n }\n if (this._pointer && ignoreZoom) {\n return this._pointer;\n }\n\n var pointer = getPointer(e),\n upperCanvasEl = this.upperCanvasEl,\n bounds = upperCanvasEl.getBoundingClientRect(),\n boundsWidth = bounds.width || 0,\n boundsHeight = bounds.height || 0,\n cssScale;\n\n if (!boundsWidth || !boundsHeight ) {\n if ('top' in bounds && 'bottom' in bounds) {\n boundsHeight = Math.abs( bounds.top - bounds.bottom );\n }\n if ('right' in bounds && 'left' in bounds) {\n boundsWidth = Math.abs( bounds.right - bounds.left );\n }\n }\n\n this.calcOffset();\n pointer.x = pointer.x - this._offset.left;\n pointer.y = pointer.y - this._offset.top;\n if (!ignoreZoom) {\n pointer = this.restorePointerVpt(pointer);\n }\n\n var retinaScaling = this.getRetinaScaling();\n if (retinaScaling !== 1) {\n pointer.x /= retinaScaling;\n pointer.y /= retinaScaling;\n }\n\n if (boundsWidth === 0 || boundsHeight === 0) {\n // If bounds are not available (i.e. not visible), do not apply scale.\n cssScale = { width: 1, height: 1 };\n }\n else {\n cssScale = {\n width: upperCanvasEl.width / boundsWidth,\n height: upperCanvasEl.height / boundsHeight\n };\n }\n\n return {\n x: pointer.x * cssScale.width,\n y: pointer.y * cssScale.height\n };\n },\n\n /**\n * @private\n * @throws {CANVAS_INIT_ERROR} If canvas can not be initialized\n */\n _createUpperCanvas: function () {\n var lowerCanvasClass = this.lowerCanvasEl.className.replace(/\\s*lower-canvas\\s*/, ''),\n lowerCanvasEl = this.lowerCanvasEl, upperCanvasEl = this.upperCanvasEl;\n\n // there is no need to create a new upperCanvas element if we have already one.\n if (upperCanvasEl) {\n upperCanvasEl.className = '';\n }\n else {\n upperCanvasEl = this._createCanvasElement();\n this.upperCanvasEl = upperCanvasEl;\n }\n fabric.util.addClass(upperCanvasEl, 'upper-canvas ' + lowerCanvasClass);\n\n this.wrapperEl.appendChild(upperCanvasEl);\n\n this._copyCanvasStyle(lowerCanvasEl, upperCanvasEl);\n this._applyCanvasStyle(upperCanvasEl);\n this.contextTop = upperCanvasEl.getContext('2d');\n },\n\n /**\n * @private\n */\n _createCacheCanvas: function () {\n this.cacheCanvasEl = this._createCanvasElement();\n this.cacheCanvasEl.setAttribute('width', this.width);\n this.cacheCanvasEl.setAttribute('height', this.height);\n this.contextCache = this.cacheCanvasEl.getContext('2d');\n },\n\n /**\n * @private\n */\n _initWrapperElement: function () {\n this.wrapperEl = fabric.util.wrapElement(this.lowerCanvasEl, 'div', {\n 'class': this.containerClass\n });\n fabric.util.setStyle(this.wrapperEl, {\n width: this.width + 'px',\n height: this.height + 'px',\n position: 'relative'\n });\n fabric.util.makeElementUnselectable(this.wrapperEl);\n },\n\n /**\n * @private\n * @param {HTMLElement} element canvas element to apply styles on\n */\n _applyCanvasStyle: function (element) {\n var width = this.width || element.width,\n height = this.height || element.height;\n\n fabric.util.setStyle(element, {\n position: 'absolute',\n width: width + 'px',\n height: height + 'px',\n left: 0,\n top: 0,\n 'touch-action': this.allowTouchScrolling ? 'manipulation' : 'none',\n '-ms-touch-action': this.allowTouchScrolling ? 'manipulation' : 'none'\n });\n element.width = width;\n element.height = height;\n fabric.util.makeElementUnselectable(element);\n },\n\n /**\n * Copy the entire inline style from one element (fromEl) to another (toEl)\n * @private\n * @param {Element} fromEl Element style is copied from\n * @param {Element} toEl Element copied style is applied to\n */\n _copyCanvasStyle: function (fromEl, toEl) {\n toEl.style.cssText = fromEl.style.cssText;\n },\n\n /**\n * Returns context of canvas where object selection is drawn\n * @return {CanvasRenderingContext2D}\n */\n getSelectionContext: function() {\n return this.contextTop;\n },\n\n /**\n * Returns <canvas> element on which object selection is drawn\n * @return {HTMLCanvasElement}\n */\n getSelectionElement: function () {\n return this.upperCanvasEl;\n },\n\n /**\n * Returns currently active object\n * @return {fabric.Object} active object\n */\n getActiveObject: function () {\n return this._activeObject;\n },\n\n /**\n * Returns an array with the current selected objects\n * @return {fabric.Object} active object\n */\n getActiveObjects: function () {\n var active = this._activeObject;\n if (active) {\n if (active.type === 'activeSelection' && active._objects) {\n return active._objects.slice(0);\n }\n else {\n return [active];\n }\n }\n return [];\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was removed\n */\n _onObjectRemoved: function(obj) {\n // removing active object should fire \"selection:cleared\" events\n if (obj === this._activeObject) {\n this.fire('before:selection:cleared', { target: obj });\n this._discardActiveObject();\n this.fire('selection:cleared', { target: obj });\n obj.fire('deselected');\n }\n if (obj === this._hoveredTarget){\n this._hoveredTarget = null;\n this._hoveredTargets = [];\n }\n this.callSuper('_onObjectRemoved', obj);\n },\n\n /**\n * @private\n * Compares the old activeObject with the current one and fires correct events\n * @param {fabric.Object} obj old activeObject\n */\n _fireSelectionEvents: function(oldObjects, e) {\n var somethingChanged = false, objects = this.getActiveObjects(),\n added = [], removed = [];\n oldObjects.forEach(function(oldObject) {\n if (objects.indexOf(oldObject) === -1) {\n somethingChanged = true;\n oldObject.fire('deselected', {\n e: e,\n target: oldObject\n });\n removed.push(oldObject);\n }\n });\n objects.forEach(function(object) {\n if (oldObjects.indexOf(object) === -1) {\n somethingChanged = true;\n object.fire('selected', {\n e: e,\n target: object\n });\n added.push(object);\n }\n });\n if (oldObjects.length > 0 && objects.length > 0) {\n somethingChanged && this.fire('selection:updated', {\n e: e,\n selected: added,\n deselected: removed,\n // added for backward compatibility\n // deprecated\n updated: added[0] || removed[0],\n target: this._activeObject,\n });\n }\n else if (objects.length > 0) {\n this.fire('selection:created', {\n e: e,\n selected: added,\n target: this._activeObject,\n });\n }\n else if (oldObjects.length > 0) {\n this.fire('selection:cleared', {\n e: e,\n deselected: removed,\n });\n }\n },\n\n /**\n * Sets given object as the only active object on canvas\n * @param {fabric.Object} object Object to set as an active one\n * @param {Event} [e] Event (passed along when firing \"object:selected\")\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n setActiveObject: function (object, e) {\n var currentActives = this.getActiveObjects();\n this._setActiveObject(object, e);\n this._fireSelectionEvents(currentActives, e);\n return this;\n },\n\n /**\n * This is a private method for now.\n * This is supposed to be equivalent to setActiveObject but without firing\n * any event. There is commitment to have this stay this way.\n * This is the functional part of setActiveObject.\n * @private\n * @param {Object} object to set as active\n * @param {Event} [e] Event (passed along when firing \"object:selected\")\n * @return {Boolean} true if the selection happened\n */\n _setActiveObject: function(object, e) {\n if (this._activeObject === object) {\n return false;\n }\n if (!this._discardActiveObject(e, object)) {\n return false;\n }\n if (object.onSelect({ e: e })) {\n return false;\n }\n this._activeObject = object;\n return true;\n },\n\n /**\n * This is a private method for now.\n * This is supposed to be equivalent to discardActiveObject but without firing\n * any events. There is commitment to have this stay this way.\n * This is the functional part of discardActiveObject.\n * @param {Event} [e] Event (passed along when firing \"object:deselected\")\n * @param {Object} object to set as active\n * @return {Boolean} true if the selection happened\n * @private\n */\n _discardActiveObject: function(e, object) {\n var obj = this._activeObject;\n if (obj) {\n // onDeselect return TRUE to cancel selection;\n if (obj.onDeselect({ e: e, object: object })) {\n return false;\n }\n this._activeObject = null;\n }\n return true;\n },\n\n /**\n * Discards currently active object and fire events. If the function is called by fabric\n * as a consequence of a mouse event, the event is passed as a parameter and\n * sent to the fire function for the custom events. When used as a method the\n * e param does not have any application.\n * @param {event} e\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n discardActiveObject: function (e) {\n var currentActives = this.getActiveObjects(), activeObject = this.getActiveObject();\n if (currentActives.length) {\n this.fire('before:selection:cleared', { target: activeObject, e: e });\n }\n this._discardActiveObject(e);\n this._fireSelectionEvents(currentActives, e);\n return this;\n },\n\n /**\n * Clears a canvas element and removes all event listeners\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n dispose: function () {\n var wrapper = this.wrapperEl;\n this.removeListeners();\n wrapper.removeChild(this.upperCanvasEl);\n wrapper.removeChild(this.lowerCanvasEl);\n this.contextCache = null;\n this.contextTop = null;\n ['upperCanvasEl', 'cacheCanvasEl'].forEach((function(element) {\n fabric.util.cleanUpJsdomNode(this[element]);\n this[element] = undefined;\n }).bind(this));\n if (wrapper.parentNode) {\n wrapper.parentNode.replaceChild(this.lowerCanvasEl, this.wrapperEl);\n }\n delete this.wrapperEl;\n fabric.StaticCanvas.prototype.dispose.call(this);\n return this;\n },\n\n /**\n * Clears all contexts (background, main, top) of an instance\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clear: function () {\n // this.discardActiveGroup();\n this.discardActiveObject();\n this.clearContext(this.contextTop);\n return this.callSuper('clear');\n },\n\n /**\n * Draws objects' controls (borders/controls)\n * @param {CanvasRenderingContext2D} ctx Context to render controls on\n */\n drawControls: function(ctx) {\n var activeObject = this._activeObject;\n\n if (activeObject) {\n activeObject._renderControls(ctx);\n }\n },\n\n /**\n * @private\n */\n _toObject: function(instance, methodName, propertiesToInclude) {\n //If the object is part of the current selection group, it should\n //be transformed appropriately\n //i.e. it should be serialised as it would appear if the selection group\n //were to be destroyed.\n var originalProperties = this._realizeGroupTransformOnObject(instance),\n object = this.callSuper('_toObject', instance, methodName, propertiesToInclude);\n //Undo the damage we did by changing all of its properties\n this._unwindGroupTransformOnObject(instance, originalProperties);\n return object;\n },\n\n /**\n * Realises an object's group transformation on it\n * @private\n * @param {fabric.Object} [instance] the object to transform (gets mutated)\n * @returns the original values of instance which were changed\n */\n _realizeGroupTransformOnObject: function(instance) {\n if (instance.group && instance.group.type === 'activeSelection' && this._activeObject === instance.group) {\n var layoutProps = ['angle', 'flipX', 'flipY', 'left', 'scaleX', 'scaleY', 'skewX', 'skewY', 'top'];\n //Copy all the positionally relevant properties across now\n var originalValues = {};\n layoutProps.forEach(function(prop) {\n originalValues[prop] = instance[prop];\n });\n fabric.util.addTransformToObject(instance, this._activeObject.calcOwnMatrix());\n return originalValues;\n }\n else {\n return null;\n }\n },\n\n /**\n * Restores the changed properties of instance\n * @private\n * @param {fabric.Object} [instance] the object to un-transform (gets mutated)\n * @param {Object} [originalValues] the original values of instance, as returned by _realizeGroupTransformOnObject\n */\n _unwindGroupTransformOnObject: function(instance, originalValues) {\n if (originalValues) {\n instance.set(originalValues);\n }\n },\n\n /**\n * @private\n */\n _setSVGObject: function(markup, instance, reviver) {\n //If the object is in a selection group, simulate what would happen to that\n //object when the group is deselected\n var originalProperties = this._realizeGroupTransformOnObject(instance);\n this.callSuper('_setSVGObject', markup, instance, reviver);\n this._unwindGroupTransformOnObject(instance, originalProperties);\n },\n\n setViewportTransform: function (vpt) {\n if (this.renderOnAddRemove && this._activeObject && this._activeObject.isEditing) {\n this._activeObject.clearContextTop();\n }\n fabric.StaticCanvas.prototype.setViewportTransform.call(this, vpt);\n }\n });\n\n // copying static properties manually to work around Opera's bug,\n // where \"prototype\" property is enumerable and overrides existing prototype\n for (var prop in fabric.StaticCanvas) {\n if (prop !== 'prototype') {\n fabric.Canvas[prop] = fabric.StaticCanvas[prop];\n }\n }\n})();\n\n\n(function() {\n\n var addListener = fabric.util.addListener,\n removeListener = fabric.util.removeListener,\n RIGHT_CLICK = 3, MIDDLE_CLICK = 2, LEFT_CLICK = 1,\n addEventOptions = { passive: false };\n\n function checkClick(e, value) {\n return e.button && (e.button === value - 1);\n }\n\n fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * Contains the id of the touch event that owns the fabric transform\n * @type Number\n * @private\n */\n mainTouchId: null,\n\n /**\n * Adds mouse listeners to canvas\n * @private\n */\n _initEventListeners: function () {\n // in case we initialized the class twice. This should not happen normally\n // but in some kind of applications where the canvas element may be changed\n // this is a workaround to having double listeners.\n this.removeListeners();\n this._bindEvents();\n this.addOrRemove(addListener, 'add');\n },\n\n /**\n * return an event prefix pointer or mouse.\n * @private\n */\n _getEventPrefix: function () {\n return this.enablePointerEvents ? 'pointer' : 'mouse';\n },\n\n addOrRemove: function(functor, eventjsFunctor) {\n var canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n functor(fabric.window, 'resize', this._onResize);\n functor(canvasElement, eventTypePrefix + 'down', this._onMouseDown);\n functor(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n functor(canvasElement, eventTypePrefix + 'out', this._onMouseOut);\n functor(canvasElement, eventTypePrefix + 'enter', this._onMouseEnter);\n functor(canvasElement, 'wheel', this._onMouseWheel);\n functor(canvasElement, 'contextmenu', this._onContextMenu);\n functor(canvasElement, 'dblclick', this._onDoubleClick);\n functor(canvasElement, 'dragover', this._onDragOver);\n functor(canvasElement, 'dragenter', this._onDragEnter);\n functor(canvasElement, 'dragleave', this._onDragLeave);\n functor(canvasElement, 'drop', this._onDrop);\n if (!this.enablePointerEvents) {\n functor(canvasElement, 'touchstart', this._onTouchStart, addEventOptions);\n }\n if (typeof eventjs !== 'undefined' && eventjsFunctor in eventjs) {\n eventjs[eventjsFunctor](canvasElement, 'gesture', this._onGesture);\n eventjs[eventjsFunctor](canvasElement, 'drag', this._onDrag);\n eventjs[eventjsFunctor](canvasElement, 'orientation', this._onOrientationChange);\n eventjs[eventjsFunctor](canvasElement, 'shake', this._onShake);\n eventjs[eventjsFunctor](canvasElement, 'longpress', this._onLongPress);\n }\n },\n\n /**\n * Removes all event listeners\n */\n removeListeners: function() {\n this.addOrRemove(removeListener, 'remove');\n // if you dispose on a mouseDown, before mouse up, you need to clean document to...\n var eventTypePrefix = this._getEventPrefix();\n removeListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp);\n removeListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions);\n removeListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n },\n\n /**\n * @private\n */\n _bindEvents: function() {\n if (this.eventsBound) {\n // for any reason we pass here twice we do not want to bind events twice.\n return;\n }\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onTouchStart = this._onTouchStart.bind(this);\n this._onMouseMove = this._onMouseMove.bind(this);\n this._onMouseUp = this._onMouseUp.bind(this);\n this._onTouchEnd = this._onTouchEnd.bind(this);\n this._onResize = this._onResize.bind(this);\n this._onGesture = this._onGesture.bind(this);\n this._onDrag = this._onDrag.bind(this);\n this._onShake = this._onShake.bind(this);\n this._onLongPress = this._onLongPress.bind(this);\n this._onOrientationChange = this._onOrientationChange.bind(this);\n this._onMouseWheel = this._onMouseWheel.bind(this);\n this._onMouseOut = this._onMouseOut.bind(this);\n this._onMouseEnter = this._onMouseEnter.bind(this);\n this._onContextMenu = this._onContextMenu.bind(this);\n this._onDoubleClick = this._onDoubleClick.bind(this);\n this._onDragOver = this._onDragOver.bind(this);\n this._onDragEnter = this._simpleEventHandler.bind(this, 'dragenter');\n this._onDragLeave = this._simpleEventHandler.bind(this, 'dragleave');\n this._onDrop = this._simpleEventHandler.bind(this, 'drop');\n this.eventsBound = true;\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js gesture\n * @param {Event} [self] Inner Event object\n */\n _onGesture: function(e, self) {\n this.__onTransformGesture && this.__onTransformGesture(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js drag\n * @param {Event} [self] Inner Event object\n */\n _onDrag: function(e, self) {\n this.__onDrag && this.__onDrag(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on wheel event\n */\n _onMouseWheel: function(e) {\n this.__onMouseWheel(e);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseOut: function(e) {\n var target = this._hoveredTarget;\n this.fire('mouse:out', { target: target, e: e });\n this._hoveredTarget = null;\n target && target.fire('mouseout', { e: e });\n\n var _this = this;\n this._hoveredTargets.forEach(function(_target){\n _this.fire('mouse:out', { target: target, e: e });\n _target && target.fire('mouseout', { e: e });\n });\n this._hoveredTargets = [];\n\n if (this._iTextInstances) {\n this._iTextInstances.forEach(function(obj) {\n if (obj.isEditing) {\n obj.hiddenTextarea.focus();\n }\n });\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseenter\n */\n _onMouseEnter: function(e) {\n // This find target and consequent 'mouse:over' is used to\n // clear old instances on hovered target.\n // calling findTarget has the side effect of killing target.__corner.\n // as a short term fix we are not firing this if we are currently transforming.\n // as a long term fix we need to separate the action of finding a target with the\n // side effects we added to it.\n if (!this._currentTransform && !this.findTarget(e)) {\n this.fire('mouse:over', { target: null, e: e });\n this._hoveredTarget = null;\n this._hoveredTargets = [];\n }\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js orientation change\n * @param {Event} [self] Inner Event object\n */\n _onOrientationChange: function(e, self) {\n this.__onOrientationChange && this.__onOrientationChange(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n * @param {Event} [self] Inner Event object\n */\n _onShake: function(e, self) {\n this.__onShake && this.__onShake(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n * @param {Event} [self] Inner Event object\n */\n _onLongPress: function(e, self) {\n this.__onLongPress && this.__onLongPress(e, self);\n },\n\n /**\n * prevent default to allow drop event to be fired\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n */\n _onDragOver: function(e) {\n e.preventDefault();\n var target = this._simpleEventHandler('dragover', e);\n this._fireEnterLeaveEvents(target, e);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onContextMenu: function (e) {\n if (this.stopContextMenu) {\n e.stopPropagation();\n e.preventDefault();\n }\n return false;\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onDoubleClick: function (e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'dblclick');\n this._resetTransformEventData(e);\n },\n\n /**\n * Return a the id of an event.\n * returns either the pointerId or the identifier or 0 for the mouse event\n * @private\n * @param {Event} evt Event object\n */\n getPointerId: function(evt) {\n var changedTouches = evt.changedTouches;\n\n if (changedTouches) {\n return changedTouches[0] && changedTouches[0].identifier;\n }\n\n if (this.enablePointerEvents) {\n return evt.pointerId;\n }\n\n return -1;\n },\n\n /**\n * Determines if an event has the id of the event that is considered main\n * @private\n * @param {evt} event Event object\n */\n _isMainEvent: function(evt) {\n if (evt.isPrimary === true) {\n return true;\n }\n if (evt.isPrimary === false) {\n return false;\n }\n if (evt.type === 'touchend' && evt.touches.length === 0) {\n return true;\n }\n if (evt.changedTouches) {\n return evt.changedTouches[0].identifier === this.mainTouchId;\n }\n return true;\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onTouchStart: function(e) {\n e.preventDefault();\n if (this.mainTouchId === null) {\n this.mainTouchId = this.getPointerId(e);\n }\n this.__onMouseDown(e);\n this._resetTransformEventData();\n var canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n addListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions);\n addListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n // Unbind mousedown to prevent double triggers from touch devices\n removeListener(canvasElement, eventTypePrefix + 'down', this._onMouseDown);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDown: function (e) {\n this.__onMouseDown(e);\n this._resetTransformEventData();\n var canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n removeListener(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n addListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp);\n addListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onTouchEnd: function(e) {\n if (e.touches.length > 0) {\n // if there are still touches stop here\n return;\n }\n this.__onMouseUp(e);\n this._resetTransformEventData();\n this.mainTouchId = null;\n var eventTypePrefix = this._getEventPrefix();\n removeListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions);\n removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n var _this = this;\n if (this._willAddMouseDown) {\n clearTimeout(this._willAddMouseDown);\n }\n this._willAddMouseDown = setTimeout(function() {\n // Wait 400ms before rebinding mousedown to prevent double triggers\n // from touch devices\n addListener(_this.upperCanvasEl, eventTypePrefix + 'down', _this._onMouseDown);\n _this._willAddMouseDown = 0;\n }, 400);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUp: function (e) {\n this.__onMouseUp(e);\n this._resetTransformEventData();\n var canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n if (this._isMainEvent(e)) {\n removeListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp);\n removeListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n addListener(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMove: function (e) {\n !this.allowTouchScrolling && e.preventDefault && e.preventDefault();\n this.__onMouseMove(e);\n },\n\n /**\n * @private\n */\n _onResize: function () {\n this.calcOffset();\n },\n\n /**\n * Decides whether the canvas should be redrawn in mouseup and mousedown events.\n * @private\n * @param {Object} target\n */\n _shouldRender: function(target) {\n var activeObject = this._activeObject;\n\n if (\n !!activeObject !== !!target ||\n (activeObject && target && (activeObject !== target))\n ) {\n // this covers: switch of target, from target to no target, selection of target\n // multiSelection with key and mouse\n return true;\n }\n else if (activeObject && activeObject.isEditing) {\n // if we mouse up/down over a editing textbox a cursor change,\n // there is no need to re render\n return false;\n }\n return false;\n },\n\n /**\n * Method that defines the actions when mouse is released on canvas.\n * The method resets the currentTransform parameters, store the image corner\n * position in the image object and render the canvas on top.\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseUp: function (e) {\n var target, transform = this._currentTransform,\n groupSelector = this._groupSelector, shouldRender = false,\n isClick = (!groupSelector || (groupSelector.left === 0 && groupSelector.top === 0));\n this._cacheTransformEventData(e);\n target = this._target;\n this._handleEvent(e, 'up:before');\n // if right/middle click just fire events and return\n // target undefined will make the _handleEvent search the target\n if (checkClick(e, RIGHT_CLICK)) {\n if (this.fireRightClick) {\n this._handleEvent(e, 'up', RIGHT_CLICK, isClick);\n }\n return;\n }\n\n if (checkClick(e, MIDDLE_CLICK)) {\n if (this.fireMiddleClick) {\n this._handleEvent(e, 'up', MIDDLE_CLICK, isClick);\n }\n this._resetTransformEventData();\n return;\n }\n\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this._onMouseUpInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n if (transform) {\n this._finalizeCurrentTransform(e);\n shouldRender = transform.actionPerformed;\n }\n if (!isClick) {\n var targetWasActive = target === this._activeObject;\n this._maybeGroupObjects(e);\n if (!shouldRender) {\n shouldRender = (\n this._shouldRender(target) ||\n (!targetWasActive && target === this._activeObject)\n );\n }\n }\n if (target) {\n if (target.selectable && target !== this._activeObject && target.activeOn === 'up') {\n this.setActiveObject(target, e);\n shouldRender = true;\n }\n else {\n var corner = target._findTargetCorner(\n this.getPointer(e, true),\n fabric.util.isTouchEvent(e)\n );\n var control = target.controls[corner],\n mouseUpHandler = control && control.getMouseUpHandler(e, target, control);\n if (mouseUpHandler) {\n var pointer = this.getPointer(e);\n mouseUpHandler(e, transform, pointer.x, pointer.y);\n }\n }\n target.isMoving = false;\n }\n this._setCursorFromEvent(e, target);\n this._handleEvent(e, 'up', LEFT_CLICK, isClick);\n this._groupSelector = null;\n this._currentTransform = null;\n // reset the target information about which corner is selected\n target && (target.__corner = 0);\n if (shouldRender) {\n this.requestRenderAll();\n }\n else if (!isClick) {\n this.renderTop();\n }\n },\n\n /**\n * @private\n * Handle event firing for target and subtargets\n * @param {Event} e event from mouse\n * @param {String} eventType event to fire (up, down or move)\n * @return {Fabric.Object} target return the the target found, for internal reasons.\n */\n _simpleEventHandler: function(eventType, e) {\n var target = this.findTarget(e),\n targets = this.targets,\n options = {\n e: e,\n target: target,\n subTargets: targets,\n };\n this.fire(eventType, options);\n target && target.fire(eventType, options);\n if (!targets) {\n return target;\n }\n for (var i = 0; i < targets.length; i++) {\n targets[i].fire(eventType, options);\n }\n return target;\n },\n\n /**\n * @private\n * Handle event firing for target and subtargets\n * @param {Event} e event from mouse\n * @param {String} eventType event to fire (up, down or move)\n * @param {fabric.Object} targetObj receiving event\n * @param {Number} [button] button used in the event 1 = left, 2 = middle, 3 = right\n * @param {Boolean} isClick for left button only, indicates that the mouse up happened without move.\n */\n _handleEvent: function(e, eventType, button, isClick) {\n var target = this._target,\n targets = this.targets || [],\n options = {\n e: e,\n target: target,\n subTargets: targets,\n button: button || LEFT_CLICK,\n isClick: isClick || false,\n pointer: this._pointer,\n absolutePointer: this._absolutePointer,\n transform: this._currentTransform\n };\n if (eventType === 'up') {\n options.currentTarget = this.findTarget(e);\n options.currentSubTargets = this.targets;\n }\n this.fire('mouse:' + eventType, options);\n target && target.fire('mouse' + eventType, options);\n for (var i = 0; i < targets.length; i++) {\n targets[i].fire('mouse' + eventType, options);\n }\n },\n\n /**\n * @private\n * @param {Event} e send the mouse event that generate the finalize down, so it can be used in the event\n */\n _finalizeCurrentTransform: function(e) {\n\n var transform = this._currentTransform,\n target = transform.target,\n eventName,\n options = {\n e: e,\n target: target,\n transform: transform,\n action: transform.action,\n };\n\n if (target._scaling) {\n target._scaling = false;\n }\n\n target.setCoords();\n\n if (transform.actionPerformed || (this.stateful && target.hasStateChanged())) {\n if (transform.actionPerformed) {\n // this is not friendly to the new control api.\n // is deprecated.\n eventName = this._addEventOptions(options, transform);\n this._fire(eventName, options);\n }\n this._fire('modified', options);\n }\n },\n\n /**\n * Mutate option object in order to add by property and give back the event name.\n * @private\n * @deprecated since 4.2.0\n * @param {Object} options to mutate\n * @param {Object} transform to inspect action from\n */\n _addEventOptions: function(options, transform) {\n // we can probably add more details at low cost\n // scale change, rotation changes, translation changes\n var eventName, by;\n switch (transform.action) {\n case 'scaleX':\n eventName = 'scaled';\n by = 'x';\n break;\n case 'scaleY':\n eventName = 'scaled';\n by = 'y';\n break;\n case 'skewX':\n eventName = 'skewed';\n by = 'x';\n break;\n case 'skewY':\n eventName = 'skewed';\n by = 'y';\n break;\n case 'scale':\n eventName = 'scaled';\n by = 'equally';\n break;\n case 'rotate':\n eventName = 'rotated';\n break;\n case 'drag':\n eventName = 'moved';\n break;\n }\n options.by = by;\n return eventName;\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDownInDrawingMode: function(e) {\n this._isCurrentlyDrawing = true;\n if (this.getActiveObject()) {\n this.discardActiveObject(e).requestRenderAll();\n }\n var pointer = this.getPointer(e);\n this.freeDrawingBrush.onMouseDown(pointer, { e: e, pointer: pointer });\n this._handleEvent(e, 'down');\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMoveInDrawingMode: function(e) {\n if (this._isCurrentlyDrawing) {\n var pointer = this.getPointer(e);\n this.freeDrawingBrush.onMouseMove(pointer, { e: e, pointer: pointer });\n }\n this.setCursor(this.freeDrawingCursor);\n this._handleEvent(e, 'move');\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUpInDrawingMode: function(e) {\n var pointer = this.getPointer(e);\n this._isCurrentlyDrawing = this.freeDrawingBrush.onMouseUp({ e: e, pointer: pointer });\n this._handleEvent(e, 'up');\n },\n\n /**\n * Method that defines the actions when mouse is clicked on canvas.\n * The method inits the currentTransform parameters and renders all the\n * canvas so the current image can be placed on the top canvas and the rest\n * in on the container one.\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n __onMouseDown: function (e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'down:before');\n var target = this._target;\n // if right click just fire events\n if (checkClick(e, RIGHT_CLICK)) {\n if (this.fireRightClick) {\n this._handleEvent(e, 'down', RIGHT_CLICK);\n }\n return;\n }\n\n if (checkClick(e, MIDDLE_CLICK)) {\n if (this.fireMiddleClick) {\n this._handleEvent(e, 'down', MIDDLE_CLICK);\n }\n return;\n }\n\n if (this.isDrawingMode) {\n this._onMouseDownInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n\n // ignore if some object is being transformed at this moment\n if (this._currentTransform) {\n return;\n }\n\n var pointer = this._pointer;\n // save pointer for check in __onMouseUp event\n this._previousPointer = pointer;\n var shouldRender = this._shouldRender(target),\n shouldGroup = this._shouldGroup(e, target);\n if (this._shouldClearSelection(e, target)) {\n this.discardActiveObject(e);\n }\n else if (shouldGroup) {\n this._handleGrouping(e, target);\n target = this._activeObject;\n }\n\n if (this.selection && (!target ||\n (!target.selectable && !target.isEditing && target !== this._activeObject))) {\n this._groupSelector = {\n ex: pointer.x,\n ey: pointer.y,\n top: 0,\n left: 0\n };\n }\n\n if (target) {\n var alreadySelected = target === this._activeObject;\n if (target.selectable && target.activeOn === 'down') {\n this.setActiveObject(target, e);\n }\n var corner = target._findTargetCorner(\n this.getPointer(e, true),\n fabric.util.isTouchEvent(e)\n );\n target.__corner = corner;\n if (target === this._activeObject && (corner || !shouldGroup)) {\n this._setupCurrentTransform(e, target, alreadySelected);\n var control = target.controls[corner],\n pointer = this.getPointer(e),\n mouseDownHandler = control && control.getMouseDownHandler(e, target, control);\n if (mouseDownHandler) {\n mouseDownHandler(e, this._currentTransform, pointer.x, pointer.y);\n }\n }\n }\n this._handleEvent(e, 'down');\n // we must renderAll so that we update the visuals\n (shouldRender || shouldGroup) && this.requestRenderAll();\n },\n\n /**\n * reset cache form common information needed during event processing\n * @private\n */\n _resetTransformEventData: function() {\n this._target = null;\n this._pointer = null;\n this._absolutePointer = null;\n },\n\n /**\n * Cache common information needed during event processing\n * @private\n * @param {Event} e Event object fired on event\n */\n _cacheTransformEventData: function(e) {\n // reset in order to avoid stale caching\n this._resetTransformEventData();\n this._pointer = this.getPointer(e, true);\n this._absolutePointer = this.restorePointerVpt(this._pointer);\n this._target = this._currentTransform ? this._currentTransform.target : this.findTarget(e) || null;\n },\n\n /**\n * @private\n */\n _beforeTransform: function(e) {\n var t = this._currentTransform;\n this.stateful && t.target.saveState();\n this.fire('before:transform', {\n e: e,\n transform: t,\n });\n },\n\n /**\n * Method that defines the actions when mouse is hovering the canvas.\n * The currentTransform parameter will define whether the user is rotating/scaling/translating\n * an image or neither of them (only hovering). A group selection is also possible and would cancel\n * all any other type of action.\n * In case of an image transformation only the top canvas will be rendered.\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n __onMouseMove: function (e) {\n this._handleEvent(e, 'move:before');\n this._cacheTransformEventData(e);\n var target, pointer;\n\n if (this.isDrawingMode) {\n this._onMouseMoveInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n\n var groupSelector = this._groupSelector;\n\n // We initially clicked in an empty area, so we draw a box for multiple selection\n if (groupSelector) {\n pointer = this._pointer;\n\n groupSelector.left = pointer.x - groupSelector.ex;\n groupSelector.top = pointer.y - groupSelector.ey;\n\n this.renderTop();\n }\n else if (!this._currentTransform) {\n target = this.findTarget(e) || null;\n this._setCursorFromEvent(e, target);\n this._fireOverOutEvents(target, e);\n }\n else {\n this._transformObject(e);\n }\n this._handleEvent(e, 'move');\n this._resetTransformEventData();\n },\n\n /**\n * Manage the mouseout, mouseover events for the fabric object on the canvas\n * @param {Fabric.Object} target the target where the target from the mousemove event\n * @param {Event} e Event object fired on mousemove\n * @private\n */\n _fireOverOutEvents: function(target, e) {\n var _hoveredTarget = this._hoveredTarget,\n _hoveredTargets = this._hoveredTargets, targets = this.targets,\n length = Math.max(_hoveredTargets.length, targets.length);\n\n this.fireSyntheticInOutEvents(target, e, {\n oldTarget: _hoveredTarget,\n evtOut: 'mouseout',\n canvasEvtOut: 'mouse:out',\n evtIn: 'mouseover',\n canvasEvtIn: 'mouse:over',\n });\n for (var i = 0; i < length; i++){\n this.fireSyntheticInOutEvents(targets[i], e, {\n oldTarget: _hoveredTargets[i],\n evtOut: 'mouseout',\n evtIn: 'mouseover',\n });\n }\n this._hoveredTarget = target;\n this._hoveredTargets = this.targets.concat();\n },\n\n /**\n * Manage the dragEnter, dragLeave events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the onDrag event\n * @param {Event} e Event object fired on ondrag\n * @private\n */\n _fireEnterLeaveEvents: function(target, e) {\n var _draggedoverTarget = this._draggedoverTarget,\n _hoveredTargets = this._hoveredTargets, targets = this.targets,\n length = Math.max(_hoveredTargets.length, targets.length);\n\n this.fireSyntheticInOutEvents(target, e, {\n oldTarget: _draggedoverTarget,\n evtOut: 'dragleave',\n evtIn: 'dragenter',\n });\n for (var i = 0; i < length; i++) {\n this.fireSyntheticInOutEvents(targets[i], e, {\n oldTarget: _hoveredTargets[i],\n evtOut: 'dragleave',\n evtIn: 'dragenter',\n });\n }\n this._draggedoverTarget = target;\n },\n\n /**\n * Manage the synthetic in/out events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the supported events\n * @param {Event} e Event object fired\n * @param {Object} config configuration for the function to work\n * @param {String} config.targetName property on the canvas where the old target is stored\n * @param {String} [config.canvasEvtOut] name of the event to fire at canvas level for out\n * @param {String} config.evtOut name of the event to fire for out\n * @param {String} [config.canvasEvtIn] name of the event to fire at canvas level for in\n * @param {String} config.evtIn name of the event to fire for in\n * @private\n */\n fireSyntheticInOutEvents: function(target, e, config) {\n var inOpt, outOpt, oldTarget = config.oldTarget, outFires, inFires,\n targetChanged = oldTarget !== target, canvasEvtIn = config.canvasEvtIn, canvasEvtOut = config.canvasEvtOut;\n if (targetChanged) {\n inOpt = { e: e, target: target, previousTarget: oldTarget };\n outOpt = { e: e, target: oldTarget, nextTarget: target };\n }\n inFires = target && targetChanged;\n outFires = oldTarget && targetChanged;\n if (outFires) {\n canvasEvtOut && this.fire(canvasEvtOut, outOpt);\n oldTarget.fire(config.evtOut, outOpt);\n }\n if (inFires) {\n canvasEvtIn && this.fire(canvasEvtIn, inOpt);\n target.fire(config.evtIn, inOpt);\n }\n },\n\n /**\n * Method that defines actions when an Event Mouse Wheel\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseWheel: function(e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'wheel');\n this._resetTransformEventData();\n },\n\n /**\n * @private\n * @param {Event} e Event fired on mousemove\n */\n _transformObject: function(e) {\n var pointer = this.getPointer(e),\n transform = this._currentTransform;\n\n transform.reset = false;\n transform.shiftKey = e.shiftKey;\n transform.altKey = e[this.centeredKey];\n\n this._performTransformAction(e, transform, pointer);\n transform.actionPerformed && this.requestRenderAll();\n },\n\n /**\n * @private\n */\n _performTransformAction: function(e, transform, pointer) {\n var x = pointer.x,\n y = pointer.y,\n action = transform.action,\n actionPerformed = false,\n actionHandler = transform.actionHandler;\n // this object could be created from the function in the control handlers\n\n\n if (actionHandler) {\n actionPerformed = actionHandler(e, transform, x, y);\n }\n if (action === 'drag' && actionPerformed) {\n transform.target.isMoving = true;\n this.setCursor(transform.target.moveCursor || this.moveCursor);\n }\n transform.actionPerformed = transform.actionPerformed || actionPerformed;\n },\n\n /**\n * @private\n */\n _fire: fabric.controlsUtils.fireEvent,\n\n /**\n * Sets the cursor depending on where the canvas is being hovered.\n * Note: very buggy in Opera\n * @param {Event} e Event object\n * @param {Object} target Object that the mouse is hovering, if so.\n */\n _setCursorFromEvent: function (e, target) {\n if (!target) {\n this.setCursor(this.defaultCursor);\n return false;\n }\n var hoverCursor = target.hoverCursor || this.hoverCursor,\n activeSelection = this._activeObject && this._activeObject.type === 'activeSelection' ?\n this._activeObject : null,\n // only show proper corner when group selection is not active\n corner = (!activeSelection || !activeSelection.contains(target))\n // here we call findTargetCorner always with undefined for the touch parameter.\n // we assume that if you are using a cursor you do not need to interact with\n // the bigger touch area.\n && target._findTargetCorner(this.getPointer(e, true));\n\n if (!corner) {\n if (target.subTargetCheck){\n // hoverCursor should come from top-most subTarget,\n // so we walk the array backwards\n this.targets.concat().reverse().map(function(_target){\n hoverCursor = _target.hoverCursor || hoverCursor;\n });\n }\n this.setCursor(hoverCursor);\n }\n else {\n this.setCursor(this.getCornerCursor(corner, target, e));\n }\n },\n\n /**\n * @private\n */\n getCornerCursor: function(corner, target, e) {\n var control = target.controls[corner];\n return control.cursorStyleHandler(e, control, target);\n }\n });\n})();\n\n\n(function() {\n\n var min = Math.min,\n max = Math.max;\n\n fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n * @return {Boolean}\n */\n _shouldGroup: function(e, target) {\n var activeObject = this._activeObject;\n return activeObject && this._isSelectionKeyPressed(e) && target && target.selectable && this.selection &&\n (activeObject !== target || activeObject.type === 'activeSelection') && !target.onSelect({ e: e });\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _handleGrouping: function (e, target) {\n var activeObject = this._activeObject;\n // avoid multi select when shift click on a corner\n if (activeObject.__corner) {\n return;\n }\n if (target === activeObject) {\n // if it's a group, find target again, using activeGroup objects\n target = this.findTarget(e, true);\n // if even object is not found or we are on activeObjectCorner, bail out\n if (!target || !target.selectable) {\n return;\n }\n }\n if (activeObject && activeObject.type === 'activeSelection') {\n this._updateActiveSelection(target, e);\n }\n else {\n this._createActiveSelection(target, e);\n }\n },\n\n /**\n * @private\n */\n _updateActiveSelection: function(target, e) {\n var activeSelection = this._activeObject,\n currentActiveObjects = activeSelection._objects.slice(0);\n if (activeSelection.contains(target)) {\n activeSelection.removeWithUpdate(target);\n this._hoveredTarget = target;\n this._hoveredTargets = this.targets.concat();\n if (activeSelection.size() === 1) {\n // activate last remaining object\n this._setActiveObject(activeSelection.item(0), e);\n }\n }\n else {\n activeSelection.addWithUpdate(target);\n this._hoveredTarget = activeSelection;\n this._hoveredTargets = this.targets.concat();\n }\n this._fireSelectionEvents(currentActiveObjects, e);\n },\n\n /**\n * @private\n */\n _createActiveSelection: function(target, e) {\n var currentActives = this.getActiveObjects(), group = this._createGroup(target);\n this._hoveredTarget = group;\n // ISSUE 4115: should we consider subTargets here?\n // this._hoveredTargets = [];\n // this._hoveredTargets = this.targets.concat();\n this._setActiveObject(group, e);\n this._fireSelectionEvents(currentActives, e);\n },\n\n /**\n * @private\n * @param {Object} target\n */\n _createGroup: function(target) {\n var objects = this._objects,\n isActiveLower = objects.indexOf(this._activeObject) < objects.indexOf(target),\n groupObjects = isActiveLower\n ? [this._activeObject, target]\n : [target, this._activeObject];\n this._activeObject.isEditing && this._activeObject.exitEditing();\n return new fabric.ActiveSelection(groupObjects, {\n canvas: this\n });\n },\n\n /**\n * @private\n * @param {Event} e mouse event\n */\n _groupSelectedObjects: function (e) {\n\n var group = this._collectObjects(e),\n aGroup;\n\n // do not create group for 1 element only\n if (group.length === 1) {\n this.setActiveObject(group[0], e);\n }\n else if (group.length > 1) {\n aGroup = new fabric.ActiveSelection(group.reverse(), {\n canvas: this\n });\n this.setActiveObject(aGroup, e);\n }\n },\n\n /**\n * @private\n */\n _collectObjects: function(e) {\n var group = [],\n currentObject,\n x1 = this._groupSelector.ex,\n y1 = this._groupSelector.ey,\n x2 = x1 + this._groupSelector.left,\n y2 = y1 + this._groupSelector.top,\n selectionX1Y1 = new fabric.Point(min(x1, x2), min(y1, y2)),\n selectionX2Y2 = new fabric.Point(max(x1, x2), max(y1, y2)),\n allowIntersect = !this.selectionFullyContained,\n isClick = x1 === x2 && y1 === y2;\n // we iterate reverse order to collect top first in case of click.\n for (var i = this._objects.length; i--; ) {\n currentObject = this._objects[i];\n\n if (!currentObject || !currentObject.selectable || !currentObject.visible) {\n continue;\n }\n\n if ((allowIntersect && currentObject.intersectsWithRect(selectionX1Y1, selectionX2Y2)) ||\n currentObject.isContainedWithinRect(selectionX1Y1, selectionX2Y2) ||\n (allowIntersect && currentObject.containsPoint(selectionX1Y1)) ||\n (allowIntersect && currentObject.containsPoint(selectionX2Y2))\n ) {\n group.push(currentObject);\n // only add one object if it's a click\n if (isClick) {\n break;\n }\n }\n }\n\n if (group.length > 1) {\n group = group.filter(function(object) {\n return !object.onSelect({ e: e });\n });\n }\n\n return group;\n },\n\n /**\n * @private\n */\n _maybeGroupObjects: function(e) {\n if (this.selection && this._groupSelector) {\n this._groupSelectedObjects(e);\n }\n this.setCursor(this.defaultCursor);\n // clear selection and current transformation\n this._groupSelector = null;\n }\n });\n\n})();\n\n\n(function () {\n fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately\n * @param {Object} [options] Options object\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by, to have consistent\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 2.0.0\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n * @see {@link http://jsfiddle.net/fabricjs/NfZVb/|jsFiddle demo}\n * @example Generate jpeg dataURL with lower quality\n * var dataURL = canvas.toDataURL({\n * format: 'jpeg',\n * quality: 0.8\n * });\n * @example Generate cropped png dataURL (clipping of canvas)\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * left: 100,\n * top: 100,\n * width: 200,\n * height: 200\n * });\n * @example Generate double scaled png dataURL\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * multiplier: 2\n * });\n */\n toDataURL: function (options) {\n options || (options = { });\n\n var format = options.format || 'png',\n quality = options.quality || 1,\n multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? this.getRetinaScaling() : 1),\n canvasEl = this.toCanvasElement(multiplier, options);\n return fabric.util.toDataURL(canvasEl, format, quality);\n },\n\n /**\n * Create a new HTMLCanvas element painted with the current canvas content.\n * No need to resize the actual one or repaint it.\n * Will transfer object ownership to a new canvas, paint it, and set everything back.\n * This is an intermediary step used to get to a dataUrl but also it is useful to\n * create quick image copies of a canvas without passing for the dataUrl string\n * @param {Number} [multiplier] a zoom factor.\n * @param {Object} [cropping] Cropping informations\n * @param {Number} [cropping.left] Cropping left offset.\n * @param {Number} [cropping.top] Cropping top offset.\n * @param {Number} [cropping.width] Cropping width.\n * @param {Number} [cropping.height] Cropping height.\n */\n toCanvasElement: function(multiplier, cropping) {\n multiplier = multiplier || 1;\n cropping = cropping || { };\n var scaledWidth = (cropping.width || this.width) * multiplier,\n scaledHeight = (cropping.height || this.height) * multiplier,\n zoom = this.getZoom(),\n originalWidth = this.width,\n originalHeight = this.height,\n newZoom = zoom * multiplier,\n vp = this.viewportTransform,\n translateX = (vp[4] - (cropping.left || 0)) * multiplier,\n translateY = (vp[5] - (cropping.top || 0)) * multiplier,\n originalInteractive = this.interactive,\n newVp = [newZoom, 0, 0, newZoom, translateX, translateY],\n originalRetina = this.enableRetinaScaling,\n canvasEl = fabric.util.createCanvasElement(),\n originalContextTop = this.contextTop;\n canvasEl.width = scaledWidth;\n canvasEl.height = scaledHeight;\n this.contextTop = null;\n this.enableRetinaScaling = false;\n this.interactive = false;\n this.viewportTransform = newVp;\n this.width = scaledWidth;\n this.height = scaledHeight;\n this.calcViewportBoundaries();\n this.renderCanvas(canvasEl.getContext('2d'), this._objects);\n this.viewportTransform = vp;\n this.width = originalWidth;\n this.height = originalHeight;\n this.calcViewportBoundaries();\n this.interactive = originalInteractive;\n this.enableRetinaScaling = originalRetina;\n this.contextTop = originalContextTop;\n return canvasEl;\n },\n });\n\n})();\n\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n /**\n * Populates canvas with data from the specified JSON.\n * JSON format must conform to the one of {@link fabric.Canvas#toJSON}\n * @param {String|Object} json JSON string or object\n * @param {Function} callback Callback, invoked when json is parsed\n * and corresponding objects (e.g: {@link fabric.Image})\n * are initialized\n * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.\n * @return {fabric.Canvas} instance\n * @chainable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization}\n * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo}\n * @example loadFromJSON\n * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas));\n * @example loadFromJSON with reviver\n * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas), function(o, object) {\n * // `o` = json object\n * // `object` = fabric.Object instance\n * // ... do some stuff ...\n * });\n */\n loadFromJSON: function (json, callback, reviver) {\n if (!json) {\n return;\n }\n\n // serialize if it wasn't already\n var serialized = (typeof json === 'string')\n ? JSON.parse(json)\n : fabric.util.object.clone(json);\n\n var _this = this,\n clipPath = serialized.clipPath,\n renderOnAddRemove = this.renderOnAddRemove;\n\n this.renderOnAddRemove = false;\n\n delete serialized.clipPath;\n\n this._enlivenObjects(serialized.objects, function (enlivenedObjects) {\n _this.clear();\n _this._setBgOverlay(serialized, function () {\n if (clipPath) {\n _this._enlivenObjects([clipPath], function (enlivenedCanvasClip) {\n _this.clipPath = enlivenedCanvasClip[0];\n _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback);\n });\n }\n else {\n _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback);\n }\n });\n }, reviver);\n return this;\n },\n\n /**\n * @private\n * @param {Object} serialized Object with background and overlay information\n * @param {Array} restored canvas objects\n * @param {Function} cached renderOnAddRemove callback\n * @param {Function} callback Invoked after all background and overlay images/patterns loaded\n */\n __setupCanvas: function(serialized, enlivenedObjects, renderOnAddRemove, callback) {\n var _this = this;\n enlivenedObjects.forEach(function(obj, index) {\n // we splice the array just in case some custom classes restored from JSON\n // will add more object to canvas at canvas init.\n _this.insertAt(obj, index);\n });\n this.renderOnAddRemove = renderOnAddRemove;\n // remove parts i cannot set as options\n delete serialized.objects;\n delete serialized.backgroundImage;\n delete serialized.overlayImage;\n delete serialized.background;\n delete serialized.overlay;\n // this._initOptions does too many things to just\n // call it. Normally loading an Object from JSON\n // create the Object instance. Here the Canvas is\n // already an instance and we are just loading things over it\n this._setOptions(serialized);\n this.renderAll();\n callback && callback();\n },\n\n /**\n * @private\n * @param {Object} serialized Object with background and overlay information\n * @param {Function} callback Invoked after all background and overlay images/patterns loaded\n */\n _setBgOverlay: function(serialized, callback) {\n var loaded = {\n backgroundColor: false,\n overlayColor: false,\n backgroundImage: false,\n overlayImage: false\n };\n\n if (!serialized.backgroundImage && !serialized.overlayImage && !serialized.background && !serialized.overlay) {\n callback && callback();\n return;\n }\n\n var cbIfLoaded = function () {\n if (loaded.backgroundImage && loaded.overlayImage && loaded.backgroundColor && loaded.overlayColor) {\n callback && callback();\n }\n };\n\n this.__setBgOverlay('backgroundImage', serialized.backgroundImage, loaded, cbIfLoaded);\n this.__setBgOverlay('overlayImage', serialized.overlayImage, loaded, cbIfLoaded);\n this.__setBgOverlay('backgroundColor', serialized.background, loaded, cbIfLoaded);\n this.__setBgOverlay('overlayColor', serialized.overlay, loaded, cbIfLoaded);\n },\n\n /**\n * @private\n * @param {String} property Property to set (backgroundImage, overlayImage, backgroundColor, overlayColor)\n * @param {(Object|String)} value Value to set\n * @param {Object} loaded Set loaded property to true if property is set\n * @param {Object} callback Callback function to invoke after property is set\n */\n __setBgOverlay: function(property, value, loaded, callback) {\n var _this = this;\n\n if (!value) {\n loaded[property] = true;\n callback && callback();\n return;\n }\n\n if (property === 'backgroundImage' || property === 'overlayImage') {\n fabric.util.enlivenObjects([value], function(enlivedObject){\n _this[property] = enlivedObject[0];\n loaded[property] = true;\n callback && callback();\n });\n }\n else {\n this['set' + fabric.util.string.capitalize(property, true)](value, function() {\n loaded[property] = true;\n callback && callback();\n });\n }\n },\n\n /**\n * @private\n * @param {Array} objects\n * @param {Function} callback\n * @param {Function} [reviver]\n */\n _enlivenObjects: function (objects, callback, reviver) {\n if (!objects || objects.length === 0) {\n callback && callback([]);\n return;\n }\n\n fabric.util.enlivenObjects(objects, function(enlivenedObjects) {\n callback && callback(enlivenedObjects);\n }, null, reviver);\n },\n\n /**\n * @private\n * @param {String} format\n * @param {Function} callback\n */\n _toDataURL: function (format, callback) {\n this.clone(function (clone) {\n callback(clone.toDataURL(format));\n });\n },\n\n /**\n * @private\n * @param {String} format\n * @param {Number} multiplier\n * @param {Function} callback\n */\n _toDataURLWithMultiplier: function (format, multiplier, callback) {\n this.clone(function (clone) {\n callback(clone.toDataURLWithMultiplier(format, multiplier));\n });\n },\n\n /**\n * Clones canvas instance\n * @param {Object} [callback] Receives cloned instance as a first argument\n * @param {Array} [properties] Array of properties to include in the cloned canvas and children\n */\n clone: function (callback, properties) {\n var data = JSON.stringify(this.toJSON(properties));\n this.cloneWithoutData(function(clone) {\n clone.loadFromJSON(data, function() {\n callback && callback(clone);\n });\n });\n },\n\n /**\n * Clones canvas instance without cloning existing data.\n * This essentially copies canvas dimensions, clipping properties, etc.\n * but leaves data empty (so that you can populate it with your own)\n * @param {Object} [callback] Receives cloned instance as a first argument\n */\n cloneWithoutData: function(callback) {\n var el = fabric.util.createCanvasElement();\n\n el.width = this.width;\n el.height = this.height;\n\n var clone = new fabric.Canvas(el);\n if (this.backgroundImage) {\n clone.setBackgroundImage(this.backgroundImage.src, function() {\n clone.renderAll();\n callback && callback(clone);\n });\n clone.backgroundImageOpacity = this.backgroundImageOpacity;\n clone.backgroundImageStretch = this.backgroundImageStretch;\n }\n else {\n callback && callback(clone);\n }\n }\n});\n\n\n/**\n * Adds support for multi-touch gestures using the Event.js library.\n * Fires the following custom events:\n * - touch:gesture\n * - touch:drag\n * - touch:orientation\n * - touch:shake\n * - touch:longpress\n */\n(function() {\n\n var degreesToRadians = fabric.util.degreesToRadians,\n radiansToDegrees = fabric.util.radiansToDegrees;\n\n fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n /**\n * Method that defines actions when an Event.js gesture is detected on an object. Currently only supports\n * 2 finger gestures.\n * @param {Event} e Event object by Event.js\n * @param {Event} self Event proxy object by Event.js\n */\n __onTransformGesture: function(e, self) {\n\n if (this.isDrawingMode || !e.touches || e.touches.length !== 2 || 'gesture' !== self.gesture) {\n return;\n }\n\n var target = this.findTarget(e);\n if ('undefined' !== typeof target) {\n this.__gesturesParams = {\n e: e,\n self: self,\n target: target\n };\n\n this.__gesturesRenderer();\n }\n\n this.fire('touch:gesture', {\n target: target, e: e, self: self\n });\n },\n __gesturesParams: null,\n __gesturesRenderer: function() {\n\n if (this.__gesturesParams === null || this._currentTransform === null) {\n return;\n }\n\n var self = this.__gesturesParams.self,\n t = this._currentTransform,\n e = this.__gesturesParams.e;\n\n t.action = 'scale';\n t.originX = t.originY = 'center';\n\n this._scaleObjectBy(self.scale, e);\n\n if (self.rotation !== 0) {\n t.action = 'rotate';\n this._rotateObjectByAngle(self.rotation, e);\n }\n\n this.requestRenderAll();\n\n t.action = 'drag';\n },\n\n /**\n * Method that defines actions when an Event.js drag is detected.\n *\n * @param {Event} e Event object by Event.js\n * @param {Event} self Event proxy object by Event.js\n */\n __onDrag: function(e, self) {\n this.fire('touch:drag', {\n e: e, self: self\n });\n },\n\n /**\n * Method that defines actions when an Event.js orientation event is detected.\n *\n * @param {Event} e Event object by Event.js\n * @param {Event} self Event proxy object by Event.js\n */\n __onOrientationChange: function(e, self) {\n this.fire('touch:orientation', {\n e: e, self: self\n });\n },\n\n /**\n * Method that defines actions when an Event.js shake event is detected.\n *\n * @param {Event} e Event object by Event.js\n * @param {Event} self Event proxy object by Event.js\n */\n __onShake: function(e, self) {\n this.fire('touch:shake', {\n e: e, self: self\n });\n },\n\n /**\n * Method that defines actions when an Event.js longpress event is detected.\n *\n * @param {Event} e Event object by Event.js\n * @param {Event} self Event proxy object by Event.js\n */\n __onLongPress: function(e, self) {\n this.fire('touch:longpress', {\n e: e, self: self\n });\n },\n\n /**\n * Scales an object by a factor\n * @param {Number} s The scale factor to apply to the current scale level\n * @param {Event} e Event object by Event.js\n */\n _scaleObjectBy: function(s, e) {\n var t = this._currentTransform,\n target = t.target;\n t.gestureScale = s;\n target._scaling = true;\n return fabric.controlsUtils.scalingEqually(e, t, 0, 0);\n },\n\n /**\n * Rotates object by an angle\n * @param {Number} curAngle The angle of rotation in degrees\n * @param {Event} e Event object by Event.js\n */\n _rotateObjectByAngle: function(curAngle, e) {\n var t = this._currentTransform;\n\n if (t.target.get('lockRotation')) {\n return;\n }\n t.target.rotate(radiansToDegrees(degreesToRadians(curAngle) + t.theta));\n this._fire('rotating', {\n target: t.target,\n e: e,\n transform: t,\n });\n }\n });\n})();\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n toFixed = fabric.util.toFixed,\n capitalize = fabric.util.string.capitalize,\n degreesToRadians = fabric.util.degreesToRadians,\n supportsLineDash = fabric.StaticCanvas.supports('setLineDash'),\n objectCaching = !fabric.isLikelyNode,\n ALIASING_LIMIT = 2;\n\n if (fabric.Object) {\n return;\n }\n\n /**\n * Root object class from which all 2d shape classes inherit from\n * @class fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#objects}\n * @see {@link fabric.Object#initialize} for constructor definition\n *\n * @fires added\n * @fires removed\n *\n * @fires selected\n * @fires deselected\n * @fires modified\n * @fires modified\n * @fires moved\n * @fires scaled\n * @fires rotated\n * @fires skewed\n *\n * @fires rotating\n * @fires scaling\n * @fires moving\n * @fires skewing\n *\n * @fires mousedown\n * @fires mouseup\n * @fires mouseover\n * @fires mouseout\n * @fires mousewheel\n * @fires mousedblclick\n *\n * @fires dragover\n * @fires dragenter\n * @fires dragleave\n * @fires drop\n */\n fabric.Object = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.Object.prototype */ {\n\n /**\n * Type of an object (rect, circle, path, etc.).\n * Note that this property is meant to be read-only and not meant to be modified.\n * If you modify, certain parts of Fabric (such as JSON loading) won't work correctly.\n * @type String\n * @default\n */\n type: 'object',\n\n /**\n * Horizontal origin of transformation of an object (one of \"left\", \"right\", \"center\")\n * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups\n * @type String\n * @default\n */\n originX: 'left',\n\n /**\n * Vertical origin of transformation of an object (one of \"top\", \"bottom\", \"center\")\n * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups\n * @type String\n * @default\n */\n originY: 'top',\n\n /**\n * Top position of an object. Note that by default it's relative to object top. You can change this by setting originY={top/center/bottom}\n * @type Number\n * @default\n */\n top: 0,\n\n /**\n * Left position of an object. Note that by default it's relative to object left. You can change this by setting originX={left/center/right}\n * @type Number\n * @default\n */\n left: 0,\n\n /**\n * Object width\n * @type Number\n * @default\n */\n width: 0,\n\n /**\n * Object height\n * @type Number\n * @default\n */\n height: 0,\n\n /**\n * Object scale factor (horizontal)\n * @type Number\n * @default\n */\n scaleX: 1,\n\n /**\n * Object scale factor (vertical)\n * @type Number\n * @default\n */\n scaleY: 1,\n\n /**\n * When true, an object is rendered as flipped horizontally\n * @type Boolean\n * @default\n */\n flipX: false,\n\n /**\n * When true, an object is rendered as flipped vertically\n * @type Boolean\n * @default\n */\n flipY: false,\n\n /**\n * Opacity of an object\n * @type Number\n * @default\n */\n opacity: 1,\n\n /**\n * Angle of rotation of an object (in degrees)\n * @type Number\n * @default\n */\n angle: 0,\n\n /**\n * Angle of skew on x axes of an object (in degrees)\n * @type Number\n * @default\n */\n skewX: 0,\n\n /**\n * Angle of skew on y axes of an object (in degrees)\n * @type Number\n * @default\n */\n skewY: 0,\n\n /**\n * Size of object's controlling corners (in pixels)\n * @type Number\n * @default\n */\n cornerSize: 13,\n\n /**\n * Size of object's controlling corners when touch interaction is detected\n * @type Number\n * @default\n */\n touchCornerSize: 24,\n\n /**\n * When true, object's controlling corners are rendered as transparent inside (i.e. stroke instead of fill)\n * @type Boolean\n * @default\n */\n transparentCorners: true,\n\n /**\n * Default cursor value used when hovering over this object on canvas\n * @type String\n * @default\n */\n hoverCursor: null,\n\n /**\n * Default cursor value used when moving this object on canvas\n * @type String\n * @default\n */\n moveCursor: null,\n\n /**\n * Padding between object and its controlling borders (in pixels)\n * @type Number\n * @default\n */\n padding: 0,\n\n /**\n * Color of controlling borders of an object (when it's active)\n * @type String\n * @default\n */\n borderColor: 'rgb(178,204,255)',\n\n /**\n * Array specifying dash pattern of an object's borders (hasBorder must be true)\n * @since 1.6.2\n * @type Array\n */\n borderDashArray: null,\n\n /**\n * Color of controlling corners of an object (when it's active)\n * @type String\n * @default\n */\n cornerColor: 'rgb(178,204,255)',\n\n /**\n * Color of controlling corners of an object (when it's active and transparentCorners false)\n * @since 1.6.2\n * @type String\n * @default\n */\n cornerStrokeColor: null,\n\n /**\n * Specify style of control, 'rect' or 'circle'\n * @since 1.6.2\n * @type String\n */\n cornerStyle: 'rect',\n\n /**\n * Array specifying dash pattern of an object's control (hasBorder must be true)\n * @since 1.6.2\n * @type Array\n */\n cornerDashArray: null,\n\n /**\n * When true, this object will use center point as the origin of transformation\n * when being scaled via the controls.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredScaling: false,\n\n /**\n * When true, this object will use center point as the origin of transformation\n * when being rotated via the controls.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredRotation: true,\n\n /**\n * Color of object's fill\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n fill: 'rgb(0,0,0)',\n\n /**\n * Fill rule used to fill an object\n * accepted values are nonzero, evenodd\n * Backwards incompatibility note: This property was used for setting globalCompositeOperation until v1.4.12 (use `fabric.Object#globalCompositeOperation` instead)\n * @type String\n * @default\n */\n fillRule: 'nonzero',\n\n /**\n * Composite rule used for canvas globalCompositeOperation\n * @type String\n * @default\n */\n globalCompositeOperation: 'source-over',\n\n /**\n * Background color of an object.\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n backgroundColor: '',\n\n /**\n * Selection Background color of an object. colored layer behind the object when it is active.\n * does not mix good with globalCompositeOperation methods.\n * @type String\n * @default\n */\n selectionBackgroundColor: '',\n\n /**\n * When defined, an object is rendered via stroke and this property specifies its color\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n stroke: null,\n\n /**\n * Width of a stroke used to render this object\n * @type Number\n * @default\n */\n strokeWidth: 1,\n\n /**\n * Array specifying dash pattern of an object's stroke (stroke must be defined)\n * @type Array\n */\n strokeDashArray: null,\n\n /**\n * Line offset of an object's stroke\n * @type Number\n * @default\n */\n strokeDashOffset: 0,\n\n /**\n * Line endings style of an object's stroke (one of \"butt\", \"round\", \"square\")\n * @type String\n * @default\n */\n strokeLineCap: 'butt',\n\n /**\n * Corner style of an object's stroke (one of \"bevel\", \"round\", \"miter\")\n * @type String\n * @default\n */\n strokeLineJoin: 'miter',\n\n /**\n * Maximum miter length (used for strokeLineJoin = \"miter\") of an object's stroke\n * @type Number\n * @default\n */\n strokeMiterLimit: 4,\n\n /**\n * Shadow object representing shadow of this shape\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * Opacity of object's controlling borders when object is active and moving\n * @type Number\n * @default\n */\n borderOpacityWhenMoving: 0.4,\n\n /**\n * Scale factor of object's controlling borders\n * bigger number will make a thicker border\n * border is 1, so this is basically a border thickness\n * since there is no way to change the border itself.\n * @type Number\n * @default\n */\n borderScaleFactor: 1,\n\n /**\n * Minimum allowed scale value of an object\n * @type Number\n * @default\n */\n minScaleLimit: 0,\n\n /**\n * When set to `false`, an object can not be selected for modification (using either point-click-based or group-based selection).\n * But events still fire on it.\n * @type Boolean\n * @default\n */\n selectable: true,\n\n /**\n * When set to `false`, an object can not be a target of events. All events propagate through it. Introduced in v1.3.4\n * @type Boolean\n * @default\n */\n evented: true,\n\n /**\n * When set to `false`, an object is not rendered on canvas\n * @type Boolean\n * @default\n */\n visible: true,\n\n /**\n * When set to `false`, object's controls are not displayed and can not be used to manipulate object\n * @type Boolean\n * @default\n */\n hasControls: true,\n\n /**\n * When set to `false`, object's controlling borders are not rendered\n * @type Boolean\n * @default\n */\n hasBorders: true,\n\n /**\n * When set to `true`, objects are \"found\" on canvas on per-pixel basis rather than according to bounding box\n * @type Boolean\n * @default\n */\n perPixelTargetFind: false,\n\n /**\n * When `false`, default object's values are not included in its serialization\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * When `true`, object horizontal movement is locked\n * @type Boolean\n * @default\n */\n lockMovementX: false,\n\n /**\n * When `true`, object vertical movement is locked\n * @type Boolean\n * @default\n */\n lockMovementY: false,\n\n /**\n * When `true`, object rotation is locked\n * @type Boolean\n * @default\n */\n lockRotation: false,\n\n /**\n * When `true`, object horizontal scaling is locked\n * @type Boolean\n * @default\n */\n lockScalingX: false,\n\n /**\n * When `true`, object vertical scaling is locked\n * @type Boolean\n * @default\n */\n lockScalingY: false,\n\n /**\n * When `true`, object horizontal skewing is locked\n * @type Boolean\n * @default\n */\n lockSkewingX: false,\n\n /**\n * When `true`, object vertical skewing is locked\n * @type Boolean\n * @default\n */\n lockSkewingY: false,\n\n /**\n * When `true`, object cannot be flipped by scaling into negative values\n * @type Boolean\n * @default\n */\n lockScalingFlip: false,\n\n /**\n * When `true`, object is not exported in OBJECT/JSON\n * @since 1.6.3\n * @type Boolean\n * @default\n */\n excludeFromExport: false,\n\n /**\n * When `true`, object is cached on an additional canvas.\n * When `false`, object is not cached unless necessary ( clipPath )\n * default to true\n * @since 1.7.0\n * @type Boolean\n * @default true\n */\n objectCaching: objectCaching,\n\n /**\n * When `true`, object properties are checked for cache invalidation. In some particular\n * situation you may want this to be disabled ( spray brush, very big, groups)\n * or if your application does not allow you to modify properties for groups child you want\n * to disable it for groups.\n * default to false\n * since 1.7.0\n * @type Boolean\n * @default false\n */\n statefullCache: false,\n\n /**\n * When `true`, cache does not get updated during scaling. The picture will get blocky if scaled\n * too much and will be redrawn with correct details at the end of scaling.\n * this setting is performance and application dependant.\n * default to true\n * since 1.7.0\n * @type Boolean\n * @default true\n */\n noScaleCache: true,\n\n /**\n * When `false`, the stoke width will scale with the object.\n * When `true`, the stroke will always match the exact pixel size entered for stroke width.\n * default to false\n * @since 2.6.0\n * @type Boolean\n * @default false\n * @type Boolean\n * @default false\n */\n strokeUniform: false,\n\n /**\n * When set to `true`, object's cache will be rerendered next render call.\n * since 1.7.0\n * @type Boolean\n * @default true\n */\n dirty: true,\n\n /**\n * keeps the value of the last hovered corner during mouse move.\n * 0 is no corner, or 'mt', 'ml', 'mtr' etc..\n * It should be private, but there is no harm in using it as\n * a read-only property.\n * @type number|string|any\n * @default 0\n */\n __corner: 0,\n\n /**\n * Determines if the fill or the stroke is drawn first (one of \"fill\" or \"stroke\")\n * @type String\n * @default\n */\n paintFirst: 'fill',\n\n /**\n * When 'down', object is set to active on mousedown/touchstart\n * When 'up', object is set to active on mouseup/touchend\n * Experimental. Let's see if this breaks anything before supporting officially\n * @private\n * since 4.4.0\n * @type String\n * @default 'down'\n */\n activeOn: 'down',\n\n /**\n * List of properties to consider when checking if state\n * of an object is changed (fabric.Object#hasStateChanged)\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: (\n 'top left width height scaleX scaleY flipX flipY originX originY transformMatrix ' +\n 'stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit ' +\n 'angle opacity fill globalCompositeOperation shadow visible backgroundColor ' +\n 'skewX skewY fillRule paintFirst clipPath strokeUniform'\n ).split(' '),\n\n /**\n * List of properties to consider when checking if cache needs refresh\n * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single\n * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty\n * and refreshed at the next render\n * @type Array\n */\n cacheProperties: (\n 'fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform' +\n ' strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath'\n ).split(' '),\n\n /**\n * List of properties to consider for animating colors.\n * @type Array\n */\n colorProperties: (\n 'fill stroke backgroundColor'\n ).split(' '),\n\n /**\n * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n * the clipPath object gets used when the object has rendered, and the context is placed in the center\n * of the object cacheCanvas.\n * If you want 0,0 of a clipPath to align with an object center, use clipPath.originX/Y to 'center'\n * @type fabric.Object\n */\n clipPath: undefined,\n\n /**\n * Meaningful ONLY when the object is used as clipPath.\n * if true, the clipPath will make the object clip to the outside of the clipPath\n * since 2.4.0\n * @type boolean\n * @default false\n */\n inverted: false,\n\n /**\n * Meaningful ONLY when the object is used as clipPath.\n * if true, the clipPath will have its top and left relative to canvas, and will\n * not be influenced by the object transform. This will make the clipPath relative\n * to the canvas, but clipping just a particular object.\n * WARNING this is beta, this feature may change or be renamed.\n * since 2.4.0\n * @type boolean\n * @default false\n */\n absolutePositioned: false,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n if (options) {\n this.setOptions(options);\n }\n },\n\n /**\n * Create a the canvas used to keep the cached copy of the object\n * @private\n */\n _createCacheCanvas: function() {\n this._cacheProperties = {};\n this._cacheCanvas = fabric.util.createCanvasElement();\n this._cacheContext = this._cacheCanvas.getContext('2d');\n this._updateCacheCanvas();\n // if canvas gets created, is empty, so dirty.\n this.dirty = true;\n },\n\n /**\n * Limit the cache dimensions so that X * Y do not cross fabric.perfLimitSizeTotal\n * and each side do not cross fabric.cacheSideLimit\n * those numbers are configurable so that you can get as much detail as you want\n * making bargain with performances.\n * @param {Object} dims\n * @param {Object} dims.width width of canvas\n * @param {Object} dims.height height of canvas\n * @param {Object} dims.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @param {Object} dims.zoomY zoomY zoom value to unscale the canvas before drawing cache\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _limitCacheSize: function(dims) {\n var perfLimitSizeTotal = fabric.perfLimitSizeTotal,\n width = dims.width, height = dims.height,\n max = fabric.maxCacheSideLimit, min = fabric.minCacheSideLimit;\n if (width <= max && height <= max && width * height <= perfLimitSizeTotal) {\n if (width < min) {\n dims.width = min;\n }\n if (height < min) {\n dims.height = min;\n }\n return dims;\n }\n var ar = width / height, limitedDims = fabric.util.limitDimsByArea(ar, perfLimitSizeTotal),\n capValue = fabric.util.capValue,\n x = capValue(min, limitedDims.x, max),\n y = capValue(min, limitedDims.y, max);\n if (width > x) {\n dims.zoomX /= width / x;\n dims.width = x;\n dims.capped = true;\n }\n if (height > y) {\n dims.zoomY /= height / y;\n dims.height = y;\n dims.capped = true;\n }\n return dims;\n },\n\n /**\n * Return the dimension and the zoom level needed to create a cache canvas\n * big enough to host the object to be cached.\n * @private\n * @return {Object}.x width of object to be cached\n * @return {Object}.y height of object to be cached\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _getCacheCanvasDimensions: function() {\n var objectScale = this.getTotalObjectScaling(),\n // caculate dimensions without skewing\n dim = this._getTransformedDimensions(0, 0),\n neededX = dim.x * objectScale.scaleX / this.scaleX,\n neededY = dim.y * objectScale.scaleY / this.scaleY;\n return {\n // for sure this ALIASING_LIMIT is slightly creating problem\n // in situation in which the cache canvas gets an upper limit\n // also objectScale contains already scaleX and scaleY\n width: neededX + ALIASING_LIMIT,\n height: neededY + ALIASING_LIMIT,\n zoomX: objectScale.scaleX,\n zoomY: objectScale.scaleY,\n x: neededX,\n y: neededY\n };\n },\n\n /**\n * Update width and height of the canvas for cache\n * returns true or false if canvas needed resize.\n * @private\n * @return {Boolean} true if the canvas has been resized\n */\n _updateCacheCanvas: function() {\n var targetCanvas = this.canvas;\n if (this.noScaleCache && targetCanvas && targetCanvas._currentTransform) {\n var target = targetCanvas._currentTransform.target,\n action = targetCanvas._currentTransform.action;\n if (this === target && action.slice && action.slice(0, 5) === 'scale') {\n return false;\n }\n }\n var canvas = this._cacheCanvas,\n dims = this._limitCacheSize(this._getCacheCanvasDimensions()),\n minCacheSize = fabric.minCacheSideLimit,\n width = dims.width, height = dims.height, drawingWidth, drawingHeight,\n zoomX = dims.zoomX, zoomY = dims.zoomY,\n dimensionsChanged = width !== this.cacheWidth || height !== this.cacheHeight,\n zoomChanged = this.zoomX !== zoomX || this.zoomY !== zoomY,\n shouldRedraw = dimensionsChanged || zoomChanged,\n additionalWidth = 0, additionalHeight = 0, shouldResizeCanvas = false;\n if (dimensionsChanged) {\n var canvasWidth = this._cacheCanvas.width,\n canvasHeight = this._cacheCanvas.height,\n sizeGrowing = width > canvasWidth || height > canvasHeight,\n sizeShrinking = (width < canvasWidth * 0.9 || height < canvasHeight * 0.9) &&\n canvasWidth > minCacheSize && canvasHeight > minCacheSize;\n shouldResizeCanvas = sizeGrowing || sizeShrinking;\n if (sizeGrowing && !dims.capped && (width > minCacheSize || height > minCacheSize)) {\n additionalWidth = width * 0.1;\n additionalHeight = height * 0.1;\n }\n }\n if (shouldRedraw) {\n if (shouldResizeCanvas) {\n canvas.width = Math.ceil(width + additionalWidth);\n canvas.height = Math.ceil(height + additionalHeight);\n }\n else {\n this._cacheContext.setTransform(1, 0, 0, 1, 0, 0);\n this._cacheContext.clearRect(0, 0, canvas.width, canvas.height);\n }\n drawingWidth = dims.x / 2;\n drawingHeight = dims.y / 2;\n this.cacheTranslationX = Math.round(canvas.width / 2 - drawingWidth) + drawingWidth;\n this.cacheTranslationY = Math.round(canvas.height / 2 - drawingHeight) + drawingHeight;\n this.cacheWidth = width;\n this.cacheHeight = height;\n this._cacheContext.translate(this.cacheTranslationX, this.cacheTranslationY);\n this._cacheContext.scale(zoomX, zoomY);\n this.zoomX = zoomX;\n this.zoomY = zoomY;\n return true;\n }\n return false;\n },\n\n /**\n * Sets object's properties from options\n * @param {Object} [options] Options object\n */\n setOptions: function(options) {\n this._setOptions(options);\n this._initGradient(options.fill, 'fill');\n this._initGradient(options.stroke, 'stroke');\n this._initPattern(options.fill, 'fill');\n this._initPattern(options.stroke, 'stroke');\n },\n\n /**\n * Transforms context when rendering an object\n * @param {CanvasRenderingContext2D} ctx Context\n */\n transform: function(ctx) {\n var needFullTransform = (this.group && !this.group._transformDone) ||\n (this.group && this.canvas && ctx === this.canvas.contextTop);\n var m = this.calcTransformMatrix(!needFullTransform);\n ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n },\n\n /**\n * Returns an object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n\n object = {\n type: this.type,\n version: fabric.version,\n originX: this.originX,\n originY: this.originY,\n left: toFixed(this.left, NUM_FRACTION_DIGITS),\n top: toFixed(this.top, NUM_FRACTION_DIGITS),\n width: toFixed(this.width, NUM_FRACTION_DIGITS),\n height: toFixed(this.height, NUM_FRACTION_DIGITS),\n fill: (this.fill && this.fill.toObject) ? this.fill.toObject() : this.fill,\n stroke: (this.stroke && this.stroke.toObject) ? this.stroke.toObject() : this.stroke,\n strokeWidth: toFixed(this.strokeWidth, NUM_FRACTION_DIGITS),\n strokeDashArray: this.strokeDashArray ? this.strokeDashArray.concat() : this.strokeDashArray,\n strokeLineCap: this.strokeLineCap,\n strokeDashOffset: this.strokeDashOffset,\n strokeLineJoin: this.strokeLineJoin,\n strokeUniform: this.strokeUniform,\n strokeMiterLimit: toFixed(this.strokeMiterLimit, NUM_FRACTION_DIGITS),\n scaleX: toFixed(this.scaleX, NUM_FRACTION_DIGITS),\n scaleY: toFixed(this.scaleY, NUM_FRACTION_DIGITS),\n angle: toFixed(this.angle, NUM_FRACTION_DIGITS),\n flipX: this.flipX,\n flipY: this.flipY,\n opacity: toFixed(this.opacity, NUM_FRACTION_DIGITS),\n shadow: (this.shadow && this.shadow.toObject) ? this.shadow.toObject() : this.shadow,\n visible: this.visible,\n backgroundColor: this.backgroundColor,\n fillRule: this.fillRule,\n paintFirst: this.paintFirst,\n globalCompositeOperation: this.globalCompositeOperation,\n skewX: toFixed(this.skewX, NUM_FRACTION_DIGITS),\n skewY: toFixed(this.skewY, NUM_FRACTION_DIGITS),\n };\n\n if (this.clipPath) {\n object.clipPath = this.clipPath.toObject(propertiesToInclude);\n object.clipPath.inverted = this.clipPath.inverted;\n object.clipPath.absolutePositioned = this.clipPath.absolutePositioned;\n }\n\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n if (!this.includeDefaultValues) {\n object = this._removeDefaultValues(object);\n }\n\n return object;\n },\n\n /**\n * Returns (dataless) object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n // will be overwritten by subclasses\n return this.toObject(propertiesToInclude);\n },\n\n /**\n * @private\n * @param {Object} object\n */\n _removeDefaultValues: function(object) {\n var prototype = fabric.util.getKlass(object.type).prototype,\n stateProperties = prototype.stateProperties;\n stateProperties.forEach(function(prop) {\n if (prop === 'left' || prop === 'top') {\n return;\n }\n if (object[prop] === prototype[prop]) {\n delete object[prop];\n }\n var isArray = Object.prototype.toString.call(object[prop]) === '[object Array]' &&\n Object.prototype.toString.call(prototype[prop]) === '[object Array]';\n\n // basically a check for [] === []\n if (isArray && object[prop].length === 0 && prototype[prop].length === 0) {\n delete object[prop];\n }\n });\n\n return object;\n },\n\n /**\n * Returns a string representation of an instance\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Return the object scale factor counting also the group scaling\n * @return {Object} object with scaleX and scaleY properties\n */\n getObjectScaling: function() {\n var options = fabric.util.qrDecompose(this.calcTransformMatrix());\n return { scaleX: Math.abs(options.scaleX), scaleY: Math.abs(options.scaleY) };\n },\n\n /**\n * Return the object scale factor counting also the group scaling, zoom and retina\n * @return {Object} object with scaleX and scaleY properties\n */\n getTotalObjectScaling: function() {\n var scale = this.getObjectScaling(), scaleX = scale.scaleX, scaleY = scale.scaleY;\n if (this.canvas) {\n var zoom = this.canvas.getZoom();\n var retina = this.canvas.getRetinaScaling();\n scaleX *= zoom * retina;\n scaleY *= zoom * retina;\n }\n return { scaleX: scaleX, scaleY: scaleY };\n },\n\n /**\n * Return the object opacity counting also the group property\n * @return {Number}\n */\n getObjectOpacity: function() {\n var opacity = this.opacity;\n if (this.group) {\n opacity *= this.group.getObjectOpacity();\n }\n return opacity;\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Object} thisArg\n */\n _set: function(key, value) {\n var shouldConstrainValue = (key === 'scaleX' || key === 'scaleY'),\n isChanged = this[key] !== value, groupNeedsUpdate = false;\n\n if (shouldConstrainValue) {\n value = this._constrainScale(value);\n }\n if (key === 'scaleX' && value < 0) {\n this.flipX = !this.flipX;\n value *= -1;\n }\n else if (key === 'scaleY' && value < 0) {\n this.flipY = !this.flipY;\n value *= -1;\n }\n else if (key === 'shadow' && value && !(value instanceof fabric.Shadow)) {\n value = new fabric.Shadow(value);\n }\n else if (key === 'dirty' && this.group) {\n this.group.set('dirty', value);\n }\n\n this[key] = value;\n\n if (isChanged) {\n groupNeedsUpdate = this.group && this.group.isOnACache();\n if (this.cacheProperties.indexOf(key) > -1) {\n this.dirty = true;\n groupNeedsUpdate && this.group.set('dirty', true);\n }\n else if (groupNeedsUpdate && this.stateProperties.indexOf(key) > -1) {\n this.group.set('dirty', true);\n }\n }\n return this;\n },\n\n /**\n * This callback function is called by the parent group of an object every\n * time a non-delegated property changes on the group. It is passed the key\n * and value as parameters. Not adding in this function's signature to avoid\n * Travis build error about unused variables.\n */\n setOnGroup: function() {\n // implemented by sub-classes, as needed.\n },\n\n /**\n * Retrieves viewportTransform from Object's canvas if possible\n * @method getViewportTransform\n * @memberOf fabric.Object.prototype\n * @return {Array}\n */\n getViewportTransform: function() {\n if (this.canvas && this.canvas.viewportTransform) {\n return this.canvas.viewportTransform;\n }\n return fabric.iMatrix.concat();\n },\n\n /*\n * @private\n * return if the object would be visible in rendering\n * @memberOf fabric.Object.prototype\n * @return {Boolean}\n */\n isNotVisible: function() {\n return this.opacity === 0 ||\n (!this.width && !this.height && this.strokeWidth === 0) ||\n !this.visible;\n },\n\n /**\n * Renders an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n // do not render if width/height are zeros or object is not visible\n if (this.isNotVisible()) {\n return;\n }\n if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) {\n return;\n }\n ctx.save();\n this._setupCompositeOperation(ctx);\n this.drawSelectionBackground(ctx);\n this.transform(ctx);\n this._setOpacity(ctx);\n this._setShadow(ctx, this);\n if (this.shouldCache()) {\n this.renderCache();\n this.drawCacheOnCanvas(ctx);\n }\n else {\n this._removeCacheCanvas();\n this.dirty = false;\n this.drawObject(ctx);\n if (this.objectCaching && this.statefullCache) {\n this.saveState({ propertySet: 'cacheProperties' });\n }\n }\n ctx.restore();\n },\n\n renderCache: function(options) {\n options = options || {};\n if (!this._cacheCanvas) {\n this._createCacheCanvas();\n }\n if (this.isCacheDirty()) {\n this.statefullCache && this.saveState({ propertySet: 'cacheProperties' });\n this.drawObject(this._cacheContext, options.forClipping);\n this.dirty = false;\n }\n },\n\n /**\n * Remove cacheCanvas and its dimensions from the objects\n */\n _removeCacheCanvas: function() {\n this._cacheCanvas = null;\n this.cacheWidth = 0;\n this.cacheHeight = 0;\n },\n\n /**\n * return true if the object will draw a stroke\n * Does not consider text styles. This is just a shortcut used at rendering time\n * We want it to be an approximation and be fast.\n * wrote to avoid extra caching, it has to return true when stroke happens,\n * can guess when it will not happen at 100% chance, does not matter if it misses\n * some use case where the stroke is invisible.\n * @since 3.0.0\n * @returns Boolean\n */\n hasStroke: function() {\n return this.stroke && this.stroke !== 'transparent' && this.strokeWidth !== 0;\n },\n\n /**\n * return true if the object will draw a fill\n * Does not consider text styles. This is just a shortcut used at rendering time\n * We want it to be an approximation and be fast.\n * wrote to avoid extra caching, it has to return true when fill happens,\n * can guess when it will not happen at 100% chance, does not matter if it misses\n * some use case where the fill is invisible.\n * @since 3.0.0\n * @returns Boolean\n */\n hasFill: function() {\n return this.fill && this.fill !== 'transparent';\n },\n\n /**\n * When set to `true`, force the object to have its own cache, even if it is inside a group\n * it may be needed when your object behave in a particular way on the cache and always needs\n * its own isolated canvas to render correctly.\n * Created to be overridden\n * since 1.7.12\n * @returns Boolean\n */\n needsItsOwnCache: function() {\n if (this.paintFirst === 'stroke' &&\n this.hasFill() && this.hasStroke() && typeof this.shadow === 'object') {\n return true;\n }\n if (this.clipPath) {\n return true;\n }\n return false;\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * Read as: cache if is needed, or if the feature is enabled but we are not already caching.\n * @return {Boolean}\n */\n shouldCache: function() {\n this.ownCaching = this.needsItsOwnCache() || (\n this.objectCaching &&\n (!this.group || !this.group.isOnACache())\n );\n return this.ownCaching;\n },\n\n /**\n * Check if this object or a child object will cast a shadow\n * used by Group.shouldCache to know if child has a shadow recursively\n * @return {Boolean}\n */\n willDrawShadow: function() {\n return !!this.shadow && (this.shadow.offsetX !== 0 || this.shadow.offsetY !== 0);\n },\n\n /**\n * Execute the drawing operation for an object clipPath\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawClipPathOnCache: function(ctx) {\n var path = this.clipPath;\n ctx.save();\n // DEBUG: uncomment this line, comment the following\n // ctx.globalAlpha = 0.4\n if (path.inverted) {\n ctx.globalCompositeOperation = 'destination-out';\n }\n else {\n ctx.globalCompositeOperation = 'destination-in';\n }\n //ctx.scale(1 / 2, 1 / 2);\n if (path.absolutePositioned) {\n var m = fabric.util.invertTransform(this.calcTransformMatrix());\n ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n path.transform(ctx);\n ctx.scale(1 / path.zoomX, 1 / path.zoomY);\n ctx.drawImage(path._cacheCanvas, -path.cacheTranslationX, -path.cacheTranslationY);\n ctx.restore();\n },\n\n /**\n * Execute the drawing operation for an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawObject: function(ctx, forClipping) {\n var originalFill = this.fill, originalStroke = this.stroke;\n if (forClipping) {\n this.fill = 'black';\n this.stroke = '';\n this._setClippingProperties(ctx);\n }\n else {\n this._renderBackground(ctx);\n }\n this._render(ctx);\n this._drawClipPath(ctx);\n this.fill = originalFill;\n this.stroke = originalStroke;\n },\n\n _drawClipPath: function(ctx) {\n var path = this.clipPath;\n if (!path) { return; }\n // needed to setup a couple of variables\n // path canvas gets overridden with this one.\n // TODO find a better solution?\n path.canvas = this.canvas;\n path.shouldCache();\n path._transformDone = true;\n path.renderCache({ forClipping: true });\n this.drawClipPathOnCache(ctx);\n },\n\n /**\n * Paint the cached copy of the object on the target context.\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawCacheOnCanvas: function(ctx) {\n ctx.scale(1 / this.zoomX, 1 / this.zoomY);\n ctx.drawImage(this._cacheCanvas, -this.cacheTranslationX, -this.cacheTranslationY);\n },\n\n /**\n * Check if cache is dirty\n * @param {Boolean} skipCanvas skip canvas checks because this object is painted\n * on parent canvas.\n */\n isCacheDirty: function(skipCanvas) {\n if (this.isNotVisible()) {\n return false;\n }\n if (this._cacheCanvas && !skipCanvas && this._updateCacheCanvas()) {\n // in this case the context is already cleared.\n return true;\n }\n else {\n if (this.dirty ||\n (this.clipPath && this.clipPath.absolutePositioned) ||\n (this.statefullCache && this.hasStateChanged('cacheProperties'))\n ) {\n if (this._cacheCanvas && !skipCanvas) {\n var width = this.cacheWidth / this.zoomX;\n var height = this.cacheHeight / this.zoomY;\n this._cacheContext.clearRect(-width / 2, -height / 2, width, height);\n }\n return true;\n }\n }\n return false;\n },\n\n /**\n * Draws a background for the object big as its untransformed dimensions\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderBackground: function(ctx) {\n if (!this.backgroundColor) {\n return;\n }\n var dim = this._getNonTransformedDimensions();\n ctx.fillStyle = this.backgroundColor;\n\n ctx.fillRect(\n -dim.x / 2,\n -dim.y / 2,\n dim.x,\n dim.y\n );\n // if there is background color no other shadows\n // should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _setOpacity: function(ctx) {\n if (this.group && !this.group._transformDone) {\n ctx.globalAlpha = this.getObjectOpacity();\n }\n else {\n ctx.globalAlpha *= this.opacity;\n }\n },\n\n _setStrokeStyles: function(ctx, decl) {\n var stroke = decl.stroke;\n if (stroke) {\n ctx.lineWidth = decl.strokeWidth;\n ctx.lineCap = decl.strokeLineCap;\n ctx.lineDashOffset = decl.strokeDashOffset;\n ctx.lineJoin = decl.strokeLineJoin;\n ctx.miterLimit = decl.strokeMiterLimit;\n if (stroke.toLive) {\n if (stroke.gradientUnits === 'percentage' || stroke.gradientTrasnform || stroke.patternTransform) {\n // need to transform gradient in a pattern.\n // this is a slow process. If you are hitting this codepath, and the object\n // is not using caching, you should consider switching it on.\n // we need a canvas as big as the current object caching canvas.\n this._applyPatternForTransformedGradient(ctx, stroke);\n }\n else {\n // is a simple gradient or pattern\n ctx.strokeStyle = stroke.toLive(ctx, this);\n this._applyPatternGradientTransform(ctx, stroke);\n }\n }\n else {\n // is a color\n ctx.strokeStyle = decl.stroke;\n }\n }\n },\n\n _setFillStyles: function(ctx, decl) {\n var fill = decl.fill;\n if (fill) {\n if (fill.toLive) {\n ctx.fillStyle = fill.toLive(ctx, this);\n this._applyPatternGradientTransform(ctx, decl.fill);\n }\n else {\n ctx.fillStyle = fill;\n }\n }\n },\n\n _setClippingProperties: function(ctx) {\n ctx.globalAlpha = 1;\n ctx.strokeStyle = 'transparent';\n ctx.fillStyle = '#000000';\n },\n\n /**\n * @private\n * Sets line dash\n * @param {CanvasRenderingContext2D} ctx Context to set the dash line on\n * @param {Array} dashArray array representing dashes\n * @param {Function} alternative function to call if browser does not support lineDash\n */\n _setLineDash: function(ctx, dashArray, alternative) {\n if (!dashArray || dashArray.length === 0) {\n return;\n }\n // Spec requires the concatenation of two copies the dash list when the number of elements is odd\n if (1 & dashArray.length) {\n dashArray.push.apply(dashArray, dashArray);\n }\n if (supportsLineDash) {\n ctx.setLineDash(dashArray);\n }\n else {\n alternative && alternative(ctx);\n }\n },\n\n /**\n * Renders controls and borders for the object\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [styleOverride] properties to override the object style\n */\n _renderControls: function(ctx, styleOverride) {\n var vpt = this.getViewportTransform(),\n matrix = this.calcTransformMatrix(),\n options, drawBorders, drawControls;\n styleOverride = styleOverride || { };\n drawBorders = typeof styleOverride.hasBorders !== 'undefined' ? styleOverride.hasBorders : this.hasBorders;\n drawControls = typeof styleOverride.hasControls !== 'undefined' ? styleOverride.hasControls : this.hasControls;\n matrix = fabric.util.multiplyTransformMatrices(vpt, matrix);\n options = fabric.util.qrDecompose(matrix);\n ctx.save();\n ctx.translate(options.translateX, options.translateY);\n ctx.lineWidth = 1 * this.borderScaleFactor;\n if (!this.group) {\n ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;\n }\n if (styleOverride.forActiveSelection) {\n ctx.rotate(degreesToRadians(options.angle));\n drawBorders && this.drawBordersInGroup(ctx, options, styleOverride);\n }\n else {\n ctx.rotate(degreesToRadians(this.angle));\n drawBorders && this.drawBorders(ctx, styleOverride);\n }\n drawControls && this.drawControls(ctx, styleOverride);\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _setShadow: function(ctx) {\n if (!this.shadow) {\n return;\n }\n\n var shadow = this.shadow, canvas = this.canvas, scaling,\n multX = (canvas && canvas.viewportTransform[0]) || 1,\n multY = (canvas && canvas.viewportTransform[3]) || 1;\n if (shadow.nonScaling) {\n scaling = { scaleX: 1, scaleY: 1 };\n }\n else {\n scaling = this.getObjectScaling();\n }\n if (canvas && canvas._isRetinaScaling()) {\n multX *= fabric.devicePixelRatio;\n multY *= fabric.devicePixelRatio;\n }\n ctx.shadowColor = shadow.color;\n ctx.shadowBlur = shadow.blur * fabric.browserShadowBlurConstant *\n (multX + multY) * (scaling.scaleX + scaling.scaleY) / 4;\n ctx.shadowOffsetX = shadow.offsetX * multX * scaling.scaleX;\n ctx.shadowOffsetY = shadow.offsetY * multY * scaling.scaleY;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _removeShadow: function(ctx) {\n if (!this.shadow) {\n return;\n }\n\n ctx.shadowColor = '';\n ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} filler fabric.Pattern or fabric.Gradient\n * @return {Object} offset.offsetX offset for text rendering\n * @return {Object} offset.offsetY offset for text rendering\n */\n _applyPatternGradientTransform: function(ctx, filler) {\n if (!filler || !filler.toLive) {\n return { offsetX: 0, offsetY: 0 };\n }\n var t = filler.gradientTransform || filler.patternTransform;\n var offsetX = -this.width / 2 + filler.offsetX || 0,\n offsetY = -this.height / 2 + filler.offsetY || 0;\n\n if (filler.gradientUnits === 'percentage') {\n ctx.transform(this.width, 0, 0, this.height, offsetX, offsetY);\n }\n else {\n ctx.transform(1, 0, 0, 1, offsetX, offsetY);\n }\n if (t) {\n ctx.transform(t[0], t[1], t[2], t[3], t[4], t[5]);\n }\n return { offsetX: offsetX, offsetY: offsetY };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderPaintInOrder: function(ctx) {\n if (this.paintFirst === 'stroke') {\n this._renderStroke(ctx);\n this._renderFill(ctx);\n }\n else {\n this._renderFill(ctx);\n this._renderStroke(ctx);\n }\n },\n\n /**\n * @private\n * function that actually render something on the context.\n * empty here to allow Obects to work on tests to benchmark fabric functionalites\n * not related to rendering\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(/* ctx */) {\n\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderFill: function(ctx) {\n if (!this.fill) {\n return;\n }\n\n ctx.save();\n this._setFillStyles(ctx, this);\n if (this.fillRule === 'evenodd') {\n ctx.fill('evenodd');\n }\n else {\n ctx.fill();\n }\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderStroke: function(ctx) {\n if (!this.stroke || this.strokeWidth === 0) {\n return;\n }\n\n if (this.shadow && !this.shadow.affectStroke) {\n this._removeShadow(ctx);\n }\n\n ctx.save();\n if (this.strokeUniform && this.group) {\n var scaling = this.getObjectScaling();\n ctx.scale(1 / scaling.scaleX, 1 / scaling.scaleY);\n }\n else if (this.strokeUniform) {\n ctx.scale(1 / this.scaleX, 1 / this.scaleY);\n }\n this._setLineDash(ctx, this.strokeDashArray, this._renderDashedStroke);\n this._setStrokeStyles(ctx, this);\n ctx.stroke();\n ctx.restore();\n },\n\n /**\n * This function try to patch the missing gradientTransform on canvas gradients.\n * transforming a context to transform the gradient, is going to transform the stroke too.\n * we want to transform the gradient but not the stroke operation, so we create\n * a transformed gradient on a pattern and then we use the pattern instead of the gradient.\n * this method has drwabacks: is slow, is in low resolution, needs a patch for when the size\n * is limited.\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {fabric.Gradient} filler a fabric gradient instance\n */\n _applyPatternForTransformedGradient: function(ctx, filler) {\n var dims = this._limitCacheSize(this._getCacheCanvasDimensions()),\n pCanvas = fabric.util.createCanvasElement(), pCtx, retinaScaling = this.canvas.getRetinaScaling(),\n width = dims.x / this.scaleX / retinaScaling, height = dims.y / this.scaleY / retinaScaling;\n pCanvas.width = width;\n pCanvas.height = height;\n pCtx = pCanvas.getContext('2d');\n pCtx.beginPath(); pCtx.moveTo(0, 0); pCtx.lineTo(width, 0); pCtx.lineTo(width, height);\n pCtx.lineTo(0, height); pCtx.closePath();\n pCtx.translate(width / 2, height / 2);\n pCtx.scale(\n dims.zoomX / this.scaleX / retinaScaling,\n dims.zoomY / this.scaleY / retinaScaling\n );\n this._applyPatternGradientTransform(pCtx, filler);\n pCtx.fillStyle = filler.toLive(ctx);\n pCtx.fill();\n ctx.translate(-this.width / 2 - this.strokeWidth / 2, -this.height / 2 - this.strokeWidth / 2);\n ctx.scale(\n retinaScaling * this.scaleX / dims.zoomX,\n retinaScaling * this.scaleY / dims.zoomY\n );\n ctx.strokeStyle = pCtx.createPattern(pCanvas, 'no-repeat');\n },\n\n /**\n * This function is an helper for svg import. it returns the center of the object in the svg\n * untransformed coordinates\n * @private\n * @return {Object} center point from element coordinates\n */\n _findCenterFromElement: function() {\n return { x: this.left + this.width / 2, y: this.top + this.height / 2 };\n },\n\n /**\n * This function is an helper for svg import. it decompose the transformMatrix\n * and assign properties to object.\n * untransformed coordinates\n * @private\n * @chainable\n */\n _assignTransformMatrixProps: function() {\n if (this.transformMatrix) {\n var options = fabric.util.qrDecompose(this.transformMatrix);\n this.flipX = false;\n this.flipY = false;\n this.set('scaleX', options.scaleX);\n this.set('scaleY', options.scaleY);\n this.angle = options.angle;\n this.skewX = options.skewX;\n this.skewY = 0;\n }\n },\n\n /**\n * This function is an helper for svg import. it removes the transform matrix\n * and set to object properties that fabricjs can handle\n * @private\n * @param {Object} preserveAspectRatioOptions\n * @return {thisArg}\n */\n _removeTransformMatrix: function(preserveAspectRatioOptions) {\n var center = this._findCenterFromElement();\n if (this.transformMatrix) {\n this._assignTransformMatrixProps();\n center = fabric.util.transformPoint(center, this.transformMatrix);\n }\n this.transformMatrix = null;\n if (preserveAspectRatioOptions) {\n this.scaleX *= preserveAspectRatioOptions.scaleX;\n this.scaleY *= preserveAspectRatioOptions.scaleY;\n this.cropX = preserveAspectRatioOptions.cropX;\n this.cropY = preserveAspectRatioOptions.cropY;\n center.x += preserveAspectRatioOptions.offsetLeft;\n center.y += preserveAspectRatioOptions.offsetTop;\n this.width = preserveAspectRatioOptions.width;\n this.height = preserveAspectRatioOptions.height;\n }\n this.setPositionByOrigin(center, 'center', 'center');\n },\n\n /**\n * Clones an instance, using a callback method will work for every object.\n * @param {Function} callback Callback is invoked with a clone as a first argument\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n */\n clone: function(callback, propertiesToInclude) {\n var objectForm = this.toObject(propertiesToInclude);\n if (this.constructor.fromObject) {\n this.constructor.fromObject(objectForm, callback);\n }\n else {\n fabric.Object._fromObject('Object', objectForm, callback);\n }\n },\n\n /**\n * Creates an instance of fabric.Image out of an object\n * makes use of toCanvasElement.\n * Once this method was based on toDataUrl and loadImage, so it also had a quality\n * and format option. toCanvasElement is faster and produce no loss of quality.\n * If you need to get a real Jpeg or Png from an object, using toDataURL is the right way to do it.\n * toCanvasElement and then toBlob from the obtained canvas is also a good option.\n * This method is sync now, but still support the callback because we did not want to break.\n * When fabricJS 5.0 will be planned, this will probably be changed to not have a callback.\n * @param {Function} callback callback, invoked with an instance as a first argument\n * @param {Object} [options] for clone as image, passed to toDataURL\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n * @return {fabric.Object} thisArg\n */\n cloneAsImage: function(callback, options) {\n var canvasEl = this.toCanvasElement(options);\n if (callback) {\n callback(new fabric.Image(canvasEl));\n }\n return this;\n },\n\n /**\n * Converts an object into a HTMLCanvas element\n * @param {Object} options Options object\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n * @return {HTMLCanvasElement} Returns DOM element with the fabric.Object\n */\n toCanvasElement: function(options) {\n options || (options = { });\n\n var utils = fabric.util, origParams = utils.saveObjectTransform(this),\n originalGroup = this.group,\n originalShadow = this.shadow, abs = Math.abs,\n multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? fabric.devicePixelRatio : 1);\n delete this.group;\n if (options.withoutTransform) {\n utils.resetObjectTransform(this);\n }\n if (options.withoutShadow) {\n this.shadow = null;\n }\n\n var el = fabric.util.createCanvasElement(),\n // skip canvas zoom and calculate with setCoords now.\n boundingRect = this.getBoundingRect(true, true),\n shadow = this.shadow, scaling,\n shadowOffset = { x: 0, y: 0 }, shadowBlur,\n width, height;\n\n if (shadow) {\n shadowBlur = shadow.blur;\n if (shadow.nonScaling) {\n scaling = { scaleX: 1, scaleY: 1 };\n }\n else {\n scaling = this.getObjectScaling();\n }\n // consider non scaling shadow.\n shadowOffset.x = 2 * Math.round(abs(shadow.offsetX) + shadowBlur) * (abs(scaling.scaleX));\n shadowOffset.y = 2 * Math.round(abs(shadow.offsetY) + shadowBlur) * (abs(scaling.scaleY));\n }\n width = boundingRect.width + shadowOffset.x;\n height = boundingRect.height + shadowOffset.y;\n // if the current width/height is not an integer\n // we need to make it so.\n el.width = Math.ceil(width);\n el.height = Math.ceil(height);\n var canvas = new fabric.StaticCanvas(el, {\n enableRetinaScaling: false,\n renderOnAddRemove: false,\n skipOffscreen: false,\n });\n if (options.format === 'jpeg') {\n canvas.backgroundColor = '#fff';\n }\n this.setPositionByOrigin(new fabric.Point(canvas.width / 2, canvas.height / 2), 'center', 'center');\n\n var originalCanvas = this.canvas;\n canvas.add(this);\n var canvasEl = canvas.toCanvasElement(multiplier || 1, options);\n this.shadow = originalShadow;\n this.set('canvas', originalCanvas);\n if (originalGroup) {\n this.group = originalGroup;\n }\n this.set(origParams).setCoords();\n // canvas.dispose will call image.dispose that will nullify the elements\n // since this canvas is a simple element for the process, we remove references\n // to objects in this way in order to avoid object trashing.\n canvas._objects = [];\n canvas.dispose();\n canvas = null;\n\n return canvasEl;\n },\n\n /**\n * Converts an object into a data-url-like string\n * @param {Object} options Options object\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n */\n toDataURL: function(options) {\n options || (options = { });\n return fabric.util.toDataURL(this.toCanvasElement(options), options.format || 'png', options.quality || 1);\n },\n\n /**\n * Returns true if specified type is identical to the type of an instance\n * @param {String} type Type to check against\n * @return {Boolean}\n */\n isType: function(type) {\n return this.type === type;\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity of this instance (is 1 unless subclassed)\n */\n complexity: function() {\n return 1;\n },\n\n /**\n * Returns a JSON representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} JSON\n */\n toJSON: function(propertiesToInclude) {\n // delegate, not alias\n return this.toObject(propertiesToInclude);\n },\n\n /**\n * Sets \"angle\" of an instance with centered rotation\n * @param {Number} angle Angle value (in degrees)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n rotate: function(angle) {\n var shouldCenterOrigin = (this.originX !== 'center' || this.originY !== 'center') && this.centeredRotation;\n\n if (shouldCenterOrigin) {\n this._setOriginToCenter();\n }\n\n this.set('angle', angle);\n\n if (shouldCenterOrigin) {\n this._resetOrigin();\n }\n\n return this;\n },\n\n /**\n * Centers object horizontally on canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n centerH: function () {\n this.canvas && this.canvas.centerObjectH(this);\n return this;\n },\n\n /**\n * Centers object horizontally on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenterH: function () {\n this.canvas && this.canvas.viewportCenterObjectH(this);\n return this;\n },\n\n /**\n * Centers object vertically on canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n centerV: function () {\n this.canvas && this.canvas.centerObjectV(this);\n return this;\n },\n\n /**\n * Centers object vertically on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenterV: function () {\n this.canvas && this.canvas.viewportCenterObjectV(this);\n return this;\n },\n\n /**\n * Centers object vertically and horizontally on canvas to which is was added last\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n center: function () {\n this.canvas && this.canvas.centerObject(this);\n return this;\n },\n\n /**\n * Centers object on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenter: function () {\n this.canvas && this.canvas.viewportCenterObject(this);\n return this;\n },\n\n /**\n * Returns coordinates of a pointer relative to an object\n * @param {Event} e Event to operate upon\n * @param {Object} [pointer] Pointer to operate upon (instead of event)\n * @return {Object} Coordinates of a pointer (x, y)\n */\n getLocalPointer: function(e, pointer) {\n pointer = pointer || this.canvas.getPointer(e);\n var pClicked = new fabric.Point(pointer.x, pointer.y),\n objectLeftTop = this._getLeftTopCoords();\n if (this.angle) {\n pClicked = fabric.util.rotatePoint(\n pClicked, objectLeftTop, degreesToRadians(-this.angle));\n }\n return {\n x: pClicked.x - objectLeftTop.x,\n y: pClicked.y - objectLeftTop.y\n };\n },\n\n /**\n * Sets canvas globalCompositeOperation for specific object\n * custom composition operation for the particular object can be specified using globalCompositeOperation property\n * @param {CanvasRenderingContext2D} ctx Rendering canvas context\n */\n _setupCompositeOperation: function (ctx) {\n if (this.globalCompositeOperation) {\n ctx.globalCompositeOperation = this.globalCompositeOperation;\n }\n }\n });\n\n fabric.util.createAccessors && fabric.util.createAccessors(fabric.Object);\n\n extend(fabric.Object.prototype, fabric.Observable);\n\n /**\n * Defines the number of fraction digits to use when serializing object values.\n * You can use it to increase/decrease precision of such values like left, top, scaleX, scaleY, etc.\n * @static\n * @memberOf fabric.Object\n * @constant\n * @type Number\n */\n fabric.Object.NUM_FRACTION_DIGITS = 2;\n\n fabric.Object._fromObject = function(className, object, callback, extraParam) {\n var klass = fabric[className];\n object = clone(object, true);\n fabric.util.enlivenPatterns([object.fill, object.stroke], function(patterns) {\n if (typeof patterns[0] !== 'undefined') {\n object.fill = patterns[0];\n }\n if (typeof patterns[1] !== 'undefined') {\n object.stroke = patterns[1];\n }\n fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) {\n object.clipPath = enlivedProps[0];\n var instance = extraParam ? new klass(object[extraParam], object) : new klass(object);\n callback && callback(instance);\n });\n });\n };\n\n /**\n * Unique id used internally when creating SVG elements\n * @static\n * @memberOf fabric.Object\n * @type Number\n */\n fabric.Object.__uid = 0;\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n var degreesToRadians = fabric.util.degreesToRadians,\n originXOffset = {\n left: -0.5,\n center: 0,\n right: 0.5\n },\n originYOffset = {\n top: -0.5,\n center: 0,\n bottom: 0.5\n };\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Translates the coordinates from a set of origin to another (based on the object's dimensions)\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @param {String} fromOriginX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} fromOriginY Vertical origin: 'top', 'center' or 'bottom'\n * @param {String} toOriginX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} toOriginY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToGivenOrigin: function(point, fromOriginX, fromOriginY, toOriginX, toOriginY) {\n var x = point.x,\n y = point.y,\n offsetX, offsetY, dim;\n\n if (typeof fromOriginX === 'string') {\n fromOriginX = originXOffset[fromOriginX];\n }\n else {\n fromOriginX -= 0.5;\n }\n\n if (typeof toOriginX === 'string') {\n toOriginX = originXOffset[toOriginX];\n }\n else {\n toOriginX -= 0.5;\n }\n\n offsetX = toOriginX - fromOriginX;\n\n if (typeof fromOriginY === 'string') {\n fromOriginY = originYOffset[fromOriginY];\n }\n else {\n fromOriginY -= 0.5;\n }\n\n if (typeof toOriginY === 'string') {\n toOriginY = originYOffset[toOriginY];\n }\n else {\n toOriginY -= 0.5;\n }\n\n offsetY = toOriginY - fromOriginY;\n\n if (offsetX || offsetY) {\n dim = this._getTransformedDimensions();\n x = point.x + offsetX * dim.x;\n y = point.y + offsetY * dim.y;\n }\n\n return new fabric.Point(x, y);\n },\n\n /**\n * Translates the coordinates from origin to center coordinates (based on the object's dimensions)\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToCenterPoint: function(point, originX, originY) {\n var p = this.translateToGivenOrigin(point, originX, originY, 'center', 'center');\n if (this.angle) {\n return fabric.util.rotatePoint(p, point, degreesToRadians(this.angle));\n }\n return p;\n },\n\n /**\n * Translates the coordinates from center to origin coordinates (based on the object's dimensions)\n * @param {fabric.Point} center The point which corresponds to center of the object\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToOriginPoint: function(center, originX, originY) {\n var p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);\n if (this.angle) {\n return fabric.util.rotatePoint(p, center, degreesToRadians(this.angle));\n }\n return p;\n },\n\n /**\n * Returns the real center coordinates of the object\n * @return {fabric.Point}\n */\n getCenterPoint: function() {\n var leftTop = new fabric.Point(this.left, this.top);\n return this.translateToCenterPoint(leftTop, this.originX, this.originY);\n },\n\n /**\n * Returns the coordinates of the object based on center coordinates\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @return {fabric.Point}\n */\n // getOriginPoint: function(center) {\n // return this.translateToOriginPoint(center, this.originX, this.originY);\n // },\n\n /**\n * Returns the coordinates of the object as if it has a different origin\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n getPointByOrigin: function(originX, originY) {\n var center = this.getCenterPoint();\n return this.translateToOriginPoint(center, originX, originY);\n },\n\n /**\n * Returns the point in local coordinates\n * @param {fabric.Point} point The point relative to the global coordinate system\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n toLocalPoint: function(point, originX, originY) {\n var center = this.getCenterPoint(),\n p, p2;\n\n if (typeof originX !== 'undefined' && typeof originY !== 'undefined' ) {\n p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);\n }\n else {\n p = new fabric.Point(this.left, this.top);\n }\n\n p2 = new fabric.Point(point.x, point.y);\n if (this.angle) {\n p2 = fabric.util.rotatePoint(p2, center, -degreesToRadians(this.angle));\n }\n return p2.subtractEquals(p);\n },\n\n /**\n * Returns the point in global coordinates\n * @param {fabric.Point} The point relative to the local coordinate system\n * @return {fabric.Point}\n */\n // toGlobalPoint: function(point) {\n // return fabric.util.rotatePoint(point, this.getCenterPoint(), degreesToRadians(this.angle)).addEquals(new fabric.Point(this.left, this.top));\n // },\n\n /**\n * Sets the position of the object taking into consideration the object's origin\n * @param {fabric.Point} pos The new position of the object\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {void}\n */\n setPositionByOrigin: function(pos, originX, originY) {\n var center = this.translateToCenterPoint(pos, originX, originY),\n position = this.translateToOriginPoint(center, this.originX, this.originY);\n this.set('left', position.x);\n this.set('top', position.y);\n },\n\n /**\n * @param {String} to One of 'left', 'center', 'right'\n */\n adjustPosition: function(to) {\n var angle = degreesToRadians(this.angle),\n hypotFull = this.getScaledWidth(),\n xFull = fabric.util.cos(angle) * hypotFull,\n yFull = fabric.util.sin(angle) * hypotFull,\n offsetFrom, offsetTo;\n\n //TODO: this function does not consider mixed situation like top, center.\n if (typeof this.originX === 'string') {\n offsetFrom = originXOffset[this.originX];\n }\n else {\n offsetFrom = this.originX - 0.5;\n }\n if (typeof to === 'string') {\n offsetTo = originXOffset[to];\n }\n else {\n offsetTo = to - 0.5;\n }\n this.left += xFull * (offsetTo - offsetFrom);\n this.top += yFull * (offsetTo - offsetFrom);\n this.setCoords();\n this.originX = to;\n },\n\n /**\n * Sets the origin/position of the object to it's center point\n * @private\n * @return {void}\n */\n _setOriginToCenter: function() {\n this._originalOriginX = this.originX;\n this._originalOriginY = this.originY;\n\n var center = this.getCenterPoint();\n\n this.originX = 'center';\n this.originY = 'center';\n\n this.left = center.x;\n this.top = center.y;\n },\n\n /**\n * Resets the origin/position of the object to it's original origin\n * @private\n * @return {void}\n */\n _resetOrigin: function() {\n var originPoint = this.translateToOriginPoint(\n this.getCenterPoint(),\n this._originalOriginX,\n this._originalOriginY);\n\n this.originX = this._originalOriginX;\n this.originY = this._originalOriginY;\n\n this.left = originPoint.x;\n this.top = originPoint.y;\n\n this._originalOriginX = null;\n this._originalOriginY = null;\n },\n\n /**\n * @private\n */\n _getLeftTopCoords: function() {\n return this.translateToOriginPoint(this.getCenterPoint(), 'left', 'top');\n },\n });\n\n})();\n\n\n(function() {\n\n function arrayFromCoords(coords) {\n return [\n new fabric.Point(coords.tl.x, coords.tl.y),\n new fabric.Point(coords.tr.x, coords.tr.y),\n new fabric.Point(coords.br.x, coords.br.y),\n new fabric.Point(coords.bl.x, coords.bl.y)\n ];\n }\n\n var util = fabric.util,\n degreesToRadians = util.degreesToRadians,\n multiplyMatrices = util.multiplyTransformMatrices,\n transformPoint = util.transformPoint;\n\n util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Describe object's corner position in canvas element coordinates.\n * properties are depending on control keys and padding the main controls.\n * each property is an object with x, y and corner.\n * The `corner` property contains in a similar manner the 4 points of the\n * interactive area of the corner.\n * The coordinates depends from the controls positionHandler and are used\n * to draw and locate controls\n * @memberOf fabric.Object.prototype\n */\n oCoords: null,\n\n /**\n * Describe object's corner position in canvas object absolute coordinates\n * properties are tl,tr,bl,br and describe the four main corner.\n * each property is an object with x, y, instance of Fabric.Point.\n * The coordinates depends from this properties: width, height, scaleX, scaleY\n * skewX, skewY, angle, strokeWidth, top, left.\n * Those coordinates are useful to understand where an object is. They get updated\n * with oCoords but they do not need to be updated when zoom or panning change.\n * The coordinates get updated with @method setCoords.\n * You can calculate them without updating with @method calcACoords();\n * @memberOf fabric.Object.prototype\n */\n aCoords: null,\n\n /**\n * Describe object's corner position in canvas element coordinates.\n * includes padding. Used of object detection.\n * set and refreshed with setCoords and calcCoords.\n * @memberOf fabric.Object.prototype\n */\n lineCoords: null,\n\n /**\n * storage for object transform matrix\n */\n ownMatrixCache: null,\n\n /**\n * storage for object full transform matrix\n */\n matrixCache: null,\n\n /**\n * custom controls interface\n * controls are added by default_controls.js\n */\n controls: { },\n\n /**\n * return correct set of coordinates for intersection\n * this will return either aCoords or lineCoords.\n * @param {Boolean} absolute will return aCoords if true or lineCoords\n * @return {Object} {tl, tr, br, bl} points\n */\n _getCoords: function(absolute, calculate) {\n if (calculate) {\n return (absolute ? this.calcACoords() : this.calcLineCoords());\n }\n if (!this.aCoords || !this.lineCoords) {\n this.setCoords(true);\n }\n return (absolute ? this.aCoords : this.lineCoords);\n },\n\n /**\n * return correct set of coordinates for intersection\n * this will return either aCoords or lineCoords.\n * The coords are returned in an array.\n * @return {Array} [tl, tr, br, bl] of points\n */\n getCoords: function(absolute, calculate) {\n return arrayFromCoords(this._getCoords(absolute, calculate));\n },\n\n /**\n * Checks if object intersects with an area formed by 2 points\n * @param {Object} pointTL top-left point of area\n * @param {Object} pointBR bottom-right point of area\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object intersects with an area formed by 2 points\n */\n intersectsWithRect: function(pointTL, pointBR, absolute, calculate) {\n var coords = this.getCoords(absolute, calculate),\n intersection = fabric.Intersection.intersectPolygonRectangle(\n coords,\n pointTL,\n pointBR\n );\n return intersection.status === 'Intersection';\n },\n\n /**\n * Checks if object intersects with another object\n * @param {Object} other Object to test\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object intersects with another object\n */\n intersectsWithObject: function(other, absolute, calculate) {\n var intersection = fabric.Intersection.intersectPolygonPolygon(\n this.getCoords(absolute, calculate),\n other.getCoords(absolute, calculate)\n );\n\n return intersection.status === 'Intersection'\n || other.isContainedWithinObject(this, absolute, calculate)\n || this.isContainedWithinObject(other, absolute, calculate);\n },\n\n /**\n * Checks if object is fully contained within area of another object\n * @param {Object} other Object to test\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is fully contained within area of another object\n */\n isContainedWithinObject: function(other, absolute, calculate) {\n var points = this.getCoords(absolute, calculate),\n otherCoords = absolute ? other.aCoords : other.lineCoords,\n i = 0, lines = other._getImageLines(otherCoords);\n for (; i < 4; i++) {\n if (!other.containsPoint(points[i], lines)) {\n return false;\n }\n }\n return true;\n },\n\n /**\n * Checks if object is fully contained within area formed by 2 points\n * @param {Object} pointTL top-left point of area\n * @param {Object} pointBR bottom-right point of area\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is fully contained within area formed by 2 points\n */\n isContainedWithinRect: function(pointTL, pointBR, absolute, calculate) {\n var boundingRect = this.getBoundingRect(absolute, calculate);\n\n return (\n boundingRect.left >= pointTL.x &&\n boundingRect.left + boundingRect.width <= pointBR.x &&\n boundingRect.top >= pointTL.y &&\n boundingRect.top + boundingRect.height <= pointBR.y\n );\n },\n\n /**\n * Checks if point is inside the object\n * @param {fabric.Point} point Point to check against\n * @param {Object} [lines] object returned from @method _getImageLines\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if point is inside the object\n */\n containsPoint: function(point, lines, absolute, calculate) {\n var coords = this._getCoords(absolute, calculate),\n lines = lines || this._getImageLines(coords),\n xPoints = this._findCrossPoints(point, lines);\n // if xPoints is odd then point is inside the object\n return (xPoints !== 0 && xPoints % 2 === 1);\n },\n\n /**\n * Checks if object is contained within the canvas with current viewportTransform\n * the check is done stopping at first point that appears on screen\n * @param {Boolean} [calculate] use coordinates of current position instead of .aCoords\n * @return {Boolean} true if object is fully or partially contained within canvas\n */\n isOnScreen: function(calculate) {\n if (!this.canvas) {\n return false;\n }\n var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br;\n var points = this.getCoords(true, calculate);\n // if some point is on screen, the object is on screen.\n if (points.some(function(point) {\n return point.x <= pointBR.x && point.x >= pointTL.x &&\n point.y <= pointBR.y && point.y >= pointTL.y;\n })) {\n return true;\n }\n // no points on screen, check intersection with absolute coordinates\n if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) {\n return true;\n }\n return this._containsCenterOfCanvas(pointTL, pointBR, calculate);\n },\n\n /**\n * Checks if the object contains the midpoint between canvas extremities\n * Does not make sense outside the context of isOnScreen and isPartiallyOnScreen\n * @private\n * @param {Fabric.Point} pointTL Top Left point\n * @param {Fabric.Point} pointBR Top Right point\n * @param {Boolean} calculate use coordinates of current position instead of .oCoords\n * @return {Boolean} true if the object contains the point\n */\n _containsCenterOfCanvas: function(pointTL, pointBR, calculate) {\n // worst case scenario the object is so big that contains the screen\n var centerPoint = { x: (pointTL.x + pointBR.x) / 2, y: (pointTL.y + pointBR.y) / 2 };\n if (this.containsPoint(centerPoint, null, true, calculate)) {\n return true;\n }\n return false;\n },\n\n /**\n * Checks if object is partially contained within the canvas with current viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is partially contained within canvas\n */\n isPartiallyOnScreen: function(calculate) {\n if (!this.canvas) {\n return false;\n }\n var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br;\n if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) {\n return true;\n }\n var allPointsAreOutside = this.getCoords(true, calculate).every(function(point) {\n return (point.x >= pointBR.x || point.x <= pointTL.x) &&\n (point.y >= pointBR.y || point.y <= pointTL.y);\n });\n return allPointsAreOutside && this._containsCenterOfCanvas(pointTL, pointBR, calculate);\n },\n\n /**\n * Method that returns an object with the object edges in it, given the coordinates of the corners\n * @private\n * @param {Object} oCoords Coordinates of the object corners\n */\n _getImageLines: function(oCoords) {\n\n var lines = {\n topline: {\n o: oCoords.tl,\n d: oCoords.tr\n },\n rightline: {\n o: oCoords.tr,\n d: oCoords.br\n },\n bottomline: {\n o: oCoords.br,\n d: oCoords.bl\n },\n leftline: {\n o: oCoords.bl,\n d: oCoords.tl\n }\n };\n\n // // debugging\n // if (this.canvas.contextTop) {\n // this.canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2);\n //\n // this.canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2);\n //\n // this.canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2);\n //\n // this.canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2);\n // }\n\n return lines;\n },\n\n /**\n * Helper method to determine how many cross points are between the 4 object edges\n * and the horizontal line determined by a point on canvas\n * @private\n * @param {fabric.Point} point Point to check\n * @param {Object} lines Coordinates of the object being evaluated\n */\n // remove yi, not used but left code here just in case.\n _findCrossPoints: function(point, lines) {\n var b1, b2, a1, a2, xi, // yi,\n xcount = 0,\n iLine;\n\n for (var lineKey in lines) {\n iLine = lines[lineKey];\n // optimisation 1: line below point. no cross\n if ((iLine.o.y < point.y) && (iLine.d.y < point.y)) {\n continue;\n }\n // optimisation 2: line above point. no cross\n if ((iLine.o.y >= point.y) && (iLine.d.y >= point.y)) {\n continue;\n }\n // optimisation 3: vertical line case\n if ((iLine.o.x === iLine.d.x) && (iLine.o.x >= point.x)) {\n xi = iLine.o.x;\n // yi = point.y;\n }\n // calculate the intersection point\n else {\n b1 = 0;\n b2 = (iLine.d.y - iLine.o.y) / (iLine.d.x - iLine.o.x);\n a1 = point.y - b1 * point.x;\n a2 = iLine.o.y - b2 * iLine.o.x;\n\n xi = -(a1 - a2) / (b1 - b2);\n // yi = a1 + b1 * xi;\n }\n // dont count xi < point.x cases\n if (xi >= point.x) {\n xcount += 1;\n }\n // optimisation 4: specific for square images\n if (xcount === 2) {\n break;\n }\n }\n return xcount;\n },\n\n /**\n * Returns coordinates of object's bounding rectangle (left, top, width, height)\n * the box is intended as aligned to axis of canvas.\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords / .aCoords\n * @return {Object} Object with left, top, width, height properties\n */\n getBoundingRect: function(absolute, calculate) {\n var coords = this.getCoords(absolute, calculate);\n return util.makeBoundingBoxFromPoints(coords);\n },\n\n /**\n * Returns width of an object's bounding box counting transformations\n * before 2.0 it was named getWidth();\n * @return {Number} width value\n */\n getScaledWidth: function() {\n return this._getTransformedDimensions().x;\n },\n\n /**\n * Returns height of an object bounding box counting transformations\n * before 2.0 it was named getHeight();\n * @return {Number} height value\n */\n getScaledHeight: function() {\n return this._getTransformedDimensions().y;\n },\n\n /**\n * Makes sure the scale is valid and modifies it if necessary\n * @private\n * @param {Number} value\n * @return {Number}\n */\n _constrainScale: function(value) {\n if (Math.abs(value) < this.minScaleLimit) {\n if (value < 0) {\n return -this.minScaleLimit;\n }\n else {\n return this.minScaleLimit;\n }\n }\n else if (value === 0) {\n return 0.0001;\n }\n return value;\n },\n\n /**\n * Scales an object (equally by x and y)\n * @param {Number} value Scale factor\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scale: function(value) {\n this._set('scaleX', value);\n this._set('scaleY', value);\n return this.setCoords();\n },\n\n /**\n * Scales an object to a given width, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New width value\n * @param {Boolean} absolute ignore viewport\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scaleToWidth: function(value, absolute) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n var boundingRectFactor = this.getBoundingRect(absolute).width / this.getScaledWidth();\n return this.scale(value / this.width / boundingRectFactor);\n },\n\n /**\n * Scales an object to a given height, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New height value\n * @param {Boolean} absolute ignore viewport\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scaleToHeight: function(value, absolute) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n var boundingRectFactor = this.getBoundingRect(absolute).height / this.getScaledHeight();\n return this.scale(value / this.height / boundingRectFactor);\n },\n\n /**\n * Calculates and returns the .coords of an object.\n * unused by the library, only for the end dev.\n * @return {Object} Object with tl, tr, br, bl ....\n * @chainable\n * @deprecated\n */\n calcCoords: function(absolute) {\n // this is a compatibility function to avoid removing calcCoords now.\n if (absolute) {\n return this.calcACoords();\n }\n return this.calcOCoords();\n },\n\n calcLineCoords: function() {\n var vpt = this.getViewportTransform(),\n padding = this.padding, angle = degreesToRadians(this.angle),\n cos = util.cos(angle), sin = util.sin(angle),\n cosP = cos * padding, sinP = sin * padding, cosPSinP = cosP + sinP,\n cosPMinusSinP = cosP - sinP, aCoords = this.calcACoords();\n\n var lineCoords = {\n tl: transformPoint(aCoords.tl, vpt),\n tr: transformPoint(aCoords.tr, vpt),\n bl: transformPoint(aCoords.bl, vpt),\n br: transformPoint(aCoords.br, vpt),\n };\n\n if (padding) {\n lineCoords.tl.x -= cosPMinusSinP;\n lineCoords.tl.y -= cosPSinP;\n lineCoords.tr.x += cosPSinP;\n lineCoords.tr.y -= cosPMinusSinP;\n lineCoords.bl.x -= cosPSinP;\n lineCoords.bl.y += cosPMinusSinP;\n lineCoords.br.x += cosPMinusSinP;\n lineCoords.br.y += cosPSinP;\n }\n\n return lineCoords;\n },\n\n calcOCoords: function() {\n var rotateMatrix = this._calcRotateMatrix(),\n translateMatrix = this._calcTranslateMatrix(),\n vpt = this.getViewportTransform(),\n startMatrix = multiplyMatrices(vpt, translateMatrix),\n finalMatrix = multiplyMatrices(startMatrix, rotateMatrix),\n finalMatrix = multiplyMatrices(finalMatrix, [1 / vpt[0], 0, 0, 1 / vpt[3], 0, 0]),\n dim = this._calculateCurrentDimensions(),\n coords = {};\n this.forEachControl(function(control, key, fabricObject) {\n coords[key] = control.positionHandler(dim, finalMatrix, fabricObject);\n });\n\n // debug code\n // var canvas = this.canvas;\n // setTimeout(function() {\n // canvas.contextTop.clearRect(0, 0, 700, 700);\n // canvas.contextTop.fillStyle = 'green';\n // Object.keys(coords).forEach(function(key) {\n // var control = coords[key];\n // canvas.contextTop.fillRect(control.x, control.y, 3, 3);\n // });\n // }, 50);\n return coords;\n },\n\n calcACoords: function() {\n var rotateMatrix = this._calcRotateMatrix(),\n translateMatrix = this._calcTranslateMatrix(),\n finalMatrix = multiplyMatrices(translateMatrix, rotateMatrix),\n dim = this._getTransformedDimensions(),\n w = dim.x / 2, h = dim.y / 2;\n return {\n // corners\n tl: transformPoint({ x: -w, y: -h }, finalMatrix),\n tr: transformPoint({ x: w, y: -h }, finalMatrix),\n bl: transformPoint({ x: -w, y: h }, finalMatrix),\n br: transformPoint({ x: w, y: h }, finalMatrix)\n };\n },\n\n /**\n * Sets corner and controls position coordinates based on current angle, width and height, left and top.\n * oCoords are used to find the corners\n * aCoords are used to quickly find an object on the canvas\n * lineCoords are used to quickly find object during pointer events.\n * See {@link https://github.com/kangax/fabric.js/wiki/When-to-call-setCoords|When-to-call-setCoords}\n * @param {Boolean} [skipCorners] skip calculation of oCoords.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setCoords: function(skipCorners) {\n this.aCoords = this.calcACoords();\n // in case we are in a group, for how the inner group target check works,\n // lineCoords are exactly aCoords. Since the vpt gets absorbed by the normalized pointer.\n this.lineCoords = this.group ? this.aCoords : this.calcLineCoords();\n if (skipCorners) {\n return this;\n }\n // set coordinates of the draggable boxes in the corners used to scale/rotate the image\n this.oCoords = this.calcOCoords();\n this._setCornerCoords && this._setCornerCoords();\n return this;\n },\n\n /**\n * calculate rotation matrix of an object\n * @return {Array} rotation matrix for the object\n */\n _calcRotateMatrix: function() {\n return util.calcRotateMatrix(this);\n },\n\n /**\n * calculate the translation matrix for an object transform\n * @return {Array} rotation matrix for the object\n */\n _calcTranslateMatrix: function() {\n var center = this.getCenterPoint();\n return [1, 0, 0, 1, center.x, center.y];\n },\n\n transformMatrixKey: function(skipGroup) {\n var sep = '_', prefix = '';\n if (!skipGroup && this.group) {\n prefix = this.group.transformMatrixKey(skipGroup) + sep;\n };\n return prefix + this.top + sep + this.left + sep + this.scaleX + sep + this.scaleY +\n sep + this.skewX + sep + this.skewY + sep + this.angle + sep + this.originX + sep + this.originY +\n sep + this.width + sep + this.height + sep + this.strokeWidth + this.flipX + this.flipY;\n },\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties.\n * @param {Boolean} [skipGroup] return transform matrix for object not counting parent transformations\n * There are some situation in which this is useful to avoid the fake rotation.\n * @return {Array} transform matrix for the object\n */\n calcTransformMatrix: function(skipGroup) {\n var matrix = this.calcOwnMatrix();\n if (skipGroup || !this.group) {\n return matrix;\n }\n var key = this.transformMatrixKey(skipGroup), cache = this.matrixCache || (this.matrixCache = {});\n if (cache.key === key) {\n return cache.value;\n }\n if (this.group) {\n matrix = multiplyMatrices(this.group.calcTransformMatrix(false), matrix);\n }\n cache.key = key;\n cache.value = matrix;\n return matrix;\n },\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties, this matrix does not include the group transformation\n * @return {Array} transform matrix for the object\n */\n calcOwnMatrix: function() {\n var key = this.transformMatrixKey(true), cache = this.ownMatrixCache || (this.ownMatrixCache = {});\n if (cache.key === key) {\n return cache.value;\n }\n var tMatrix = this._calcTranslateMatrix(),\n options = {\n angle: this.angle,\n translateX: tMatrix[4],\n translateY: tMatrix[5],\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n skewX: this.skewX,\n skewY: this.skewY,\n flipX: this.flipX,\n flipY: this.flipY,\n };\n cache.key = key;\n cache.value = util.composeMatrix(options);\n return cache.value;\n },\n\n /*\n * Calculate object dimensions from its properties\n * @private\n * @deprecated since 3.4.0, please use fabric.util._calcDimensionsTransformMatrix\n * not including or including flipX, flipY to emulate the flipping boolean\n * @return {Object} .x width dimension\n * @return {Object} .y height dimension\n */\n _calcDimensionsTransformMatrix: function(skewX, skewY, flipping) {\n return util.calcDimensionsMatrix({\n skewX: skewX,\n skewY: skewY,\n scaleX: this.scaleX * (flipping && this.flipX ? -1 : 1),\n scaleY: this.scaleY * (flipping && this.flipY ? -1 : 1)\n });\n },\n\n /*\n * Calculate object dimensions from its properties\n * @private\n * @return {Object} .x width dimension\n * @return {Object} .y height dimension\n */\n _getNonTransformedDimensions: function() {\n var strokeWidth = this.strokeWidth,\n w = this.width + strokeWidth,\n h = this.height + strokeWidth;\n return { x: w, y: h };\n },\n\n /*\n * Calculate object bounding box dimensions from its properties scale, skew.\n * @param {Number} skewX, a value to override current skewX\n * @param {Number} skewY, a value to override current skewY\n * @private\n * @return {Object} .x width dimension\n * @return {Object} .y height dimension\n */\n _getTransformedDimensions: function(skewX, skewY) {\n if (typeof skewX === 'undefined') {\n skewX = this.skewX;\n }\n if (typeof skewY === 'undefined') {\n skewY = this.skewY;\n }\n var dimensions = this._getNonTransformedDimensions(), dimX, dimY,\n noSkew = skewX === 0 && skewY === 0;\n\n if (this.strokeUniform) {\n dimX = this.width;\n dimY = this.height;\n }\n else {\n dimX = dimensions.x;\n dimY = dimensions.y;\n }\n if (noSkew) {\n return this._finalizeDimensions(dimX * this.scaleX, dimY * this.scaleY);\n }\n var bbox = util.sizeAfterTransform(dimX, dimY, {\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n skewX: skewX,\n skewY: skewY,\n });\n return this._finalizeDimensions(bbox.x, bbox.y);\n },\n\n /*\n * Calculate object bounding box dimensions from its properties scale, skew.\n * @param Number width width of the bbox\n * @param Number height height of the bbox\n * @private\n * @return {Object} .x finalized width dimension\n * @return {Object} .y finalized height dimension\n */\n _finalizeDimensions: function(width, height) {\n return this.strokeUniform ?\n { x: width + this.strokeWidth, y: height + this.strokeWidth }\n :\n { x: width, y: height };\n },\n\n /*\n * Calculate object dimensions for controls box, including padding and canvas zoom.\n * and active selection\n * private\n */\n _calculateCurrentDimensions: function() {\n var vpt = this.getViewportTransform(),\n dim = this._getTransformedDimensions(),\n p = transformPoint(dim, vpt, true);\n return p.scalarAdd(2 * this.padding);\n },\n });\n})();\n\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Moves an object to the bottom of the stack of drawn objects\n * @return {fabric.Object} thisArg\n * @chainable\n */\n sendToBack: function() {\n if (this.group) {\n fabric.StaticCanvas.prototype.sendToBack.call(this.group, this);\n }\n else if (this.canvas) {\n this.canvas.sendToBack(this);\n }\n return this;\n },\n\n /**\n * Moves an object to the top of the stack of drawn objects\n * @return {fabric.Object} thisArg\n * @chainable\n */\n bringToFront: function() {\n if (this.group) {\n fabric.StaticCanvas.prototype.bringToFront.call(this.group, this);\n }\n else if (this.canvas) {\n this.canvas.bringToFront(this);\n }\n return this;\n },\n\n /**\n * Moves an object down in stack of drawn objects\n * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n sendBackwards: function(intersecting) {\n if (this.group) {\n fabric.StaticCanvas.prototype.sendBackwards.call(this.group, this, intersecting);\n }\n else if (this.canvas) {\n this.canvas.sendBackwards(this, intersecting);\n }\n return this;\n },\n\n /**\n * Moves an object up in stack of drawn objects\n * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n bringForward: function(intersecting) {\n if (this.group) {\n fabric.StaticCanvas.prototype.bringForward.call(this.group, this, intersecting);\n }\n else if (this.canvas) {\n this.canvas.bringForward(this, intersecting);\n }\n return this;\n },\n\n /**\n * Moves an object to specified level in stack of drawn objects\n * @param {Number} index New position of object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n moveTo: function(index) {\n if (this.group && this.group.type !== 'activeSelection') {\n fabric.StaticCanvas.prototype.moveTo.call(this.group, this, index);\n }\n else if (this.canvas) {\n this.canvas.moveTo(this, index);\n }\n return this;\n }\n});\n\n\n/* _TO_SVG_START_ */\n(function() {\n function getSvgColorString(prop, value) {\n if (!value) {\n return prop + ': none; ';\n }\n else if (value.toLive) {\n return prop + ': url(#SVGID_' + value.id + '); ';\n }\n else {\n var color = new fabric.Color(value),\n str = prop + ': ' + color.toRgb() + '; ',\n opacity = color.getAlpha();\n if (opacity !== 1) {\n //change the color in rgb + opacity\n str += prop + '-opacity: ' + opacity.toString() + '; ';\n }\n return str;\n }\n }\n\n var toFixed = fabric.util.toFixed;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n /**\n * Returns styles-string for svg-export\n * @param {Boolean} skipShadow a boolean to skip shadow filter output\n * @return {String}\n */\n getSvgStyles: function(skipShadow) {\n\n var fillRule = this.fillRule ? this.fillRule : 'nonzero',\n strokeWidth = this.strokeWidth ? this.strokeWidth : '0',\n strokeDashArray = this.strokeDashArray ? this.strokeDashArray.join(' ') : 'none',\n strokeDashOffset = this.strokeDashOffset ? this.strokeDashOffset : '0',\n strokeLineCap = this.strokeLineCap ? this.strokeLineCap : 'butt',\n strokeLineJoin = this.strokeLineJoin ? this.strokeLineJoin : 'miter',\n strokeMiterLimit = this.strokeMiterLimit ? this.strokeMiterLimit : '4',\n opacity = typeof this.opacity !== 'undefined' ? this.opacity : '1',\n visibility = this.visible ? '' : ' visibility: hidden;',\n filter = skipShadow ? '' : this.getSvgFilter(),\n fill = getSvgColorString('fill', this.fill),\n stroke = getSvgColorString('stroke', this.stroke);\n\n return [\n stroke,\n 'stroke-width: ', strokeWidth, '; ',\n 'stroke-dasharray: ', strokeDashArray, '; ',\n 'stroke-linecap: ', strokeLineCap, '; ',\n 'stroke-dashoffset: ', strokeDashOffset, '; ',\n 'stroke-linejoin: ', strokeLineJoin, '; ',\n 'stroke-miterlimit: ', strokeMiterLimit, '; ',\n fill,\n 'fill-rule: ', fillRule, '; ',\n 'opacity: ', opacity, ';',\n filter,\n visibility\n ].join('');\n },\n\n /**\n * Returns styles-string for svg-export\n * @param {Object} style the object from which to retrieve style properties\n * @param {Boolean} useWhiteSpace a boolean to include an additional attribute in the style.\n * @return {String}\n */\n getSvgSpanStyles: function(style, useWhiteSpace) {\n var term = '; ';\n var fontFamily = style.fontFamily ?\n 'font-family: ' + (((style.fontFamily.indexOf('\\'') === -1 && style.fontFamily.indexOf('\"') === -1) ?\n '\\'' + style.fontFamily + '\\'' : style.fontFamily)) + term : '';\n var strokeWidth = style.strokeWidth ? 'stroke-width: ' + style.strokeWidth + term : '',\n fontFamily = fontFamily,\n fontSize = style.fontSize ? 'font-size: ' + style.fontSize + 'px' + term : '',\n fontStyle = style.fontStyle ? 'font-style: ' + style.fontStyle + term : '',\n fontWeight = style.fontWeight ? 'font-weight: ' + style.fontWeight + term : '',\n fill = style.fill ? getSvgColorString('fill', style.fill) : '',\n stroke = style.stroke ? getSvgColorString('stroke', style.stroke) : '',\n textDecoration = this.getSvgTextDecoration(style),\n deltaY = style.deltaY ? 'baseline-shift: ' + (-style.deltaY) + '; ' : '';\n if (textDecoration) {\n textDecoration = 'text-decoration: ' + textDecoration + term;\n }\n\n return [\n stroke,\n strokeWidth,\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n textDecoration,\n fill,\n deltaY,\n useWhiteSpace ? 'white-space: pre; ' : ''\n ].join('');\n },\n\n /**\n * Returns text-decoration property for svg-export\n * @param {Object} style the object from which to retrieve style properties\n * @return {String}\n */\n getSvgTextDecoration: function(style) {\n return ['overline', 'underline', 'line-through'].filter(function(decoration) {\n return style[decoration.replace('-', '')];\n }).join(' ');\n },\n\n /**\n * Returns filter for svg shadow\n * @return {String}\n */\n getSvgFilter: function() {\n return this.shadow ? 'filter: url(#SVGID_' + this.shadow.id + ');' : '';\n },\n\n /**\n * Returns id attribute for svg output\n * @return {String}\n */\n getSvgCommons: function() {\n return [\n this.id ? 'id=\"' + this.id + '\" ' : '',\n this.clipPath ? 'clip-path=\"url(#' + this.clipPath.clipPathId + ')\" ' : '',\n ].join('');\n },\n\n /**\n * Returns transform-string for svg-export\n * @param {Boolean} use the full transform or the single object one.\n * @return {String}\n */\n getSvgTransform: function(full, additionalTransform) {\n var transform = full ? this.calcTransformMatrix() : this.calcOwnMatrix(),\n svgTransform = 'transform=\"' + fabric.util.matrixToSVG(transform);\n return svgTransform +\n (additionalTransform || '') + '\" ';\n },\n\n _setSVGBg: function(textBgRects) {\n if (this.backgroundColor) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n textBgRects.push(\n '\\t\\t\\n');\n }\n },\n\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n return this._createBaseSVGMarkup(this._toSVG(reviver), { reviver: reviver });\n },\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG: function(reviver) {\n return '\\t' + this._createBaseClipPathSVGMarkup(this._toSVG(reviver), { reviver: reviver });\n },\n\n /**\n * @private\n */\n _createBaseClipPathSVGMarkup: function(objectMarkup, options) {\n options = options || {};\n var reviver = options.reviver,\n additionalTransform = options.additionalTransform || '',\n commonPieces = [\n this.getSvgTransform(true, additionalTransform),\n this.getSvgCommons(),\n ].join(''),\n // insert commons in the markup, style and svgCommons\n index = objectMarkup.indexOf('COMMON_PARTS');\n objectMarkup[index] = commonPieces;\n return reviver ? reviver(objectMarkup.join('')) : objectMarkup.join('');\n },\n\n /**\n * @private\n */\n _createBaseSVGMarkup: function(objectMarkup, options) {\n options = options || {};\n var noStyle = options.noStyle,\n reviver = options.reviver,\n styleInfo = noStyle ? '' : 'style=\"' + this.getSvgStyles() + '\" ',\n shadowInfo = options.withShadow ? 'style=\"' + this.getSvgFilter() + '\" ' : '',\n clipPath = this.clipPath,\n vectorEffect = this.strokeUniform ? 'vector-effect=\"non-scaling-stroke\" ' : '',\n absoluteClipPath = clipPath && clipPath.absolutePositioned,\n stroke = this.stroke, fill = this.fill, shadow = this.shadow,\n commonPieces, markup = [], clipPathMarkup,\n // insert commons in the markup, style and svgCommons\n index = objectMarkup.indexOf('COMMON_PARTS'),\n additionalTransform = options.additionalTransform;\n if (clipPath) {\n clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++;\n clipPathMarkup = '\\n' +\n clipPath.toClipPathSVG(reviver) +\n '\\n';\n }\n if (absoluteClipPath) {\n markup.push(\n '\\n'\n );\n }\n markup.push(\n '\\n'\n );\n commonPieces = [\n styleInfo,\n vectorEffect,\n noStyle ? '' : this.addPaintOrder(), ' ',\n additionalTransform ? 'transform=\"' + additionalTransform + '\" ' : '',\n ].join('');\n objectMarkup[index] = commonPieces;\n if (fill && fill.toLive) {\n markup.push(fill.toSVG(this));\n }\n if (stroke && stroke.toLive) {\n markup.push(stroke.toSVG(this));\n }\n if (shadow) {\n markup.push(shadow.toSVG(this));\n }\n if (clipPath) {\n markup.push(clipPathMarkup);\n }\n markup.push(objectMarkup.join(''));\n markup.push('\\n');\n absoluteClipPath && markup.push('\\n');\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n\n addPaintOrder: function() {\n return this.paintFirst !== 'fill' ? ' paint-order=\"' + this.paintFirst + '\" ' : '';\n }\n });\n})();\n/* _TO_SVG_END_ */\n\n\n(function() {\n\n var extend = fabric.util.object.extend,\n originalSet = 'stateProperties';\n\n /*\n Depends on `stateProperties`\n */\n function saveProps(origin, destination, props) {\n var tmpObj = { }, deep = true;\n props.forEach(function(prop) {\n tmpObj[prop] = origin[prop];\n });\n\n extend(origin[destination], tmpObj, deep);\n }\n\n function _isEqual(origValue, currentValue, firstPass) {\n if (origValue === currentValue) {\n // if the objects are identical, return\n return true;\n }\n else if (Array.isArray(origValue)) {\n if (!Array.isArray(currentValue) || origValue.length !== currentValue.length) {\n return false;\n }\n for (var i = 0, len = origValue.length; i < len; i++) {\n if (!_isEqual(origValue[i], currentValue[i])) {\n return false;\n }\n }\n return true;\n }\n else if (origValue && typeof origValue === 'object') {\n var keys = Object.keys(origValue), key;\n if (!currentValue ||\n typeof currentValue !== 'object' ||\n (!firstPass && keys.length !== Object.keys(currentValue).length)\n ) {\n return false;\n }\n for (var i = 0, len = keys.length; i < len; i++) {\n key = keys[i];\n // since clipPath is in the statefull cache list and the clipPath objects\n // would be iterated as an object, this would lead to possible infinite recursion\n // we do not want to compare those.\n if (key === 'canvas' || key === 'group') {\n continue;\n }\n if (!_isEqual(origValue[key], currentValue[key])) {\n return false;\n }\n }\n return true;\n }\n }\n\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Returns true if object state (one of its state properties) was changed\n * @param {String} [propertySet] optional name for the set of property we want to save\n * @return {Boolean} true if instance' state has changed since `{@link fabric.Object#saveState}` was called\n */\n hasStateChanged: function(propertySet) {\n propertySet = propertySet || originalSet;\n var dashedPropertySet = '_' + propertySet;\n if (Object.keys(this[dashedPropertySet]).length < this[propertySet].length) {\n return true;\n }\n return !_isEqual(this[dashedPropertySet], this, true);\n },\n\n /**\n * Saves state of an object\n * @param {Object} [options] Object with additional `stateProperties` array to include when saving state\n * @return {fabric.Object} thisArg\n */\n saveState: function(options) {\n var propertySet = options && options.propertySet || originalSet,\n destination = '_' + propertySet;\n if (!this[destination]) {\n return this.setupState(options);\n }\n saveProps(this, destination, this[propertySet]);\n if (options && options.stateProperties) {\n saveProps(this, destination, options.stateProperties);\n }\n return this;\n },\n\n /**\n * Setups state of an object\n * @param {Object} [options] Object with additional `stateProperties` array to include when saving state\n * @return {fabric.Object} thisArg\n */\n setupState: function(options) {\n options = options || { };\n var propertySet = options.propertySet || originalSet;\n options.propertySet = propertySet;\n this['_' + propertySet] = { };\n this.saveState(options);\n return this;\n }\n });\n})();\n\n\n(function() {\n\n var degreesToRadians = fabric.util.degreesToRadians;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n /**\n * Determines which corner has been clicked\n * @private\n * @param {Object} pointer The pointer indicating the mouse position\n * @return {String|Boolean} corner code (tl, tr, bl, br, etc.), or false if nothing is found\n */\n _findTargetCorner: function(pointer, forTouch) {\n // objects in group, anykind, are not self modificable,\n // must not return an hovered corner.\n if (!this.hasControls || this.group || (!this.canvas || this.canvas._activeObject !== this)) {\n return false;\n }\n\n var ex = pointer.x,\n ey = pointer.y,\n xPoints,\n lines, keys = Object.keys(this.oCoords),\n j = keys.length - 1, i;\n this.__corner = 0;\n\n // cycle in reverse order so we pick first the one on top\n for (; j >= 0; j--) {\n i = keys[j];\n if (!this.isControlVisible(i)) {\n continue;\n }\n\n lines = this._getImageLines(forTouch ? this.oCoords[i].touchCorner : this.oCoords[i].corner);\n // // debugging\n //\n // this.canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2);\n //\n // this.canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2);\n //\n // this.canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2);\n //\n // this.canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2);\n\n xPoints = this._findCrossPoints({ x: ex, y: ey }, lines);\n if (xPoints !== 0 && xPoints % 2 === 1) {\n this.__corner = i;\n return i;\n }\n }\n return false;\n },\n\n /**\n * Calls a function for each control. The function gets called,\n * with the control, the object that is calling the iterator and the control's key\n * @param {Function} fn function to iterate over the controls over\n */\n forEachControl: function(fn) {\n for (var i in this.controls) {\n fn(this.controls[i], i, this);\n };\n },\n\n /**\n * Sets the coordinates of the draggable boxes in the corners of\n * the image used to scale/rotate it.\n * note: if we would switch to ROUND corner area, all of this would disappear.\n * everything would resolve to a single point and a pythagorean theorem for the distance\n * @private\n */\n _setCornerCoords: function() {\n var coords = this.oCoords;\n\n for (var control in coords) {\n var controlObject = this.controls[control];\n coords[control].corner = controlObject.calcCornerCoords(\n this.angle, this.cornerSize, coords[control].x, coords[control].y, false);\n coords[control].touchCorner = controlObject.calcCornerCoords(\n this.angle, this.touchCornerSize, coords[control].x, coords[control].y, true);\n }\n },\n\n /**\n * Draws a colored layer behind the object, inside its selection borders.\n * Requires public options: padding, selectionBackgroundColor\n * this function is called when the context is transformed\n * has checks to be skipped when the object is on a staticCanvas\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawSelectionBackground: function(ctx) {\n if (!this.selectionBackgroundColor ||\n (this.canvas && !this.canvas.interactive) ||\n (this.canvas && this.canvas._activeObject !== this)\n ) {\n return this;\n }\n ctx.save();\n var center = this.getCenterPoint(), wh = this._calculateCurrentDimensions(),\n vpt = this.canvas.viewportTransform;\n ctx.translate(center.x, center.y);\n ctx.scale(1 / vpt[0], 1 / vpt[3]);\n ctx.rotate(degreesToRadians(this.angle));\n ctx.fillStyle = this.selectionBackgroundColor;\n ctx.fillRect(-wh.x / 2, -wh.y / 2, wh.x, wh.y);\n ctx.restore();\n return this;\n },\n\n /**\n * Draws borders of an object's bounding box.\n * Requires public properties: width, height\n * Requires public options: padding, borderColor\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawBorders: function(ctx, styleOverride) {\n styleOverride = styleOverride || {};\n var wh = this._calculateCurrentDimensions(),\n strokeWidth = this.borderScaleFactor,\n width = wh.x + strokeWidth,\n height = wh.y + strokeWidth,\n hasControls = typeof styleOverride.hasControls !== 'undefined' ?\n styleOverride.hasControls : this.hasControls,\n shouldStroke = false;\n\n ctx.save();\n ctx.strokeStyle = styleOverride.borderColor || this.borderColor;\n this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray, null);\n\n ctx.strokeRect(\n -width / 2,\n -height / 2,\n width,\n height\n );\n\n if (hasControls) {\n ctx.beginPath();\n this.forEachControl(function(control, key, fabricObject) {\n // in this moment, the ctx is centered on the object.\n // width and height of the above function are the size of the bbox.\n if (control.withConnection && control.getVisibility(fabricObject, key)) {\n // reset movement for each control\n shouldStroke = true;\n ctx.moveTo(control.x * width, control.y * height);\n ctx.lineTo(\n control.x * width + control.offsetX,\n control.y * height + control.offsetY\n );\n }\n });\n if (shouldStroke) {\n ctx.stroke();\n }\n }\n ctx.restore();\n return this;\n },\n\n /**\n * Draws borders of an object's bounding box when it is inside a group.\n * Requires public properties: width, height\n * Requires public options: padding, borderColor\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {object} options object representing current object parameters\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawBordersInGroup: function(ctx, options, styleOverride) {\n styleOverride = styleOverride || {};\n var bbox = fabric.util.sizeAfterTransform(this.width, this.height, options),\n strokeWidth = this.strokeWidth,\n strokeUniform = this.strokeUniform,\n borderScaleFactor = this.borderScaleFactor,\n width =\n bbox.x + strokeWidth * (strokeUniform ? this.canvas.getZoom() : options.scaleX) + borderScaleFactor,\n height =\n bbox.y + strokeWidth * (strokeUniform ? this.canvas.getZoom() : options.scaleY) + borderScaleFactor;\n ctx.save();\n this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray, null);\n ctx.strokeStyle = styleOverride.borderColor || this.borderColor;\n ctx.strokeRect(\n -width / 2,\n -height / 2,\n width,\n height\n );\n\n ctx.restore();\n return this;\n },\n\n /**\n * Draws corners of an object's bounding box.\n * Requires public properties: width, height\n * Requires public options: cornerSize, padding\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawControls: function(ctx, styleOverride) {\n styleOverride = styleOverride || {};\n ctx.save();\n ctx.setTransform(this.canvas.getRetinaScaling(), 0, 0, this.canvas.getRetinaScaling(), 0, 0);\n ctx.strokeStyle = ctx.fillStyle = styleOverride.cornerColor || this.cornerColor;\n if (!this.transparentCorners) {\n ctx.strokeStyle = styleOverride.cornerStrokeColor || this.cornerStrokeColor;\n }\n this._setLineDash(ctx, styleOverride.cornerDashArray || this.cornerDashArray, null);\n this.setCoords();\n this.forEachControl(function(control, key, fabricObject) {\n if (control.getVisibility(fabricObject, key)) {\n control.render(ctx,\n fabricObject.oCoords[key].x,\n fabricObject.oCoords[key].y, styleOverride, fabricObject);\n }\n });\n ctx.restore();\n\n return this;\n },\n\n /**\n * Returns true if the specified control is visible, false otherwise.\n * @param {String} controlKey The key of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.\n * @returns {Boolean} true if the specified control is visible, false otherwise\n */\n isControlVisible: function(controlKey) {\n return this.controls[controlKey] && this.controls[controlKey].getVisibility(this, controlKey);\n },\n\n /**\n * Sets the visibility of the specified control.\n * @param {String} controlKey The key of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.\n * @param {Boolean} visible true to set the specified control visible, false otherwise\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setControlVisible: function(controlKey, visible) {\n if (!this._controlsVisibility) {\n this._controlsVisibility = {};\n }\n this._controlsVisibility[controlKey] = visible;\n return this;\n },\n\n /**\n * Sets the visibility state of object controls.\n * @param {Object} [options] Options object\n * @param {Boolean} [options.bl] true to enable the bottom-left control, false to disable it\n * @param {Boolean} [options.br] true to enable the bottom-right control, false to disable it\n * @param {Boolean} [options.mb] true to enable the middle-bottom control, false to disable it\n * @param {Boolean} [options.ml] true to enable the middle-left control, false to disable it\n * @param {Boolean} [options.mr] true to enable the middle-right control, false to disable it\n * @param {Boolean} [options.mt] true to enable the middle-top control, false to disable it\n * @param {Boolean} [options.tl] true to enable the top-left control, false to disable it\n * @param {Boolean} [options.tr] true to enable the top-right control, false to disable it\n * @param {Boolean} [options.mtr] true to enable the middle-top-rotate control, false to disable it\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setControlsVisibility: function(options) {\n options || (options = { });\n\n for (var p in options) {\n this.setControlVisible(p, options[p]);\n }\n return this;\n },\n\n\n /**\n * This callback function is called every time _discardActiveObject or _setActiveObject\n * try to to deselect this object. If the function returns true, the process is cancelled\n * @param {Object} [options] options sent from the upper functions\n * @param {Event} [options.e] event if the process is generated by an event\n */\n onDeselect: function() {\n // implemented by sub-classes, as needed.\n },\n\n\n /**\n * This callback function is called every time _discardActiveObject or _setActiveObject\n * try to to select this object. If the function returns true, the process is cancelled\n * @param {Object} [options] options sent from the upper functions\n * @param {Event} [options.e] event if the process is generated by an event\n */\n onSelect: function() {\n // implemented by sub-classes, as needed.\n }\n });\n})();\n\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Animation duration (in ms) for fx* methods\n * @type Number\n * @default\n */\n FX_DURATION: 500,\n\n /**\n * Centers object horizontally with animation.\n * @param {fabric.Object} object Object to center\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxCenterObjectH: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: object.left,\n endValue: this.getCenter().left,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('left', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function() {\n object.setCoords();\n onComplete();\n }\n });\n\n return this;\n },\n\n /**\n * Centers object vertically with animation.\n * @param {fabric.Object} object Object to center\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxCenterObjectV: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: object.top,\n endValue: this.getCenter().top,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('top', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function() {\n object.setCoords();\n onComplete();\n }\n });\n\n return this;\n },\n\n /**\n * Same as `fabric.Canvas#remove` but animated\n * @param {fabric.Object} object Object to remove\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxRemove: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: object.opacity,\n endValue: 0,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('opacity', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function () {\n _this.remove(object);\n onComplete();\n }\n });\n\n return this;\n }\n});\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n /**\n * Animates object's properties\n * @param {String|Object} property Property to animate (if string) or properties to animate (if object)\n * @param {Number|Object} value Value to animate property to (if string was given first) or options object\n * @return {fabric.Object} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#animation}\n * @chainable\n *\n * As object — multiple properties\n *\n * object.animate({ left: ..., top: ... });\n * object.animate({ left: ..., top: ... }, { duration: ... });\n *\n * As string — one property\n *\n * object.animate('left', ...);\n * object.animate('left', { duration: ... });\n *\n */\n animate: function() {\n if (arguments[0] && typeof arguments[0] === 'object') {\n var propsToAnimate = [], prop, skipCallbacks;\n for (prop in arguments[0]) {\n propsToAnimate.push(prop);\n }\n for (var i = 0, len = propsToAnimate.length; i < len; i++) {\n prop = propsToAnimate[i];\n skipCallbacks = i !== len - 1;\n this._animate(prop, arguments[0][prop], arguments[1], skipCallbacks);\n }\n }\n else {\n this._animate.apply(this, arguments);\n }\n return this;\n },\n\n /**\n * @private\n * @param {String} property Property to animate\n * @param {String} to Value to animate to\n * @param {Object} [options] Options object\n * @param {Boolean} [skipCallbacks] When true, callbacks like onchange and oncomplete are not invoked\n */\n _animate: function(property, to, options, skipCallbacks) {\n var _this = this, propPair;\n\n to = to.toString();\n\n if (!options) {\n options = { };\n }\n else {\n options = fabric.util.object.clone(options);\n }\n\n if (~property.indexOf('.')) {\n propPair = property.split('.');\n }\n\n var propIsColor =\n _this.colorProperties.indexOf(property) > -1 ||\n (propPair && _this.colorProperties.indexOf(propPair[1]) > -1);\n\n var currentValue = propPair\n ? this.get(propPair[0])[propPair[1]]\n : this.get(property);\n\n if (!('from' in options)) {\n options.from = currentValue;\n }\n\n if (!propIsColor) {\n if (~to.indexOf('=')) {\n to = currentValue + parseFloat(to.replace('=', ''));\n }\n else {\n to = parseFloat(to);\n }\n }\n\n var _options = {\n startValue: options.from,\n endValue: to,\n byValue: options.by,\n easing: options.easing,\n duration: options.duration,\n abort: options.abort && function () {\n return options.abort.call(_this);\n },\n onChange: function (value, valueProgress, timeProgress) {\n if (propPair) {\n _this[propPair[0]][propPair[1]] = value;\n }\n else {\n _this.set(property, value);\n }\n if (skipCallbacks) {\n return;\n }\n options.onChange && options.onChange(value, valueProgress, timeProgress);\n },\n onComplete: function (value, valueProgress, timeProgress) {\n if (skipCallbacks) {\n return;\n }\n\n _this.setCoords();\n options.onComplete && options.onComplete(value, valueProgress, timeProgress);\n }\n };\n\n if (propIsColor) {\n fabric.util.animateColor(_options.startValue, _options.endValue, _options.duration, _options);\n }\n else {\n fabric.util.animate(_options);\n }\n }\n});\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n coordProps = { x1: 1, x2: 1, y1: 1, y2: 1 },\n supportsLineDash = fabric.StaticCanvas.supports('setLineDash');\n\n if (fabric.Line) {\n fabric.warn('fabric.Line is already defined');\n return;\n }\n\n /**\n * Line class\n * @class fabric.Line\n * @extends fabric.Object\n * @see {@link fabric.Line#initialize} for constructor definition\n */\n fabric.Line = fabric.util.createClass(fabric.Object, /** @lends fabric.Line.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'line',\n\n /**\n * x value or first line edge\n * @type Number\n * @default\n */\n x1: 0,\n\n /**\n * y value or first line edge\n * @type Number\n * @default\n */\n y1: 0,\n\n /**\n * x value or second line edge\n * @type Number\n * @default\n */\n x2: 0,\n\n /**\n * y value or second line edge\n * @type Number\n * @default\n */\n y2: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('x1', 'x2', 'y1', 'y2'),\n\n /**\n * Constructor\n * @param {Array} [points] Array of points\n * @param {Object} [options] Options object\n * @return {fabric.Line} thisArg\n */\n initialize: function(points, options) {\n if (!points) {\n points = [0, 0, 0, 0];\n }\n\n this.callSuper('initialize', options);\n\n this.set('x1', points[0]);\n this.set('y1', points[1]);\n this.set('x2', points[2]);\n this.set('y2', points[3]);\n\n this._setWidthHeight(options);\n },\n\n /**\n * @private\n * @param {Object} [options] Options\n */\n _setWidthHeight: function(options) {\n options || (options = { });\n\n this.width = Math.abs(this.x2 - this.x1);\n this.height = Math.abs(this.y2 - this.y1);\n\n this.left = 'left' in options\n ? options.left\n : this._getLeftToOriginX();\n\n this.top = 'top' in options\n ? options.top\n : this._getTopToOriginY();\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n if (typeof coordProps[key] !== 'undefined') {\n this._setWidthHeight();\n }\n return this;\n },\n\n /**\n * @private\n * @return {Number} leftToOriginX Distance from left edge of canvas to originX of Line.\n */\n _getLeftToOriginX: makeEdgeToOriginGetter(\n { // property names\n origin: 'originX',\n axis1: 'x1',\n axis2: 'x2',\n dimension: 'width'\n },\n { // possible values of origin\n nearest: 'left',\n center: 'center',\n farthest: 'right'\n }\n ),\n\n /**\n * @private\n * @return {Number} topToOriginY Distance from top edge of canvas to originY of Line.\n */\n _getTopToOriginY: makeEdgeToOriginGetter(\n { // property names\n origin: 'originY',\n axis1: 'y1',\n axis2: 'y2',\n dimension: 'height'\n },\n { // possible values of origin\n nearest: 'top',\n center: 'center',\n farthest: 'bottom'\n }\n ),\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n\n if (!this.strokeDashArray || this.strokeDashArray && supportsLineDash) {\n // move from center (of virtual box) to its left/top corner\n // we can't assume x1, y1 is top left and x2, y2 is bottom right\n var p = this.calcLinePoints();\n ctx.moveTo(p.x1, p.y1);\n ctx.lineTo(p.x2, p.y2);\n }\n\n ctx.lineWidth = this.strokeWidth;\n\n // TODO: test this\n // make sure setting \"fill\" changes color of a line\n // (by copying fillStyle to strokeStyle, since line is stroked, not filled)\n var origStrokeStyle = ctx.strokeStyle;\n ctx.strokeStyle = this.stroke || ctx.fillStyle;\n this.stroke && this._renderStroke(ctx);\n ctx.strokeStyle = origStrokeStyle;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var p = this.calcLinePoints();\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, p.x1, p.y1, p.x2, p.y2, this.strokeDashArray);\n ctx.closePath();\n },\n\n /**\n * This function is an helper for svg import. it returns the center of the object in the svg\n * untransformed coordinates\n * @private\n * @return {Object} center point from element coordinates\n */\n _findCenterFromElement: function() {\n return {\n x: (this.x1 + this.x2) / 2,\n y: (this.y1 + this.y2) / 2,\n };\n },\n\n /**\n * Returns object representation of an instance\n * @method toObject\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), this.calcLinePoints());\n },\n\n /*\n * Calculate object dimensions from its properties\n * @private\n */\n _getNonTransformedDimensions: function() {\n var dim = this.callSuper('_getNonTransformedDimensions');\n if (this.strokeLineCap === 'butt') {\n if (this.width === 0) {\n dim.y -= this.strokeWidth;\n }\n if (this.height === 0) {\n dim.x -= this.strokeWidth;\n }\n }\n return dim;\n },\n\n /**\n * Recalculates line points given width and height\n * @private\n */\n calcLinePoints: function() {\n var xMult = this.x1 <= this.x2 ? -1 : 1,\n yMult = this.y1 <= this.y2 ? -1 : 1,\n x1 = (xMult * this.width * 0.5),\n y1 = (yMult * this.height * 0.5),\n x2 = (xMult * this.width * -0.5),\n y2 = (yMult * this.height * -0.5);\n\n return {\n x1: x1,\n x2: x2,\n y1: y1,\n y2: y2\n };\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var p = this.calcLinePoints();\n return [\n '\\n'\n ];\n },\n /* _TO_SVG_END_ */\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Line.fromElement})\n * @static\n * @memberOf fabric.Line\n * @see http://www.w3.org/TR/SVG/shapes.html#LineElement\n */\n fabric.Line.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x1 y1 x2 y2'.split(' '));\n\n /**\n * Returns fabric.Line instance from an SVG element\n * @static\n * @memberOf fabric.Line\n * @param {SVGElement} element Element to parse\n * @param {Object} [options] Options object\n * @param {Function} [callback] callback function invoked after parsing\n */\n fabric.Line.fromElement = function(element, callback, options) {\n options = options || { };\n var parsedAttributes = fabric.parseAttributes(element, fabric.Line.ATTRIBUTE_NAMES),\n points = [\n parsedAttributes.x1 || 0,\n parsedAttributes.y1 || 0,\n parsedAttributes.x2 || 0,\n parsedAttributes.y2 || 0\n ];\n callback(new fabric.Line(points, extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Line instance from an object representation\n * @static\n * @memberOf fabric.Line\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n */\n fabric.Line.fromObject = function(object, callback) {\n function _callback(instance) {\n delete instance.points;\n callback && callback(instance);\n };\n var options = clone(object, true);\n options.points = [object.x1, object.y1, object.x2, object.y2];\n fabric.Object._fromObject('Line', options, _callback, 'points');\n };\n\n /**\n * Produces a function that calculates distance from canvas edge to Line origin.\n */\n function makeEdgeToOriginGetter(propertyNames, originValues) {\n var origin = propertyNames.origin,\n axis1 = propertyNames.axis1,\n axis2 = propertyNames.axis2,\n dimension = propertyNames.dimension,\n nearest = originValues.nearest,\n center = originValues.center,\n farthest = originValues.farthest;\n\n return function() {\n switch (this.get(origin)) {\n case nearest:\n return Math.min(this.get(axis1), this.get(axis2));\n case center:\n return Math.min(this.get(axis1), this.get(axis2)) + (0.5 * this.get(dimension));\n case farthest:\n return Math.max(this.get(axis1), this.get(axis2));\n }\n };\n\n }\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n pi = Math.PI;\n\n if (fabric.Circle) {\n fabric.warn('fabric.Circle is already defined.');\n return;\n }\n\n /**\n * Circle class\n * @class fabric.Circle\n * @extends fabric.Object\n * @see {@link fabric.Circle#initialize} for constructor definition\n */\n fabric.Circle = fabric.util.createClass(fabric.Object, /** @lends fabric.Circle.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'circle',\n\n /**\n * Radius of this circle\n * @type Number\n * @default\n */\n radius: 0,\n\n /**\n * Start angle of the circle, moving clockwise\n * deprecated type, this should be in degree, this was an oversight.\n * probably will change to degrees in next major version\n * @type Number\n * @default 0\n */\n startAngle: 0,\n\n /**\n * End angle of the circle\n * deprecated type, this should be in degree, this was an oversight.\n * probably will change to degrees in next major version\n * @type Number\n * @default 2Pi\n */\n endAngle: pi * 2,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('radius', 'startAngle', 'endAngle'),\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Circle} thisArg\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n\n if (key === 'radius') {\n this.setRadius(value);\n }\n\n return this;\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['radius', 'startAngle', 'endAngle'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var svgString, x = 0, y = 0,\n angle = (this.endAngle - this.startAngle) % ( 2 * pi);\n\n if (angle === 0) {\n svgString = [\n '\\n'\n ];\n }\n else {\n var startX = fabric.util.cos(this.startAngle) * this.radius,\n startY = fabric.util.sin(this.startAngle) * this.radius,\n endX = fabric.util.cos(this.endAngle) * this.radius,\n endY = fabric.util.sin(this.endAngle) * this.radius,\n largeFlag = angle > pi ? '1' : '0';\n svgString = [\n '\\n'\n ];\n }\n return svgString;\n },\n /* _TO_SVG_END_ */\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n ctx.arc(\n 0,\n 0,\n this.radius,\n this.startAngle,\n this.endAngle, false);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Returns horizontal radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRadiusX: function() {\n return this.get('radius') * this.get('scaleX');\n },\n\n /**\n * Returns vertical radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRadiusY: function() {\n return this.get('radius') * this.get('scaleY');\n },\n\n /**\n * Sets radius of an object (and updates width accordingly)\n * @return {fabric.Circle} thisArg\n */\n setRadius: function(value) {\n this.radius = value;\n return this.set('width', value * 2).set('height', value * 2);\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Circle.fromElement})\n * @static\n * @memberOf fabric.Circle\n * @see: http://www.w3.org/TR/SVG/shapes.html#CircleElement\n */\n fabric.Circle.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy r'.split(' '));\n\n /**\n * Returns {@link fabric.Circle} instance from an SVG element\n * @static\n * @memberOf fabric.Circle\n * @param {SVGElement} element Element to parse\n * @param {Function} [callback] Options callback invoked after parsing is finished\n * @param {Object} [options] Options object\n * @throws {Error} If value of `r` attribute is missing or invalid\n */\n fabric.Circle.fromElement = function(element, callback) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Circle.ATTRIBUTE_NAMES);\n\n if (!isValidRadius(parsedAttributes)) {\n throw new Error('value of `r` attribute is required and can not be negative');\n }\n\n parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.radius;\n parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.radius;\n callback(new fabric.Circle(parsedAttributes));\n };\n\n /**\n * @private\n */\n function isValidRadius(attributes) {\n return (('radius' in attributes) && (attributes.radius >= 0));\n }\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Circle} instance from an object representation\n * @static\n * @memberOf fabric.Circle\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n * @return {Object} Instance of fabric.Circle\n */\n fabric.Circle.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Circle', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Triangle) {\n fabric.warn('fabric.Triangle is already defined');\n return;\n }\n\n /**\n * Triangle class\n * @class fabric.Triangle\n * @extends fabric.Object\n * @return {fabric.Triangle} thisArg\n * @see {@link fabric.Triangle#initialize} for constructor definition\n */\n fabric.Triangle = fabric.util.createClass(fabric.Object, /** @lends fabric.Triangle.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'triangle',\n\n /**\n * Width is set to 100 to compensate the old initialize code that was setting it to 100\n * @type Number\n * @default\n */\n width: 100,\n\n /**\n * Height is set to 100 to compensate the old initialize code that was setting it to 100\n * @type Number\n * @default\n */\n height: 100,\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2;\n\n ctx.beginPath();\n ctx.moveTo(-widthBy2, heightBy2);\n ctx.lineTo(0, -heightBy2);\n ctx.lineTo(widthBy2, heightBy2);\n ctx.closePath();\n\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2;\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, -widthBy2, heightBy2, 0, -heightBy2, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, 0, -heightBy2, widthBy2, heightBy2, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, widthBy2, heightBy2, -widthBy2, heightBy2, this.strokeDashArray);\n ctx.closePath();\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2,\n points = [\n -widthBy2 + ' ' + heightBy2,\n '0 ' + -heightBy2,\n widthBy2 + ' ' + heightBy2\n ].join(',');\n return [\n ''\n ];\n },\n /* _TO_SVG_END_ */\n });\n\n /**\n * Returns {@link fabric.Triangle} instance from an object representation\n * @static\n * @memberOf fabric.Triangle\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n */\n fabric.Triangle.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Triangle', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n piBy2 = Math.PI * 2;\n\n if (fabric.Ellipse) {\n fabric.warn('fabric.Ellipse is already defined.');\n return;\n }\n\n /**\n * Ellipse class\n * @class fabric.Ellipse\n * @extends fabric.Object\n * @return {fabric.Ellipse} thisArg\n * @see {@link fabric.Ellipse#initialize} for constructor definition\n */\n fabric.Ellipse = fabric.util.createClass(fabric.Object, /** @lends fabric.Ellipse.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'ellipse',\n\n /**\n * Horizontal radius\n * @type Number\n * @default\n */\n rx: 0,\n\n /**\n * Vertical radius\n * @type Number\n * @default\n */\n ry: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @return {fabric.Ellipse} thisArg\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n this.set('rx', options && options.rx || 0);\n this.set('ry', options && options.ry || 0);\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Ellipse} thisArg\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n switch (key) {\n\n case 'rx':\n this.rx = value;\n this.set('width', value * 2);\n break;\n\n case 'ry':\n this.ry = value;\n this.set('height', value * 2);\n break;\n\n }\n return this;\n },\n\n /**\n * Returns horizontal radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRx: function() {\n return this.get('rx') * this.get('scaleX');\n },\n\n /**\n * Returns Vertical radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRy: function() {\n return this.get('ry') * this.get('scaleY');\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n return [\n '\\n'\n ];\n },\n /* _TO_SVG_END_ */\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n ctx.save();\n ctx.transform(1, 0, 0, this.ry / this.rx, 0, 0);\n ctx.arc(\n 0,\n 0,\n this.rx,\n 0,\n piBy2,\n false);\n ctx.restore();\n this._renderPaintInOrder(ctx);\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Ellipse.fromElement})\n * @static\n * @memberOf fabric.Ellipse\n * @see http://www.w3.org/TR/SVG/shapes.html#EllipseElement\n */\n fabric.Ellipse.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy rx ry'.split(' '));\n\n /**\n * Returns {@link fabric.Ellipse} instance from an SVG element\n * @static\n * @memberOf fabric.Ellipse\n * @param {SVGElement} element Element to parse\n * @param {Function} [callback] Options callback invoked after parsing is finished\n * @return {fabric.Ellipse}\n */\n fabric.Ellipse.fromElement = function(element, callback) {\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Ellipse.ATTRIBUTE_NAMES);\n\n parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.rx;\n parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.ry;\n callback(new fabric.Ellipse(parsedAttributes));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Ellipse} instance from an object representation\n * @static\n * @memberOf fabric.Ellipse\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n * @return {fabric.Ellipse}\n */\n fabric.Ellipse.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Ellipse', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend;\n\n if (fabric.Rect) {\n fabric.warn('fabric.Rect is already defined');\n return;\n }\n\n /**\n * Rectangle class\n * @class fabric.Rect\n * @extends fabric.Object\n * @return {fabric.Rect} thisArg\n * @see {@link fabric.Rect#initialize} for constructor definition\n */\n fabric.Rect = fabric.util.createClass(fabric.Object, /** @lends fabric.Rect.prototype */ {\n\n /**\n * List of properties to consider when checking if state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('rx', 'ry'),\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'rect',\n\n /**\n * Horizontal border radius\n * @type Number\n * @default\n */\n rx: 0,\n\n /**\n * Vertical border radius\n * @type Number\n * @default\n */\n ry: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n this._initRxRy();\n },\n\n /**\n * Initializes rx/ry attributes\n * @private\n */\n _initRxRy: function() {\n if (this.rx && !this.ry) {\n this.ry = this.rx;\n }\n else if (this.ry && !this.rx) {\n this.rx = this.ry;\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n\n // 1x1 case (used in spray brush) optimization was removed because\n // with caching and higher zoom level this makes more damage than help\n\n var rx = this.rx ? Math.min(this.rx, this.width / 2) : 0,\n ry = this.ry ? Math.min(this.ry, this.height / 2) : 0,\n w = this.width,\n h = this.height,\n x = -this.width / 2,\n y = -this.height / 2,\n isRounded = rx !== 0 || ry !== 0,\n /* \"magic number\" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */\n k = 1 - 0.5522847498;\n ctx.beginPath();\n\n ctx.moveTo(x + rx, y);\n\n ctx.lineTo(x + w - rx, y);\n isRounded && ctx.bezierCurveTo(x + w - k * rx, y, x + w, y + k * ry, x + w, y + ry);\n\n ctx.lineTo(x + w, y + h - ry);\n isRounded && ctx.bezierCurveTo(x + w, y + h - k * ry, x + w - k * rx, y + h, x + w - rx, y + h);\n\n ctx.lineTo(x + rx, y + h);\n isRounded && ctx.bezierCurveTo(x + k * rx, y + h, x, y + h - k * ry, x, y + h - ry);\n\n ctx.lineTo(x, y + ry);\n isRounded && ctx.bezierCurveTo(x, y + k * ry, x + k * rx, y, x + rx, y);\n\n ctx.closePath();\n\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var x = -this.width / 2,\n y = -this.height / 2,\n w = this.width,\n h = this.height;\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray);\n ctx.closePath();\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var x = -this.width / 2, y = -this.height / 2;\n return [\n '\\n'\n ];\n },\n /* _TO_SVG_END_ */\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Rect.fromElement`)\n * @static\n * @memberOf fabric.Rect\n * @see: http://www.w3.org/TR/SVG/shapes.html#RectElement\n */\n fabric.Rect.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x y rx ry width height'.split(' '));\n\n /**\n * Returns {@link fabric.Rect} instance from an SVG element\n * @static\n * @memberOf fabric.Rect\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Rect.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n options = options || { };\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Rect.ATTRIBUTE_NAMES);\n parsedAttributes.left = parsedAttributes.left || 0;\n parsedAttributes.top = parsedAttributes.top || 0;\n parsedAttributes.height = parsedAttributes.height || 0;\n parsedAttributes.width = parsedAttributes.width || 0;\n var rect = new fabric.Rect(extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes));\n rect.visible = rect.visible && rect.width > 0 && rect.height > 0;\n callback(rect);\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Rect} instance from an object representation\n * @static\n * @memberOf fabric.Rect\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Rect instance is created\n */\n fabric.Rect.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Rect', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n min = fabric.util.array.min,\n max = fabric.util.array.max,\n toFixed = fabric.util.toFixed;\n\n if (fabric.Polyline) {\n fabric.warn('fabric.Polyline is already defined');\n return;\n }\n\n /**\n * Polyline class\n * @class fabric.Polyline\n * @extends fabric.Object\n * @see {@link fabric.Polyline#initialize} for constructor definition\n */\n fabric.Polyline = fabric.util.createClass(fabric.Object, /** @lends fabric.Polyline.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'polyline',\n\n /**\n * Points array\n * @type Array\n * @default\n */\n points: null,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('points'),\n\n /**\n * Constructor\n * @param {Array} points Array of points (where each point is an object with x and y)\n * @param {Object} [options] Options object\n * @return {fabric.Polyline} thisArg\n * @example\n * var poly = new fabric.Polyline([\n * { x: 10, y: 10 },\n * { x: 50, y: 30 },\n * { x: 40, y: 70 },\n * { x: 60, y: 50 },\n * { x: 100, y: 150 },\n * { x: 40, y: 100 }\n * ], {\n * stroke: 'red',\n * left: 100,\n * top: 100\n * });\n */\n initialize: function(points, options) {\n options = options || {};\n this.points = points || [];\n this.callSuper('initialize', options);\n this._setPositionDimensions(options);\n },\n\n _setPositionDimensions: function(options) {\n var calcDim = this._calcDimensions(options), correctLeftTop;\n this.width = calcDim.width;\n this.height = calcDim.height;\n if (!options.fromSVG) {\n correctLeftTop = this.translateToGivenOrigin(\n { x: calcDim.left - this.strokeWidth / 2, y: calcDim.top - this.strokeWidth / 2 },\n 'left',\n 'top',\n this.originX,\n this.originY\n );\n }\n if (typeof options.left === 'undefined') {\n this.left = options.fromSVG ? calcDim.left : correctLeftTop.x;\n }\n if (typeof options.top === 'undefined') {\n this.top = options.fromSVG ? calcDim.top : correctLeftTop.y;\n }\n this.pathOffset = {\n x: calcDim.left + this.width / 2,\n y: calcDim.top + this.height / 2\n };\n },\n\n /**\n * Calculate the polygon min and max point from points array,\n * returning an object with left, top, width, height to measure the\n * polygon size\n * @return {Object} object.left X coordinate of the polygon leftmost point\n * @return {Object} object.top Y coordinate of the polygon topmost point\n * @return {Object} object.width distance between X coordinates of the polygon leftmost and rightmost point\n * @return {Object} object.height distance between Y coordinates of the polygon topmost and bottommost point\n * @private\n */\n _calcDimensions: function() {\n\n var points = this.points,\n minX = min(points, 'x') || 0,\n minY = min(points, 'y') || 0,\n maxX = max(points, 'x') || 0,\n maxY = max(points, 'y') || 0,\n width = (maxX - minX),\n height = (maxY - minY);\n\n return {\n left: minX,\n top: minY,\n width: width,\n height: height\n };\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), {\n points: this.points.concat()\n });\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var points = [], diffX = this.pathOffset.x, diffY = this.pathOffset.y,\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n\n for (var i = 0, len = this.points.length; i < len; i++) {\n points.push(\n toFixed(this.points[i].x - diffX, NUM_FRACTION_DIGITS), ',',\n toFixed(this.points[i].y - diffY, NUM_FRACTION_DIGITS), ' '\n );\n }\n return [\n '<' + this.type + ' ', 'COMMON_PARTS',\n 'points=\"', points.join(''),\n '\" />\\n'\n ];\n },\n /* _TO_SVG_END_ */\n\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n commonRender: function(ctx) {\n var point, len = this.points.length,\n x = this.pathOffset.x,\n y = this.pathOffset.y;\n\n if (!len || isNaN(this.points[len - 1].y)) {\n // do not draw if no points or odd points\n // NaN comes from parseFloat of a empty string in parser\n return false;\n }\n ctx.beginPath();\n ctx.moveTo(this.points[0].x - x, this.points[0].y - y);\n for (var i = 0; i < len; i++) {\n point = this.points[i];\n ctx.lineTo(point.x - x, point.y - y);\n }\n return true;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (!this.commonRender(ctx)) {\n return;\n }\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var p1, p2;\n\n ctx.beginPath();\n for (var i = 0, len = this.points.length; i < len; i++) {\n p1 = this.points[i];\n p2 = this.points[i + 1] || p1;\n fabric.util.drawDashedLine(ctx, p1.x, p1.y, p2.x, p2.y, this.strokeDashArray);\n }\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity of this instance\n */\n complexity: function() {\n return this.get('points').length;\n }\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Polyline.fromElement})\n * @static\n * @memberOf fabric.Polyline\n * @see: http://www.w3.org/TR/SVG/shapes.html#PolylineElement\n */\n fabric.Polyline.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat();\n\n /**\n * Returns fabric.Polyline instance from an SVG element\n * @static\n * @memberOf fabric.Polyline\n * @param {SVGElement} element Element to parser\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Polyline.fromElementGenerator = function(_class) {\n return function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n options || (options = { });\n\n var points = fabric.parsePointsAttribute(element.getAttribute('points')),\n parsedAttributes = fabric.parseAttributes(element, fabric[_class].ATTRIBUTE_NAMES);\n parsedAttributes.fromSVG = true;\n callback(new fabric[_class](points, extend(parsedAttributes, options)));\n };\n };\n\n fabric.Polyline.fromElement = fabric.Polyline.fromElementGenerator('Polyline');\n\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Polyline instance from an object representation\n * @static\n * @memberOf fabric.Polyline\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Polyline.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Polyline', object, callback, 'points');\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Polygon) {\n fabric.warn('fabric.Polygon is already defined');\n return;\n }\n\n /**\n * Polygon class\n * @class fabric.Polygon\n * @extends fabric.Polyline\n * @see {@link fabric.Polygon#initialize} for constructor definition\n */\n fabric.Polygon = fabric.util.createClass(fabric.Polyline, /** @lends fabric.Polygon.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'polygon',\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (!this.commonRender(ctx)) {\n return;\n }\n ctx.closePath();\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n this.callSuper('_renderDashedStroke', ctx);\n ctx.closePath();\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Polygon.fromElement`)\n * @static\n * @memberOf fabric.Polygon\n * @see: http://www.w3.org/TR/SVG/shapes.html#PolygonElement\n */\n fabric.Polygon.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat();\n\n /**\n * Returns {@link fabric.Polygon} instance from an SVG element\n * @static\n * @memberOf fabric.Polygon\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Polygon.fromElement = fabric.Polyline.fromElementGenerator('Polygon');\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Polygon instance from an object representation\n * @static\n * @memberOf fabric.Polygon\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Polygon.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Polygon', object, callback, 'points');\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n min = fabric.util.array.min,\n max = fabric.util.array.max,\n extend = fabric.util.object.extend,\n _toString = Object.prototype.toString,\n toFixed = fabric.util.toFixed;\n\n if (fabric.Path) {\n fabric.warn('fabric.Path is already defined');\n return;\n }\n\n /**\n * Path class\n * @class fabric.Path\n * @extends fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#path_and_pathgroup}\n * @see {@link fabric.Path#initialize} for constructor definition\n */\n fabric.Path = fabric.util.createClass(fabric.Object, /** @lends fabric.Path.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'path',\n\n /**\n * Array of path points\n * @type Array\n * @default\n */\n path: null,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('path', 'fillRule'),\n\n stateProperties: fabric.Object.prototype.stateProperties.concat('path'),\n\n /**\n * Constructor\n * @param {Array|String} path Path data (sequence of coordinates and corresponding \"command\" tokens)\n * @param {Object} [options] Options object\n * @return {fabric.Path} thisArg\n */\n initialize: function(path, options) {\n options = options || { };\n this.callSuper('initialize', options);\n if (!path) {\n path = [];\n }\n\n var fromArray = _toString.call(path) === '[object Array]';\n\n this.path = fromArray\n ? fabric.util.makePathSimpler(path)\n\n : fabric.util.makePathSimpler(\n fabric.util.parsePath(path)\n );\n\n if (!this.path) {\n return;\n }\n fabric.Polyline.prototype._setPositionDimensions.call(this, options);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render path on\n */\n _renderPathCommands: function(ctx) {\n var current, // current instruction\n subpathStartX = 0,\n subpathStartY = 0,\n x = 0, // current x\n y = 0, // current y\n controlX = 0, // current control point x\n controlY = 0, // current control point y\n l = -this.pathOffset.x,\n t = -this.pathOffset.y;\n\n ctx.beginPath();\n\n for (var i = 0, len = this.path.length; i < len; ++i) {\n\n current = this.path[i];\n\n switch (current[0]) { // first letter\n\n case 'L': // lineto, absolute\n x = current[1];\n y = current[2];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1];\n y = current[2];\n subpathStartX = x;\n subpathStartY = y;\n ctx.moveTo(x + l, y + t);\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5];\n y = current[6];\n controlX = current[3];\n controlY = current[4];\n ctx.bezierCurveTo(\n current[1] + l,\n current[2] + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n ctx.quadraticCurveTo(\n current[1] + l,\n current[2] + t,\n current[3] + l,\n current[4] + t\n );\n x = current[3];\n y = current[4];\n controlX = current[1];\n controlY = current[2];\n break;\n\n case 'z':\n case 'Z':\n x = subpathStartX;\n y = subpathStartY;\n ctx.closePath();\n break;\n }\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render path on\n */\n _render: function(ctx) {\n this._renderPathCommands(ctx);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} string representation of an instance\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), {\n path: this.path.map(function(item) { return item.slice(); }),\n });\n },\n\n /**\n * Returns dataless object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n var o = this.toObject(['sourcePath'].concat(propertiesToInclude));\n if (o.sourcePath) {\n delete o.path;\n }\n return o;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var path = this.path.map(function(path) {\n return path.join(' ');\n }).join(' ');\n return [\n '\\n'\n ];\n },\n\n _getOffsetTransform: function() {\n var digits = fabric.Object.NUM_FRACTION_DIGITS;\n return ' translate(' + toFixed(-this.pathOffset.x, digits) + ', ' +\n toFixed(-this.pathOffset.y, digits) + ')';\n },\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG: function(reviver) {\n var additionalTransform = this._getOffsetTransform();\n return '\\t' + this._createBaseClipPathSVGMarkup(\n this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform }\n );\n },\n\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var additionalTransform = this._getOffsetTransform();\n return this._createBaseSVGMarkup(this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform });\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns number representation of an instance complexity\n * @return {Number} complexity of this instance\n */\n complexity: function() {\n return this.path.length;\n },\n\n /**\n * @private\n */\n _calcDimensions: function() {\n\n var aX = [],\n aY = [],\n current, // current instruction\n subpathStartX = 0,\n subpathStartY = 0,\n x = 0, // current x\n y = 0, // current y\n bounds;\n\n for (var i = 0, len = this.path.length; i < len; ++i) {\n\n current = this.path[i];\n\n switch (current[0]) { // first letter\n\n case 'L': // lineto, absolute\n x = current[1];\n y = current[2];\n bounds = [];\n break;\n\n case 'M': // moveTo, absolute\n x = current[1];\n y = current[2];\n subpathStartX = x;\n subpathStartY = y;\n bounds = [];\n break;\n\n case 'C': // bezierCurveTo, absolute\n bounds = fabric.util.getBoundsOfCurve(x, y,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6]\n );\n x = current[5];\n y = current[6];\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n bounds = fabric.util.getBoundsOfCurve(x, y,\n current[1],\n current[2],\n current[1],\n current[2],\n current[3],\n current[4]\n );\n x = current[3];\n y = current[4];\n break;\n\n case 'z':\n case 'Z':\n x = subpathStartX;\n y = subpathStartY;\n break;\n }\n bounds.forEach(function (point) {\n aX.push(point.x);\n aY.push(point.y);\n });\n aX.push(x);\n aY.push(y);\n }\n\n var minX = min(aX) || 0,\n minY = min(aY) || 0,\n maxX = max(aX) || 0,\n maxY = max(aY) || 0,\n deltaX = maxX - minX,\n deltaY = maxY - minY;\n\n return {\n left: minX,\n top: minY,\n width: deltaX,\n height: deltaY\n };\n }\n });\n\n /**\n * Creates an instance of fabric.Path from an object\n * @static\n * @memberOf fabric.Path\n * @param {Object} object\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Path.fromObject = function(object, callback) {\n if (typeof object.sourcePath === 'string') {\n var pathUrl = object.sourcePath;\n fabric.loadSVGFromURL(pathUrl, function (elements) {\n var path = elements[0];\n path.setOptions(object);\n callback && callback(path);\n });\n }\n else {\n fabric.Object._fromObject('Path', object, callback, 'path');\n }\n };\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Path.fromElement`)\n * @static\n * @memberOf fabric.Path\n * @see http://www.w3.org/TR/SVG/paths.html#PathElement\n */\n fabric.Path.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(['d']);\n\n /**\n * Creates an instance of fabric.Path from an SVG element\n * @static\n * @memberOf fabric.Path\n * @param {SVGElement} element to parse\n * @param {Function} callback Callback to invoke when an fabric.Path instance is created\n * @param {Object} [options] Options object\n * @param {Function} [callback] Options callback invoked after parsing is finished\n */\n fabric.Path.fromElement = function(element, callback, options) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Path.ATTRIBUTE_NAMES);\n parsedAttributes.fromSVG = true;\n callback(new fabric.Path(parsedAttributes.d, extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n min = fabric.util.array.min,\n max = fabric.util.array.max;\n\n if (fabric.Group) {\n return;\n }\n\n /**\n * Group class\n * @class fabric.Group\n * @extends fabric.Object\n * @mixes fabric.Collection\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}\n * @see {@link fabric.Group#initialize} for constructor definition\n */\n fabric.Group = fabric.util.createClass(fabric.Object, fabric.Collection, /** @lends fabric.Group.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'group',\n\n /**\n * Width of stroke\n * @type Number\n * @default\n */\n strokeWidth: 0,\n\n /**\n * Indicates if click, mouseover, mouseout events & hoverCursor should also check for subtargets\n * @type Boolean\n * @default\n */\n subTargetCheck: false,\n\n /**\n * Groups are container, do not render anything on theyr own, ence no cache properties\n * @type Array\n * @default\n */\n cacheProperties: [],\n\n /**\n * setOnGroup is a method used for TextBox that is no more used since 2.0.0 The behavior is still\n * available setting this boolean to true.\n * @type Boolean\n * @since 2.0.0\n * @default\n */\n useSetOnGroup: false,\n\n /**\n * Constructor\n * @param {Object} objects Group objects\n * @param {Object} [options] Options object\n * @param {Boolean} [isAlreadyGrouped] if true, objects have been grouped already.\n * @return {Object} thisArg\n */\n initialize: function(objects, options, isAlreadyGrouped) {\n options = options || {};\n this._objects = [];\n // if objects enclosed in a group have been grouped already,\n // we cannot change properties of objects.\n // Thus we need to set options to group without objects,\n isAlreadyGrouped && this.callSuper('initialize', options);\n this._objects = objects || [];\n for (var i = this._objects.length; i--; ) {\n this._objects[i].group = this;\n }\n\n if (!isAlreadyGrouped) {\n var center = options && options.centerPoint;\n // we want to set origins before calculating the bounding box.\n // so that the topleft can be set with that in mind.\n // if specific top and left are passed, are overwritten later\n // with the callSuper('initialize', options)\n if (options.originX !== undefined) {\n this.originX = options.originX;\n }\n if (options.originY !== undefined) {\n this.originY = options.originY;\n }\n // if coming from svg i do not want to calc bounds.\n // i assume width and height are passed along options\n center || this._calcBounds();\n this._updateObjectsCoords(center);\n delete options.centerPoint;\n this.callSuper('initialize', options);\n }\n else {\n this._updateObjectsACoords();\n }\n\n this.setCoords();\n },\n\n /**\n * @private\n */\n _updateObjectsACoords: function() {\n var skipControls = true;\n for (var i = this._objects.length; i--; ){\n this._objects[i].setCoords(skipControls);\n }\n },\n\n /**\n * @private\n * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change\n */\n _updateObjectsCoords: function(center) {\n var center = center || this.getCenterPoint();\n for (var i = this._objects.length; i--; ){\n this._updateObjectCoords(this._objects[i], center);\n }\n },\n\n /**\n * @private\n * @param {Object} object\n * @param {fabric.Point} center, current center of group.\n */\n _updateObjectCoords: function(object, center) {\n var objectLeft = object.left,\n objectTop = object.top,\n skipControls = true;\n\n object.set({\n left: objectLeft - center.x,\n top: objectTop - center.y\n });\n object.group = this;\n object.setCoords(skipControls);\n },\n\n /**\n * Returns string represenation of a group\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Adds an object to a group; Then recalculates group's dimension, position.\n * @param {Object} object\n * @return {fabric.Group} thisArg\n * @chainable\n */\n addWithUpdate: function(object) {\n var nested = !!this.group;\n this._restoreObjectsState();\n fabric.util.resetObjectTransform(this);\n if (object) {\n if (nested) {\n // if this group is inside another group, we need to pre transform the object\n fabric.util.removeTransformFromObject(object, this.group.calcTransformMatrix());\n }\n this._objects.push(object);\n object.group = this;\n object._set('canvas', this.canvas);\n }\n this._calcBounds();\n this._updateObjectsCoords();\n this.dirty = true;\n if (nested) {\n this.group.addWithUpdate();\n }\n else {\n this.setCoords();\n }\n return this;\n },\n\n /**\n * Removes an object from a group; Then recalculates group's dimension, position.\n * @param {Object} object\n * @return {fabric.Group} thisArg\n * @chainable\n */\n removeWithUpdate: function(object) {\n this._restoreObjectsState();\n fabric.util.resetObjectTransform(this);\n\n this.remove(object);\n this._calcBounds();\n this._updateObjectsCoords();\n this.setCoords();\n this.dirty = true;\n return this;\n },\n\n /**\n * @private\n */\n _onObjectAdded: function(object) {\n this.dirty = true;\n object.group = this;\n object._set('canvas', this.canvas);\n },\n\n /**\n * @private\n */\n _onObjectRemoved: function(object) {\n this.dirty = true;\n delete object.group;\n },\n\n /**\n * @private\n */\n _set: function(key, value) {\n var i = this._objects.length;\n if (this.useSetOnGroup) {\n while (i--) {\n this._objects[i].setOnGroup(key, value);\n }\n }\n if (key === 'canvas') {\n while (i--) {\n this._objects[i]._set(key, value);\n }\n }\n fabric.Object.prototype._set.call(this, key, value);\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var _includeDefaultValues = this.includeDefaultValues;\n var objsToObject = this._objects.map(function(obj) {\n var originalDefaults = obj.includeDefaultValues;\n obj.includeDefaultValues = _includeDefaultValues;\n var _obj = obj.toObject(propertiesToInclude);\n obj.includeDefaultValues = originalDefaults;\n return _obj;\n });\n var obj = fabric.Object.prototype.toObject.call(this, propertiesToInclude);\n obj.objects = objsToObject;\n return obj;\n },\n\n /**\n * Returns object representation of an instance, in dataless mode.\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n var objsToObject, sourcePath = this.sourcePath;\n if (sourcePath) {\n objsToObject = sourcePath;\n }\n else {\n var _includeDefaultValues = this.includeDefaultValues;\n objsToObject = this._objects.map(function(obj) {\n var originalDefaults = obj.includeDefaultValues;\n obj.includeDefaultValues = _includeDefaultValues;\n var _obj = obj.toDatalessObject(propertiesToInclude);\n obj.includeDefaultValues = originalDefaults;\n return _obj;\n });\n }\n var obj = fabric.Object.prototype.toDatalessObject.call(this, propertiesToInclude);\n obj.objects = objsToObject;\n return obj;\n },\n\n /**\n * Renders instance on a given context\n * @param {CanvasRenderingContext2D} ctx context to render instance on\n */\n render: function(ctx) {\n this._transformDone = true;\n this.callSuper('render', ctx);\n this._transformDone = false;\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group is already cached.\n * @return {Boolean}\n */\n shouldCache: function() {\n var ownCache = fabric.Object.prototype.shouldCache.call(this);\n if (ownCache) {\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].willDrawShadow()) {\n this.ownCaching = false;\n return false;\n }\n }\n }\n return ownCache;\n },\n\n /**\n * Check if this object or a child object will cast a shadow\n * @return {Boolean}\n */\n willDrawShadow: function() {\n if (fabric.Object.prototype.willDrawShadow.call(this)) {\n return true;\n }\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].willDrawShadow()) {\n return true;\n }\n }\n return false;\n },\n\n /**\n * Check if this group or its parent group are caching, recursively up\n * @return {Boolean}\n */\n isOnACache: function() {\n return this.ownCaching || (this.group && this.group.isOnACache());\n },\n\n /**\n * Execute the drawing operation for an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawObject: function(ctx) {\n for (var i = 0, len = this._objects.length; i < len; i++) {\n this._objects[i].render(ctx);\n }\n this._drawClipPath(ctx);\n },\n\n /**\n * Check if cache is dirty\n */\n isCacheDirty: function(skipCanvas) {\n if (this.callSuper('isCacheDirty', skipCanvas)) {\n return true;\n }\n if (!this.statefullCache) {\n return false;\n }\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].isCacheDirty(true)) {\n if (this._cacheCanvas) {\n // if this group has not a cache canvas there is nothing to clean\n var x = this.cacheWidth / this.zoomX, y = this.cacheHeight / this.zoomY;\n this._cacheContext.clearRect(-x / 2, -y / 2, x, y);\n }\n return true;\n }\n }\n return false;\n },\n\n /**\n * Restores original state of each of group objects (original state is that which was before group was created).\n * if the nested boolean is true, the original state will be restored just for the\n * first group and not for all the group chain\n * @private\n * @param {Boolean} nested tell the function to restore object state up to the parent group and not more\n * @return {fabric.Group} thisArg\n * @chainable\n */\n _restoreObjectsState: function() {\n var groupMatrix = this.calcOwnMatrix();\n this._objects.forEach(function(object) {\n // instead of using _this = this;\n fabric.util.addTransformToObject(object, groupMatrix);\n delete object.group;\n object.setCoords();\n });\n return this;\n },\n\n /**\n * Realises the transform from this group onto the supplied object\n * i.e. it tells you what would happen if the supplied object was in\n * the group, and then the group was destroyed. It mutates the supplied\n * object.\n * Warning: this method is not useful anymore, it has been kept to no break the api.\n * is not used in the fabricJS codebase\n * this method will be reduced to using the utility.\n * @private\n * @deprecated\n * @param {fabric.Object} object\n * @param {Array} parentMatrix parent transformation\n * @return {fabric.Object} transformedObject\n */\n realizeTransform: function(object, parentMatrix) {\n fabric.util.addTransformToObject(object, parentMatrix);\n return object;\n },\n\n /**\n * Destroys a group (restoring state of its objects)\n * @return {fabric.Group} thisArg\n * @chainable\n */\n destroy: function() {\n // when group is destroyed objects needs to get a repaint to be eventually\n // displayed on canvas.\n this._objects.forEach(function(object) {\n object.set('dirty', true);\n });\n return this._restoreObjectsState();\n },\n\n /**\n * make a group an active selection, remove the group from canvas\n * the group has to be on canvas for this to work.\n * @return {fabric.ActiveSelection} thisArg\n * @chainable\n */\n toActiveSelection: function() {\n if (!this.canvas) {\n return;\n }\n var objects = this._objects, canvas = this.canvas;\n this._objects = [];\n var options = this.toObject();\n delete options.objects;\n var activeSelection = new fabric.ActiveSelection([]);\n activeSelection.set(options);\n activeSelection.type = 'activeSelection';\n canvas.remove(this);\n objects.forEach(function(object) {\n object.group = activeSelection;\n object.dirty = true;\n canvas.add(object);\n });\n activeSelection.canvas = canvas;\n activeSelection._objects = objects;\n canvas._activeObject = activeSelection;\n activeSelection.setCoords();\n return activeSelection;\n },\n\n /**\n * Destroys a group (restoring state of its objects)\n * @return {fabric.Group} thisArg\n * @chainable\n */\n ungroupOnCanvas: function() {\n return this._restoreObjectsState();\n },\n\n /**\n * Sets coordinates of all objects inside group\n * @return {fabric.Group} thisArg\n * @chainable\n */\n setObjectsCoords: function() {\n var skipControls = true;\n this.forEachObject(function(object) {\n object.setCoords(skipControls);\n });\n return this;\n },\n\n /**\n * @private\n */\n _calcBounds: function(onlyWidthHeight) {\n var aX = [],\n aY = [],\n o, prop, coords,\n props = ['tr', 'br', 'bl', 'tl'],\n i = 0, iLen = this._objects.length,\n j, jLen = props.length;\n\n for ( ; i < iLen; ++i) {\n o = this._objects[i];\n coords = o.calcACoords();\n for (j = 0; j < jLen; j++) {\n prop = props[j];\n aX.push(coords[prop].x);\n aY.push(coords[prop].y);\n }\n o.aCoords = coords;\n }\n\n this._getBounds(aX, aY, onlyWidthHeight);\n },\n\n /**\n * @private\n */\n _getBounds: function(aX, aY, onlyWidthHeight) {\n var minXY = new fabric.Point(min(aX), min(aY)),\n maxXY = new fabric.Point(max(aX), max(aY)),\n top = minXY.y || 0, left = minXY.x || 0,\n width = (maxXY.x - minXY.x) || 0,\n height = (maxXY.y - minXY.y) || 0;\n this.width = width;\n this.height = height;\n if (!onlyWidthHeight) {\n // the bounding box always finds the topleft most corner.\n // whatever is the group origin, we set up here the left/top position.\n this.setPositionByOrigin({ x: left, y: top }, 'left', 'top');\n }\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n _toSVG: function(reviver) {\n var svgString = ['\\n'];\n\n for (var i = 0, len = this._objects.length; i < len; i++) {\n svgString.push('\\t\\t', this._objects[i].toSVG(reviver));\n }\n svgString.push('\\n');\n return svgString;\n },\n\n /**\n * Returns styles-string for svg-export, specific version for group\n * @return {String}\n */\n getSvgStyles: function() {\n var opacity = typeof this.opacity !== 'undefined' && this.opacity !== 1 ?\n 'opacity: ' + this.opacity + ';' : '',\n visibility = this.visible ? '' : ' visibility: hidden;';\n return [\n opacity,\n this.getSvgFilter(),\n visibility\n ].join('');\n },\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG: function(reviver) {\n var svgString = [];\n\n for (var i = 0, len = this._objects.length; i < len; i++) {\n svgString.push('\\t', this._objects[i].toClipPathSVG(reviver));\n }\n\n return this._createBaseClipPathSVGMarkup(svgString, { reviver: reviver });\n },\n /* _TO_SVG_END_ */\n });\n\n /**\n * Returns {@link fabric.Group} instance from an object representation\n * @static\n * @memberOf fabric.Group\n * @param {Object} object Object to create a group from\n * @param {Function} [callback] Callback to invoke when an group instance is created\n */\n fabric.Group.fromObject = function(object, callback) {\n var objects = object.objects,\n options = fabric.util.object.clone(object, true);\n delete options.objects;\n if (typeof objects === 'string') {\n // it has to be an url or something went wrong.\n fabric.loadSVGFromURL(objects, function (elements) {\n var group = fabric.util.groupSVGElements(elements, object, objects);\n group.set(options);\n callback && callback(group);\n });\n return;\n }\n fabric.util.enlivenObjects(objects, function(enlivenedObjects) {\n fabric.util.enlivenObjects([object.clipPath], function(enlivedClipPath) {\n var options = fabric.util.object.clone(object, true);\n options.clipPath = enlivedClipPath[0];\n delete options.objects;\n callback && callback(new fabric.Group(enlivenedObjects, options, true));\n });\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.ActiveSelection) {\n return;\n }\n\n /**\n * Group class\n * @class fabric.ActiveSelection\n * @extends fabric.Group\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}\n * @see {@link fabric.ActiveSelection#initialize} for constructor definition\n */\n fabric.ActiveSelection = fabric.util.createClass(fabric.Group, /** @lends fabric.ActiveSelection.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'activeSelection',\n\n /**\n * Constructor\n * @param {Object} objects ActiveSelection objects\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(objects, options) {\n options = options || {};\n this._objects = objects || [];\n for (var i = this._objects.length; i--; ) {\n this._objects[i].group = this;\n }\n\n if (options.originX) {\n this.originX = options.originX;\n }\n if (options.originY) {\n this.originY = options.originY;\n }\n this._calcBounds();\n this._updateObjectsCoords();\n fabric.Object.prototype.initialize.call(this, options);\n this.setCoords();\n },\n\n /**\n * Change te activeSelection to a normal group,\n * High level function that automatically adds it to canvas as\n * active object. no events fired.\n * @since 2.0.0\n * @return {fabric.Group}\n */\n toGroup: function() {\n var objects = this._objects.concat();\n this._objects = [];\n var options = fabric.Object.prototype.toObject.call(this);\n var newGroup = new fabric.Group([]);\n delete options.type;\n newGroup.set(options);\n objects.forEach(function(object) {\n object.canvas.remove(object);\n object.group = newGroup;\n });\n newGroup._objects = objects;\n if (!this.canvas) {\n return newGroup;\n }\n var canvas = this.canvas;\n canvas.add(newGroup);\n canvas._activeObject = newGroup;\n newGroup.setCoords();\n return newGroup;\n },\n\n /**\n * If returns true, deselection is cancelled.\n * @since 2.0.0\n * @return {Boolean} [cancel]\n */\n onDeselect: function() {\n this.destroy();\n return false;\n },\n\n /**\n * Returns string representation of a group\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * @return {Boolean}\n */\n shouldCache: function() {\n return false;\n },\n\n /**\n * Check if this group or its parent group are caching, recursively up\n * @return {Boolean}\n */\n isOnACache: function() {\n return false;\n },\n\n /**\n * Renders controls and borders for the object\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [styleOverride] properties to override the object style\n * @param {Object} [childrenOverride] properties to override the children overrides\n */\n _renderControls: function(ctx, styleOverride, childrenOverride) {\n ctx.save();\n ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;\n this.callSuper('_renderControls', ctx, styleOverride);\n childrenOverride = childrenOverride || { };\n if (typeof childrenOverride.hasControls === 'undefined') {\n childrenOverride.hasControls = false;\n }\n childrenOverride.forActiveSelection = true;\n for (var i = 0, len = this._objects.length; i < len; i++) {\n this._objects[i]._renderControls(ctx, childrenOverride);\n }\n ctx.restore();\n },\n });\n\n /**\n * Returns {@link fabric.ActiveSelection} instance from an object representation\n * @static\n * @memberOf fabric.ActiveSelection\n * @param {Object} object Object to create a group from\n * @param {Function} [callback] Callback to invoke when an ActiveSelection instance is created\n */\n fabric.ActiveSelection.fromObject = function(object, callback) {\n fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) {\n delete object.objects;\n callback && callback(new fabric.ActiveSelection(enlivenedObjects, object, true));\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var extend = fabric.util.object.extend;\n\n if (!global.fabric) {\n global.fabric = { };\n }\n\n if (global.fabric.Image) {\n fabric.warn('fabric.Image is already defined.');\n return;\n }\n\n /**\n * Image class\n * @class fabric.Image\n * @extends fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#images}\n * @see {@link fabric.Image#initialize} for constructor definition\n */\n fabric.Image = fabric.util.createClass(fabric.Object, /** @lends fabric.Image.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'image',\n\n /**\n * Width of a stroke.\n * For image quality a stroke multiple of 2 gives better results.\n * @type Number\n * @default\n */\n strokeWidth: 0,\n\n /**\n * When calling {@link fabric.Image.getSrc}, return value from element src with `element.getAttribute('src')`.\n * This allows for relative urls as image src.\n * @since 2.7.0\n * @type Boolean\n * @default\n */\n srcFromAttribute: false,\n\n /**\n * private\n * contains last value of scaleX to detect\n * if the Image got resized after the last Render\n * @type Number\n */\n _lastScaleX: 1,\n\n /**\n * private\n * contains last value of scaleY to detect\n * if the Image got resized after the last Render\n * @type Number\n */\n _lastScaleY: 1,\n\n /**\n * private\n * contains last value of scaling applied by the apply filter chain\n * @type Number\n */\n _filterScalingX: 1,\n\n /**\n * private\n * contains last value of scaling applied by the apply filter chain\n * @type Number\n */\n _filterScalingY: 1,\n\n /**\n * minimum scale factor under which any resizeFilter is triggered to resize the image\n * 0 will disable the automatic resize. 1 will trigger automatically always.\n * number bigger than 1 are not implemented yet.\n * @type Number\n */\n minimumScaleTrigger: 0.5,\n\n /**\n * List of properties to consider when checking if\n * state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('cropX', 'cropY'),\n\n /**\n * List of properties to consider when checking if cache needs refresh\n * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single\n * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty\n * and refreshed at the next render\n * @type Array\n */\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('cropX', 'cropY'),\n\n /**\n * key used to retrieve the texture representing this image\n * @since 2.0.0\n * @type String\n * @default\n */\n cacheKey: '',\n\n /**\n * Image crop in pixels from original image size.\n * @since 2.0.0\n * @type Number\n * @default\n */\n cropX: 0,\n\n /**\n * Image crop in pixels from original image size.\n * @since 2.0.0\n * @type Number\n * @default\n */\n cropY: 0,\n\n /**\n * Indicates whether this canvas will use image smoothing when painting this image.\n * Also influence if the cacheCanvas for this image uses imageSmoothing\n * @since 4.0.0-beta.11\n * @type Boolean\n * @default\n */\n imageSmoothing: true,\n\n /**\n * Constructor\n * Image can be initialized with any canvas drawable or a string.\n * The string should be a url and will be loaded as an image.\n * Canvas and Image element work out of the box, while videos require extra code to work.\n * Please check video element events for seeking.\n * @param {HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | String} element Image element\n * @param {Object} [options] Options object\n * @param {function} [callback] callback function to call after eventual filters applied.\n * @return {fabric.Image} thisArg\n */\n initialize: function(element, options) {\n options || (options = { });\n this.filters = [];\n this.cacheKey = 'texture' + fabric.Object.__uid++;\n this.callSuper('initialize', options);\n this._initElement(element, options);\n },\n\n /**\n * Returns image element which this instance if based on\n * @return {HTMLImageElement} Image element\n */\n getElement: function() {\n return this._element || {};\n },\n\n /**\n * Sets image element for this instance to a specified one.\n * If filters defined they are applied to new image.\n * You might need to call `canvas.renderAll` and `object.setCoords` after replacing, to render new image and update controls area.\n * @param {HTMLImageElement} element\n * @param {Object} [options] Options object\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setElement: function(element, options) {\n this.removeTexture(this.cacheKey);\n this.removeTexture(this.cacheKey + '_filtered');\n this._element = element;\n this._originalElement = element;\n this._initConfig(options);\n if (this.filters.length !== 0) {\n this.applyFilters();\n }\n // resizeFilters work on the already filtered copy.\n // we need to apply resizeFilters AFTER normal filters.\n // applyResizeFilters is run more often than normal filters\n // and is triggered by user interactions rather than dev code\n if (this.resizeFilter) {\n this.applyResizeFilters();\n }\n return this;\n },\n\n /**\n * Delete a single texture if in webgl mode\n */\n removeTexture: function(key) {\n var backend = fabric.filterBackend;\n if (backend && backend.evictCachesForKey) {\n backend.evictCachesForKey(key);\n }\n },\n\n /**\n * Delete textures, reference to elements and eventually JSDOM cleanup\n */\n dispose: function() {\n this.removeTexture(this.cacheKey);\n this.removeTexture(this.cacheKey + '_filtered');\n this._cacheContext = undefined;\n ['_originalElement', '_element', '_filteredEl', '_cacheCanvas'].forEach((function(element) {\n fabric.util.cleanUpJsdomNode(this[element]);\n this[element] = undefined;\n }).bind(this));\n },\n\n /**\n * Get the crossOrigin value (of the corresponding image element)\n */\n getCrossOrigin: function() {\n return this._originalElement && (this._originalElement.crossOrigin || null);\n },\n\n /**\n * Returns original size of an image\n * @return {Object} Object with \"width\" and \"height\" properties\n */\n getOriginalSize: function() {\n var element = this.getElement();\n return {\n width: element.naturalWidth || element.width,\n height: element.naturalHeight || element.height\n };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _stroke: function(ctx) {\n if (!this.stroke || this.strokeWidth === 0) {\n return;\n }\n var w = this.width / 2, h = this.height / 2;\n ctx.beginPath();\n ctx.moveTo(-w, -h);\n ctx.lineTo(w, -h);\n ctx.lineTo(w, h);\n ctx.lineTo(-w, h);\n ctx.lineTo(-w, -h);\n ctx.closePath();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var x = -this.width / 2,\n y = -this.height / 2,\n w = this.width,\n h = this.height;\n\n ctx.save();\n this._setStrokeStyles(ctx, this);\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray);\n ctx.closePath();\n ctx.restore();\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var filters = [];\n\n this.filters.forEach(function(filterObj) {\n if (filterObj) {\n filters.push(filterObj.toObject());\n }\n });\n var object = extend(\n this.callSuper(\n 'toObject',\n ['cropX', 'cropY'].concat(propertiesToInclude)\n ), {\n src: this.getSrc(),\n crossOrigin: this.getCrossOrigin(),\n filters: filters,\n });\n if (this.resizeFilter) {\n object.resizeFilter = this.resizeFilter.toObject();\n }\n return object;\n },\n\n /**\n * Returns true if an image has crop applied, inspecting values of cropX,cropY,width,height.\n * @return {Boolean}\n */\n hasCrop: function() {\n return this.cropX || this.cropY || this.width < this._element.width || this.height < this._element.height;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var svgString = [], imageMarkup = [], strokeSvg, element = this._element,\n x = -this.width / 2, y = -this.height / 2, clipPath = '', imageRendering = '';\n if (!element) {\n return [];\n }\n if (this.hasCrop()) {\n var clipPathId = fabric.Object.__uid++;\n svgString.push(\n '\\n',\n '\\t\\n',\n '\\n'\n );\n clipPath = ' clip-path=\"url(#imageCrop_' + clipPathId + ')\" ';\n }\n if (!this.imageSmoothing) {\n imageRendering = '\" image-rendering=\"optimizeSpeed';\n }\n imageMarkup.push('\\t element with actual transformation, then offsetting object to the top/left\n // so that object's center aligns with container's left/top\n '\" width=\"', element.width || element.naturalWidth,\n '\" height=\"', element.height || element.height,\n imageRendering,\n '\"', clipPath,\n '>\\n');\n\n if (this.stroke || this.strokeDashArray) {\n var origFill = this.fill;\n this.fill = null;\n strokeSvg = [\n '\\t\\n'\n ];\n this.fill = origFill;\n }\n if (this.paintFirst !== 'fill') {\n svgString = svgString.concat(strokeSvg, imageMarkup);\n }\n else {\n svgString = svgString.concat(imageMarkup, strokeSvg);\n }\n return svgString;\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns source of an image\n * @param {Boolean} filtered indicates if the src is needed for svg\n * @return {String} Source of an image\n */\n getSrc: function(filtered) {\n var element = filtered ? this._element : this._originalElement;\n if (element) {\n if (element.toDataURL) {\n return element.toDataURL();\n }\n\n if (this.srcFromAttribute) {\n return element.getAttribute('src');\n }\n else {\n return element.src;\n }\n }\n else {\n return this.src || '';\n }\n },\n\n /**\n * Sets source of an image\n * @param {String} src Source string (URL)\n * @param {Function} [callback] Callback is invoked when image has been loaded (and all filters have been applied)\n * @param {Object} [options] Options object\n * @param {String} [options.crossOrigin] crossOrigin value (one of \"\", \"anonymous\", \"use-credentials\")\n * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setSrc: function(src, callback, options) {\n fabric.util.loadImage(src, function(img, isError) {\n this.setElement(img, options);\n this._setWidthHeight();\n callback && callback(this, isError);\n }, this, options && options.crossOrigin);\n return this;\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} String representation of an instance\n */\n toString: function() {\n return '#';\n },\n\n applyResizeFilters: function() {\n var filter = this.resizeFilter,\n minimumScale = this.minimumScaleTrigger,\n objectScale = this.getTotalObjectScaling(),\n scaleX = objectScale.scaleX,\n scaleY = objectScale.scaleY,\n elementToFilter = this._filteredEl || this._originalElement;\n if (this.group) {\n this.set('dirty', true);\n }\n if (!filter || (scaleX > minimumScale && scaleY > minimumScale)) {\n this._element = elementToFilter;\n this._filterScalingX = 1;\n this._filterScalingY = 1;\n this._lastScaleX = scaleX;\n this._lastScaleY = scaleY;\n return;\n }\n if (!fabric.filterBackend) {\n fabric.filterBackend = fabric.initFilterBackend();\n }\n var canvasEl = fabric.util.createCanvasElement(),\n cacheKey = this._filteredEl ? (this.cacheKey + '_filtered') : this.cacheKey,\n sourceWidth = elementToFilter.width, sourceHeight = elementToFilter.height;\n canvasEl.width = sourceWidth;\n canvasEl.height = sourceHeight;\n this._element = canvasEl;\n this._lastScaleX = filter.scaleX = scaleX;\n this._lastScaleY = filter.scaleY = scaleY;\n fabric.filterBackend.applyFilters(\n [filter], elementToFilter, sourceWidth, sourceHeight, this._element, cacheKey);\n this._filterScalingX = canvasEl.width / this._originalElement.width;\n this._filterScalingY = canvasEl.height / this._originalElement.height;\n },\n\n /**\n * Applies filters assigned to this image (from \"filters\" array) or from filter param\n * @method applyFilters\n * @param {Array} filters to be applied\n * @param {Boolean} forResizing specify if the filter operation is a resize operation\n * @return {thisArg} return the fabric.Image object\n * @chainable\n */\n applyFilters: function(filters) {\n\n filters = filters || this.filters || [];\n filters = filters.filter(function(filter) { return filter && !filter.isNeutralState(); });\n this.set('dirty', true);\n\n // needs to clear out or WEBGL will not resize correctly\n this.removeTexture(this.cacheKey + '_filtered');\n\n if (filters.length === 0) {\n this._element = this._originalElement;\n this._filteredEl = null;\n this._filterScalingX = 1;\n this._filterScalingY = 1;\n return this;\n }\n\n var imgElement = this._originalElement,\n sourceWidth = imgElement.naturalWidth || imgElement.width,\n sourceHeight = imgElement.naturalHeight || imgElement.height;\n\n if (this._element === this._originalElement) {\n // if the element is the same we need to create a new element\n var canvasEl = fabric.util.createCanvasElement();\n canvasEl.width = sourceWidth;\n canvasEl.height = sourceHeight;\n this._element = canvasEl;\n this._filteredEl = canvasEl;\n }\n else {\n // clear the existing element to get new filter data\n // also dereference the eventual resized _element\n this._element = this._filteredEl;\n this._filteredEl.getContext('2d').clearRect(0, 0, sourceWidth, sourceHeight);\n // we also need to resize again at next renderAll, so remove saved _lastScaleX/Y\n this._lastScaleX = 1;\n this._lastScaleY = 1;\n }\n if (!fabric.filterBackend) {\n fabric.filterBackend = fabric.initFilterBackend();\n }\n fabric.filterBackend.applyFilters(\n filters, this._originalElement, sourceWidth, sourceHeight, this._element, this.cacheKey);\n if (this._originalElement.width !== this._element.width ||\n this._originalElement.height !== this._element.height) {\n this._filterScalingX = this._element.width / this._originalElement.width;\n this._filterScalingY = this._element.height / this._originalElement.height;\n }\n return this;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n fabric.util.setImageSmoothing(ctx, this.imageSmoothing);\n if (this.isMoving !== true && this.resizeFilter && this._needsResize()) {\n this.applyResizeFilters();\n }\n this._stroke(ctx);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Paint the cached copy of the object on the target context.\n * it will set the imageSmoothing for the draw operation\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawCacheOnCanvas: function(ctx) {\n fabric.util.setImageSmoothing(ctx, this.imageSmoothing);\n fabric.Object.prototype.drawCacheOnCanvas.call(this, ctx);\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * This is the special image version where we would like to avoid caching where possible.\n * Essentially images do not benefit from caching. They may require caching, and in that\n * case we do it. Also caching an image usually ends in a loss of details.\n * A full performance audit should be done.\n * @return {Boolean}\n */\n shouldCache: function() {\n return this.needsItsOwnCache();\n },\n\n _renderFill: function(ctx) {\n var elementToDraw = this._element;\n if (!elementToDraw) {\n return;\n }\n var scaleX = this._filterScalingX, scaleY = this._filterScalingY,\n w = this.width, h = this.height, min = Math.min, max = Math.max,\n // crop values cannot be lesser than 0.\n cropX = max(this.cropX, 0), cropY = max(this.cropY, 0),\n elWidth = elementToDraw.naturalWidth || elementToDraw.width,\n elHeight = elementToDraw.naturalHeight || elementToDraw.height,\n sX = cropX * scaleX,\n sY = cropY * scaleY,\n // the width height cannot exceed element width/height, starting from the crop offset.\n sW = min(w * scaleX, elWidth - sX),\n sH = min(h * scaleY, elHeight - sY),\n x = -w / 2, y = -h / 2,\n maxDestW = min(w, elWidth / scaleX - cropX),\n maxDestH = min(h, elHeight / scaleY - cropY);\n\n elementToDraw && ctx.drawImage(elementToDraw, sX, sY, sW, sH, x, y, maxDestW, maxDestH);\n },\n\n /**\n * needed to check if image needs resize\n * @private\n */\n _needsResize: function() {\n var scale = this.getTotalObjectScaling();\n return (scale.scaleX !== this._lastScaleX || scale.scaleY !== this._lastScaleY);\n },\n\n /**\n * @private\n */\n _resetWidthHeight: function() {\n this.set(this.getOriginalSize());\n },\n\n /**\n * The Image class's initialization method. This method is automatically\n * called by the constructor.\n * @private\n * @param {HTMLImageElement|String} element The element representing the image\n * @param {Object} [options] Options object\n */\n _initElement: function(element, options) {\n this.setElement(fabric.util.getById(element), options);\n fabric.util.addClass(this.getElement(), fabric.Image.CSS_CANVAS);\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initConfig: function(options) {\n options || (options = { });\n this.setOptions(options);\n this._setWidthHeight(options);\n },\n\n /**\n * @private\n * @param {Array} filters to be initialized\n * @param {Function} callback Callback to invoke when all fabric.Image.filters instances are created\n */\n _initFilters: function(filters, callback) {\n if (filters && filters.length) {\n fabric.util.enlivenObjects(filters, function(enlivenedObjects) {\n callback && callback(enlivenedObjects);\n }, 'fabric.Image.filters');\n }\n else {\n callback && callback();\n }\n },\n\n /**\n * @private\n * Set the width and the height of the image object, using the element or the\n * options.\n * @param {Object} [options] Object with width/height properties\n */\n _setWidthHeight: function(options) {\n options || (options = { });\n var el = this.getElement();\n this.width = options.width || el.naturalWidth || el.width || 0;\n this.height = options.height || el.naturalHeight || el.height || 0;\n },\n\n /**\n * Calculate offset for center and scale factor for the image in order to respect\n * the preserveAspectRatio attribute\n * @private\n * @return {Object}\n */\n parsePreserveAspectRatioAttribute: function() {\n var pAR = fabric.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio || ''),\n rWidth = this._element.width, rHeight = this._element.height,\n scaleX = 1, scaleY = 1, offsetLeft = 0, offsetTop = 0, cropX = 0, cropY = 0,\n offset, pWidth = this.width, pHeight = this.height, parsedAttributes = { width: pWidth, height: pHeight };\n if (pAR && (pAR.alignX !== 'none' || pAR.alignY !== 'none')) {\n if (pAR.meetOrSlice === 'meet') {\n scaleX = scaleY = fabric.util.findScaleToFit(this._element, parsedAttributes);\n offset = (pWidth - rWidth * scaleX) / 2;\n if (pAR.alignX === 'Min') {\n offsetLeft = -offset;\n }\n if (pAR.alignX === 'Max') {\n offsetLeft = offset;\n }\n offset = (pHeight - rHeight * scaleY) / 2;\n if (pAR.alignY === 'Min') {\n offsetTop = -offset;\n }\n if (pAR.alignY === 'Max') {\n offsetTop = offset;\n }\n }\n if (pAR.meetOrSlice === 'slice') {\n scaleX = scaleY = fabric.util.findScaleToCover(this._element, parsedAttributes);\n offset = rWidth - pWidth / scaleX;\n if (pAR.alignX === 'Mid') {\n cropX = offset / 2;\n }\n if (pAR.alignX === 'Max') {\n cropX = offset;\n }\n offset = rHeight - pHeight / scaleY;\n if (pAR.alignY === 'Mid') {\n cropY = offset / 2;\n }\n if (pAR.alignY === 'Max') {\n cropY = offset;\n }\n rWidth = pWidth / scaleX;\n rHeight = pHeight / scaleY;\n }\n }\n else {\n scaleX = pWidth / rWidth;\n scaleY = pHeight / rHeight;\n }\n return {\n width: rWidth,\n height: rHeight,\n scaleX: scaleX,\n scaleY: scaleY,\n offsetLeft: offsetLeft,\n offsetTop: offsetTop,\n cropX: cropX,\n cropY: cropY\n };\n }\n });\n\n /**\n * Default CSS class name for canvas\n * @static\n * @type String\n * @default\n */\n fabric.Image.CSS_CANVAS = 'canvas-img';\n\n /**\n * Alias for getSrc\n * @static\n */\n fabric.Image.prototype.getSvgSrc = fabric.Image.prototype.getSrc;\n\n /**\n * Creates an instance of fabric.Image from its object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} callback Callback to invoke when an image instance is created\n */\n fabric.Image.fromObject = function(_object, callback) {\n var object = fabric.util.object.clone(_object);\n fabric.util.loadImage(object.src, function(img, isError) {\n if (isError) {\n callback && callback(null, true);\n return;\n }\n fabric.Image.prototype._initFilters.call(object, object.filters, function(filters) {\n object.filters = filters || [];\n fabric.Image.prototype._initFilters.call(object, [object.resizeFilter], function(resizeFilters) {\n object.resizeFilter = resizeFilters[0];\n fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) {\n object.clipPath = enlivedProps[0];\n var image = new fabric.Image(img, object);\n callback(image, false);\n });\n });\n });\n }, null, object.crossOrigin);\n };\n\n /**\n * Creates an instance of fabric.Image from an URL string\n * @static\n * @param {String} url URL to create an image from\n * @param {Function} [callback] Callback to invoke when image is created (newly created image is passed as a first argument). Second argument is a boolean indicating if an error occurred or not.\n * @param {Object} [imgOptions] Options object\n */\n fabric.Image.fromURL = function(url, callback, imgOptions) {\n fabric.util.loadImage(url, function(img, isError) {\n callback && callback(new fabric.Image(img, imgOptions), isError);\n }, null, imgOptions && imgOptions.crossOrigin);\n };\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Image.fromElement})\n * @static\n * @see {@link http://www.w3.org/TR/SVG/struct.html#ImageElement}\n */\n fabric.Image.ATTRIBUTE_NAMES =\n fabric.SHARED_ATTRIBUTES.concat(\n 'x y width height preserveAspectRatio xlink:href crossOrigin image-rendering'.split(' ')\n );\n\n /**\n * Returns {@link fabric.Image} instance from an SVG element\n * @static\n * @param {SVGElement} element Element to parse\n * @param {Object} [options] Options object\n * @param {Function} callback Callback to execute when fabric.Image object is created\n * @return {fabric.Image} Instance of fabric.Image\n */\n fabric.Image.fromElement = function(element, callback, options) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Image.ATTRIBUTE_NAMES);\n fabric.Image.fromURL(parsedAttributes['xlink:href'], callback,\n extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes));\n };\n /* _FROM_SVG_END_ */\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * @private\n * @return {Number} angle value\n */\n _getAngleValueForStraighten: function() {\n var angle = this.angle % 360;\n if (angle > 0) {\n return Math.round((angle - 1) / 90) * 90;\n }\n return Math.round(angle / 90) * 90;\n },\n\n /**\n * Straightens an object (rotating it from current angle to one of 0, 90, 180, 270, etc. depending on which is closer)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n straighten: function() {\n this.rotate(this._getAngleValueForStraighten());\n return this;\n },\n\n /**\n * Same as {@link fabric.Object.prototype.straighten} but with animation\n * @param {Object} callbacks Object with callback functions\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Object} thisArg\n * @chainable\n */\n fxStraighten: function(callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: this.get('angle'),\n endValue: this._getAngleValueForStraighten(),\n duration: this.FX_DURATION,\n onChange: function(value) {\n _this.rotate(value);\n onChange();\n },\n onComplete: function() {\n _this.setCoords();\n onComplete();\n },\n });\n\n return this;\n }\n});\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Straightens object, then rerenders canvas\n * @param {fabric.Object} object Object to straighten\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n straightenObject: function (object) {\n object.straighten();\n this.requestRenderAll();\n return this;\n },\n\n /**\n * Same as {@link fabric.Canvas.prototype.straightenObject}, but animated\n * @param {fabric.Object} object Object to straighten\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxStraightenObject: function (object) {\n object.fxStraighten({\n onChange: this.requestRenderAllBound\n });\n return this;\n }\n});\n\n\n(function() {\n\n 'use strict';\n\n /**\n * Tests if webgl supports certain precision\n * @param {WebGL} Canvas WebGL context to test on\n * @param {String} Precision to test can be any of following: 'lowp', 'mediump', 'highp'\n * @returns {Boolean} Whether the user's browser WebGL supports given precision.\n */\n function testPrecision(gl, precision){\n var fragmentSource = 'precision ' + precision + ' float;\\nvoid main(){}';\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n return false;\n }\n return true;\n }\n\n /**\n * Indicate whether this filtering backend is supported by the user's browser.\n * @param {Number} tileSize check if the tileSize is supported\n * @returns {Boolean} Whether the user's browser supports WebGL.\n */\n fabric.isWebglSupported = function(tileSize) {\n if (fabric.isLikelyNode) {\n return false;\n }\n tileSize = tileSize || fabric.WebglFilterBackend.prototype.tileSize;\n var canvas = document.createElement('canvas');\n var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n var isSupported = false;\n // eslint-disable-next-line\n if (gl) {\n fabric.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n isSupported = fabric.maxTextureSize >= tileSize;\n var precisions = ['highp', 'mediump', 'lowp'];\n for (var i = 0; i < 3; i++){\n if (testPrecision(gl, precisions[i])){\n fabric.webGlPrecision = precisions[i];\n break;\n };\n }\n }\n this.isSupported = isSupported;\n return isSupported;\n };\n\n fabric.WebglFilterBackend = WebglFilterBackend;\n\n /**\n * WebGL filter backend.\n */\n function WebglFilterBackend(options) {\n if (options && options.tileSize) {\n this.tileSize = options.tileSize;\n }\n this.setupGLContext(this.tileSize, this.tileSize);\n this.captureGPUInfo();\n };\n\n WebglFilterBackend.prototype = /** @lends fabric.WebglFilterBackend.prototype */ {\n\n tileSize: 2048,\n\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you probably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: {\n\n },\n\n /**\n * Setup a WebGL context suitable for filtering, and bind any needed event handlers.\n */\n setupGLContext: function(width, height) {\n this.dispose();\n this.createWebGLCanvas(width, height);\n // eslint-disable-next-line\n this.aPosition = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]);\n this.chooseFastestCopyGLTo2DMethod(width, height);\n },\n\n /**\n * Pick a method to copy data from GL context to 2d canvas. In some browsers using\n * putImageData is faster than drawImage for that specific operation.\n */\n chooseFastestCopyGLTo2DMethod: function(width, height) {\n var canMeasurePerf = typeof window.performance !== 'undefined', canUseImageData;\n try {\n new ImageData(1, 1);\n canUseImageData = true;\n }\n catch (e) {\n canUseImageData = false;\n }\n // eslint-disable-next-line no-undef\n var canUseArrayBuffer = typeof ArrayBuffer !== 'undefined';\n // eslint-disable-next-line no-undef\n var canUseUint8Clamped = typeof Uint8ClampedArray !== 'undefined';\n\n if (!(canMeasurePerf && canUseImageData && canUseArrayBuffer && canUseUint8Clamped)) {\n return;\n }\n\n var targetCanvas = fabric.util.createCanvasElement();\n // eslint-disable-next-line no-undef\n var imageBuffer = new ArrayBuffer(width * height * 4);\n if (fabric.forceGLPutImageData) {\n this.imageBuffer = imageBuffer;\n this.copyGLTo2D = copyGLTo2DPutImageData;\n return;\n }\n var testContext = {\n imageBuffer: imageBuffer,\n destinationWidth: width,\n destinationHeight: height,\n targetCanvas: targetCanvas\n };\n var startTime, drawImageTime, putImageDataTime;\n targetCanvas.width = width;\n targetCanvas.height = height;\n\n startTime = window.performance.now();\n copyGLTo2DDrawImage.call(testContext, this.gl, testContext);\n drawImageTime = window.performance.now() - startTime;\n\n startTime = window.performance.now();\n copyGLTo2DPutImageData.call(testContext, this.gl, testContext);\n putImageDataTime = window.performance.now() - startTime;\n\n if (drawImageTime > putImageDataTime) {\n this.imageBuffer = imageBuffer;\n this.copyGLTo2D = copyGLTo2DPutImageData;\n }\n else {\n this.copyGLTo2D = copyGLTo2DDrawImage;\n }\n },\n\n /**\n * Create a canvas element and associated WebGL context and attaches them as\n * class properties to the GLFilterBackend class.\n */\n createWebGLCanvas: function(width, height) {\n var canvas = fabric.util.createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n var glOptions = {\n alpha: true,\n premultipliedAlpha: false,\n depth: false,\n stencil: false,\n antialias: false\n },\n gl = canvas.getContext('webgl', glOptions);\n if (!gl) {\n gl = canvas.getContext('experimental-webgl', glOptions);\n }\n if (!gl) {\n return;\n }\n gl.clearColor(0, 0, 0, 0);\n // this canvas can fire webglcontextlost and webglcontextrestored\n this.canvas = canvas;\n this.gl = gl;\n },\n\n /**\n * Attempts to apply the requested filters to the source provided, drawing the filtered output\n * to the provided target canvas.\n *\n * @param {Array} filters The filters to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} source The source to be filtered.\n * @param {Number} width The width of the source input.\n * @param {Number} height The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n * @param {String|undefined} cacheKey A key used to cache resources related to the source. If\n * omitted, caching will be skipped.\n */\n applyFilters: function(filters, source, width, height, targetCanvas, cacheKey) {\n var gl = this.gl;\n var cachedTexture;\n if (cacheKey) {\n cachedTexture = this.getCachedTexture(cacheKey, source);\n }\n var pipelineState = {\n originalWidth: source.width || source.originalWidth,\n originalHeight: source.height || source.originalHeight,\n sourceWidth: width,\n sourceHeight: height,\n destinationWidth: width,\n destinationHeight: height,\n context: gl,\n sourceTexture: this.createTexture(gl, width, height, !cachedTexture && source),\n targetTexture: this.createTexture(gl, width, height),\n originalTexture: cachedTexture ||\n this.createTexture(gl, width, height, !cachedTexture && source),\n passes: filters.length,\n webgl: true,\n aPosition: this.aPosition,\n programCache: this.programCache,\n pass: 0,\n filterBackend: this,\n targetCanvas: targetCanvas\n };\n var tempFbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, tempFbo);\n filters.forEach(function(filter) { filter && filter.applyTo(pipelineState); });\n resizeCanvasIfNeeded(pipelineState);\n this.copyGLTo2D(gl, pipelineState);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.deleteTexture(pipelineState.sourceTexture);\n gl.deleteTexture(pipelineState.targetTexture);\n gl.deleteFramebuffer(tempFbo);\n targetCanvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0);\n return pipelineState;\n },\n\n /**\n * Detach event listeners, remove references, and clean up caches.\n */\n dispose: function() {\n if (this.canvas) {\n this.canvas = null;\n this.gl = null;\n }\n this.clearWebGLCaches();\n },\n\n /**\n * Wipe out WebGL-related caches.\n */\n clearWebGLCaches: function() {\n this.programCache = {};\n this.textureCache = {};\n },\n\n /**\n * Create a WebGL texture object.\n *\n * Accepts specific dimensions to initialize the texture to or a source image.\n *\n * @param {WebGLRenderingContext} gl The GL context to use for creating the texture.\n * @param {Number} width The width to initialize the texture at.\n * @param {Number} height The height to initialize the texture.\n * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source for the texture data.\n * @returns {WebGLTexture}\n */\n createTexture: function(gl, width, height, textureImageSource) {\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n if (textureImageSource) {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, textureImageSource);\n }\n else {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n return texture;\n },\n\n /**\n * Can be optionally used to get a texture from the cache array\n *\n * If an existing texture is not found, a new texture is created and cached.\n *\n * @param {String} uniqueId A cache key to use to find an existing texture.\n * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source to use to create the\n * texture cache entry if one does not already exist.\n */\n getCachedTexture: function(uniqueId, textureImageSource) {\n if (this.textureCache[uniqueId]) {\n return this.textureCache[uniqueId];\n }\n else {\n var texture = this.createTexture(\n this.gl, textureImageSource.width, textureImageSource.height, textureImageSource);\n this.textureCache[uniqueId] = texture;\n return texture;\n }\n },\n\n /**\n * Clear out cached resources related to a source image that has been\n * filtered previously.\n *\n * @param {String} cacheKey The cache key provided when the source image was filtered.\n */\n evictCachesForKey: function(cacheKey) {\n if (this.textureCache[cacheKey]) {\n this.gl.deleteTexture(this.textureCache[cacheKey]);\n delete this.textureCache[cacheKey];\n }\n },\n\n copyGLTo2D: copyGLTo2DDrawImage,\n\n /**\n * Attempt to extract GPU information strings from a WebGL context.\n *\n * Useful information when debugging or blacklisting specific GPUs.\n *\n * @returns {Object} A GPU info object with renderer and vendor strings.\n */\n captureGPUInfo: function() {\n if (this.gpuInfo) {\n return this.gpuInfo;\n }\n var gl = this.gl, gpuInfo = { renderer: '', vendor: '' };\n if (!gl) {\n return gpuInfo;\n }\n var ext = gl.getExtension('WEBGL_debug_renderer_info');\n if (ext) {\n var renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);\n var vendor = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);\n if (renderer) {\n gpuInfo.renderer = renderer.toLowerCase();\n }\n if (vendor) {\n gpuInfo.vendor = vendor.toLowerCase();\n }\n }\n this.gpuInfo = gpuInfo;\n return gpuInfo;\n },\n };\n})();\n\nfunction resizeCanvasIfNeeded(pipelineState) {\n var targetCanvas = pipelineState.targetCanvas,\n width = targetCanvas.width, height = targetCanvas.height,\n dWidth = pipelineState.destinationWidth,\n dHeight = pipelineState.destinationHeight;\n\n if (width !== dWidth || height !== dHeight) {\n targetCanvas.width = dWidth;\n targetCanvas.height = dHeight;\n }\n}\n\n/**\n * Copy an input WebGL canvas on to an output 2D canvas.\n *\n * The WebGL canvas is assumed to be upside down, with the top-left pixel of the\n * desired output image appearing in the bottom-left corner of the WebGL canvas.\n *\n * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from.\n * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to.\n * @param {Object} pipelineState The 2D target canvas to copy on to.\n */\nfunction copyGLTo2DDrawImage(gl, pipelineState) {\n var glCanvas = gl.canvas, targetCanvas = pipelineState.targetCanvas,\n ctx = targetCanvas.getContext('2d');\n ctx.translate(0, targetCanvas.height); // move it down again\n ctx.scale(1, -1); // vertical flip\n // where is my image on the big glcanvas?\n var sourceY = glCanvas.height - targetCanvas.height;\n ctx.drawImage(glCanvas, 0, sourceY, targetCanvas.width, targetCanvas.height, 0, 0,\n targetCanvas.width, targetCanvas.height);\n}\n\n/**\n * Copy an input WebGL canvas on to an output 2D canvas using 2d canvas' putImageData\n * API. Measurably faster than using ctx.drawImage in Firefox (version 54 on OSX Sierra).\n *\n * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from.\n * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to.\n * @param {Object} pipelineState The 2D target canvas to copy on to.\n */\nfunction copyGLTo2DPutImageData(gl, pipelineState) {\n var targetCanvas = pipelineState.targetCanvas, ctx = targetCanvas.getContext('2d'),\n dWidth = pipelineState.destinationWidth,\n dHeight = pipelineState.destinationHeight,\n numBytes = dWidth * dHeight * 4;\n\n // eslint-disable-next-line no-undef\n var u8 = new Uint8Array(this.imageBuffer, 0, numBytes);\n // eslint-disable-next-line no-undef\n var u8Clamped = new Uint8ClampedArray(this.imageBuffer, 0, numBytes);\n\n gl.readPixels(0, 0, dWidth, dHeight, gl.RGBA, gl.UNSIGNED_BYTE, u8);\n var imgData = new ImageData(u8Clamped, dWidth, dHeight);\n ctx.putImageData(imgData, 0, 0);\n}\n\n\n(function() {\n\n 'use strict';\n\n var noop = function() {};\n\n fabric.Canvas2dFilterBackend = Canvas2dFilterBackend;\n\n /**\n * Canvas 2D filter backend.\n */\n function Canvas2dFilterBackend() {};\n\n Canvas2dFilterBackend.prototype = /** @lends fabric.Canvas2dFilterBackend.prototype */ {\n evictCachesForKey: noop,\n dispose: noop,\n clearWebGLCaches: noop,\n\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you probably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: {\n\n },\n\n /**\n * Apply a set of filters against a source image and draw the filtered output\n * to the provided destination canvas.\n *\n * @param {EnhancedFilter} filters The filter to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered.\n * @param {Number} sourceWidth The width of the source input.\n * @param {Number} sourceHeight The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n */\n applyFilters: function(filters, sourceElement, sourceWidth, sourceHeight, targetCanvas) {\n var ctx = targetCanvas.getContext('2d');\n ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight);\n var imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n var originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n var pipelineState = {\n sourceWidth: sourceWidth,\n sourceHeight: sourceHeight,\n imageData: imageData,\n originalEl: sourceElement,\n originalImageData: originalImageData,\n canvasEl: targetCanvas,\n ctx: ctx,\n filterBackend: this,\n };\n filters.forEach(function(filter) { filter.applyTo(pipelineState); });\n if (pipelineState.imageData.width !== sourceWidth || pipelineState.imageData.height !== sourceHeight) {\n targetCanvas.width = pipelineState.imageData.width;\n targetCanvas.height = pipelineState.imageData.height;\n }\n ctx.putImageData(pipelineState.imageData, 0, 0);\n return pipelineState;\n },\n\n };\n})();\n\n\n/**\n * @namespace fabric.Image.filters\n * @memberOf fabric.Image\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#image_filters}\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n */\nfabric.Image = fabric.Image || { };\nfabric.Image.filters = fabric.Image.filters || { };\n\n/**\n * Root filter class from which all filter classes inherit from\n * @class fabric.Image.filters.BaseFilter\n * @memberOf fabric.Image.filters\n */\nfabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Image.filters.BaseFilter.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'BaseFilter',\n\n /**\n * Array of attributes to send with buffers. do not modify\n * @private\n */\n\n vertexSource: 'attribute vec2 aPosition;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vTexCoord = aPosition;\\n' +\n 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n' +\n '}',\n\n fragmentSource: 'precision highp float;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'void main() {\\n' +\n 'gl_FragColor = texture2D(uTexture, vTexCoord);\\n' +\n '}',\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n if (options) {\n this.setOptions(options);\n }\n },\n\n /**\n * Sets filter's properties from options\n * @param {Object} [options] Options object\n */\n setOptions: function(options) {\n for (var prop in options) {\n this[prop] = options[prop];\n }\n },\n\n /**\n * Compile this filter's shader program.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context to use for shader compilation.\n * @param {String} fragmentSource fragmentShader source for compilation\n * @param {String} vertexSource vertexShader source for compilation\n */\n createProgram: function(gl, fragmentSource, vertexSource) {\n fragmentSource = fragmentSource || this.fragmentSource;\n vertexSource = vertexSource || this.vertexSource;\n if (fabric.webGlPrecision !== 'highp'){\n fragmentSource = fragmentSource.replace(\n /precision highp float/g,\n 'precision ' + fabric.webGlPrecision + ' float'\n );\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexSource);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Vertex shader compile error for ' + this.type + ': ' +\n gl.getShaderInfoLog(vertexShader)\n );\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Fragment shader compile error for ' + this.type + ': ' +\n gl.getShaderInfoLog(fragmentShader)\n );\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Shader link error for \"${this.type}\" ' +\n gl.getProgramInfoLog(program)\n );\n }\n\n var attributeLocations = this.getAttributeLocations(gl, program);\n var uniformLocations = this.getUniformLocations(gl, program) || { };\n uniformLocations.uStepW = gl.getUniformLocation(program, 'uStepW');\n uniformLocations.uStepH = gl.getUniformLocation(program, 'uStepH');\n return {\n program: program,\n attributeLocations: attributeLocations,\n uniformLocations: uniformLocations\n };\n },\n\n /**\n * Return a map of attribute names to WebGLAttributeLocation objects.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {WebGLShaderProgram} program The shader program from which to take attribute locations.\n * @returns {Object} A map of attribute names to attribute locations.\n */\n getAttributeLocations: function(gl, program) {\n return {\n aPosition: gl.getAttribLocation(program, 'aPosition'),\n };\n },\n\n /**\n * Return a map of uniform names to WebGLUniformLocation objects.\n *\n * Intended to be overridden by subclasses.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {WebGLShaderProgram} program The shader program from which to take uniform locations.\n * @returns {Object} A map of uniform names to uniform locations.\n */\n getUniformLocations: function (/* gl, program */) {\n // in case i do not need any special uniform i need to return an empty object\n return { };\n },\n\n /**\n * Send attribute data from this filter to its shader program on the GPU.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {Object} attributeLocations A map of shader attribute names to their locations.\n */\n sendAttributeData: function(gl, attributeLocations, aPositionData) {\n var attributeLocation = attributeLocations.aPosition;\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.enableVertexAttribArray(attributeLocation);\n gl.vertexAttribPointer(attributeLocation, 2, gl.FLOAT, false, 0, 0);\n gl.bufferData(gl.ARRAY_BUFFER, aPositionData, gl.STATIC_DRAW);\n },\n\n _setupFrameBuffer: function(options) {\n var gl = options.context, width, height;\n if (options.passes > 1) {\n width = options.destinationWidth;\n height = options.destinationHeight;\n if (options.sourceWidth !== width || options.sourceHeight !== height) {\n gl.deleteTexture(options.targetTexture);\n options.targetTexture = options.filterBackend.createTexture(gl, width, height);\n }\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D,\n options.targetTexture, 0);\n }\n else {\n // draw last filter on canvas and not to framebuffer.\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.finish();\n }\n },\n\n _swapTextures: function(options) {\n options.passes--;\n options.pass++;\n var temp = options.targetTexture;\n options.targetTexture = options.sourceTexture;\n options.sourceTexture = temp;\n },\n\n /**\n * Generic isNeutral implementation for one parameter based filters.\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * Other filters may need their own version ( ColorMatrix, HueRotation, gamma, ComposedFilter )\n * @param {Object} options\n **/\n isNeutralState: function(/* options */) {\n var main = this.mainParameter,\n _class = fabric.Image.filters[this.type].prototype;\n if (main) {\n if (Array.isArray(_class[main])) {\n for (var i = _class[main].length; i--;) {\n if (this[main][i] !== _class[main][i]) {\n return false;\n }\n }\n return true;\n }\n else {\n return _class[main] === this[main];\n }\n }\n else {\n return false;\n }\n },\n\n /**\n * Apply this filter to the input image data provided.\n *\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n if (options.webgl) {\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n if (!options.programCache.hasOwnProperty(this.type)) {\n options.programCache[this.type] = this.createProgram(options.context);\n }\n return options.programCache[this.type];\n },\n\n /**\n * Apply this filter using webgl.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.originalTexture The texture of the original input image.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyToWebGL: function(options) {\n var gl = options.context;\n var shader = this.retrieveShader(options);\n if (options.pass === 0 && options.originalTexture) {\n gl.bindTexture(gl.TEXTURE_2D, options.originalTexture);\n }\n else {\n gl.bindTexture(gl.TEXTURE_2D, options.sourceTexture);\n }\n gl.useProgram(shader.program);\n this.sendAttributeData(gl, shader.attributeLocations, options.aPosition);\n\n gl.uniform1f(shader.uniformLocations.uStepW, 1 / options.sourceWidth);\n gl.uniform1f(shader.uniformLocations.uStepH, 1 / options.sourceHeight);\n\n this.sendUniformData(gl, shader.uniformLocations);\n gl.viewport(0, 0, options.destinationWidth, options.destinationHeight);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n\n bindAdditionalTexture: function(gl, texture, textureUnit) {\n gl.activeTexture(textureUnit);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n // reset active texture to 0 as usual\n gl.activeTexture(gl.TEXTURE0);\n },\n\n unbindAdditionalTexture: function(gl, textureUnit) {\n gl.activeTexture(textureUnit);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.activeTexture(gl.TEXTURE0);\n },\n\n getMainParameter: function() {\n return this[this.mainParameter];\n },\n\n setMainParameter: function(value) {\n this[this.mainParameter] = value;\n },\n\n /**\n * Send uniform data from this filter to its shader program on the GPU.\n *\n * Intended to be overridden by subclasses.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {Object} uniformLocations A map of shader uniform names to their locations.\n */\n sendUniformData: function(/* gl, uniformLocations */) {\n // Intentionally left blank. Override me in subclasses.\n },\n\n /**\n * If needed by a 2d filter, this functions can create an helper canvas to be used\n * remember that options.targetCanvas is available for use till end of chain.\n */\n createHelpLayer: function(options) {\n if (!options.helpLayer) {\n var helpLayer = document.createElement('canvas');\n helpLayer.width = options.sourceWidth;\n helpLayer.height = options.sourceHeight;\n options.helpLayer = helpLayer;\n }\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n var object = { type: this.type }, mainP = this.mainParameter;\n if (mainP) {\n object[mainP] = this[mainP];\n }\n return object;\n },\n\n /**\n * Returns a JSON representation of an instance\n * @return {Object} JSON\n */\n toJSON: function() {\n // delegate, not alias\n return this.toObject();\n }\n});\n\nfabric.Image.filters.BaseFilter.fromObject = function(object, callback) {\n var filter = new fabric.Image.filters[object.type](object);\n callback && callback(filter);\n return filter;\n};\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Color Matrix filter class\n * @class fabric.Image.filters.ColorMatrix\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.ColorMatrix#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @see {@Link http://www.webwasp.co.uk/tutorials/219/Color_Matrix_Filter.php}\n * @see {@Link http://phoboslab.org/log/2013/11/fast-image-filters-with-webgl}\n * @example Kodachrome filter\n * var filter = new fabric.Image.filters.ColorMatrix({\n * matrix: [\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0\n ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.ColorMatrix = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.ColorMatrix.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'ColorMatrix',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'uniform mat4 uColorMatrix;\\n' +\n 'uniform vec4 uConstants;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color *= uColorMatrix;\\n' +\n 'color += uConstants;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Colormatrix for pixels.\n * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning\n * outside the -1, 1 range.\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Array} matrix array of 20 numbers.\n * @default\n */\n matrix: [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0\n ],\n\n mainParameter: 'matrix',\n\n /**\n * Lock the colormatrix on the color part, skipping alpha, manly for non webgl scenario\n * to save some calculation\n */\n colorsOnly: true,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n // create a new array instead mutating the prototype with push\n this.matrix = this.matrix.slice(0);\n },\n\n /**\n * Apply the ColorMatrix operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n iLen = data.length,\n m = this.matrix,\n r, g, b, a, i, colorsOnly = this.colorsOnly;\n\n for (i = 0; i < iLen; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n if (colorsOnly) {\n data[i] = r * m[0] + g * m[1] + b * m[2] + m[4] * 255;\n data[i + 1] = r * m[5] + g * m[6] + b * m[7] + m[9] * 255;\n data[i + 2] = r * m[10] + g * m[11] + b * m[12] + m[14] * 255;\n }\n else {\n a = data[i + 3];\n data[i] = r * m[0] + g * m[1] + b * m[2] + a * m[3] + m[4] * 255;\n data[i + 1] = r * m[5] + g * m[6] + b * m[7] + a * m[8] + m[9] * 255;\n data[i + 2] = r * m[10] + g * m[11] + b * m[12] + a * m[13] + m[14] * 255;\n data[i + 3] = r * m[15] + g * m[16] + b * m[17] + a * m[18] + m[19] * 255;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uColorMatrix: gl.getUniformLocation(program, 'uColorMatrix'),\n uConstants: gl.getUniformLocation(program, 'uConstants'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var m = this.matrix,\n matrix = [\n m[0], m[1], m[2], m[3],\n m[5], m[6], m[7], m[8],\n m[10], m[11], m[12], m[13],\n m[15], m[16], m[17], m[18]\n ],\n constants = [m[4], m[9], m[14], m[19]];\n gl.uniformMatrix4fv(uniformLocations.uColorMatrix, false, matrix);\n gl.uniform4fv(uniformLocations.uConstants, constants);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] function to invoke after filter creation\n * @return {fabric.Image.filters.ColorMatrix} Instance of fabric.Image.filters.ColorMatrix\n */\n fabric.Image.filters.ColorMatrix.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Brightness filter class\n * @class fabric.Image.filters.Brightness\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Brightness#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Brightness({\n * brightness: 0.05\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Brightness = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Brightness.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Brightness',\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uBrightness;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color.rgb += uBrightness;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Brightness value, from -1 to 1.\n * translated to -255 to 255 for 2d\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Number} brightness\n * @default\n */\n brightness: 0,\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'brightness',\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.brightness === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, i, len = data.length,\n brightness = Math.round(this.brightness * 255);\n for (i = 0; i < len; i += 4) {\n data[i] = data[i] + brightness;\n data[i + 1] = data[i + 1] + brightness;\n data[i + 2] = data[i + 2] + brightness;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uBrightness: gl.getUniformLocation(program, 'uBrightness'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uBrightness, this.brightness);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Brightness} Instance of fabric.Image.filters.Brightness\n */\n fabric.Image.filters.Brightness.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Adapted from html5rocks article\n * @class fabric.Image.filters.Convolute\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Convolute#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example Sharpen filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 0, -1, 0,\n * -1, 5, -1,\n * 0, -1, 0 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Blur filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Emboss filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Emboss filter with opaqueness\n * var filter = new fabric.Image.filters.Convolute({\n * opaque: true,\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Convolute = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Convolute.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Convolute',\n\n /*\n * Opaque value (true/false)\n */\n opaque: false,\n\n /*\n * matrix for the filter, max 9x9\n */\n matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0],\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: {\n Convolute_3_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[9];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 3.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 3.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_3_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[9];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 3.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 3.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_5_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[25];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 5.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 5.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_5_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[25];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 5.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 5.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_7_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[49];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 7.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 7.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_7_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[49];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 7.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 7.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_9_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[81];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 9.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 9.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_9_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[81];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 9.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 9.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n },\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Convolute.prototype\n * @param {Object} [options] Options object\n * @param {Boolean} [options.opaque=false] Opaque value (true/false)\n * @param {Array} [options.matrix] Filter matrix\n */\n\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var size = Math.sqrt(this.matrix.length);\n var cacheKey = this.type + '_' + size + '_' + (this.opaque ? 1 : 0);\n var shaderSource = this.fragmentSource[cacheKey];\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n weights = this.matrix,\n side = Math.round(Math.sqrt(weights.length)),\n halfSide = Math.floor(side / 2),\n sw = imageData.width,\n sh = imageData.height,\n output = options.ctx.createImageData(sw, sh),\n dst = output.data,\n // go through the destination image pixels\n alphaFac = this.opaque ? 1 : 0,\n r, g, b, a, dstOff,\n scx, scy, srcOff, wt,\n x, y, cx, cy;\n\n for (y = 0; y < sh; y++) {\n for (x = 0; x < sw; x++) {\n dstOff = (y * sw + x) * 4;\n // calculate the weighed sum of the source image pixels that\n // fall under the convolution matrix\n r = 0; g = 0; b = 0; a = 0;\n\n for (cy = 0; cy < side; cy++) {\n for (cx = 0; cx < side; cx++) {\n scy = y + cy - halfSide;\n scx = x + cx - halfSide;\n\n // eslint-disable-next-line max-depth\n if (scy < 0 || scy >= sh || scx < 0 || scx >= sw) {\n continue;\n }\n\n srcOff = (scy * sw + scx) * 4;\n wt = weights[cy * side + cx];\n\n r += data[srcOff] * wt;\n g += data[srcOff + 1] * wt;\n b += data[srcOff + 2] * wt;\n // eslint-disable-next-line max-depth\n if (!alphaFac) {\n a += data[srcOff + 3] * wt;\n }\n }\n }\n dst[dstOff] = r;\n dst[dstOff + 1] = g;\n dst[dstOff + 2] = b;\n if (!alphaFac) {\n dst[dstOff + 3] = a;\n }\n else {\n dst[dstOff + 3] = data[dstOff + 3];\n }\n }\n }\n options.imageData = output;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uMatrix: gl.getUniformLocation(program, 'uMatrix'),\n uOpaque: gl.getUniformLocation(program, 'uOpaque'),\n uHalfSize: gl.getUniformLocation(program, 'uHalfSize'),\n uSize: gl.getUniformLocation(program, 'uSize'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1fv(uniformLocations.uMatrix, this.matrix);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n opaque: this.opaque,\n matrix: this.matrix\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Convolute} Instance of fabric.Image.filters.Convolute\n */\n fabric.Image.filters.Convolute.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Grayscale image filter class\n * @class fabric.Image.filters.Grayscale\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Grayscale();\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Grayscale = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Grayscale.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Grayscale',\n\n fragmentSource: {\n average: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = (color.r + color.b + color.g) / 3.0;\\n' +\n 'gl_FragColor = vec4(average, average, average, color.a);\\n' +\n '}',\n lightness: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uMode;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 col = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\\n' +\n 'gl_FragColor = vec4(average, average, average, col.a);\\n' +\n '}',\n luminosity: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uMode;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 col = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\\n' +\n 'gl_FragColor = vec4(average, average, average, col.a);\\n' +\n '}',\n },\n\n\n /**\n * Grayscale mode, between 'average', 'lightness', 'luminosity'\n * @param {String} type\n * @default\n */\n mode: 'average',\n\n mainParameter: 'mode',\n\n /**\n * Apply the Grayscale operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n len = data.length, value,\n mode = this.mode;\n for (i = 0; i < len; i += 4) {\n if (mode === 'average') {\n value = (data[i] + data[i + 1] + data[i + 2]) / 3;\n }\n else if (mode === 'lightness') {\n value = (Math.min(data[i], data[i + 1], data[i + 2]) +\n Math.max(data[i], data[i + 1], data[i + 2])) / 2;\n }\n else if (mode === 'luminosity') {\n value = 0.21 * data[i] + 0.72 * data[i + 1] + 0.07 * data[i + 2];\n }\n data[i] = value;\n data[i + 1] = value;\n data[i + 2] = value;\n }\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n var shaderSource = this.fragmentSource[this.mode];\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uMode: gl.getUniformLocation(program, 'uMode'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n // default average mode.\n var mode = 1;\n gl.uniform1i(uniformLocations.uMode, mode);\n },\n\n /**\n * Grayscale filter isNeutralState implementation\n * The filter is never neutral\n * on the image\n **/\n isNeutralState: function() {\n return false;\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Grayscale} Instance of fabric.Image.filters.Grayscale\n */\n fabric.Image.filters.Grayscale.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Invert filter class\n * @class fabric.Image.filters.Invert\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Invert();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\n filters.Invert = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Invert.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Invert',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uInvert;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'if (uInvert == 1) {\\n' +\n 'gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\\n' +\n '} else {\\n' +\n 'gl_FragColor = color;\\n' +\n '}\\n' +\n '}',\n\n /**\n * Filter invert. if false, does nothing\n * @param {Boolean} invert\n * @default\n */\n invert: true,\n\n mainParameter: 'invert',\n\n /**\n * Apply the Invert operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n len = data.length;\n for (i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n },\n\n /**\n * Invert filter isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState: function() {\n return !this.invert;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uInvert: gl.getUniformLocation(program, 'uInvert'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1i(uniformLocations.uInvert, this.invert);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Invert} Instance of fabric.Image.filters.Invert\n */\n fabric.Image.filters.Invert.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Noise filter class\n * @class fabric.Image.filters.Noise\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Noise#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Noise({\n * noise: 700\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Noise = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Noise.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Noise',\n\n /**\n * Fragment source for the noise program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uStepH;\\n' +\n 'uniform float uNoise;\\n' +\n 'uniform float uSeed;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'float rand(vec2 co, float seed, float vScale) {\\n' +\n 'return fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\\n' +\n '}\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'noise',\n\n /**\n * Noise value, from\n * @param {Number} noise\n * @default\n */\n noise: 0,\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.noise === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, i, len = data.length,\n noise = this.noise, rand;\n\n for (i = 0, len = data.length; i < len; i += 4) {\n\n rand = (0.5 - Math.random()) * noise;\n\n data[i] += rand;\n data[i + 1] += rand;\n data[i + 2] += rand;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uNoise: gl.getUniformLocation(program, 'uNoise'),\n uSeed: gl.getUniformLocation(program, 'uSeed'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uNoise, this.noise / 255);\n gl.uniform1f(uniformLocations.uSeed, Math.random());\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n noise: this.noise\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Noise} Instance of fabric.Image.filters.Noise\n */\n fabric.Image.filters.Noise.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Pixelate filter class\n * @class fabric.Image.filters.Pixelate\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Pixelate#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Pixelate = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Pixelate.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Pixelate',\n\n blocksize: 4,\n\n mainParameter: 'blocksize',\n\n /**\n * Fragment source for the Pixelate program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uBlocksize;\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'float blockW = uBlocksize * uStepW;\\n' +\n 'float blockH = uBlocksize * uStepW;\\n' +\n 'int posX = int(vTexCoord.x / blockW);\\n' +\n 'int posY = int(vTexCoord.y / blockH);\\n' +\n 'float fposX = float(posX);\\n' +\n 'float fposY = float(posY);\\n' +\n 'vec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\\n' +\n 'vec4 color = texture2D(uTexture, squareCoords);\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n iLen = imageData.height,\n jLen = imageData.width,\n index, i, j, r, g, b, a,\n _i, _j, _iLen, _jLen;\n\n for (i = 0; i < iLen; i += this.blocksize) {\n for (j = 0; j < jLen; j += this.blocksize) {\n\n index = (i * 4) * jLen + (j * 4);\n\n r = data[index];\n g = data[index + 1];\n b = data[index + 2];\n a = data[index + 3];\n\n _iLen = Math.min(i + this.blocksize, iLen);\n _jLen = Math.min(j + this.blocksize, jLen);\n for (_i = i; _i < _iLen; _i++) {\n for (_j = j; _j < _jLen; _j++) {\n index = (_i * 4) * jLen + (_j * 4);\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n },\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState: function() {\n return this.blocksize === 1;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uBlocksize: gl.getUniformLocation(program, 'uBlocksize'),\n uStepW: gl.getUniformLocation(program, 'uStepW'),\n uStepH: gl.getUniformLocation(program, 'uStepH'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Pixelate} Instance of fabric.Image.filters.Pixelate\n */\n fabric.Image.filters.Pixelate.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Remove white filter class\n * @class fabric.Image.filters.RemoveColor\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.RemoveColor#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.RemoveColor({\n * threshold: 0.2,\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.RemoveColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.RemoveColor.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'RemoveColor',\n\n /**\n * Color to remove, in any format understood by fabric.Color.\n * @param {String} type\n * @default\n */\n color: '#FFFFFF',\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec4 uLow;\\n' +\n 'uniform vec4 uHigh;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'gl_FragColor = texture2D(uTexture, vTexCoord);\\n' +\n 'if(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\\n' +\n 'gl_FragColor.a = 0.0;\\n' +\n '}\\n' +\n '}',\n\n /**\n * distance to actual color, as value up or down from each r,g,b\n * between 0 and 1\n **/\n distance: 0.02,\n\n /**\n * For color to remove inside distance, use alpha channel for a smoother deletion\n * NOT IMPLEMENTED YET\n **/\n useAlpha: false,\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.RemoveWhite.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.color=#RRGGBB] Threshold value\n * @param {Number} [options.distance=10] Distance value\n */\n\n /**\n * Applies filter to canvas element\n * @param {Object} canvasEl Canvas element to apply filter to\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n distance = this.distance * 255,\n r, g, b,\n source = new fabric.Color(this.color).getSource(),\n lowC = [\n source[0] - distance,\n source[1] - distance,\n source[2] - distance,\n ],\n highC = [\n source[0] + distance,\n source[1] + distance,\n source[2] + distance,\n ];\n\n\n for (i = 0; i < data.length; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n if (r > lowC[0] &&\n g > lowC[1] &&\n b > lowC[2] &&\n r < highC[0] &&\n g < highC[1] &&\n b < highC[2]) {\n data[i + 3] = 0;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uLow: gl.getUniformLocation(program, 'uLow'),\n uHigh: gl.getUniformLocation(program, 'uHigh'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var source = new fabric.Color(this.color).getSource(),\n distance = parseFloat(this.distance),\n lowC = [\n 0 + source[0] / 255 - distance,\n 0 + source[1] / 255 - distance,\n 0 + source[2] / 255 - distance,\n 1\n ],\n highC = [\n source[0] / 255 + distance,\n source[1] / 255 + distance,\n source[2] / 255 + distance,\n 1\n ];\n gl.uniform4fv(uniformLocations.uLow, lowC);\n gl.uniform4fv(uniformLocations.uHigh, highC);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n color: this.color,\n distance: this.distance\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.RemoveColor} Instance of fabric.Image.filters.RemoveWhite\n */\n fabric.Image.filters.RemoveColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n var matrices = {\n Brownie: [\n 0.59970,0.34553,-0.27082,0,0.186,\n -0.03770,0.86095,0.15059,0,-0.1449,\n 0.24113,-0.07441,0.44972,0,-0.02965,\n 0,0,0,1,0\n ],\n Vintage: [\n 0.62793,0.32021,-0.03965,0,0.03784,\n 0.02578,0.64411,0.03259,0,0.02926,\n 0.04660,-0.08512,0.52416,0,0.02023,\n 0,0,0,1,0\n ],\n Kodachrome: [\n 1.12855,-0.39673,-0.03992,0,0.24991,\n -0.16404,1.08352,-0.05498,0,0.09698,\n -0.16786,-0.56034,1.60148,0,0.13972,\n 0,0,0,1,0\n ],\n Technicolor: [\n 1.91252,-0.85453,-0.09155,0,0.04624,\n -0.30878,1.76589,-0.10601,0,-0.27589,\n -0.23110,-0.75018,1.84759,0,0.12137,\n 0,0,0,1,0\n ],\n Polaroid: [\n 1.438,-0.062,-0.062,0,0,\n -0.122,1.378,-0.122,0,0,\n -0.016,-0.016,1.483,0,0,\n 0,0,0,1,0\n ],\n Sepia: [\n 0.393, 0.769, 0.189, 0, 0,\n 0.349, 0.686, 0.168, 0, 0,\n 0.272, 0.534, 0.131, 0, 0,\n 0, 0, 0, 1, 0\n ],\n BlackWhite: [\n 1.5, 1.5, 1.5, 0, -1,\n 1.5, 1.5, 1.5, 0, -1,\n 1.5, 1.5, 1.5, 0, -1,\n 0, 0, 0, 1, 0,\n ]\n };\n\n for (var key in matrices) {\n filters[key] = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.Sepia.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: key,\n\n /**\n * Colormatrix for the effect\n * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning\n * outside the -1, 1 range.\n * @param {Array} matrix array of 20 numbers.\n * @default\n */\n matrix: matrices[key],\n\n /**\n * Lock the matrix export for this kind of static, parameter less filters.\n */\n mainParameter: false,\n /**\n * Lock the colormatrix on the color part, skipping alpha\n */\n colorsOnly: true,\n\n });\n fabric.Image.filters[key].fromObject = fabric.Image.filters.BaseFilter.fromObject;\n }\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n 'use strict';\n\n var fabric = global.fabric,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Color Blend filter class\n * @class fabric.Image.filter.BlendColor\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @example\n * var filter = new fabric.Image.filters.BlendColor({\n * color: '#000',\n * mode: 'multiply'\n * });\n *\n * var filter = new fabric.Image.filters.BlendImage({\n * image: fabricImageObject,\n * mode: 'multiply',\n * alpha: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n\n filters.BlendColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blend.prototype */ {\n type: 'BlendColor',\n\n /**\n * Color to make the blend operation with. default to a reddish color since black or white\n * gives always strong result.\n **/\n color: '#F95C63',\n\n /**\n * Blend mode for the filter: one of multiply, add, diff, screen, subtract,\n * darken, lighten, overlay, exclusion, tint.\n **/\n mode: 'multiply',\n\n /**\n * alpha value. represent the strength of the blend color operation.\n **/\n alpha: 1,\n\n /**\n * Fragment source for the Multiply program\n */\n fragmentSource: {\n multiply: 'gl_FragColor.rgb *= uColor.rgb;\\n',\n screen: 'gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\\n',\n add: 'gl_FragColor.rgb += uColor.rgb;\\n',\n diff: 'gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\\n',\n subtract: 'gl_FragColor.rgb -= uColor.rgb;\\n',\n lighten: 'gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\\n',\n darken: 'gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\\n',\n exclusion: 'gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\\n',\n overlay: 'if (uColor.r < 0.5) {\\n' +\n 'gl_FragColor.r *= 2.0 * uColor.r;\\n' +\n '} else {\\n' +\n 'gl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\\n' +\n '}\\n' +\n 'if (uColor.g < 0.5) {\\n' +\n 'gl_FragColor.g *= 2.0 * uColor.g;\\n' +\n '} else {\\n' +\n 'gl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\\n' +\n '}\\n' +\n 'if (uColor.b < 0.5) {\\n' +\n 'gl_FragColor.b *= 2.0 * uColor.b;\\n' +\n '} else {\\n' +\n 'gl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\\n' +\n '}\\n',\n tint: 'gl_FragColor.rgb *= (1.0 - uColor.a);\\n' +\n 'gl_FragColor.rgb += uColor.rgb;\\n',\n },\n\n /**\n * build the fragment source for the filters, joining the common part with\n * the specific one.\n * @param {String} mode the mode of the filter, a key of this.fragmentSource\n * @return {String} the source to be compiled\n * @private\n */\n buildSource: function(mode) {\n return 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'gl_FragColor = color;\\n' +\n 'if (color.a > 0.0) {\\n' +\n this.fragmentSource[mode] +\n '}\\n' +\n '}';\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode, shaderSource;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n shaderSource = this.buildSource(this.mode);\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, iLen = data.length,\n tr, tg, tb,\n r, g, b,\n source, alpha1 = 1 - this.alpha;\n\n source = new fabric.Color(this.color).getSource();\n tr = source[0] * this.alpha;\n tg = source[1] * this.alpha;\n tb = source[2] * this.alpha;\n\n for (var i = 0; i < iLen; i += 4) {\n\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n switch (this.mode) {\n case 'multiply':\n data[i] = r * tr / 255;\n data[i + 1] = g * tg / 255;\n data[i + 2] = b * tb / 255;\n break;\n case 'screen':\n data[i] = 255 - (255 - r) * (255 - tr) / 255;\n data[i + 1] = 255 - (255 - g) * (255 - tg) / 255;\n data[i + 2] = 255 - (255 - b) * (255 - tb) / 255;\n break;\n case 'add':\n data[i] = r + tr;\n data[i + 1] = g + tg;\n data[i + 2] = b + tb;\n break;\n case 'diff':\n case 'difference':\n data[i] = Math.abs(r - tr);\n data[i + 1] = Math.abs(g - tg);\n data[i + 2] = Math.abs(b - tb);\n break;\n case 'subtract':\n data[i] = r - tr;\n data[i + 1] = g - tg;\n data[i + 2] = b - tb;\n break;\n case 'darken':\n data[i] = Math.min(r, tr);\n data[i + 1] = Math.min(g, tg);\n data[i + 2] = Math.min(b, tb);\n break;\n case 'lighten':\n data[i] = Math.max(r, tr);\n data[i + 1] = Math.max(g, tg);\n data[i + 2] = Math.max(b, tb);\n break;\n case 'overlay':\n data[i] = tr < 128 ? (2 * r * tr / 255) : (255 - 2 * (255 - r) * (255 - tr) / 255);\n data[i + 1] = tg < 128 ? (2 * g * tg / 255) : (255 - 2 * (255 - g) * (255 - tg) / 255);\n data[i + 2] = tb < 128 ? (2 * b * tb / 255) : (255 - 2 * (255 - b) * (255 - tb) / 255);\n break;\n case 'exclusion':\n data[i] = tr + r - ((2 * tr * r) / 255);\n data[i + 1] = tg + g - ((2 * tg * g) / 255);\n data[i + 2] = tb + b - ((2 * tb * b) / 255);\n break;\n case 'tint':\n data[i] = tr + r * alpha1;\n data[i + 1] = tg + g * alpha1;\n data[i + 2] = tb + b * alpha1;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uColor: gl.getUniformLocation(program, 'uColor'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var source = new fabric.Color(this.color).getSource();\n source[0] = this.alpha * source[0] / 255;\n source[1] = this.alpha * source[1] / 255;\n source[2] = this.alpha * source[2] / 255;\n source[3] = this.alpha;\n gl.uniform4fv(uniformLocations.uColor, source);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n color: this.color,\n mode: this.mode,\n alpha: this.alpha\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.BlendColor} Instance of fabric.Image.filters.BlendColor\n */\n fabric.Image.filters.BlendColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n 'use strict';\n\n var fabric = global.fabric,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Image Blend filter class\n * @class fabric.Image.filter.BlendImage\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @example\n * var filter = new fabric.Image.filters.BlendColor({\n * color: '#000',\n * mode: 'multiply'\n * });\n *\n * var filter = new fabric.Image.filters.BlendImage({\n * image: fabricImageObject,\n * mode: 'multiply',\n * alpha: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n\n filters.BlendImage = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.BlendImage.prototype */ {\n type: 'BlendImage',\n\n /**\n * Color to make the blend operation with. default to a reddish color since black or white\n * gives always strong result.\n **/\n image: null,\n\n /**\n * Blend mode for the filter: one of multiply, add, diff, screen, subtract,\n * darken, lighten, overlay, exclusion, tint.\n **/\n mode: 'multiply',\n\n /**\n * alpha value. represent the strength of the blend image operation.\n * not implemented.\n **/\n alpha: 1,\n\n vertexSource: 'attribute vec2 aPosition;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'uniform mat3 uTransformMatrix;\\n' +\n 'void main() {\\n' +\n 'vTexCoord = aPosition;\\n' +\n 'vTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\\n' +\n 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n' +\n '}',\n\n /**\n * Fragment source for the Multiply program\n */\n fragmentSource: {\n multiply: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform sampler2D uImage;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec4 color2 = texture2D(uImage, vTexCoord2);\\n' +\n 'color.rgba *= color2.rgba;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n mask: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform sampler2D uImage;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec4 color2 = texture2D(uImage, vTexCoord2);\\n' +\n 'color.a = color2.a;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode;\n var shaderSource = this.fragmentSource[this.mode];\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n applyToWebGL: function(options) {\n // load texture to blend.\n var gl = options.context,\n texture = this.createTexture(options.filterBackend, this.image);\n this.bindAdditionalTexture(gl, texture, gl.TEXTURE1);\n this.callSuper('applyToWebGL', options);\n this.unbindAdditionalTexture(gl, gl.TEXTURE1);\n },\n\n createTexture: function(backend, image) {\n return backend.getCachedTexture(image.cacheKey, image._element);\n },\n\n /**\n * Calculate a transformMatrix to adapt the image to blend over\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n calculateMatrix: function() {\n var image = this.image,\n width = image._element.width,\n height = image._element.height;\n return [\n 1 / image.scaleX, 0, 0,\n 0, 1 / image.scaleY, 0,\n -image.left / width, -image.top / height, 1\n ];\n },\n\n /**\n * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n resources = options.filterBackend.resources,\n data = imageData.data, iLen = data.length,\n width = imageData.width,\n height = imageData.height,\n tr, tg, tb, ta,\n r, g, b, a,\n canvas1, context, image = this.image, blendData;\n\n if (!resources.blendImage) {\n resources.blendImage = fabric.util.createCanvasElement();\n }\n canvas1 = resources.blendImage;\n context = canvas1.getContext('2d');\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas1.width = width;\n canvas1.height = height;\n }\n else {\n context.clearRect(0, 0, width, height);\n }\n context.setTransform(image.scaleX, 0, 0, image.scaleY, image.left, image.top);\n context.drawImage(image._element, 0, 0, width, height);\n blendData = context.getImageData(0, 0, width, height).data;\n for (var i = 0; i < iLen; i += 4) {\n\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n\n tr = blendData[i];\n tg = blendData[i + 1];\n tb = blendData[i + 2];\n ta = blendData[i + 3];\n\n switch (this.mode) {\n case 'multiply':\n data[i] = r * tr / 255;\n data[i + 1] = g * tg / 255;\n data[i + 2] = b * tb / 255;\n data[i + 3] = a * ta / 255;\n break;\n case 'mask':\n data[i + 3] = ta;\n break;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uTransformMatrix: gl.getUniformLocation(program, 'uTransformMatrix'),\n uImage: gl.getUniformLocation(program, 'uImage'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var matrix = this.calculateMatrix();\n gl.uniform1i(uniformLocations.uImage, 1); // texture unit 1.\n gl.uniformMatrix3fv(uniformLocations.uTransformMatrix, false, matrix);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n image: this.image && this.image.toObject(),\n mode: this.mode,\n alpha: this.alpha\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} callback to be invoked after filter creation\n * @return {fabric.Image.filters.BlendImage} Instance of fabric.Image.filters.BlendImage\n */\n fabric.Image.filters.BlendImage.fromObject = function(object, callback) {\n fabric.Image.fromObject(object.image, function(image) {\n var options = fabric.util.object.clone(object);\n options.image = image;\n callback(new fabric.Image.filters.BlendImage(options));\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }), pow = Math.pow, floor = Math.floor,\n sqrt = Math.sqrt, abs = Math.abs, round = Math.round, sin = Math.sin,\n ceil = Math.ceil,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Resize image filter class\n * @class fabric.Image.filters.Resize\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Resize();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\n filters.Resize = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Resize.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Resize',\n\n /**\n * Resize type\n * for webgl resizeType is just lanczos, for canvas2d can be:\n * bilinear, hermite, sliceHack, lanczos.\n * @param {String} resizeType\n * @default\n */\n resizeType: 'hermite',\n\n /**\n * Scale factor for resizing, x axis\n * @param {Number} scaleX\n * @default\n */\n scaleX: 1,\n\n /**\n * Scale factor for resizing, y axis\n * @param {Number} scaleY\n * @default\n */\n scaleY: 1,\n\n /**\n * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos\n * @param {Number} lanczosLobes\n * @default\n */\n lanczosLobes: 3,\n\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uDelta: gl.getUniformLocation(program, 'uDelta'),\n uTaps: gl.getUniformLocation(program, 'uTaps'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform2fv(uniformLocations.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]);\n gl.uniform1fv(uniformLocations.uTaps, this.taps);\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var filterWindow = this.getFilterWindow(), cacheKey = this.type + '_' + filterWindow;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n var fragmentShader = this.generateShader(filterWindow);\n options.programCache[cacheKey] = this.createProgram(options.context, fragmentShader);\n }\n return options.programCache[cacheKey];\n },\n\n getFilterWindow: function() {\n var scale = this.tempScale;\n return Math.ceil(this.lanczosLobes / scale);\n },\n\n getTaps: function() {\n var lobeFunction = this.lanczosCreate(this.lanczosLobes), scale = this.tempScale,\n filterWindow = this.getFilterWindow(), taps = new Array(filterWindow);\n for (var i = 1; i <= filterWindow; i++) {\n taps[i - 1] = lobeFunction(i * scale);\n }\n return taps;\n },\n\n /**\n * Generate vertex and shader sources from the necessary steps numbers\n * @param {Number} filterWindow\n */\n generateShader: function(filterWindow) {\n var offsets = new Array(filterWindow),\n fragmentShader = this.fragmentSourceTOP, filterWindow;\n\n for (var i = 1; i <= filterWindow; i++) {\n offsets[i - 1] = i + '.0 * uDelta';\n }\n\n fragmentShader += 'uniform float uTaps[' + filterWindow + '];\\n';\n fragmentShader += 'void main() {\\n';\n fragmentShader += ' vec4 color = texture2D(uTexture, vTexCoord);\\n';\n fragmentShader += ' float sum = 1.0;\\n';\n\n offsets.forEach(function(offset, i) {\n fragmentShader += ' color += texture2D(uTexture, vTexCoord + ' + offset + ') * uTaps[' + i + '];\\n';\n fragmentShader += ' color += texture2D(uTexture, vTexCoord - ' + offset + ') * uTaps[' + i + '];\\n';\n fragmentShader += ' sum += 2.0 * uTaps[' + i + '];\\n';\n });\n fragmentShader += ' gl_FragColor = color / sum;\\n';\n fragmentShader += '}';\n return fragmentShader;\n },\n\n fragmentSourceTOP: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec2 uDelta;\\n' +\n 'varying vec2 vTexCoord;\\n',\n\n /**\n * Apply the resize filter to the image\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n if (options.webgl) {\n options.passes++;\n this.width = options.sourceWidth;\n this.horizontal = true;\n this.dW = Math.round(this.width * this.scaleX);\n this.dH = options.sourceHeight;\n this.tempScale = this.dW / this.width;\n this.taps = this.getTaps();\n options.destinationWidth = this.dW;\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n options.sourceWidth = options.destinationWidth;\n\n this.height = options.sourceHeight;\n this.horizontal = false;\n this.dH = Math.round(this.height * this.scaleY);\n this.tempScale = this.dH / this.height;\n this.taps = this.getTaps();\n options.destinationHeight = this.dH;\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n options.sourceHeight = options.destinationHeight;\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n isNeutralState: function() {\n return this.scaleX === 1 && this.scaleY === 1;\n },\n\n lanczosCreate: function(lobes) {\n return function(x) {\n if (x >= lobes || x <= -lobes) {\n return 0.0;\n }\n if (x < 1.19209290E-07 && x > -1.19209290E-07) {\n return 1.0;\n }\n x *= Math.PI;\n var xx = x / lobes;\n return (sin(x) / x) * sin(xx) / xx;\n };\n },\n\n /**\n * Applies filter to canvas element\n * @memberOf fabric.Image.filters.Resize.prototype\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} scaleX\n * @param {Number} scaleY\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n scaleX = this.scaleX,\n scaleY = this.scaleY;\n\n this.rcpScaleX = 1 / scaleX;\n this.rcpScaleY = 1 / scaleY;\n\n var oW = imageData.width, oH = imageData.height,\n dW = round(oW * scaleX), dH = round(oH * scaleY),\n newData;\n\n if (this.resizeType === 'sliceHack') {\n newData = this.sliceByTwo(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'hermite') {\n newData = this.hermiteFastResize(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'bilinear') {\n newData = this.bilinearFiltering(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'lanczos') {\n newData = this.lanczosResize(options, oW, oH, dW, dH);\n }\n options.imageData = newData;\n },\n\n /**\n * Filter sliceByTwo\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n sliceByTwo: function(options, oW, oH, dW, dH) {\n var imageData = options.imageData,\n mult = 0.5, doneW = false, doneH = false, stepW = oW * mult,\n stepH = oH * mult, resources = fabric.filterBackend.resources,\n tmpCanvas, ctx, sX = 0, sY = 0, dX = oW, dY = 0;\n if (!resources.sliceByTwo) {\n resources.sliceByTwo = document.createElement('canvas');\n }\n tmpCanvas = resources.sliceByTwo;\n if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) {\n tmpCanvas.width = oW * 1.5;\n tmpCanvas.height = oH;\n }\n ctx = tmpCanvas.getContext('2d');\n ctx.clearRect(0, 0, oW * 1.5, oH);\n ctx.putImageData(imageData, 0, 0);\n\n dW = floor(dW);\n dH = floor(dH);\n\n while (!doneW || !doneH) {\n oW = stepW;\n oH = stepH;\n if (dW < floor(stepW * mult)) {\n stepW = floor(stepW * mult);\n }\n else {\n stepW = dW;\n doneW = true;\n }\n if (dH < floor(stepH * mult)) {\n stepH = floor(stepH * mult);\n }\n else {\n stepH = dH;\n doneH = true;\n }\n ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH);\n sX = dX;\n sY = dY;\n dY += stepH;\n }\n return ctx.getImageData(sX, sY, dW, dH);\n },\n\n /**\n * Filter lanczosResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n lanczosResize: function(options, oW, oH, dW, dH) {\n\n function process(u) {\n var v, i, weight, idx, a, red, green,\n blue, alpha, fX, fY;\n center.x = (u + 0.5) * ratioX;\n icenter.x = floor(center.x);\n for (v = 0; v < dH; v++) {\n center.y = (v + 0.5) * ratioY;\n icenter.y = floor(center.y);\n a = 0; red = 0; green = 0; blue = 0; alpha = 0;\n for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) {\n if (i < 0 || i >= oW) {\n continue;\n }\n fX = floor(1000 * abs(i - center.x));\n if (!cacheLanc[fX]) {\n cacheLanc[fX] = { };\n }\n for (var j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) {\n if (j < 0 || j >= oH) {\n continue;\n }\n fY = floor(1000 * abs(j - center.y));\n if (!cacheLanc[fX][fY]) {\n cacheLanc[fX][fY] = lanczos(sqrt(pow(fX * rcpRatioX, 2) + pow(fY * rcpRatioY, 2)) / 1000);\n }\n weight = cacheLanc[fX][fY];\n if (weight > 0) {\n idx = (j * oW + i) * 4;\n a += weight;\n red += weight * srcData[idx];\n green += weight * srcData[idx + 1];\n blue += weight * srcData[idx + 2];\n alpha += weight * srcData[idx + 3];\n }\n }\n }\n idx = (v * dW + u) * 4;\n destData[idx] = red / a;\n destData[idx + 1] = green / a;\n destData[idx + 2] = blue / a;\n destData[idx + 3] = alpha / a;\n }\n\n if (++u < dW) {\n return process(u);\n }\n else {\n return destImg;\n }\n }\n\n var srcData = options.imageData.data,\n destImg = options.ctx.createImageData(dW, dH),\n destData = destImg.data,\n lanczos = this.lanczosCreate(this.lanczosLobes),\n ratioX = this.rcpScaleX, ratioY = this.rcpScaleY,\n rcpRatioX = 2 / this.rcpScaleX, rcpRatioY = 2 / this.rcpScaleY,\n range2X = ceil(ratioX * this.lanczosLobes / 2),\n range2Y = ceil(ratioY * this.lanczosLobes / 2),\n cacheLanc = { }, center = { }, icenter = { };\n\n return process(0);\n },\n\n /**\n * bilinearFiltering\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n bilinearFiltering: function(options, oW, oH, dW, dH) {\n var a, b, c, d, x, y, i, j, xDiff, yDiff, chnl,\n color, offset = 0, origPix, ratioX = this.rcpScaleX,\n ratioY = this.rcpScaleY,\n w4 = 4 * (oW - 1), img = options.imageData,\n pixels = img.data, destImage = options.ctx.createImageData(dW, dH),\n destPixels = destImage.data;\n for (i = 0; i < dH; i++) {\n for (j = 0; j < dW; j++) {\n x = floor(ratioX * j);\n y = floor(ratioY * i);\n xDiff = ratioX * j - x;\n yDiff = ratioY * i - y;\n origPix = 4 * (y * oW + x);\n\n for (chnl = 0; chnl < 4; chnl++) {\n a = pixels[origPix + chnl];\n b = pixels[origPix + 4 + chnl];\n c = pixels[origPix + w4 + chnl];\n d = pixels[origPix + w4 + 4 + chnl];\n color = a * (1 - xDiff) * (1 - yDiff) + b * xDiff * (1 - yDiff) +\n c * yDiff * (1 - xDiff) + d * xDiff * yDiff;\n destPixels[offset++] = color;\n }\n }\n }\n return destImage;\n },\n\n /**\n * hermiteFastResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n hermiteFastResize: function(options, oW, oH, dW, dH) {\n var ratioW = this.rcpScaleX, ratioH = this.rcpScaleY,\n ratioWHalf = ceil(ratioW / 2),\n ratioHHalf = ceil(ratioH / 2),\n img = options.imageData, data = img.data,\n img2 = options.ctx.createImageData(dW, dH), data2 = img2.data;\n for (var j = 0; j < dH; j++) {\n for (var i = 0; i < dW; i++) {\n var x2 = (i + j * dW) * 4, weight = 0, weights = 0, weightsAlpha = 0,\n gxR = 0, gxG = 0, gxB = 0, gxA = 0, centerY = (j + 0.5) * ratioH;\n for (var yy = floor(j * ratioH); yy < (j + 1) * ratioH; yy++) {\n var dy = abs(centerY - (yy + 0.5)) / ratioHHalf,\n centerX = (i + 0.5) * ratioW, w0 = dy * dy;\n for (var xx = floor(i * ratioW); xx < (i + 1) * ratioW; xx++) {\n var dx = abs(centerX - (xx + 0.5)) / ratioWHalf,\n w = sqrt(w0 + dx * dx);\n /* eslint-disable max-depth */\n if (w > 1 && w < -1) {\n continue;\n }\n //hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n if (weight > 0) {\n dx = 4 * (xx + yy * oW);\n //alpha\n gxA += weight * data[dx + 3];\n weightsAlpha += weight;\n //colors\n if (data[dx + 3] < 255) {\n weight = weight * data[dx + 3] / 250;\n }\n gxR += weight * data[dx];\n gxG += weight * data[dx + 1];\n gxB += weight * data[dx + 2];\n weights += weight;\n }\n /* eslint-enable max-depth */\n }\n }\n data2[x2] = gxR / weights;\n data2[x2 + 1] = gxG / weights;\n data2[x2 + 2] = gxB / weights;\n data2[x2 + 3] = gxA / weightsAlpha;\n }\n }\n return img2;\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n resizeType: this.resizeType,\n lanczosLobes: this.lanczosLobes\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Resize} Instance of fabric.Image.filters.Resize\n */\n fabric.Image.filters.Resize.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Contrast filter class\n * @class fabric.Image.filters.Contrast\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Contrast#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Contrast({\n * contrast: 0.25\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Contrast = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Contrast.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Contrast',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uContrast;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\\n' +\n 'color.rgb = contrastF * (color.rgb - 0.5) + 0.5;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * contrast value, range from -1 to 1.\n * @param {Number} contrast\n * @default 0\n */\n contrast: 0,\n\n mainParameter: 'contrast',\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Contrast.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.contrast=0] Value to contrast the image up (-1...1)\n */\n\n /**\n * Apply the Contrast operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n if (this.contrast === 0) {\n return;\n }\n var imageData = options.imageData, i, len,\n data = imageData.data, len = data.length,\n contrast = Math.floor(this.contrast * 255),\n contrastF = 259 * (contrast + 255) / (255 * (259 - contrast));\n\n for (i = 0; i < len; i += 4) {\n data[i] = contrastF * (data[i] - 128) + 128;\n data[i + 1] = contrastF * (data[i + 1] - 128) + 128;\n data[i + 2] = contrastF * (data[i + 2] - 128) + 128;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uContrast: gl.getUniformLocation(program, 'uContrast'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uContrast, this.contrast);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Contrast} Instance of fabric.Image.filters.Contrast\n */\n fabric.Image.filters.Contrast.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Saturate filter class\n * @class fabric.Image.filters.Saturation\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Saturation#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Saturation({\n * saturation: 100\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Saturation = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Saturation.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Saturation',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uSaturation;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float rgMax = max(color.r, color.g);\\n' +\n 'float rgbMax = max(rgMax, color.b);\\n' +\n 'color.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\\n' +\n 'color.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\\n' +\n 'color.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n saturation: 0,\n\n mainParameter: 'saturation',\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Saturate.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.saturate=0] Value to saturate the image (-1...1)\n */\n\n /**\n * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.saturation === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, len = data.length,\n adjust = -this.saturation, i, max;\n\n for (i = 0; i < len; i += 4) {\n max = Math.max(data[i], data[i + 1], data[i + 2]);\n data[i] += max !== data[i] ? (max - data[i]) * adjust : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uSaturation: gl.getUniformLocation(program, 'uSaturation'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uSaturation, -this.saturation);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Saturation} Instance of fabric.Image.filters.Saturate\n */\n fabric.Image.filters.Saturation.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Blur filter class\n * @class fabric.Image.filters.Blur\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Blur#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Blur({\n * blur: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Blur = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blur.prototype */ {\n\n type: 'Blur',\n\n /*\n'gl_FragColor = vec4(0.0);',\n'gl_FragColor += texture2D(texture, vTexCoord + -7 * uDelta)*0.0044299121055113265;',\n'gl_FragColor += texture2D(texture, vTexCoord + -6 * uDelta)*0.00895781211794;',\n'gl_FragColor += texture2D(texture, vTexCoord + -5 * uDelta)*0.0215963866053;',\n'gl_FragColor += texture2D(texture, vTexCoord + -4 * uDelta)*0.0443683338718;',\n'gl_FragColor += texture2D(texture, vTexCoord + -3 * uDelta)*0.0776744219933;',\n'gl_FragColor += texture2D(texture, vTexCoord + -2 * uDelta)*0.115876621105;',\n'gl_FragColor += texture2D(texture, vTexCoord + -1 * uDelta)*0.147308056121;',\n'gl_FragColor += texture2D(texture, vTexCoord )*0.159576912161;',\n'gl_FragColor += texture2D(texture, vTexCoord + 1 * uDelta)*0.147308056121;',\n'gl_FragColor += texture2D(texture, vTexCoord + 2 * uDelta)*0.115876621105;',\n'gl_FragColor += texture2D(texture, vTexCoord + 3 * uDelta)*0.0776744219933;',\n'gl_FragColor += texture2D(texture, vTexCoord + 4 * uDelta)*0.0443683338718;',\n'gl_FragColor += texture2D(texture, vTexCoord + 5 * uDelta)*0.0215963866053;',\n'gl_FragColor += texture2D(texture, vTexCoord + 6 * uDelta)*0.00895781211794;',\n'gl_FragColor += texture2D(texture, vTexCoord + 7 * uDelta)*0.0044299121055113265;',\n*/\n\n /* eslint-disable max-len */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec2 uDelta;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'const float nSamples = 15.0;\\n' +\n 'vec3 v3offset = vec3(12.9898, 78.233, 151.7182);\\n' +\n 'float random(vec3 scale) {\\n' +\n /* use the fragment position for a different seed per-pixel */\n 'return fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\\n' +\n '}\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0.0);\\n' +\n 'float total = 0.0;\\n' +\n 'float offset = random(v3offset);\\n' +\n 'for (float t = -nSamples; t <= nSamples; t++) {\\n' +\n 'float percent = (t + offset - 0.5) / nSamples;\\n' +\n 'float weight = 1.0 - abs(percent);\\n' +\n 'color += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\\n' +\n 'total += weight;\\n' +\n '}\\n' +\n 'gl_FragColor = color / total;\\n' +\n '}',\n /* eslint-enable max-len */\n\n /**\n * blur value, in percentage of image dimensions.\n * specific to keep the image blur constant at different resolutions\n * range between 0 and 1.\n */\n blur: 0,\n\n mainParameter: 'blur',\n\n applyTo: function(options) {\n if (options.webgl) {\n // this aspectRatio is used to give the same blur to vertical and horizontal\n this.aspectRatio = options.sourceWidth / options.sourceHeight;\n options.passes++;\n this._setupFrameBuffer(options);\n this.horizontal = true;\n this.applyToWebGL(options);\n this._swapTextures(options);\n this._setupFrameBuffer(options);\n this.horizontal = false;\n this.applyToWebGL(options);\n this._swapTextures(options);\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n applyTo2d: function(options) {\n // paint canvasEl with current image data.\n //options.ctx.putImageData(options.imageData, 0, 0);\n options.imageData = this.simpleBlur(options);\n },\n\n simpleBlur: function(options) {\n var resources = options.filterBackend.resources, canvas1, canvas2,\n width = options.imageData.width,\n height = options.imageData.height;\n\n if (!resources.blurLayer1) {\n resources.blurLayer1 = fabric.util.createCanvasElement();\n resources.blurLayer2 = fabric.util.createCanvasElement();\n }\n canvas1 = resources.blurLayer1;\n canvas2 = resources.blurLayer2;\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas2.width = canvas1.width = width;\n canvas2.height = canvas1.height = height;\n }\n var ctx1 = canvas1.getContext('2d'),\n ctx2 = canvas2.getContext('2d'),\n nSamples = 15,\n random, percent, j, i,\n blur = this.blur * 0.06 * 0.5;\n\n // load first canvas\n ctx1.putImageData(options.imageData, 0, 0);\n ctx2.clearRect(0, 0, width, height);\n\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * width + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, j, random);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * height + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, random, j);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n options.ctx.drawImage(canvas1, 0, 0);\n var newImageData = options.ctx.getImageData(0, 0, canvas1.width, canvas1.height);\n ctx1.globalAlpha = 1;\n ctx1.clearRect(0, 0, canvas1.width, canvas1.height);\n return newImageData;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n delta: gl.getUniformLocation(program, 'uDelta'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var delta = this.chooseRightDelta();\n gl.uniform2fv(uniformLocations.delta, delta);\n },\n\n /**\n * choose right value of image percentage to blur with\n * @returns {Array} a numeric array with delta values\n */\n chooseRightDelta: function() {\n var blurScale = 1, delta = [0, 0], blur;\n if (this.horizontal) {\n if (this.aspectRatio > 1) {\n // image is wide, i want to shrink radius horizontal\n blurScale = 1 / this.aspectRatio;\n }\n }\n else {\n if (this.aspectRatio < 1) {\n // image is tall, i want to shrink radius vertical\n blurScale = this.aspectRatio;\n }\n }\n blur = blurScale * this.blur * 0.12;\n if (this.horizontal) {\n delta[0] = blur;\n }\n else {\n delta[1] = blur;\n }\n return delta;\n },\n });\n\n /**\n * Deserialize a JSON definition of a BlurFilter into a concrete instance.\n */\n filters.Blur.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Gamma filter class\n * @class fabric.Image.filters.Gamma\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Gamma#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Gamma({\n * gamma: [1, 0.5, 2.1]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Gamma = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Gamma.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Gamma',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec3 uGamma;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec3 correction = (1.0 / uGamma);\\n' +\n 'color.r = pow(color.r, correction.r);\\n' +\n 'color.g = pow(color.g, correction.g);\\n' +\n 'color.b = pow(color.b, correction.b);\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.rgb *= color.a;\\n' +\n '}',\n\n /**\n * Gamma array value, from 0.01 to 2.2.\n * @param {Array} gamma\n * @default\n */\n gamma: [1, 1, 1],\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'gamma',\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.gamma = [1, 1, 1];\n filters.BaseFilter.prototype.initialize.call(this, options);\n },\n\n /**\n * Apply the Gamma operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData, data = imageData.data,\n gamma = this.gamma, len = data.length,\n rInv = 1 / gamma[0], gInv = 1 / gamma[1],\n bInv = 1 / gamma[2], i;\n\n if (!this.rVals) {\n // eslint-disable-next-line\n this.rVals = new Uint8Array(256);\n // eslint-disable-next-line\n this.gVals = new Uint8Array(256);\n // eslint-disable-next-line\n this.bVals = new Uint8Array(256);\n }\n\n // This is an optimization - pre-compute a look-up table for each color channel\n // instead of performing these pow calls for each pixel in the image.\n for (i = 0, len = 256; i < len; i++) {\n this.rVals[i] = Math.pow(i / 255, rInv) * 255;\n this.gVals[i] = Math.pow(i / 255, gInv) * 255;\n this.bVals[i] = Math.pow(i / 255, bInv) * 255;\n }\n for (i = 0, len = data.length; i < len; i += 4) {\n data[i] = this.rVals[data[i]];\n data[i + 1] = this.gVals[data[i + 1]];\n data[i + 2] = this.bVals[data[i + 2]];\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uGamma: gl.getUniformLocation(program, 'uGamma'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform3fv(uniformLocations.uGamma, this.gamma);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Gamma} Instance of fabric.Image.filters.Gamma\n */\n fabric.Image.filters.Gamma.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * A container class that knows how to apply a sequence of filters to an input image.\n */\n filters.Composed = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Composed.prototype */ {\n\n type: 'Composed',\n\n /**\n * A non sparse array of filters to apply\n */\n subFilters: [],\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n // create a new array instead mutating the prototype with push\n this.subFilters = this.subFilters.slice(0);\n },\n\n /**\n * Apply this container's filters to the input image provided.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be applied.\n */\n applyTo: function(options) {\n options.passes += this.subFilters.length - 1;\n this.subFilters.forEach(function(filter) {\n filter.applyTo(options);\n });\n },\n\n /**\n * Serialize this filter into JSON.\n *\n * @returns {Object} A JSON representation of this filter.\n */\n toObject: function() {\n return fabric.util.object.extend(this.callSuper('toObject'), {\n subFilters: this.subFilters.map(function(filter) { return filter.toObject(); }),\n });\n },\n\n isNeutralState: function() {\n return !this.subFilters.some(function(filter) { return !filter.isNeutralState(); });\n }\n });\n\n /**\n * Deserialize a JSON definition of a ComposedFilter into a concrete instance.\n */\n fabric.Image.filters.Composed.fromObject = function(object, callback) {\n var filters = object.subFilters || [],\n subFilters = filters.map(function(filter) {\n return new fabric.Image.filters[filter.type](filter);\n }),\n instance = new fabric.Image.filters.Composed({ subFilters: subFilters });\n callback && callback(instance);\n return instance;\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * HueRotation filter class\n * @class fabric.Image.filters.HueRotation\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.HueRotation#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.HueRotation({\n * rotation: -0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.HueRotation = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.HueRotation.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'HueRotation',\n\n /**\n * HueRotation value, from -1 to 1.\n * the unit is radians\n * @param {Number} myParameter\n * @default\n */\n rotation: 0,\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'rotation',\n\n calculateMatrix: function() {\n var rad = this.rotation * Math.PI, cos = fabric.util.cos(rad), sin = fabric.util.sin(rad),\n aThird = 1 / 3, aThirdSqtSin = Math.sqrt(aThird) * sin, OneMinusCos = 1 - cos;\n this.matrix = [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0\n ];\n this.matrix[0] = cos + OneMinusCos / 3;\n this.matrix[1] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[2] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[5] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[6] = cos + aThird * OneMinusCos;\n this.matrix[7] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[10] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[11] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[12] = cos + aThird * OneMinusCos;\n },\n\n /**\n * HueRotation isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState: function(options) {\n this.calculateMatrix();\n return filters.BaseFilter.prototype.isNeutralState.call(this, options);\n },\n\n /**\n * Apply this filter to the input image data provided.\n *\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n this.calculateMatrix();\n filters.BaseFilter.prototype.applyTo.call(this, options);\n },\n\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.HueRotation} Instance of fabric.Image.filters.HueRotation\n */\n fabric.Image.filters.HueRotation.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n clone = fabric.util.object.clone;\n\n if (fabric.Text) {\n fabric.warn('fabric.Text is already defined');\n return;\n }\n\n var additionalProps =\n ('fontFamily fontWeight fontSize text underline overline linethrough' +\n ' textAlign fontStyle lineHeight textBackgroundColor charSpacing styles path').split(' ');\n\n /**\n * Text class\n * @class fabric.Text\n * @extends fabric.Object\n * @return {fabric.Text} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#text}\n * @see {@link fabric.Text#initialize} for constructor definition\n */\n fabric.Text = fabric.util.createClass(fabric.Object, /** @lends fabric.Text.prototype */ {\n\n /**\n * Properties which when set cause object to change dimensions\n * @type Array\n * @private\n */\n _dimensionAffectingProps: [\n 'fontSize',\n 'fontWeight',\n 'fontFamily',\n 'fontStyle',\n 'lineHeight',\n 'text',\n 'charSpacing',\n 'textAlign',\n 'styles',\n 'path'\n ],\n\n /**\n * @private\n */\n _reNewline: /\\r?\\n/,\n\n /**\n * Use this regular expression to filter for whitespaces that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reSpacesAndTabs: /[ \\t\\r]/g,\n\n /**\n * Use this regular expression to filter for whitespace that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reSpaceAndTab: /[ \\t\\r]/,\n\n /**\n * Use this regular expression to filter consecutive groups of non spaces.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reWords: /\\S+/g,\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'text',\n\n /**\n * Font size (in pixels)\n * @type Number\n * @default\n */\n fontSize: 40,\n\n /**\n * Font weight (e.g. bold, normal, 400, 600, 800)\n * @type {(Number|String)}\n * @default\n */\n fontWeight: 'normal',\n\n /**\n * Font family\n * @type String\n * @default\n */\n fontFamily: 'Times New Roman',\n\n /**\n * Text decoration underline.\n * @type Boolean\n * @default\n */\n underline: false,\n\n /**\n * Text decoration overline.\n * @type Boolean\n * @default\n */\n overline: false,\n\n /**\n * Text decoration linethrough.\n * @type Boolean\n * @default\n */\n linethrough: false,\n\n /**\n * Text alignment. Possible values: \"left\", \"center\", \"right\", \"justify\",\n * \"justify-left\", \"justify-center\" or \"justify-right\".\n * @type String\n * @default\n */\n textAlign: 'left',\n\n /**\n * Font style . Possible values: \"\", \"normal\", \"italic\" or \"oblique\".\n * @type String\n * @default\n */\n fontStyle: 'normal',\n\n /**\n * Line height\n * @type Number\n * @default\n */\n lineHeight: 1.16,\n\n /**\n * Superscript schema object (minimum overlap)\n * @type {Object}\n * @default\n */\n superscript: {\n size: 0.60, // fontSize factor\n baseline: -0.35 // baseline-shift factor (upwards)\n },\n\n /**\n * Subscript schema object (minimum overlap)\n * @type {Object}\n * @default\n */\n subscript: {\n size: 0.60, // fontSize factor\n baseline: 0.11 // baseline-shift factor (downwards)\n },\n\n /**\n * Background color of text lines\n * @type String\n * @default\n */\n textBackgroundColor: '',\n\n /**\n * List of properties to consider when checking if\n * state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat(additionalProps),\n\n /**\n * List of properties to consider when checking if cache needs refresh\n * @type Array\n */\n cacheProperties: fabric.Object.prototype.cacheProperties.concat(additionalProps),\n\n /**\n * When defined, an object is rendered via stroke and this property specifies its color.\n * Backwards incompatibility note: This property was named \"strokeStyle\" until v1.1.6\n * @type String\n * @default\n */\n stroke: null,\n\n /**\n * Shadow object representing shadow of this shape.\n * Backwards incompatibility note: This property was named \"textShadow\" (String) until v1.2.11\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * fabric.Path that the text can follow.\n * This feature is in BETA.\n * @type fabric.Path\n * @default\n */\n path: null,\n\n /**\n * @private\n */\n _fontSizeFraction: 0.222,\n\n /**\n * @private\n */\n offsets: {\n underline: 0.10,\n linethrough: -0.315,\n overline: -0.88\n },\n\n /**\n * Text Line proportion to font Size (in pixels)\n * @type Number\n * @default\n */\n _fontSizeMult: 1.13,\n\n /**\n * additional space between characters\n * expressed in thousands of em unit\n * @type Number\n * @default\n */\n charSpacing: 0,\n\n /**\n * Object containing character styles - top-level properties -> line numbers,\n * 2nd-level properties - character numbers\n * @type Object\n * @default\n */\n styles: null,\n\n /**\n * Reference to a context to measure text char or couple of chars\n * the cacheContext of the canvas will be used or a freshly created one if the object is not on canvas\n * once created it will be referenced on fabric._measuringContext to avoid creating a canvas for every\n * text object created.\n * @type {CanvasRenderingContext2D}\n * @default\n */\n _measuringContext: null,\n\n /**\n * Baseline shift, styles only, keep at 0 for the main text object\n * @type {Number}\n * @default\n */\n deltaY: 0,\n\n /**\n * WARNING: EXPERIMENTAL. NOT SUPPORTED YET\n * determine the direction of the text.\n * This has to be set manually together with textAlign and originX for proper\n * experience.\n * some interesting link for the future\n * https://www.w3.org/International/questions/qa-bidi-unicode-controls\n * @since 4.5.0\n * @type {String} 'ltr|rtl'\n * @default\n */\n direction: 'ltr',\n\n /**\n * Array of properties that define a style unit (of 'styles').\n * @type {Array}\n * @default\n */\n _styleProperties: [\n 'stroke',\n 'strokeWidth',\n 'fill',\n 'fontFamily',\n 'fontSize',\n 'fontWeight',\n 'fontStyle',\n 'underline',\n 'overline',\n 'linethrough',\n 'deltaY',\n 'textBackgroundColor',\n ],\n\n /**\n * contains characters bounding boxes\n */\n __charBounds: [],\n\n /**\n * use this size when measuring text. To avoid IE11 rounding errors\n * @type {Number}\n * @default\n * @readonly\n * @private\n */\n CACHE_FONT_SIZE: 400,\n\n /**\n * contains the min text width to avoid getting 0\n * @type {Number}\n * @default\n */\n MIN_TEXT_WIDTH: 2,\n\n /**\n * Constructor\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.Text} thisArg\n */\n initialize: function(text, options) {\n this.styles = options ? (options.styles || { }) : { };\n this.text = text;\n this.__skipDimension = true;\n this.callSuper('initialize', options);\n if (this.path) {\n this.setPathInfo();\n }\n this.__skipDimension = false;\n this.initDimensions();\n this.setCoords();\n this.setupState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * If text has a path, it will add the extra information needed\n * for path and text calculations\n * @return {fabric.Text} thisArg\n */\n setPathInfo: function() {\n var path = this.path;\n if (path) {\n path.segmentsInfo = fabric.util.getPathSegmentsInfo(path.path);\n }\n },\n\n /**\n * Return a context for measurement of text string.\n * if created it gets stored for reuse\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.Text} thisArg\n */\n getMeasuringContext: function() {\n // if we did not return we have to measure something.\n if (!fabric._measuringContext) {\n fabric._measuringContext = this.canvas && this.canvas.contextCache ||\n fabric.util.createCanvasElement().getContext('2d');\n }\n return fabric._measuringContext;\n },\n\n /**\n * @private\n * Divides text into lines of text and lines of graphemes.\n */\n _splitText: function() {\n var newLines = this._splitTextIntoLines(this.text);\n this.textLines = newLines.lines;\n this._textLines = newLines.graphemeLines;\n this._unwrappedTextLines = newLines._unwrappedLines;\n this._text = newLines.graphemeText;\n return newLines;\n },\n\n /**\n * Initialize or update text dimensions.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n */\n initDimensions: function() {\n if (this.__skipDimension) {\n return;\n }\n this._splitText();\n this._clearCache();\n if (this.path) {\n this.width = this.path.width;\n this.height = this.path.height;\n }\n else {\n this.width = this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH;\n this.height = this.calcTextHeight();\n }\n if (this.textAlign.indexOf('justify') !== -1) {\n // once text is measured we need to make space fatter to make justified text.\n this.enlargeSpaces();\n }\n this.saveState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Enlarge space boxes and shift the others\n */\n enlargeSpaces: function() {\n var diffSpace, currentLineWidth, numberOfSpaces, accumulatedSpace, line, charBound, spaces;\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n if (this.textAlign !== 'justify' && (i === len - 1 || this.isEndOfWrapping(i))) {\n continue;\n }\n accumulatedSpace = 0;\n line = this._textLines[i];\n currentLineWidth = this.getLineWidth(i);\n if (currentLineWidth < this.width && (spaces = this.textLines[i].match(this._reSpacesAndTabs))) {\n numberOfSpaces = spaces.length;\n diffSpace = (this.width - currentLineWidth) / numberOfSpaces;\n for (var j = 0, jlen = line.length; j <= jlen; j++) {\n charBound = this.__charBounds[i][j];\n if (this._reSpaceAndTab.test(line[j])) {\n charBound.width += diffSpace;\n charBound.kernedWidth += diffSpace;\n charBound.left += accumulatedSpace;\n accumulatedSpace += diffSpace;\n }\n else {\n charBound.left += accumulatedSpace;\n }\n }\n }\n }\n },\n\n /**\n * Detect if the text line is ended with an hard break\n * text and itext do not have wrapping, return false\n * @return {Boolean}\n */\n isEndOfWrapping: function(lineIndex) {\n return lineIndex === this._textLines.length - 1;\n },\n\n /**\n * Detect if a line has a linebreak and so we need to account for it when moving\n * and counting style.\n * It return always for text and Itext.\n * @return Number\n */\n missingNewlineOffset: function() {\n return 1;\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} String representation of text object\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Return the dimension and the zoom level needed to create a cache canvas\n * big enough to host the object to be cached.\n * @private\n * @param {Object} dim.x width of object to be cached\n * @param {Object} dim.y height of object to be cached\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _getCacheCanvasDimensions: function() {\n var dims = this.callSuper('_getCacheCanvasDimensions');\n var fontSize = this.fontSize;\n dims.width += fontSize * dims.zoomX;\n dims.height += fontSize * dims.zoomY;\n return dims;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n this._setTextStyles(ctx);\n this._renderTextLinesBackground(ctx);\n this._renderTextDecoration(ctx, 'underline');\n this._renderText(ctx);\n this._renderTextDecoration(ctx, 'overline');\n this._renderTextDecoration(ctx, 'linethrough');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderText: function(ctx) {\n if (this.paintFirst === 'stroke') {\n this._renderTextStroke(ctx);\n this._renderTextFill(ctx);\n }\n else {\n this._renderTextFill(ctx);\n this._renderTextStroke(ctx);\n }\n },\n\n /**\n * Set the font parameter of the context with the object properties or with charStyle\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [charStyle] object with font style properties\n * @param {String} [charStyle.fontFamily] Font Family\n * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )\n * @param {String} [charStyle.fontWeight] Font weight\n * @param {String} [charStyle.fontStyle] Font style (italic|normal)\n */\n _setTextStyles: function(ctx, charStyle, forMeasuring) {\n ctx.textBaseline = 'alphabetic';\n ctx.font = this._getFontDeclaration(charStyle, forMeasuring);\n },\n\n /**\n * calculate and return the text Width measuring each line.\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {Number} Maximum width of fabric.Text object\n */\n calcTextWidth: function() {\n var maxWidth = this.getLineWidth(0);\n\n for (var i = 1, len = this._textLines.length; i < len; i++) {\n var currentLineWidth = this.getLineWidth(i);\n if (currentLineWidth > maxWidth) {\n maxWidth = currentLineWidth;\n }\n }\n return maxWidth;\n },\n\n /**\n * @private\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} line Text to render\n * @param {Number} left Left position of text\n * @param {Number} top Top position of text\n * @param {Number} lineIndex Index of a line in a text\n */\n _renderTextLine: function(method, ctx, line, left, top, lineIndex) {\n this._renderChars(method, ctx, line, left, top, lineIndex);\n },\n\n /**\n * Renders the text background for lines, taking care of style\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextLinesBackground: function(ctx) {\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor')) {\n return;\n }\n var heightOfLine,\n lineLeftOffset, originalFill = ctx.fillStyle,\n line, lastColor,\n leftOffset = this._getLeftOffset(),\n lineTopOffset = this._getTopOffset(),\n boxStart = 0, boxWidth = 0, charBox, currentColor, path = this.path,\n drawStart;\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n heightOfLine = this.getHeightOfLine(i);\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor', i)) {\n lineTopOffset += heightOfLine;\n continue;\n }\n line = this._textLines[i];\n lineLeftOffset = this._getLineLeftOffset(i);\n boxWidth = 0;\n boxStart = 0;\n lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n if (path) {\n ctx.save();\n ctx.translate(charBox.renderLeft, charBox.renderTop);\n ctx.rotate(charBox.angle);\n ctx.fillStyle = currentColor;\n currentColor && ctx.fillRect(\n -charBox.width / 2,\n -heightOfLine / this.lineHeight * (1 - this._fontSizeFraction),\n charBox.width,\n heightOfLine / this.lineHeight\n );\n ctx.restore();\n }\n else if (currentColor !== lastColor) {\n drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n ctx.fillStyle = lastColor;\n lastColor && ctx.fillRect(\n drawStart,\n lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight\n );\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastColor = currentColor;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n if (currentColor && !path) {\n drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n ctx.fillStyle = currentColor;\n ctx.fillRect(\n drawStart,\n lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight\n );\n }\n lineTopOffset += heightOfLine;\n }\n ctx.fillStyle = originalFill;\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * @private\n * @param {Object} decl style declaration for cache\n * @param {String} decl.fontFamily fontFamily\n * @param {String} decl.fontStyle fontStyle\n * @param {String} decl.fontWeight fontWeight\n * @return {Object} reference to cache\n */\n getFontCache: function(decl) {\n var fontFamily = decl.fontFamily.toLowerCase();\n if (!fabric.charWidthsCache[fontFamily]) {\n fabric.charWidthsCache[fontFamily] = { };\n }\n var cache = fabric.charWidthsCache[fontFamily],\n cacheProp = decl.fontStyle.toLowerCase() + '_' + (decl.fontWeight + '').toLowerCase();\n if (!cache[cacheProp]) {\n cache[cacheProp] = { };\n }\n return cache[cacheProp];\n },\n\n /**\n * measure and return the width of a single character.\n * possibly overridden to accommodate different measure logic or\n * to hook some external lib for character measurement\n * @private\n * @param {String} _char, char to be measured\n * @param {Object} charStyle style of char to be measured\n * @param {String} [previousChar] previous char\n * @param {Object} [prevCharStyle] style of previous char\n */\n _measureChar: function(_char, charStyle, previousChar, prevCharStyle) {\n // first i try to return from cache\n var fontCache = this.getFontCache(charStyle), fontDeclaration = this._getFontDeclaration(charStyle),\n previousFontDeclaration = this._getFontDeclaration(prevCharStyle), couple = previousChar + _char,\n stylesAreEqual = fontDeclaration === previousFontDeclaration, width, coupleWidth, previousWidth,\n fontMultiplier = charStyle.fontSize / this.CACHE_FONT_SIZE, kernedWidth;\n\n if (previousChar && fontCache[previousChar] !== undefined) {\n previousWidth = fontCache[previousChar];\n }\n if (fontCache[_char] !== undefined) {\n kernedWidth = width = fontCache[_char];\n }\n if (stylesAreEqual && fontCache[couple] !== undefined) {\n coupleWidth = fontCache[couple];\n kernedWidth = coupleWidth - previousWidth;\n }\n if (width === undefined || previousWidth === undefined || coupleWidth === undefined) {\n var ctx = this.getMeasuringContext();\n // send a TRUE to specify measuring font size CACHE_FONT_SIZE\n this._setTextStyles(ctx, charStyle, true);\n }\n if (width === undefined) {\n kernedWidth = width = ctx.measureText(_char).width;\n fontCache[_char] = width;\n }\n if (previousWidth === undefined && stylesAreEqual && previousChar) {\n previousWidth = ctx.measureText(previousChar).width;\n fontCache[previousChar] = previousWidth;\n }\n if (stylesAreEqual && coupleWidth === undefined) {\n // we can measure the kerning couple and subtract the width of the previous character\n coupleWidth = ctx.measureText(couple).width;\n fontCache[couple] = coupleWidth;\n kernedWidth = coupleWidth - previousWidth;\n }\n return { width: width * fontMultiplier, kernedWidth: kernedWidth * fontMultiplier };\n },\n\n /**\n * Computes height of character at given position\n * @param {Number} line the line index number\n * @param {Number} _char the character index number\n * @return {Number} fontSize of the character\n */\n getHeightOfChar: function(line, _char) {\n return this.getValueOfPropertyAt(line, _char, 'fontSize');\n },\n\n /**\n * measure a text line measuring all characters.\n * @param {Number} lineIndex line number\n * @return {Number} Line width\n */\n measureLine: function(lineIndex) {\n var lineInfo = this._measureLine(lineIndex);\n if (this.charSpacing !== 0) {\n lineInfo.width -= this._getWidthOfCharSpacing();\n }\n if (lineInfo.width < 0) {\n lineInfo.width = 0;\n }\n return lineInfo;\n },\n\n /**\n * measure every grapheme of a line, populating __charBounds\n * @param {Number} lineIndex\n * @return {Object} object.width total width of characters\n * @return {Object} object.widthOfSpaces length of chars that match this._reSpacesAndTabs\n */\n _measureLine: function(lineIndex) {\n var width = 0, i, grapheme, line = this._textLines[lineIndex], prevGrapheme,\n graphemeInfo, numOfSpaces = 0, lineBounds = new Array(line.length),\n positionInPath = 0, startingPoint, totalPathLength, path = this.path;\n\n this.__charBounds[lineIndex] = lineBounds;\n if (path) {\n startingPoint = fabric.util.getPointOnPath(path.path, 0, path.segmentsInfo);\n totalPathLength = path.segmentsInfo[path.segmentsInfo.length - 1].length;\n startingPoint.x += path.pathOffset.x;\n startingPoint.y += path.pathOffset.y;\n }\n for (i = 0; i < line.length; i++) {\n grapheme = line[i];\n graphemeInfo = this._getGraphemeBox(grapheme, lineIndex, i, prevGrapheme);\n if (path) {\n if (positionInPath > totalPathLength) {\n positionInPath %= totalPathLength;\n }\n // it would probably much fater to send all the grapheme position for a line\n // and calculate path position/angle at once.\n this._setGraphemeOnPath(positionInPath, graphemeInfo, startingPoint);\n }\n lineBounds[i] = graphemeInfo;\n width += graphemeInfo.kernedWidth;\n positionInPath += graphemeInfo.kernedWidth;\n prevGrapheme = grapheme;\n }\n // this latest bound box represent the last character of the line\n // to simplify cursor handling in interactive mode.\n lineBounds[i] = {\n left: graphemeInfo ? graphemeInfo.left + graphemeInfo.width : 0,\n width: 0,\n kernedWidth: 0,\n height: this.fontSize\n };\n return { width: width, numOfSpaces: numOfSpaces };\n },\n\n /**\n * Calculate the angle and the left,top position of the char that follow a path.\n * It appends it to graphemeInfo to be reused later at rendering\n * @private\n * @param {Number} positionInPath to be measured\n * @param {Object} graphemeInfo current grapheme box information\n * @param {Object} startingPoint position of the point\n */\n _setGraphemeOnPath: function(positionInPath, graphemeInfo, startingPoint) {\n var centerPosition = positionInPath + graphemeInfo.kernedWidth / 2,\n path = this.path;\n\n // we are at currentPositionOnPath. we want to know what point on the path is.\n var info = fabric.util.getPointOnPath(path.path, centerPosition, path.segmentsInfo);\n graphemeInfo.renderLeft = info.x - startingPoint.x;\n graphemeInfo.renderTop = info.y - startingPoint.y;\n graphemeInfo.angle = info.angle;\n },\n\n /**\n * Measure and return the info of a single grapheme.\n * needs the the info of previous graphemes already filled\n * @private\n * @param {String} grapheme to be measured\n * @param {Number} lineIndex index of the line where the char is\n * @param {Number} charIndex position in the line\n * @param {String} [prevGrapheme] character preceding the one to be measured\n */\n _getGraphemeBox: function(grapheme, lineIndex, charIndex, prevGrapheme, skipLeft) {\n var style = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n prevStyle = prevGrapheme ? this.getCompleteStyleDeclaration(lineIndex, charIndex - 1) : { },\n info = this._measureChar(grapheme, style, prevGrapheme, prevStyle),\n kernedWidth = info.kernedWidth,\n width = info.width, charSpacing;\n\n if (this.charSpacing !== 0) {\n charSpacing = this._getWidthOfCharSpacing();\n width += charSpacing;\n kernedWidth += charSpacing;\n }\n\n var box = {\n width: width,\n left: 0,\n height: style.fontSize,\n kernedWidth: kernedWidth,\n deltaY: style.deltaY,\n };\n if (charIndex > 0 && !skipLeft) {\n var previousBox = this.__charBounds[lineIndex][charIndex - 1];\n box.left = previousBox.left + previousBox.width + info.kernedWidth - info.width;\n }\n return box;\n },\n\n /**\n * Calculate height of line at 'lineIndex'\n * @param {Number} lineIndex index of line to calculate\n * @return {Number}\n */\n getHeightOfLine: function(lineIndex) {\n if (this.__lineHeights[lineIndex]) {\n return this.__lineHeights[lineIndex];\n }\n\n var line = this._textLines[lineIndex],\n // char 0 is measured before the line cycle because it nneds to char\n // emptylines\n maxHeight = this.getHeightOfChar(lineIndex, 0);\n for (var i = 1, len = line.length; i < len; i++) {\n maxHeight = Math.max(this.getHeightOfChar(lineIndex, i), maxHeight);\n }\n\n return this.__lineHeights[lineIndex] = maxHeight * this.lineHeight * this._fontSizeMult;\n },\n\n /**\n * Calculate text box height\n */\n calcTextHeight: function() {\n var lineHeight, height = 0;\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n lineHeight = this.getHeightOfLine(i);\n height += (i === len - 1 ? lineHeight / this.lineHeight : lineHeight);\n }\n return height;\n },\n\n /**\n * @private\n * @return {Number} Left offset\n */\n _getLeftOffset: function() {\n return this.direction === 'ltr' ? -this.width / 2 : this.width / 2;\n },\n\n /**\n * @private\n * @return {Number} Top offset\n */\n _getTopOffset: function() {\n return -this.height / 2;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n */\n _renderTextCommon: function(ctx, method) {\n ctx.save();\n var lineHeights = 0, left = this._getLeftOffset(), top = this._getTopOffset();\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n var heightOfLine = this.getHeightOfLine(i),\n maxHeight = heightOfLine / this.lineHeight,\n leftOffset = this._getLineLeftOffset(i);\n this._renderTextLine(\n method,\n ctx,\n this._textLines[i],\n left + leftOffset,\n top + lineHeights + maxHeight,\n i\n );\n lineHeights += heightOfLine;\n }\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextFill: function(ctx) {\n if (!this.fill && !this.styleHas('fill')) {\n return;\n }\n\n this._renderTextCommon(ctx, 'fillText');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextStroke: function(ctx) {\n if ((!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles()) {\n return;\n }\n\n if (this.shadow && !this.shadow.affectStroke) {\n this._removeShadow(ctx);\n }\n\n ctx.save();\n this._setLineDash(ctx, this.strokeDashArray);\n ctx.beginPath();\n this._renderTextCommon(ctx, 'strokeText');\n ctx.closePath();\n ctx.restore();\n },\n\n /**\n * @private\n * @param {String} method fillText or strokeText.\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Array} line Content of the line, splitted in an array by grapheme\n * @param {Number} left\n * @param {Number} top\n * @param {Number} lineIndex\n */\n _renderChars: function(method, ctx, line, left, top, lineIndex) {\n // set proper line offset\n var lineHeight = this.getHeightOfLine(lineIndex),\n isJustify = this.textAlign.indexOf('justify') !== -1,\n actualStyle,\n nextStyle,\n charsToRender = '',\n charBox,\n boxWidth = 0,\n timeToRender,\n path = this.path,\n shortCut = !isJustify && this.charSpacing === 0 && this.isEmptyStyles(lineIndex) && !path,\n isLtr = this.direction === 'ltr', sign = this.direction === 'ltr' ? 1 : -1,\n drawingLeft;\n\n ctx.save();\n top -= lineHeight * this._fontSizeFraction / this.lineHeight;\n if (shortCut) {\n // render all the line in one pass without checking\n // drawingLeft = isLtr ? left : left - this.getLineWidth(lineIndex);\n ctx.canvas.setAttribute('dir', isLtr ? 'ltr' : 'rtl');\n ctx.direction = isLtr ? 'ltr' : 'rtl';\n this._renderChar(method, ctx, lineIndex, 0, line.join(''), left, top, lineHeight);\n ctx.restore();\n return;\n }\n for (var i = 0, len = line.length - 1; i <= len; i++) {\n timeToRender = i === len || this.charSpacing || path;\n charsToRender += line[i];\n charBox = this.__charBounds[lineIndex][i];\n if (boxWidth === 0) {\n left += sign * (charBox.kernedWidth - charBox.width);\n boxWidth += charBox.width;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n if (isJustify && !timeToRender) {\n if (this._reSpaceAndTab.test(line[i])) {\n timeToRender = true;\n }\n }\n if (!timeToRender) {\n // if we have charSpacing, we render char by char\n actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n timeToRender = this._hasStyleChanged(actualStyle, nextStyle);\n }\n if (timeToRender) {\n if (path) {\n ctx.save();\n ctx.translate(charBox.renderLeft, charBox.renderTop);\n ctx.rotate(charBox.angle);\n this._renderChar(method, ctx, lineIndex, i, charsToRender, -boxWidth / 2, 0, lineHeight);\n ctx.restore();\n }\n else {\n drawingLeft = left;\n ctx.canvas.setAttribute('dir', isLtr ? 'ltr' : 'rtl');\n ctx.direction = isLtr ? 'ltr' : 'rtl';\n this._renderChar(method, ctx, lineIndex, i, charsToRender, drawingLeft, top, lineHeight);\n }\n charsToRender = '';\n actualStyle = nextStyle;\n left += sign * boxWidth;\n boxWidth = 0;\n }\n }\n ctx.restore();\n },\n\n /**\n * This function try to patch the missing gradientTransform on canvas gradients.\n * transforming a context to transform the gradient, is going to transform the stroke too.\n * we want to transform the gradient but not the stroke operation, so we create\n * a transformed gradient on a pattern and then we use the pattern instead of the gradient.\n * this method has drawbacks: is slow, is in low resolution, needs a patch for when the size\n * is limited.\n * @private\n * @param {fabric.Gradient} filler a fabric gradient instance\n * @return {CanvasPattern} a pattern to use as fill/stroke style\n */\n _applyPatternGradientTransformText: function(filler) {\n var pCanvas = fabric.util.createCanvasElement(), pCtx,\n // TODO: verify compatibility with strokeUniform\n width = this.width + this.strokeWidth, height = this.height + this.strokeWidth;\n pCanvas.width = width;\n pCanvas.height = height;\n pCtx = pCanvas.getContext('2d');\n pCtx.beginPath(); pCtx.moveTo(0, 0); pCtx.lineTo(width, 0); pCtx.lineTo(width, height);\n pCtx.lineTo(0, height); pCtx.closePath();\n pCtx.translate(width / 2, height / 2);\n pCtx.fillStyle = filler.toLive(pCtx);\n this._applyPatternGradientTransform(pCtx, filler);\n pCtx.fill();\n return pCtx.createPattern(pCanvas, 'no-repeat');\n },\n\n handleFiller: function(ctx, property, filler) {\n var offsetX, offsetY;\n if (filler.toLive) {\n if (filler.gradientUnits === 'percentage' || filler.gradientTrasnform || filler.patternTransform) {\n // need to transform gradient in a pattern.\n // this is a slow process. If you are hitting this codepath, and the object\n // is not using caching, you should consider switching it on.\n // we need a canvas as big as the current object caching canvas.\n offsetX = -this.width / 2;\n offsetY = -this.height / 2;\n ctx.translate(offsetX, offsetY);\n ctx[property] = this._applyPatternGradientTransformText(filler);\n return { offsetX: offsetX, offsetY: offsetY };\n }\n else {\n // is a simple gradient or pattern\n ctx[property] = filler.toLive(ctx, this);\n return this._applyPatternGradientTransform(ctx, filler);\n }\n }\n else {\n // is a color\n ctx[property] = filler;\n }\n return { offsetX: 0, offsetY: 0 };\n },\n\n _setStrokeStyles: function(ctx, decl) {\n ctx.lineWidth = decl.strokeWidth;\n ctx.lineCap = this.strokeLineCap;\n ctx.lineDashOffset = this.strokeDashOffset;\n ctx.lineJoin = this.strokeLineJoin;\n ctx.miterLimit = this.strokeMiterLimit;\n return this.handleFiller(ctx, 'strokeStyle', decl.stroke);\n },\n\n _setFillStyles: function(ctx, decl) {\n return this.handleFiller(ctx, 'fillStyle', decl.fill);\n },\n\n /**\n * @private\n * @param {String} method\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {String} _char\n * @param {Number} left Left coordinate\n * @param {Number} top Top coordinate\n * @param {Number} lineHeight Height of the line\n */\n _renderChar: function(method, ctx, lineIndex, charIndex, _char, left, top) {\n var decl = this._getStyleDeclaration(lineIndex, charIndex),\n fullDecl = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n shouldFill = method === 'fillText' && fullDecl.fill,\n shouldStroke = method === 'strokeText' && fullDecl.stroke && fullDecl.strokeWidth,\n fillOffsets, strokeOffsets;\n\n if (!shouldStroke && !shouldFill) {\n return;\n }\n ctx.save();\n\n shouldFill && (fillOffsets = this._setFillStyles(ctx, fullDecl));\n shouldStroke && (strokeOffsets = this._setStrokeStyles(ctx, fullDecl));\n\n ctx.font = this._getFontDeclaration(fullDecl);\n\n\n if (decl && decl.textBackgroundColor) {\n this._removeShadow(ctx);\n }\n if (decl && decl.deltaY) {\n top += decl.deltaY;\n }\n shouldFill && ctx.fillText(_char, left - fillOffsets.offsetX, top - fillOffsets.offsetY);\n shouldStroke && ctx.strokeText(_char, left - strokeOffsets.offsetX, top - strokeOffsets.offsetY);\n ctx.restore();\n },\n\n /**\n * Turns the character into a 'superior figure' (i.e. 'superscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n setSuperscript: function(start, end) {\n return this._setScript(start, end, this.superscript);\n },\n\n /**\n * Turns the character into an 'inferior figure' (i.e. 'subscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n setSubscript: function(start, end) {\n return this._setScript(start, end, this.subscript);\n },\n\n /**\n * Applies 'schema' at given position\n * @private\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @param {Number} schema\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n _setScript: function(start, end, schema) {\n var loc = this.get2DCursorLocation(start, true),\n fontSize = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'fontSize'),\n dy = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'deltaY'),\n style = { fontSize: fontSize * schema.size, deltaY: dy + fontSize * schema.baseline };\n this.setSelectionStyles(style, start, end);\n return this;\n },\n\n /**\n * @private\n * @param {Object} prevStyle\n * @param {Object} thisStyle\n */\n _hasStyleChanged: function(prevStyle, thisStyle) {\n return prevStyle.fill !== thisStyle.fill ||\n prevStyle.stroke !== thisStyle.stroke ||\n prevStyle.strokeWidth !== thisStyle.strokeWidth ||\n prevStyle.fontSize !== thisStyle.fontSize ||\n prevStyle.fontFamily !== thisStyle.fontFamily ||\n prevStyle.fontWeight !== thisStyle.fontWeight ||\n prevStyle.fontStyle !== thisStyle.fontStyle ||\n prevStyle.deltaY !== thisStyle.deltaY;\n },\n\n /**\n * @private\n * @param {Object} prevStyle\n * @param {Object} thisStyle\n */\n _hasStyleChangedForSvg: function(prevStyle, thisStyle) {\n return this._hasStyleChanged(prevStyle, thisStyle) ||\n prevStyle.overline !== thisStyle.overline ||\n prevStyle.underline !== thisStyle.underline ||\n prevStyle.linethrough !== thisStyle.linethrough;\n },\n\n /**\n * @private\n * @param {Number} lineIndex index text line\n * @return {Number} Line left offset\n */\n _getLineLeftOffset: function(lineIndex) {\n var lineWidth = this.getLineWidth(lineIndex),\n lineDiff = this.width - lineWidth, textAlign = this.textAlign, direction = this.direction,\n isEndOfWrapping, leftOffset = 0, isEndOfWrapping = this.isEndOfWrapping(lineIndex);\n if (textAlign === 'justify'\n || (textAlign === 'justify-center' && !isEndOfWrapping)\n || (textAlign === 'justify-right' && !isEndOfWrapping)\n || (textAlign === 'justify-left' && !isEndOfWrapping)\n ) {\n return 0;\n }\n if (textAlign === 'center') {\n leftOffset = lineDiff / 2;\n }\n if (textAlign === 'right') {\n leftOffset = lineDiff;\n }\n if (textAlign === 'justify-center') {\n leftOffset = lineDiff / 2;\n }\n if (textAlign === 'justify-right') {\n leftOffset = lineDiff;\n }\n if (direction === 'rtl') {\n leftOffset -= lineDiff;\n }\n return leftOffset;\n },\n\n /**\n * @private\n */\n _clearCache: function() {\n this.__lineWidths = [];\n this.__lineHeights = [];\n this.__charBounds = [];\n },\n\n /**\n * @private\n */\n _shouldClearDimensionCache: function() {\n var shouldClear = this._forceClearCache;\n shouldClear || (shouldClear = this.hasStateChanged('_dimensionAffectingProps'));\n if (shouldClear) {\n this.dirty = true;\n this._forceClearCache = false;\n }\n return shouldClear;\n },\n\n /**\n * Measure a single line given its index. Used to calculate the initial\n * text bounding box. The values are calculated and stored in __lineWidths cache.\n * @private\n * @param {Number} lineIndex line number\n * @return {Number} Line width\n */\n getLineWidth: function(lineIndex) {\n if (this.__lineWidths[lineIndex]) {\n return this.__lineWidths[lineIndex];\n }\n\n var width, line = this._textLines[lineIndex], lineInfo;\n\n if (line === '') {\n width = 0;\n }\n else {\n lineInfo = this.measureLine(lineIndex);\n width = lineInfo.width;\n }\n this.__lineWidths[lineIndex] = width;\n return width;\n },\n\n _getWidthOfCharSpacing: function() {\n if (this.charSpacing !== 0) {\n return this.fontSize * this.charSpacing / 1000;\n }\n return 0;\n },\n\n /**\n * Retrieves the value of property at given character position\n * @param {Number} lineIndex the line number\n * @param {Number} charIndex the character number\n * @param {String} property the property name\n * @returns the value of 'property'\n */\n getValueOfPropertyAt: function(lineIndex, charIndex, property) {\n var charStyle = this._getStyleDeclaration(lineIndex, charIndex);\n if (charStyle && typeof charStyle[property] !== 'undefined') {\n return charStyle[property];\n }\n return this[property];\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextDecoration: function(ctx, type) {\n if (!this[type] && !this.styleHas(type)) {\n return;\n }\n var heightOfLine, size, _size,\n lineLeftOffset, dy, _dy,\n line, lastDecoration,\n leftOffset = this._getLeftOffset(),\n topOffset = this._getTopOffset(), top,\n boxStart, boxWidth, charBox, currentDecoration,\n maxHeight, currentFill, lastFill, path = this.path,\n charSpacing = this._getWidthOfCharSpacing();\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n heightOfLine = this.getHeightOfLine(i);\n if (!this[type] && !this.styleHas(type, i)) {\n topOffset += heightOfLine;\n continue;\n }\n line = this._textLines[i];\n maxHeight = heightOfLine / this.lineHeight;\n lineLeftOffset = this._getLineLeftOffset(i);\n boxStart = 0;\n boxWidth = 0;\n lastDecoration = this.getValueOfPropertyAt(i, 0, type);\n lastFill = this.getValueOfPropertyAt(i, 0, 'fill');\n top = topOffset + maxHeight * (1 - this._fontSizeFraction);\n size = this.getHeightOfChar(i, 0);\n dy = this.getValueOfPropertyAt(i, 0, 'deltaY');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentDecoration = this.getValueOfPropertyAt(i, j, type);\n currentFill = this.getValueOfPropertyAt(i, j, 'fill');\n _size = this.getHeightOfChar(i, j);\n _dy = this.getValueOfPropertyAt(i, j, 'deltaY');\n if (path && currentDecoration && currentFill) {\n ctx.save();\n ctx.fillStyle = lastFill;\n ctx.translate(charBox.renderLeft, charBox.renderTop);\n ctx.rotate(charBox.angle);\n ctx.fillRect(\n -charBox.kernedWidth / 2,\n this.offsets[type] * _size + _dy,\n charBox.kernedWidth,\n this.fontSize / 15\n );\n ctx.restore();\n }\n else if (\n (currentDecoration !== lastDecoration || currentFill !== lastFill || _size !== size || _dy !== dy)\n && boxWidth > 0\n ) {\n var drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n if (lastDecoration && lastFill) {\n ctx.fillStyle = lastFill;\n ctx.fillRect(\n drawStart,\n top + this.offsets[type] * size + dy,\n boxWidth,\n this.fontSize / 15\n );\n }\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastDecoration = currentDecoration;\n lastFill = currentFill;\n size = _size;\n dy = _dy;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n ctx.fillStyle = currentFill;\n currentDecoration && currentFill && ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n top + this.offsets[type] * size + dy,\n boxWidth - charSpacing,\n this.fontSize / 15\n );\n topOffset += heightOfLine;\n }\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * return font declaration string for canvas context\n * @param {Object} [styleObject] object\n * @returns {String} font declaration formatted for canvas context.\n */\n _getFontDeclaration: function(styleObject, forMeasuring) {\n var style = styleObject || this, family = this.fontFamily,\n fontIsGeneric = fabric.Text.genericFonts.indexOf(family.toLowerCase()) > -1;\n var fontFamily = family === undefined ||\n family.indexOf('\\'') > -1 || family.indexOf(',') > -1 ||\n family.indexOf('\"') > -1 || fontIsGeneric\n ? style.fontFamily : '\"' + style.fontFamily + '\"';\n return [\n // node-canvas needs \"weight style\", while browsers need \"style weight\"\n // verify if this can be fixed in JSDOM\n (fabric.isLikelyNode ? style.fontWeight : style.fontStyle),\n (fabric.isLikelyNode ? style.fontStyle : style.fontWeight),\n forMeasuring ? this.CACHE_FONT_SIZE + 'px' : style.fontSize + 'px',\n fontFamily\n ].join(' ');\n },\n\n /**\n * Renders text instance on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n // do not render if object is not visible\n if (!this.visible) {\n return;\n }\n if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) {\n return;\n }\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n }\n this.callSuper('render', ctx);\n },\n\n /**\n * Returns the text as an array of lines.\n * @param {String} text text to split\n * @returns {Array} Lines in the text\n */\n _splitTextIntoLines: function(text) {\n var lines = text.split(this._reNewline),\n newLines = new Array(lines.length),\n newLine = ['\\n'],\n newText = [];\n for (var i = 0; i < lines.length; i++) {\n newLines[i] = fabric.util.string.graphemeSplit(lines[i]);\n newText = newText.concat(newLines[i], newLine);\n }\n newText.pop();\n return { _unwrappedLines: newLines, lines: lines, graphemeText: newText, graphemeLines: newLines };\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var additionalProperties = [\n 'text',\n 'fontSize',\n 'fontWeight',\n 'fontFamily',\n 'fontStyle',\n 'lineHeight',\n 'underline',\n 'overline',\n 'linethrough',\n 'textAlign',\n 'textBackgroundColor',\n 'charSpacing',\n 'path',\n 'direction',\n ].concat(propertiesToInclude);\n var obj = this.callSuper('toObject', additionalProperties);\n obj.styles = clone(this.styles, true);\n obj.path = this.path && this.path.toObject();\n return obj;\n },\n\n /**\n * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n set: function(key, value) {\n this.callSuper('set', key, value);\n var needsDims = false;\n var isAddingPath = false;\n if (typeof key === 'object') {\n for (var _key in key) {\n if (_key === 'path') {\n this.setPathInfo();\n }\n needsDims = needsDims || this._dimensionAffectingProps.indexOf(_key) !== -1;\n isAddingPath = isAddingPath || _key === 'path';\n }\n }\n else {\n needsDims = this._dimensionAffectingProps.indexOf(key) !== -1;\n isAddingPath = key === 'path';\n }\n if (isAddingPath) {\n this.setPathInfo();\n }\n if (needsDims) {\n this.initDimensions();\n this.setCoords();\n }\n return this;\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity\n */\n complexity: function() {\n return 1;\n }\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Text.fromElement})\n * @static\n * @memberOf fabric.Text\n * @see: http://www.w3.org/TR/SVG/text.html#TextElement\n */\n fabric.Text.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(\n 'x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor'.split(' '));\n\n /**\n * Default SVG font size\n * @static\n * @memberOf fabric.Text\n */\n fabric.Text.DEFAULT_SVG_FONT_SIZE = 16;\n\n /**\n * Returns fabric.Text instance from an SVG element (not yet implemented)\n * @static\n * @memberOf fabric.Text\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Text.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Text.ATTRIBUTE_NAMES),\n parsedAnchor = parsedAttributes.textAnchor || 'left';\n options = fabric.util.object.extend((options ? clone(options) : { }), parsedAttributes);\n\n options.top = options.top || 0;\n options.left = options.left || 0;\n if (parsedAttributes.textDecoration) {\n var textDecoration = parsedAttributes.textDecoration;\n if (textDecoration.indexOf('underline') !== -1) {\n options.underline = true;\n }\n if (textDecoration.indexOf('overline') !== -1) {\n options.overline = true;\n }\n if (textDecoration.indexOf('line-through') !== -1) {\n options.linethrough = true;\n }\n delete options.textDecoration;\n }\n if ('dx' in parsedAttributes) {\n options.left += parsedAttributes.dx;\n }\n if ('dy' in parsedAttributes) {\n options.top += parsedAttributes.dy;\n }\n if (!('fontSize' in options)) {\n options.fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n }\n\n var textContent = '';\n\n // The XML is not properly parsed in IE9 so a workaround to get\n // textContent is through firstChild.data. Another workaround would be\n // to convert XML loaded from a file to be converted using DOMParser (same way loadSVGFromString() does)\n if (!('textContent' in element)) {\n if ('firstChild' in element && element.firstChild !== null) {\n if ('data' in element.firstChild && element.firstChild.data !== null) {\n textContent = element.firstChild.data;\n }\n }\n }\n else {\n textContent = element.textContent;\n }\n\n textContent = textContent.replace(/^\\s+|\\s+$|\\n+/g, '').replace(/\\s+/g, ' ');\n var originalStrokeWidth = options.strokeWidth;\n options.strokeWidth = 0;\n\n var text = new fabric.Text(textContent, options),\n textHeightScaleFactor = text.getScaledHeight() / text.height,\n lineHeightDiff = (text.height + text.strokeWidth) * text.lineHeight - text.height,\n scaledDiff = lineHeightDiff * textHeightScaleFactor,\n textHeight = text.getScaledHeight() + scaledDiff,\n offX = 0;\n /*\n Adjust positioning:\n x/y attributes in SVG correspond to the bottom-left corner of text bounding box\n fabric output by default at top, left.\n */\n if (parsedAnchor === 'center') {\n offX = text.getScaledWidth() / 2;\n }\n if (parsedAnchor === 'right') {\n offX = text.getScaledWidth();\n }\n text.set({\n left: text.left - offX,\n top: text.top - (textHeight - text.fontSize * (0.07 + text._fontSizeFraction)) / text.lineHeight,\n strokeWidth: typeof originalStrokeWidth !== 'undefined' ? originalStrokeWidth : 1,\n });\n callback(text);\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Text instance from an object representation\n * @static\n * @memberOf fabric.Text\n * @param {Object} object plain js Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Text instance is created\n */\n fabric.Text.fromObject = function(object, callback) {\n var objectCopy = clone(object), path = object.path;\n delete objectCopy.path;\n return fabric.Object._fromObject('Text', objectCopy, function(textInstance) {\n if (path) {\n fabric.Object._fromObject('Path', path, function(pathInstance) {\n textInstance.set('path', pathInstance);\n callback(textInstance);\n }, 'path');\n }\n else {\n callback(textInstance);\n }\n }, 'text');\n };\n\n fabric.Text.genericFonts = ['sans-serif', 'serif', 'cursive', 'fantasy', 'monospace'];\n\n fabric.util.createAccessors && fabric.util.createAccessors(fabric.Text);\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ {\n /**\n * Returns true if object has no styling or no styling in a line\n * @param {Number} lineIndex , lineIndex is on wrapped lines.\n * @return {Boolean}\n */\n isEmptyStyles: function(lineIndex) {\n if (!this.styles) {\n return true;\n }\n if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) {\n return true;\n }\n var obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n for (var p1 in obj) {\n for (var p2 in obj[p1]) {\n // eslint-disable-next-line no-unused-vars\n for (var p3 in obj[p1][p2]) {\n return false;\n }\n }\n }\n return true;\n },\n\n /**\n * Returns true if object has a style property or has it ina specified line\n * This function is used to detect if a text will use a particular property or not.\n * @param {String} property to check for\n * @param {Number} lineIndex to check the style on\n * @return {Boolean}\n */\n styleHas: function(property, lineIndex) {\n if (!this.styles || !property || property === '') {\n return false;\n }\n if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) {\n return false;\n }\n var obj = typeof lineIndex === 'undefined' ? this.styles : { 0: this.styles[lineIndex] };\n // eslint-disable-next-line\n for (var p1 in obj) {\n // eslint-disable-next-line\n for (var p2 in obj[p1]) {\n if (typeof obj[p1][p2][property] !== 'undefined') {\n return true;\n }\n }\n }\n return false;\n },\n\n /**\n * Check if characters in a text have a value for a property\n * whose value matches the textbox's value for that property. If so,\n * the character-level property is deleted. If the character\n * has no other properties, then it is also deleted. Finally,\n * if the line containing that character has no other characters\n * then it also is deleted.\n *\n * @param {string} property The property to compare between characters and text.\n */\n cleanStyle: function(property) {\n if (!this.styles || !property || property === '') {\n return false;\n }\n var obj = this.styles, stylesCount = 0, letterCount, stylePropertyValue,\n allStyleObjectPropertiesMatch = true, graphemeCount = 0, styleObject;\n // eslint-disable-next-line\n for (var p1 in obj) {\n letterCount = 0;\n // eslint-disable-next-line\n for (var p2 in obj[p1]) {\n var styleObject = obj[p1][p2],\n stylePropertyHasBeenSet = styleObject.hasOwnProperty(property);\n\n stylesCount++;\n\n if (stylePropertyHasBeenSet) {\n if (!stylePropertyValue) {\n stylePropertyValue = styleObject[property];\n }\n else if (styleObject[property] !== stylePropertyValue) {\n allStyleObjectPropertiesMatch = false;\n }\n\n if (styleObject[property] === this[property]) {\n delete styleObject[property];\n }\n }\n else {\n allStyleObjectPropertiesMatch = false;\n }\n\n if (Object.keys(styleObject).length !== 0) {\n letterCount++;\n }\n else {\n delete obj[p1][p2];\n }\n }\n\n if (letterCount === 0) {\n delete obj[p1];\n }\n }\n // if every grapheme has the same style set then\n // delete those styles and set it on the parent\n for (var i = 0; i < this._textLines.length; i++) {\n graphemeCount += this._textLines[i].length;\n }\n if (allStyleObjectPropertiesMatch && stylesCount === graphemeCount) {\n this[property] = stylePropertyValue;\n this.removeStyle(property);\n }\n },\n\n /**\n * Remove a style property or properties from all individual character styles\n * in a text object. Deletes the character style object if it contains no other style\n * props. Deletes a line style object if it contains no other character styles.\n *\n * @param {String} props The property to remove from character styles.\n */\n removeStyle: function(property) {\n if (!this.styles || !property || property === '') {\n return;\n }\n var obj = this.styles, line, lineNum, charNum;\n for (lineNum in obj) {\n line = obj[lineNum];\n for (charNum in line) {\n delete line[charNum][property];\n if (Object.keys(line[charNum]).length === 0) {\n delete line[charNum];\n }\n }\n if (Object.keys(line).length === 0) {\n delete obj[lineNum];\n }\n }\n },\n\n /**\n * @private\n */\n _extendStyles: function(index, styles) {\n var loc = this.get2DCursorLocation(index);\n\n if (!this._getLineStyle(loc.lineIndex)) {\n this._setLineStyle(loc.lineIndex);\n }\n\n if (!this._getStyleDeclaration(loc.lineIndex, loc.charIndex)) {\n this._setStyleDeclaration(loc.lineIndex, loc.charIndex, {});\n }\n\n fabric.util.object.extend(this._getStyleDeclaration(loc.lineIndex, loc.charIndex), styles);\n },\n\n /**\n * Returns 2d representation (lineIndex and charIndex) of cursor (or selection start)\n * @param {Number} [selectionStart] Optional index. When not given, current selectionStart is used.\n * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.\n */\n get2DCursorLocation: function(selectionStart, skipWrapping) {\n if (typeof selectionStart === 'undefined') {\n selectionStart = this.selectionStart;\n }\n var lines = skipWrapping ? this._unwrappedTextLines : this._textLines,\n len = lines.length;\n for (var i = 0; i < len; i++) {\n if (selectionStart <= lines[i].length) {\n return {\n lineIndex: i,\n charIndex: selectionStart\n };\n }\n selectionStart -= lines[i].length + this.missingNewlineOffset(i);\n }\n return {\n lineIndex: i - 1,\n charIndex: lines[i - 1].length < selectionStart ? lines[i - 1].length : selectionStart\n };\n },\n\n /**\n * Gets style of a current selection/cursor (at the start position)\n * if startIndex or endIndex are not provided, selectionStart or selectionEnd will be used.\n * @param {Number} [startIndex] Start index to get styles at\n * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n * @param {Boolean} [complete] get full style or not\n * @return {Array} styles an array with one, zero or more Style objects\n */\n getSelectionStyles: function(startIndex, endIndex, complete) {\n if (typeof startIndex === 'undefined') {\n startIndex = this.selectionStart || 0;\n }\n if (typeof endIndex === 'undefined') {\n endIndex = this.selectionEnd || startIndex;\n }\n var styles = [];\n for (var i = startIndex; i < endIndex; i++) {\n styles.push(this.getStyleAtPosition(i, complete));\n }\n return styles;\n },\n\n /**\n * Gets style of a current selection/cursor position\n * @param {Number} position to get styles at\n * @param {Boolean} [complete] full style if true\n * @return {Object} style Style object at a specified index\n * @private\n */\n getStyleAtPosition: function(position, complete) {\n var loc = this.get2DCursorLocation(position),\n style = complete ? this.getCompleteStyleDeclaration(loc.lineIndex, loc.charIndex) :\n this._getStyleDeclaration(loc.lineIndex, loc.charIndex);\n return style || {};\n },\n\n /**\n * Sets style of a current selection, if no selection exist, do not set anything.\n * @param {Object} [styles] Styles object\n * @param {Number} [startIndex] Start index to get styles at\n * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n * @return {fabric.IText} thisArg\n * @chainable\n */\n setSelectionStyles: function(styles, startIndex, endIndex) {\n if (typeof startIndex === 'undefined') {\n startIndex = this.selectionStart || 0;\n }\n if (typeof endIndex === 'undefined') {\n endIndex = this.selectionEnd || startIndex;\n }\n for (var i = startIndex; i < endIndex; i++) {\n this._extendStyles(i, styles);\n }\n /* not included in _extendStyles to avoid clearing cache more than once */\n this._forceClearCache = true;\n return this;\n },\n\n /**\n * get the reference, not a clone, of the style object for a given character\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @return {Object} style object\n */\n _getStyleDeclaration: function(lineIndex, charIndex) {\n var lineStyle = this.styles && this.styles[lineIndex];\n if (!lineStyle) {\n return null;\n }\n return lineStyle[charIndex];\n },\n\n /**\n * return a new object that contains all the style property for a character\n * the object returned is newly created\n * @param {Number} lineIndex of the line where the character is\n * @param {Number} charIndex position of the character on the line\n * @return {Object} style object\n */\n getCompleteStyleDeclaration: function(lineIndex, charIndex) {\n var style = this._getStyleDeclaration(lineIndex, charIndex) || { },\n styleObject = { }, prop;\n for (var i = 0; i < this._styleProperties.length; i++) {\n prop = this._styleProperties[i];\n styleObject[prop] = typeof style[prop] === 'undefined' ? this[prop] : style[prop];\n }\n return styleObject;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} style\n * @private\n */\n _setStyleDeclaration: function(lineIndex, charIndex, style) {\n this.styles[lineIndex][charIndex] = style;\n },\n\n /**\n *\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _deleteStyleDeclaration: function(lineIndex, charIndex) {\n delete this.styles[lineIndex][charIndex];\n },\n\n /**\n * @param {Number} lineIndex\n * @return {Boolean} if the line exists or not\n * @private\n */\n _getLineStyle: function(lineIndex) {\n return !!this.styles[lineIndex];\n },\n\n /**\n * Set the line style to an empty object so that is initialized\n * @param {Number} lineIndex\n * @private\n */\n _setLineStyle: function(lineIndex) {\n this.styles[lineIndex] = {};\n },\n\n /**\n * @param {Number} lineIndex\n * @private\n */\n _deleteLineStyle: function(lineIndex) {\n delete this.styles[lineIndex];\n }\n });\n})();\n\n\n(function() {\n\n function parseDecoration(object) {\n if (object.textDecoration) {\n object.textDecoration.indexOf('underline') > -1 && (object.underline = true);\n object.textDecoration.indexOf('line-through') > -1 && (object.linethrough = true);\n object.textDecoration.indexOf('overline') > -1 && (object.overline = true);\n delete object.textDecoration;\n }\n }\n\n /**\n * IText class (introduced in v1.4) Events are also fired with \"text:\"\n * prefix when observing canvas.\n * @class fabric.IText\n * @extends fabric.Text\n * @mixes fabric.Observable\n *\n * @fires changed\n * @fires selection:changed\n * @fires editing:entered\n * @fires editing:exited\n *\n * @return {fabric.IText} thisArg\n * @see {@link fabric.IText#initialize} for constructor definition\n *\n *

Supported key combinations:

\n *
\n   *   Move cursor:                    left, right, up, down\n   *   Select character:               shift + left, shift + right\n   *   Select text vertically:         shift + up, shift + down\n   *   Move cursor by word:            alt + left, alt + right\n   *   Select words:                   shift + alt + left, shift + alt + right\n   *   Move cursor to line start/end:  cmd + left, cmd + right or home, end\n   *   Select till start/end of line:  cmd + shift + left, cmd + shift + right or shift + home, shift + end\n   *   Jump to start/end of text:      cmd + up, cmd + down\n   *   Select till start/end of text:  cmd + shift + up, cmd + shift + down or shift + pgUp, shift + pgDown\n   *   Delete character:               backspace\n   *   Delete word:                    alt + backspace\n   *   Delete line:                    cmd + backspace\n   *   Forward delete:                 delete\n   *   Copy text:                      ctrl/cmd + c\n   *   Paste text:                     ctrl/cmd + v\n   *   Cut text:                       ctrl/cmd + x\n   *   Select entire text:             ctrl/cmd + a\n   *   Quit editing                    tab or esc\n   * 
\n *\n *

Supported mouse/touch combination

\n *
\n   *   Position cursor:                click/touch\n   *   Create selection:               click/touch & drag\n   *   Create selection:               click & shift + click\n   *   Select word:                    double click\n   *   Select line:                    triple click\n   * 
\n */\n fabric.IText = fabric.util.createClass(fabric.Text, fabric.Observable, /** @lends fabric.IText.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'i-text',\n\n /**\n * Index where text selection starts (or where cursor is when there is no selection)\n * @type Number\n * @default\n */\n selectionStart: 0,\n\n /**\n * Index where text selection ends\n * @type Number\n * @default\n */\n selectionEnd: 0,\n\n /**\n * Color of text selection\n * @type String\n * @default\n */\n selectionColor: 'rgba(17,119,255,0.3)',\n\n /**\n * Indicates whether text is in editing mode\n * @type Boolean\n * @default\n */\n isEditing: false,\n\n /**\n * Indicates whether a text can be edited\n * @type Boolean\n * @default\n */\n editable: true,\n\n /**\n * Border color of text object while it's in editing mode\n * @type String\n * @default\n */\n editingBorderColor: 'rgba(102,153,255,0.25)',\n\n /**\n * Width of cursor (in px)\n * @type Number\n * @default\n */\n cursorWidth: 2,\n\n /**\n * Color of text cursor color in editing mode.\n * if not set (default) will take color from the text.\n * if set to a color value that fabric can understand, it will\n * be used instead of the color of the text at the current position.\n * @type String\n * @default\n */\n cursorColor: '',\n\n /**\n * Delay between cursor blink (in ms)\n * @type Number\n * @default\n */\n cursorDelay: 1000,\n\n /**\n * Duration of cursor fadein (in ms)\n * @type Number\n * @default\n */\n cursorDuration: 600,\n\n /**\n * Indicates whether internal text char widths can be cached\n * @type Boolean\n * @default\n */\n caching: true,\n\n /**\n * @private\n */\n _reSpace: /\\s|\\n/,\n\n /**\n * @private\n */\n _currentCursorOpacity: 0,\n\n /**\n * @private\n */\n _selectionDirection: null,\n\n /**\n * @private\n */\n _abortCursorAnimation: false,\n\n /**\n * @private\n */\n __widthOfSpace: [],\n\n /**\n * Helps determining when the text is in composition, so that the cursor\n * rendering is altered.\n */\n inCompositionMode: false,\n\n /**\n * Constructor\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.IText} thisArg\n */\n initialize: function(text, options) {\n this.callSuper('initialize', text, options);\n this.initBehavior();\n },\n\n /**\n * Sets selection start (left boundary of a selection)\n * @param {Number} index Index to set selection start to\n */\n setSelectionStart: function(index) {\n index = Math.max(index, 0);\n this._updateAndFire('selectionStart', index);\n },\n\n /**\n * Sets selection end (right boundary of a selection)\n * @param {Number} index Index to set selection end to\n */\n setSelectionEnd: function(index) {\n index = Math.min(index, this.text.length);\n this._updateAndFire('selectionEnd', index);\n },\n\n /**\n * @private\n * @param {String} property 'selectionStart' or 'selectionEnd'\n * @param {Number} index new position of property\n */\n _updateAndFire: function(property, index) {\n if (this[property] !== index) {\n this._fireSelectionChanged();\n this[property] = index;\n }\n this._updateTextarea();\n },\n\n /**\n * Fires the even of selection changed\n * @private\n */\n _fireSelectionChanged: function() {\n this.fire('selection:changed');\n this.canvas && this.canvas.fire('text:selection:changed', { target: this });\n },\n\n /**\n * Initialize text dimensions. Render all text on given context\n * or on a offscreen canvas to get the text width with measureText.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n * @private\n */\n initDimensions: function() {\n this.isEditing && this.initDelayedCursor();\n this.clearContextTop();\n this.callSuper('initDimensions');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n this.clearContextTop();\n this.callSuper('render', ctx);\n // clear the cursorOffsetCache, so we ensure to calculate once per renderCursor\n // the correct position but not at every cursor animation.\n this.cursorOffsetCache = { };\n this.renderCursorOrSelection();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n this.callSuper('_render', ctx);\n },\n\n /**\n * Prepare and clean the contextTop\n */\n clearContextTop: function(skipRestore) {\n if (!this.isEditing || !this.canvas || !this.canvas.contextTop) {\n return;\n }\n var ctx = this.canvas.contextTop, v = this.canvas.viewportTransform;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n this.transform(ctx);\n this._clearTextArea(ctx);\n skipRestore || ctx.restore();\n },\n /**\n * Renders cursor or selection (depending on what exists)\n * it does on the contextTop. If contextTop is not available, do nothing.\n */\n renderCursorOrSelection: function() {\n if (!this.isEditing || !this.canvas || !this.canvas.contextTop) {\n return;\n }\n var boundaries = this._getCursorBoundaries(),\n ctx = this.canvas.contextTop;\n this.clearContextTop(true);\n if (this.selectionStart === this.selectionEnd) {\n this.renderCursor(boundaries, ctx);\n }\n else {\n this.renderSelection(boundaries, ctx);\n }\n ctx.restore();\n },\n\n _clearTextArea: function(ctx) {\n // we add 4 pixel, to be sure to do not leave any pixel out\n var width = this.width + 4, height = this.height + 4;\n ctx.clearRect(-width / 2, -height / 2, width, height);\n },\n\n /**\n * Returns cursor boundaries (left, top, leftOffset, topOffset)\n * @private\n * @param {Array} chars Array of characters\n * @param {String} typeOfBoundaries\n */\n _getCursorBoundaries: function(position) {\n\n // left/top are left/top of entire text box\n // leftOffset/topOffset are offset from that left/top point of a text box\n\n if (typeof position === 'undefined') {\n position = this.selectionStart;\n }\n\n var left = this._getLeftOffset(),\n top = this._getTopOffset(),\n offsets = this._getCursorBoundariesOffsets(position);\n return {\n left: left,\n top: top,\n leftOffset: offsets.left,\n topOffset: offsets.top\n };\n },\n\n /**\n * @private\n */\n _getCursorBoundariesOffsets: function(position) {\n if (this.cursorOffsetCache && 'top' in this.cursorOffsetCache) {\n return this.cursorOffsetCache;\n }\n var lineLeftOffset,\n lineIndex,\n charIndex,\n topOffset = 0,\n leftOffset = 0,\n boundaries,\n cursorPosition = this.get2DCursorLocation(position);\n charIndex = cursorPosition.charIndex;\n lineIndex = cursorPosition.lineIndex;\n for (var i = 0; i < lineIndex; i++) {\n topOffset += this.getHeightOfLine(i);\n }\n lineLeftOffset = this._getLineLeftOffset(lineIndex);\n var bound = this.__charBounds[lineIndex][charIndex];\n bound && (leftOffset = bound.left);\n if (this.charSpacing !== 0 && charIndex === this._textLines[lineIndex].length) {\n leftOffset -= this._getWidthOfCharSpacing();\n }\n boundaries = {\n top: topOffset,\n left: lineLeftOffset + (leftOffset > 0 ? leftOffset : 0),\n };\n if (this.direction === 'rtl') {\n boundaries.left *= -1;\n }\n this.cursorOffsetCache = boundaries;\n return this.cursorOffsetCache;\n },\n\n /**\n * Renders cursor\n * @param {Object} boundaries\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n renderCursor: function(boundaries, ctx) {\n var cursorLocation = this.get2DCursorLocation(),\n lineIndex = cursorLocation.lineIndex,\n charIndex = cursorLocation.charIndex > 0 ? cursorLocation.charIndex - 1 : 0,\n charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize'),\n multiplier = this.scaleX * this.canvas.getZoom(),\n cursorWidth = this.cursorWidth / multiplier,\n topOffset = boundaries.topOffset,\n dy = this.getValueOfPropertyAt(lineIndex, charIndex, 'deltaY');\n topOffset += (1 - this._fontSizeFraction) * this.getHeightOfLine(lineIndex) / this.lineHeight\n - charHeight * (1 - this._fontSizeFraction);\n\n if (this.inCompositionMode) {\n this.renderSelection(boundaries, ctx);\n }\n ctx.fillStyle = this.cursorColor || this.getValueOfPropertyAt(lineIndex, charIndex, 'fill');\n ctx.globalAlpha = this.__isMousedown ? 1 : this._currentCursorOpacity;\n ctx.fillRect(\n boundaries.left + boundaries.leftOffset - cursorWidth / 2,\n topOffset + boundaries.top + dy,\n cursorWidth,\n charHeight);\n },\n\n /**\n * Renders text selection\n * @param {Object} boundaries Object with left/top/leftOffset/topOffset\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n renderSelection: function(boundaries, ctx) {\n\n var selectionStart = this.inCompositionMode ? this.hiddenTextarea.selectionStart : this.selectionStart,\n selectionEnd = this.inCompositionMode ? this.hiddenTextarea.selectionEnd : this.selectionEnd,\n isJustify = this.textAlign.indexOf('justify') !== -1,\n start = this.get2DCursorLocation(selectionStart),\n end = this.get2DCursorLocation(selectionEnd),\n startLine = start.lineIndex,\n endLine = end.lineIndex,\n startChar = start.charIndex < 0 ? 0 : start.charIndex,\n endChar = end.charIndex < 0 ? 0 : end.charIndex;\n\n for (var i = startLine; i <= endLine; i++) {\n var lineOffset = this._getLineLeftOffset(i) || 0,\n lineHeight = this.getHeightOfLine(i),\n realLineHeight = 0, boxStart = 0, boxEnd = 0;\n\n if (i === startLine) {\n boxStart = this.__charBounds[startLine][startChar].left;\n }\n if (i >= startLine && i < endLine) {\n boxEnd = isJustify && !this.isEndOfWrapping(i) ? this.width : this.getLineWidth(i) || 5; // WTF is this 5?\n }\n else if (i === endLine) {\n if (endChar === 0) {\n boxEnd = this.__charBounds[endLine][endChar].left;\n }\n else {\n var charSpacing = this._getWidthOfCharSpacing();\n boxEnd = this.__charBounds[endLine][endChar - 1].left\n + this.__charBounds[endLine][endChar - 1].width - charSpacing;\n }\n }\n realLineHeight = lineHeight;\n if (this.lineHeight < 1 || (i === endLine && this.lineHeight > 1)) {\n lineHeight /= this.lineHeight;\n }\n var drawStart = boundaries.left + lineOffset + boxStart,\n drawWidth = boxEnd - boxStart,\n drawHeight = lineHeight, extraTop = 0;\n if (this.inCompositionMode) {\n ctx.fillStyle = this.compositionColor || 'black';\n drawHeight = 1;\n extraTop = lineHeight;\n }\n else {\n ctx.fillStyle = this.selectionColor;\n }\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - drawWidth;\n }\n ctx.fillRect(\n drawStart,\n boundaries.top + boundaries.topOffset + extraTop,\n drawWidth,\n drawHeight);\n boundaries.topOffset += realLineHeight;\n }\n },\n\n /**\n * High level function to know the height of the cursor.\n * the currentChar is the one that precedes the cursor\n * Returns fontSize of char at the current cursor\n * Unused from the library, is for the end user\n * @return {Number} Character font size\n */\n getCurrentCharFontSize: function() {\n var cp = this._getCurrentCharIndex();\n return this.getValueOfPropertyAt(cp.l, cp.c, 'fontSize');\n },\n\n /**\n * High level function to know the color of the cursor.\n * the currentChar is the one that precedes the cursor\n * Returns color (fill) of char at the current cursor\n * if the text object has a pattern or gradient for filler, it will return that.\n * Unused by the library, is for the end user\n * @return {String | fabric.Gradient | fabric.Pattern} Character color (fill)\n */\n getCurrentCharColor: function() {\n var cp = this._getCurrentCharIndex();\n return this.getValueOfPropertyAt(cp.l, cp.c, 'fill');\n },\n\n /**\n * Returns the cursor position for the getCurrent.. functions\n * @private\n */\n _getCurrentCharIndex: function() {\n var cursorPosition = this.get2DCursorLocation(this.selectionStart, true),\n charIndex = cursorPosition.charIndex > 0 ? cursorPosition.charIndex - 1 : 0;\n return { l: cursorPosition.lineIndex, c: charIndex };\n }\n });\n\n /**\n * Returns fabric.IText instance from an object representation\n * @static\n * @memberOf fabric.IText\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as argument\n */\n fabric.IText.fromObject = function(object, callback) {\n parseDecoration(object);\n if (object.styles) {\n for (var i in object.styles) {\n for (var j in object.styles[i]) {\n parseDecoration(object.styles[i][j]);\n }\n }\n }\n fabric.Object._fromObject('IText', object, callback, 'text');\n };\n})();\n\n\n(function() {\n\n var clone = fabric.util.object.clone;\n\n fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n\n /**\n * Initializes all the interactive behavior of IText\n */\n initBehavior: function() {\n this.initAddedHandler();\n this.initRemovedHandler();\n this.initCursorSelectionHandlers();\n this.initDoubleClickSimulation();\n this.mouseMoveHandler = this.mouseMoveHandler.bind(this);\n },\n\n onDeselect: function() {\n this.isEditing && this.exitEditing();\n this.selected = false;\n },\n\n /**\n * Initializes \"added\" event handler\n */\n initAddedHandler: function() {\n var _this = this;\n this.on('added', function() {\n var canvas = _this.canvas;\n if (canvas) {\n if (!canvas._hasITextHandlers) {\n canvas._hasITextHandlers = true;\n _this._initCanvasHandlers(canvas);\n }\n canvas._iTextInstances = canvas._iTextInstances || [];\n canvas._iTextInstances.push(_this);\n }\n });\n },\n\n initRemovedHandler: function() {\n var _this = this;\n this.on('removed', function() {\n var canvas = _this.canvas;\n if (canvas) {\n canvas._iTextInstances = canvas._iTextInstances || [];\n fabric.util.removeFromArray(canvas._iTextInstances, _this);\n if (canvas._iTextInstances.length === 0) {\n canvas._hasITextHandlers = false;\n _this._removeCanvasHandlers(canvas);\n }\n }\n });\n },\n\n /**\n * register canvas event to manage exiting on other instances\n * @private\n */\n _initCanvasHandlers: function(canvas) {\n canvas._mouseUpITextHandler = function() {\n if (canvas._iTextInstances) {\n canvas._iTextInstances.forEach(function(obj) {\n obj.__isMousedown = false;\n });\n }\n };\n canvas.on('mouse:up', canvas._mouseUpITextHandler);\n },\n\n /**\n * remove canvas event to manage exiting on other instances\n * @private\n */\n _removeCanvasHandlers: function(canvas) {\n canvas.off('mouse:up', canvas._mouseUpITextHandler);\n },\n\n /**\n * @private\n */\n _tick: function() {\n this._currentTickState = this._animateCursor(this, 1, this.cursorDuration, '_onTickComplete');\n },\n\n /**\n * @private\n */\n _animateCursor: function(obj, targetOpacity, duration, completeMethod) {\n\n var tickState;\n\n tickState = {\n isAborted: false,\n abort: function() {\n this.isAborted = true;\n },\n };\n\n obj.animate('_currentCursorOpacity', targetOpacity, {\n duration: duration,\n onComplete: function() {\n if (!tickState.isAborted) {\n obj[completeMethod]();\n }\n },\n onChange: function() {\n // we do not want to animate a selection, only cursor\n if (obj.canvas && obj.selectionStart === obj.selectionEnd) {\n obj.renderCursorOrSelection();\n }\n },\n abort: function() {\n return tickState.isAborted;\n }\n });\n return tickState;\n },\n\n /**\n * @private\n */\n _onTickComplete: function() {\n\n var _this = this;\n\n if (this._cursorTimeout1) {\n clearTimeout(this._cursorTimeout1);\n }\n this._cursorTimeout1 = setTimeout(function() {\n _this._currentTickCompleteState = _this._animateCursor(_this, 0, this.cursorDuration / 2, '_tick');\n }, 100);\n },\n\n /**\n * Initializes delayed cursor\n */\n initDelayedCursor: function(restart) {\n var _this = this,\n delay = restart ? 0 : this.cursorDelay;\n\n this.abortCursorAnimation();\n this._currentCursorOpacity = 1;\n this._cursorTimeout2 = setTimeout(function() {\n _this._tick();\n }, delay);\n },\n\n /**\n * Aborts cursor animation and clears all timeouts\n */\n abortCursorAnimation: function() {\n var shouldClear = this._currentTickState || this._currentTickCompleteState,\n canvas = this.canvas;\n this._currentTickState && this._currentTickState.abort();\n this._currentTickCompleteState && this._currentTickCompleteState.abort();\n\n clearTimeout(this._cursorTimeout1);\n clearTimeout(this._cursorTimeout2);\n\n this._currentCursorOpacity = 0;\n // to clear just itext area we need to transform the context\n // it may not be worth it\n if (shouldClear && canvas) {\n canvas.clearContext(canvas.contextTop || canvas.contextContainer);\n }\n\n },\n\n /**\n * Selects entire text\n * @return {fabric.IText} thisArg\n * @chainable\n */\n selectAll: function() {\n this.selectionStart = 0;\n this.selectionEnd = this._text.length;\n this._fireSelectionChanged();\n this._updateTextarea();\n return this;\n },\n\n /**\n * Returns selected text\n * @return {String}\n */\n getSelectedText: function() {\n return this._text.slice(this.selectionStart, this.selectionEnd).join('');\n },\n\n /**\n * Find new selection index representing start of current word according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findWordBoundaryLeft: function(startFrom) {\n var offset = 0, index = startFrom - 1;\n\n // remove space before cursor first\n if (this._reSpace.test(this._text[index])) {\n while (this._reSpace.test(this._text[index])) {\n offset++;\n index--;\n }\n }\n while (/\\S/.test(this._text[index]) && index > -1) {\n offset++;\n index--;\n }\n\n return startFrom - offset;\n },\n\n /**\n * Find new selection index representing end of current word according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findWordBoundaryRight: function(startFrom) {\n var offset = 0, index = startFrom;\n\n // remove space after cursor first\n if (this._reSpace.test(this._text[index])) {\n while (this._reSpace.test(this._text[index])) {\n offset++;\n index++;\n }\n }\n while (/\\S/.test(this._text[index]) && index < this._text.length) {\n offset++;\n index++;\n }\n\n return startFrom + offset;\n },\n\n /**\n * Find new selection index representing start of current line according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findLineBoundaryLeft: function(startFrom) {\n var offset = 0, index = startFrom - 1;\n\n while (!/\\n/.test(this._text[index]) && index > -1) {\n offset++;\n index--;\n }\n\n return startFrom - offset;\n },\n\n /**\n * Find new selection index representing end of current line according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findLineBoundaryRight: function(startFrom) {\n var offset = 0, index = startFrom;\n\n while (!/\\n/.test(this._text[index]) && index < this._text.length) {\n offset++;\n index++;\n }\n\n return startFrom + offset;\n },\n\n /**\n * Finds index corresponding to beginning or end of a word\n * @param {Number} selectionStart Index of a character\n * @param {Number} direction 1 or -1\n * @return {Number} Index of the beginning or end of a word\n */\n searchWordBoundary: function(selectionStart, direction) {\n var text = this._text,\n index = this._reSpace.test(text[selectionStart]) ? selectionStart - 1 : selectionStart,\n _char = text[index],\n // wrong\n reNonWord = fabric.reNonWord;\n\n while (!reNonWord.test(_char) && index > 0 && index < text.length) {\n index += direction;\n _char = text[index];\n }\n if (reNonWord.test(_char)) {\n index += direction === 1 ? 0 : 1;\n }\n return index;\n },\n\n /**\n * Selects a word based on the index\n * @param {Number} selectionStart Index of a character\n */\n selectWord: function(selectionStart) {\n selectionStart = selectionStart || this.selectionStart;\n var newSelectionStart = this.searchWordBoundary(selectionStart, -1), /* search backwards */\n newSelectionEnd = this.searchWordBoundary(selectionStart, 1); /* search forward */\n\n this.selectionStart = newSelectionStart;\n this.selectionEnd = newSelectionEnd;\n this._fireSelectionChanged();\n this._updateTextarea();\n this.renderCursorOrSelection();\n },\n\n /**\n * Selects a line based on the index\n * @param {Number} selectionStart Index of a character\n * @return {fabric.IText} thisArg\n * @chainable\n */\n selectLine: function(selectionStart) {\n selectionStart = selectionStart || this.selectionStart;\n var newSelectionStart = this.findLineBoundaryLeft(selectionStart),\n newSelectionEnd = this.findLineBoundaryRight(selectionStart);\n\n this.selectionStart = newSelectionStart;\n this.selectionEnd = newSelectionEnd;\n this._fireSelectionChanged();\n this._updateTextarea();\n return this;\n },\n\n /**\n * Enters editing state\n * @return {fabric.IText} thisArg\n * @chainable\n */\n enterEditing: function(e) {\n if (this.isEditing || !this.editable) {\n return;\n }\n\n if (this.canvas) {\n this.canvas.calcOffset();\n this.exitEditingOnOthers(this.canvas);\n }\n\n this.isEditing = true;\n\n this.initHiddenTextarea(e);\n this.hiddenTextarea.focus();\n this.hiddenTextarea.value = this.text;\n this._updateTextarea();\n this._saveEditingProps();\n this._setEditingProps();\n this._textBeforeEdit = this.text;\n\n this._tick();\n this.fire('editing:entered');\n this._fireSelectionChanged();\n if (!this.canvas) {\n return this;\n }\n this.canvas.fire('text:editing:entered', { target: this });\n this.initMouseMoveHandler();\n this.canvas.requestRenderAll();\n return this;\n },\n\n exitEditingOnOthers: function(canvas) {\n if (canvas._iTextInstances) {\n canvas._iTextInstances.forEach(function(obj) {\n obj.selected = false;\n if (obj.isEditing) {\n obj.exitEditing();\n }\n });\n }\n },\n\n /**\n * Initializes \"mousemove\" event handler\n */\n initMouseMoveHandler: function() {\n this.canvas.on('mouse:move', this.mouseMoveHandler);\n },\n\n /**\n * @private\n */\n mouseMoveHandler: function(options) {\n if (!this.__isMousedown || !this.isEditing) {\n return;\n }\n\n var newSelectionStart = this.getSelectionStartFromPointer(options.e),\n currentStart = this.selectionStart,\n currentEnd = this.selectionEnd;\n if (\n (newSelectionStart !== this.__selectionStartOnMouseDown || currentStart === currentEnd)\n &&\n (currentStart === newSelectionStart || currentEnd === newSelectionStart)\n ) {\n return;\n }\n if (newSelectionStart > this.__selectionStartOnMouseDown) {\n this.selectionStart = this.__selectionStartOnMouseDown;\n this.selectionEnd = newSelectionStart;\n }\n else {\n this.selectionStart = newSelectionStart;\n this.selectionEnd = this.__selectionStartOnMouseDown;\n }\n if (this.selectionStart !== currentStart || this.selectionEnd !== currentEnd) {\n this.restartCursorIfNeeded();\n this._fireSelectionChanged();\n this._updateTextarea();\n this.renderCursorOrSelection();\n }\n },\n\n /**\n * @private\n */\n _setEditingProps: function() {\n this.hoverCursor = 'text';\n\n if (this.canvas) {\n this.canvas.defaultCursor = this.canvas.moveCursor = 'text';\n }\n\n this.borderColor = this.editingBorderColor;\n this.hasControls = this.selectable = false;\n this.lockMovementX = this.lockMovementY = true;\n },\n\n /**\n * convert from textarea to grapheme indexes\n */\n fromStringToGraphemeSelection: function(start, end, text) {\n var smallerTextStart = text.slice(0, start),\n graphemeStart = fabric.util.string.graphemeSplit(smallerTextStart).length;\n if (start === end) {\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n }\n var smallerTextEnd = text.slice(start, end),\n graphemeEnd = fabric.util.string.graphemeSplit(smallerTextEnd).length;\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd };\n },\n\n /**\n * convert from fabric to textarea values\n */\n fromGraphemeToStringSelection: function(start, end, _text) {\n var smallerTextStart = _text.slice(0, start),\n graphemeStart = smallerTextStart.join('').length;\n if (start === end) {\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n }\n var smallerTextEnd = _text.slice(start, end),\n graphemeEnd = smallerTextEnd.join('').length;\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd };\n },\n\n /**\n * @private\n */\n _updateTextarea: function() {\n this.cursorOffsetCache = { };\n if (!this.hiddenTextarea) {\n return;\n }\n if (!this.inCompositionMode) {\n var newSelection = this.fromGraphemeToStringSelection(this.selectionStart, this.selectionEnd, this._text);\n this.hiddenTextarea.selectionStart = newSelection.selectionStart;\n this.hiddenTextarea.selectionEnd = newSelection.selectionEnd;\n }\n this.updateTextareaPosition();\n },\n\n /**\n * @private\n */\n updateFromTextArea: function() {\n if (!this.hiddenTextarea) {\n return;\n }\n this.cursorOffsetCache = { };\n this.text = this.hiddenTextarea.value;\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n var newSelection = this.fromStringToGraphemeSelection(\n this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value);\n this.selectionEnd = this.selectionStart = newSelection.selectionEnd;\n if (!this.inCompositionMode) {\n this.selectionStart = newSelection.selectionStart;\n }\n this.updateTextareaPosition();\n },\n\n /**\n * @private\n */\n updateTextareaPosition: function() {\n if (this.selectionStart === this.selectionEnd) {\n var style = this._calcTextareaPosition();\n this.hiddenTextarea.style.left = style.left;\n this.hiddenTextarea.style.top = style.top;\n }\n },\n\n /**\n * @private\n * @return {Object} style contains style for hiddenTextarea\n */\n _calcTextareaPosition: function() {\n if (!this.canvas) {\n return { x: 1, y: 1 };\n }\n var desiredPosition = this.inCompositionMode ? this.compositionStart : this.selectionStart,\n boundaries = this._getCursorBoundaries(desiredPosition),\n cursorLocation = this.get2DCursorLocation(desiredPosition),\n lineIndex = cursorLocation.lineIndex,\n charIndex = cursorLocation.charIndex,\n charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize') * this.lineHeight,\n leftOffset = boundaries.leftOffset,\n m = this.calcTransformMatrix(),\n p = {\n x: boundaries.left + leftOffset,\n y: boundaries.top + boundaries.topOffset + charHeight\n },\n retinaScaling = this.canvas.getRetinaScaling(),\n upperCanvas = this.canvas.upperCanvasEl,\n upperCanvasWidth = upperCanvas.width / retinaScaling,\n upperCanvasHeight = upperCanvas.height / retinaScaling,\n maxWidth = upperCanvasWidth - charHeight,\n maxHeight = upperCanvasHeight - charHeight,\n scaleX = upperCanvas.clientWidth / upperCanvasWidth,\n scaleY = upperCanvas.clientHeight / upperCanvasHeight;\n\n p = fabric.util.transformPoint(p, m);\n p = fabric.util.transformPoint(p, this.canvas.viewportTransform);\n p.x *= scaleX;\n p.y *= scaleY;\n if (p.x < 0) {\n p.x = 0;\n }\n if (p.x > maxWidth) {\n p.x = maxWidth;\n }\n if (p.y < 0) {\n p.y = 0;\n }\n if (p.y > maxHeight) {\n p.y = maxHeight;\n }\n\n // add canvas offset on document\n p.x += this.canvas._offset.left;\n p.y += this.canvas._offset.top;\n\n return { left: p.x + 'px', top: p.y + 'px', fontSize: charHeight + 'px', charHeight: charHeight };\n },\n\n /**\n * @private\n */\n _saveEditingProps: function() {\n this._savedProps = {\n hasControls: this.hasControls,\n borderColor: this.borderColor,\n lockMovementX: this.lockMovementX,\n lockMovementY: this.lockMovementY,\n hoverCursor: this.hoverCursor,\n selectable: this.selectable,\n defaultCursor: this.canvas && this.canvas.defaultCursor,\n moveCursor: this.canvas && this.canvas.moveCursor\n };\n },\n\n /**\n * @private\n */\n _restoreEditingProps: function() {\n if (!this._savedProps) {\n return;\n }\n\n this.hoverCursor = this._savedProps.hoverCursor;\n this.hasControls = this._savedProps.hasControls;\n this.borderColor = this._savedProps.borderColor;\n this.selectable = this._savedProps.selectable;\n this.lockMovementX = this._savedProps.lockMovementX;\n this.lockMovementY = this._savedProps.lockMovementY;\n\n if (this.canvas) {\n this.canvas.defaultCursor = this._savedProps.defaultCursor;\n this.canvas.moveCursor = this._savedProps.moveCursor;\n }\n },\n\n /**\n * Exits from editing state\n * @return {fabric.IText} thisArg\n * @chainable\n */\n exitEditing: function() {\n var isTextChanged = (this._textBeforeEdit !== this.text);\n var hiddenTextarea = this.hiddenTextarea;\n this.selected = false;\n this.isEditing = false;\n\n this.selectionEnd = this.selectionStart;\n\n if (hiddenTextarea) {\n hiddenTextarea.blur && hiddenTextarea.blur();\n hiddenTextarea.parentNode && hiddenTextarea.parentNode.removeChild(hiddenTextarea);\n }\n this.hiddenTextarea = null;\n this.abortCursorAnimation();\n this._restoreEditingProps();\n this._currentCursorOpacity = 0;\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this.fire('editing:exited');\n isTextChanged && this.fire('modified');\n if (this.canvas) {\n this.canvas.off('mouse:move', this.mouseMoveHandler);\n this.canvas.fire('text:editing:exited', { target: this });\n isTextChanged && this.canvas.fire('object:modified', { target: this });\n }\n return this;\n },\n\n /**\n * @private\n */\n _removeExtraneousStyles: function() {\n for (var prop in this.styles) {\n if (!this._textLines[prop]) {\n delete this.styles[prop];\n }\n }\n },\n\n /**\n * remove and reflow a style block from start to end.\n * @param {Number} start linear start position for removal (included in removal)\n * @param {Number} end linear end position for removal ( excluded from removal )\n */\n removeStyleFromTo: function(start, end) {\n var cursorStart = this.get2DCursorLocation(start, true),\n cursorEnd = this.get2DCursorLocation(end, true),\n lineStart = cursorStart.lineIndex,\n charStart = cursorStart.charIndex,\n lineEnd = cursorEnd.lineIndex,\n charEnd = cursorEnd.charIndex,\n i, styleObj;\n if (lineStart !== lineEnd) {\n // step1 remove the trailing of lineStart\n if (this.styles[lineStart]) {\n for (i = charStart; i < this._unwrappedTextLines[lineStart].length; i++) {\n delete this.styles[lineStart][i];\n }\n }\n // step2 move the trailing of lineEnd to lineStart if needed\n if (this.styles[lineEnd]) {\n for (i = charEnd; i < this._unwrappedTextLines[lineEnd].length; i++) {\n styleObj = this.styles[lineEnd][i];\n if (styleObj) {\n this.styles[lineStart] || (this.styles[lineStart] = { });\n this.styles[lineStart][charStart + i - charEnd] = styleObj;\n }\n }\n }\n // step3 detects lines will be completely removed.\n for (i = lineStart + 1; i <= lineEnd; i++) {\n delete this.styles[i];\n }\n // step4 shift remaining lines.\n this.shiftLineStyles(lineEnd, lineStart - lineEnd);\n }\n else {\n // remove and shift left on the same line\n if (this.styles[lineStart]) {\n styleObj = this.styles[lineStart];\n var diff = charEnd - charStart, numericChar, _char;\n for (i = charStart; i < charEnd; i++) {\n delete styleObj[i];\n }\n for (_char in this.styles[lineStart]) {\n numericChar = parseInt(_char, 10);\n if (numericChar >= charEnd) {\n styleObj[numericChar - diff] = styleObj[_char];\n delete styleObj[_char];\n }\n }\n }\n }\n },\n\n /**\n * Shifts line styles up or down\n * @param {Number} lineIndex Index of a line\n * @param {Number} offset Can any number?\n */\n shiftLineStyles: function(lineIndex, offset) {\n // shift all line styles by offset upward or downward\n // do not clone deep. we need new array, not new style objects\n var clonedStyles = clone(this.styles);\n for (var line in this.styles) {\n var numericLine = parseInt(line, 10);\n if (numericLine > lineIndex) {\n this.styles[numericLine + offset] = clonedStyles[numericLine];\n if (!clonedStyles[numericLine - offset]) {\n delete this.styles[numericLine];\n }\n }\n }\n },\n\n restartCursorIfNeeded: function() {\n if (!this._currentTickState || this._currentTickState.isAborted\n || !this._currentTickCompleteState || this._currentTickCompleteState.isAborted\n ) {\n this.initDelayedCursor();\n }\n },\n\n /**\n * Handle insertion of more consecutive style lines for when one or more\n * newlines gets added to the text. Since current style needs to be shifted\n * first we shift the current style of the number lines needed, then we add\n * new lines from the last to the first.\n * @param {Number} lineIndex Index of a line\n * @param {Number} charIndex Index of a char\n * @param {Number} qty number of lines to add\n * @param {Array} copiedStyle Array of objects styles\n */\n insertNewlineStyleObject: function(lineIndex, charIndex, qty, copiedStyle) {\n var currentCharStyle,\n newLineStyles = {},\n somethingAdded = false,\n isEndOfLine = this._unwrappedTextLines[lineIndex].length === charIndex;\n\n qty || (qty = 1);\n this.shiftLineStyles(lineIndex, qty);\n if (this.styles[lineIndex]) {\n currentCharStyle = this.styles[lineIndex][charIndex === 0 ? charIndex : charIndex - 1];\n }\n // we clone styles of all chars\n // after cursor onto the current line\n for (var index in this.styles[lineIndex]) {\n var numIndex = parseInt(index, 10);\n if (numIndex >= charIndex) {\n somethingAdded = true;\n newLineStyles[numIndex - charIndex] = this.styles[lineIndex][index];\n // remove lines from the previous line since they're on a new line now\n if (!(isEndOfLine && charIndex === 0)) {\n delete this.styles[lineIndex][index];\n }\n }\n }\n var styleCarriedOver = false;\n if (somethingAdded && !isEndOfLine) {\n // if is end of line, the extra style we copied\n // is probably not something we want\n this.styles[lineIndex + qty] = newLineStyles;\n styleCarriedOver = true;\n }\n if (styleCarriedOver) {\n // skip the last line of since we already prepared it.\n qty--;\n }\n // for the all the lines or all the other lines\n // we clone current char style onto the next (otherwise empty) line\n while (qty > 0) {\n if (copiedStyle && copiedStyle[qty - 1]) {\n this.styles[lineIndex + qty] = { 0: clone(copiedStyle[qty - 1]) };\n }\n else if (currentCharStyle) {\n this.styles[lineIndex + qty] = { 0: clone(currentCharStyle) };\n }\n else {\n delete this.styles[lineIndex + qty];\n }\n qty--;\n }\n this._forceClearCache = true;\n },\n\n /**\n * Inserts style object for a given line/char index\n * @param {Number} lineIndex Index of a line\n * @param {Number} charIndex Index of a char\n * @param {Number} quantity number Style object to insert, if given\n * @param {Array} copiedStyle array of style objects\n */\n insertCharStyleObject: function(lineIndex, charIndex, quantity, copiedStyle) {\n if (!this.styles) {\n this.styles = {};\n }\n var currentLineStyles = this.styles[lineIndex],\n currentLineStylesCloned = currentLineStyles ? clone(currentLineStyles) : {};\n\n quantity || (quantity = 1);\n // shift all char styles by quantity forward\n // 0,1,2,3 -> (charIndex=2) -> 0,1,3,4 -> (insert 2) -> 0,1,2,3,4\n for (var index in currentLineStylesCloned) {\n var numericIndex = parseInt(index, 10);\n if (numericIndex >= charIndex) {\n currentLineStyles[numericIndex + quantity] = currentLineStylesCloned[numericIndex];\n // only delete the style if there was nothing moved there\n if (!currentLineStylesCloned[numericIndex - quantity]) {\n delete currentLineStyles[numericIndex];\n }\n }\n }\n this._forceClearCache = true;\n if (copiedStyle) {\n while (quantity--) {\n if (!Object.keys(copiedStyle[quantity]).length) {\n continue;\n }\n if (!this.styles[lineIndex]) {\n this.styles[lineIndex] = {};\n }\n this.styles[lineIndex][charIndex + quantity] = clone(copiedStyle[quantity]);\n }\n return;\n }\n if (!currentLineStyles) {\n return;\n }\n var newStyle = currentLineStyles[charIndex ? charIndex - 1 : 1];\n while (newStyle && quantity--) {\n this.styles[lineIndex][charIndex + quantity] = clone(newStyle);\n }\n },\n\n /**\n * Inserts style object(s)\n * @param {Array} insertedText Characters at the location where style is inserted\n * @param {Number} start cursor index for inserting style\n * @param {Array} [copiedStyle] array of style objects to insert.\n */\n insertNewStyleBlock: function(insertedText, start, copiedStyle) {\n var cursorLoc = this.get2DCursorLocation(start, true),\n addedLines = [0], linesLength = 0;\n // get an array of how many char per lines are being added.\n for (var i = 0; i < insertedText.length; i++) {\n if (insertedText[i] === '\\n') {\n linesLength++;\n addedLines[linesLength] = 0;\n }\n else {\n addedLines[linesLength]++;\n }\n }\n // for the first line copy the style from the current char position.\n if (addedLines[0] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex, cursorLoc.charIndex, addedLines[0], copiedStyle);\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[0] + 1);\n }\n linesLength && this.insertNewlineStyleObject(\n cursorLoc.lineIndex, cursorLoc.charIndex + addedLines[0], linesLength);\n for (var i = 1; i < linesLength; i++) {\n if (addedLines[i] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle);\n }\n else if (copiedStyle) {\n this.styles[cursorLoc.lineIndex + i][0] = copiedStyle[0];\n }\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[i] + 1);\n }\n // we use i outside the loop to get it like linesLength\n if (addedLines[i] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle);\n }\n },\n\n /**\n * Set the selectionStart and selectionEnd according to the new position of cursor\n * mimic the key - mouse navigation when shift is pressed.\n */\n setSelectionStartEndWithShift: function(start, end, newSelection) {\n if (newSelection <= start) {\n if (end === start) {\n this._selectionDirection = 'left';\n }\n else if (this._selectionDirection === 'right') {\n this._selectionDirection = 'left';\n this.selectionEnd = start;\n }\n this.selectionStart = newSelection;\n }\n else if (newSelection > start && newSelection < end) {\n if (this._selectionDirection === 'right') {\n this.selectionEnd = newSelection;\n }\n else {\n this.selectionStart = newSelection;\n }\n }\n else {\n // newSelection is > selection start and end\n if (end === start) {\n this._selectionDirection = 'right';\n }\n else if (this._selectionDirection === 'left') {\n this._selectionDirection = 'right';\n this.selectionStart = end;\n }\n this.selectionEnd = newSelection;\n }\n },\n\n setSelectionInBoundaries: function() {\n var length = this.text.length;\n if (this.selectionStart > length) {\n this.selectionStart = length;\n }\n else if (this.selectionStart < 0) {\n this.selectionStart = 0;\n }\n if (this.selectionEnd > length) {\n this.selectionEnd = length;\n }\n else if (this.selectionEnd < 0) {\n this.selectionEnd = 0;\n }\n }\n });\n})();\n\n\nfabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n /**\n * Initializes \"dbclick\" event handler\n */\n initDoubleClickSimulation: function() {\n\n // for double click\n this.__lastClickTime = +new Date();\n\n // for triple click\n this.__lastLastClickTime = +new Date();\n\n this.__lastPointer = { };\n\n this.on('mousedown', this.onMouseDown);\n },\n\n /**\n * Default event handler to simulate triple click\n * @private\n */\n onMouseDown: function(options) {\n if (!this.canvas) {\n return;\n }\n this.__newClickTime = +new Date();\n var newPointer = options.pointer;\n if (this.isTripleClick(newPointer)) {\n this.fire('tripleclick', options);\n this._stopEvent(options.e);\n }\n this.__lastLastClickTime = this.__lastClickTime;\n this.__lastClickTime = this.__newClickTime;\n this.__lastPointer = newPointer;\n this.__lastIsEditing = this.isEditing;\n this.__lastSelected = this.selected;\n },\n\n isTripleClick: function(newPointer) {\n return this.__newClickTime - this.__lastClickTime < 500 &&\n this.__lastClickTime - this.__lastLastClickTime < 500 &&\n this.__lastPointer.x === newPointer.x &&\n this.__lastPointer.y === newPointer.y;\n },\n\n /**\n * @private\n */\n _stopEvent: function(e) {\n e.preventDefault && e.preventDefault();\n e.stopPropagation && e.stopPropagation();\n },\n\n /**\n * Initializes event handlers related to cursor or selection\n */\n initCursorSelectionHandlers: function() {\n this.initMousedownHandler();\n this.initMouseupHandler();\n this.initClicks();\n },\n\n /**\n * Default handler for double click, select a word\n */\n doubleClickHandler: function(options) {\n if (!this.isEditing) {\n return;\n }\n this.selectWord(this.getSelectionStartFromPointer(options.e));\n },\n\n /**\n * Default handler for triple click, select a line\n */\n tripleClickHandler: function(options) {\n if (!this.isEditing) {\n return;\n }\n this.selectLine(this.getSelectionStartFromPointer(options.e));\n },\n\n /**\n * Initializes double and triple click event handlers\n */\n initClicks: function() {\n this.on('mousedblclick', this.doubleClickHandler);\n this.on('tripleclick', this.tripleClickHandler);\n },\n\n /**\n * Default event handler for the basic functionalities needed on _mouseDown\n * can be overridden to do something different.\n * Scope of this implementation is: find the click position, set selectionStart\n * find selectionEnd, initialize the drawing of either cursor or selection area\n * initializing a mousedDown on a text area will cancel fabricjs knowledge of\n * current compositionMode. It will be set to false.\n */\n _mouseDownHandler: function(options) {\n if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) {\n return;\n }\n\n this.__isMousedown = true;\n\n if (this.selected) {\n this.inCompositionMode = false;\n this.setCursorByClick(options.e);\n }\n\n if (this.isEditing) {\n this.__selectionStartOnMouseDown = this.selectionStart;\n if (this.selectionStart === this.selectionEnd) {\n this.abortCursorAnimation();\n }\n this.renderCursorOrSelection();\n }\n },\n\n /**\n * Default event handler for the basic functionalities needed on mousedown:before\n * can be overridden to do something different.\n * Scope of this implementation is: verify the object is already selected when mousing down\n */\n _mouseDownHandlerBefore: function(options) {\n if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) {\n return;\n }\n // we want to avoid that an object that was selected and then becomes unselectable,\n // may trigger editing mode in some way.\n this.selected = this === this.canvas._activeObject;\n },\n\n /**\n * Initializes \"mousedown\" event handler\n */\n initMousedownHandler: function() {\n this.on('mousedown', this._mouseDownHandler);\n this.on('mousedown:before', this._mouseDownHandlerBefore);\n },\n\n /**\n * Initializes \"mouseup\" event handler\n */\n initMouseupHandler: function() {\n this.on('mouseup', this.mouseUpHandler);\n },\n\n /**\n * standard handler for mouse up, overridable\n * @private\n */\n mouseUpHandler: function(options) {\n this.__isMousedown = false;\n if (!this.editable || this.group ||\n (options.transform && options.transform.actionPerformed) ||\n (options.e.button && options.e.button !== 1)) {\n return;\n }\n\n if (this.canvas) {\n var currentActive = this.canvas._activeObject;\n if (currentActive && currentActive !== this) {\n // avoid running this logic when there is an active object\n // this because is possible with shift click and fast clicks,\n // to rapidly deselect and reselect this object and trigger an enterEdit\n return;\n }\n }\n\n if (this.__lastSelected && !this.__corner) {\n this.selected = false;\n this.__lastSelected = false;\n this.enterEditing(options.e);\n if (this.selectionStart === this.selectionEnd) {\n this.initDelayedCursor(true);\n }\n else {\n this.renderCursorOrSelection();\n }\n }\n else {\n this.selected = true;\n }\n },\n\n /**\n * Changes cursor location in a text depending on passed pointer (x/y) object\n * @param {Event} e Event object\n */\n setCursorByClick: function(e) {\n var newSelection = this.getSelectionStartFromPointer(e),\n start = this.selectionStart, end = this.selectionEnd;\n if (e.shiftKey) {\n this.setSelectionStartEndWithShift(start, end, newSelection);\n }\n else {\n this.selectionStart = newSelection;\n this.selectionEnd = newSelection;\n }\n if (this.isEditing) {\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Returns index of a character corresponding to where an object was clicked\n * @param {Event} e Event object\n * @return {Number} Index of a character\n */\n getSelectionStartFromPointer: function(e) {\n var mouseOffset = this.getLocalPointer(e),\n prevWidth = 0,\n width = 0,\n height = 0,\n charIndex = 0,\n lineIndex = 0,\n lineLeftOffset,\n line;\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n if (height <= mouseOffset.y) {\n height += this.getHeightOfLine(i) * this.scaleY;\n lineIndex = i;\n if (i > 0) {\n charIndex += this._textLines[i - 1].length + this.missingNewlineOffset(i - 1);\n }\n }\n else {\n break;\n }\n }\n lineLeftOffset = this._getLineLeftOffset(lineIndex);\n width = lineLeftOffset * this.scaleX;\n line = this._textLines[lineIndex];\n // handling of RTL: in order to get things work correctly,\n // we assume RTL writing is mirrored compared to LTR writing.\n // so in position detection we mirror the X offset, and when is time\n // of rendering it, we mirror it again.\n if (this.direction === 'rtl') {\n mouseOffset.x = this.width * this.scaleX - mouseOffset.x + width;\n }\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n prevWidth = width;\n // i removed something about flipX here, check.\n width += this.__charBounds[lineIndex][j].kernedWidth * this.scaleX;\n if (width <= mouseOffset.x) {\n charIndex++;\n }\n else {\n break;\n }\n }\n return this._getNewSelectionStartFromOffset(mouseOffset, prevWidth, width, charIndex, jlen);\n },\n\n /**\n * @private\n */\n _getNewSelectionStartFromOffset: function(mouseOffset, prevWidth, width, index, jlen) {\n // we need Math.abs because when width is after the last char, the offset is given as 1, while is 0\n var distanceBtwLastCharAndCursor = mouseOffset.x - prevWidth,\n distanceBtwNextCharAndCursor = width - mouseOffset.x,\n offset = distanceBtwNextCharAndCursor > distanceBtwLastCharAndCursor ||\n distanceBtwNextCharAndCursor < 0 ? 0 : 1,\n newSelectionStart = index + offset;\n // if object is horizontally flipped, mirror cursor location from the end\n if (this.flipX) {\n newSelectionStart = jlen - newSelectionStart;\n }\n\n if (newSelectionStart > this._text.length) {\n newSelectionStart = this._text.length;\n }\n\n return newSelectionStart;\n }\n});\n\n\nfabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n\n /**\n * Initializes hidden textarea (needed to bring up keyboard in iOS)\n */\n initHiddenTextarea: function() {\n this.hiddenTextarea = fabric.document.createElement('textarea');\n this.hiddenTextarea.setAttribute('autocapitalize', 'off');\n this.hiddenTextarea.setAttribute('autocorrect', 'off');\n this.hiddenTextarea.setAttribute('autocomplete', 'off');\n this.hiddenTextarea.setAttribute('spellcheck', 'false');\n this.hiddenTextarea.setAttribute('data-fabric-hiddentextarea', '');\n this.hiddenTextarea.setAttribute('wrap', 'off');\n var style = this._calcTextareaPosition();\n // line-height: 1px; was removed from the style to fix this:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=870966\n this.hiddenTextarea.style.cssText = 'position: absolute; top: ' + style.top +\n '; left: ' + style.left + '; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px;' +\n ' paddingーtop: ' + style.fontSize + ';';\n fabric.document.body.appendChild(this.hiddenTextarea);\n\n fabric.util.addListener(this.hiddenTextarea, 'keydown', this.onKeyDown.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'keyup', this.onKeyUp.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'input', this.onInput.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'copy', this.copy.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'cut', this.copy.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'paste', this.paste.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionstart', this.onCompositionStart.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionupdate', this.onCompositionUpdate.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionend', this.onCompositionEnd.bind(this));\n\n if (!this._clickHandlerInitialized && this.canvas) {\n fabric.util.addListener(this.canvas.upperCanvasEl, 'click', this.onClick.bind(this));\n this._clickHandlerInitialized = true;\n }\n },\n\n /**\n * For functionalities on keyDown\n * Map a special key to a function of the instance/prototype\n * If you need different behaviour for ESC or TAB or arrows, you have to change\n * this map setting the name of a function that you build on the fabric.Itext or\n * your prototype.\n * the map change will affect all Instances unless you need for only some text Instances\n * in that case you have to clone this object and assign your Instance.\n * this.keysMap = fabric.util.object.clone(this.keysMap);\n * The function must be in fabric.Itext.prototype.myFunction And will receive event as args[0]\n */\n keysMap: {\n 9: 'exitEditing',\n 27: 'exitEditing',\n 33: 'moveCursorUp',\n 34: 'moveCursorDown',\n 35: 'moveCursorRight',\n 36: 'moveCursorLeft',\n 37: 'moveCursorLeft',\n 38: 'moveCursorUp',\n 39: 'moveCursorRight',\n 40: 'moveCursorDown',\n },\n\n keysMapRtl: {\n 9: 'exitEditing',\n 27: 'exitEditing',\n 33: 'moveCursorUp',\n 34: 'moveCursorDown',\n 35: 'moveCursorLeft',\n 36: 'moveCursorRight',\n 37: 'moveCursorRight',\n 38: 'moveCursorUp',\n 39: 'moveCursorLeft',\n 40: 'moveCursorDown',\n },\n\n /**\n * For functionalities on keyUp + ctrl || cmd\n */\n ctrlKeysMapUp: {\n 67: 'copy',\n 88: 'cut'\n },\n\n /**\n * For functionalities on keyDown + ctrl || cmd\n */\n ctrlKeysMapDown: {\n 65: 'selectAll'\n },\n\n onClick: function() {\n // No need to trigger click event here, focus is enough to have the keyboard appear on Android\n this.hiddenTextarea && this.hiddenTextarea.focus();\n },\n\n /**\n * Handles keydown event\n * only used for arrows and combination of modifier keys.\n * @param {Event} e Event object\n */\n onKeyDown: function(e) {\n if (!this.isEditing) {\n return;\n }\n var keyMap = this.direction === 'rtl' ? this.keysMapRtl : this.keysMap;\n if (e.keyCode in keyMap) {\n this[keyMap[e.keyCode]](e);\n }\n else if ((e.keyCode in this.ctrlKeysMapDown) && (e.ctrlKey || e.metaKey)) {\n this[this.ctrlKeysMapDown[e.keyCode]](e);\n }\n else {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n if (e.keyCode >= 33 && e.keyCode <= 40) {\n // if i press an arrow key just update selection\n this.inCompositionMode = false;\n this.clearContextTop();\n this.renderCursorOrSelection();\n }\n else {\n this.canvas && this.canvas.requestRenderAll();\n }\n },\n\n /**\n * Handles keyup event\n * We handle KeyUp because ie11 and edge have difficulties copy/pasting\n * if a copy/cut event fired, keyup is dismissed\n * @param {Event} e Event object\n */\n onKeyUp: function(e) {\n if (!this.isEditing || this._copyDone || this.inCompositionMode) {\n this._copyDone = false;\n return;\n }\n if ((e.keyCode in this.ctrlKeysMapUp) && (e.ctrlKey || e.metaKey)) {\n this[this.ctrlKeysMapUp[e.keyCode]](e);\n }\n else {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n this.canvas && this.canvas.requestRenderAll();\n },\n\n /**\n * Handles onInput event\n * @param {Event} e Event object\n */\n onInput: function(e) {\n var fromPaste = this.fromPaste;\n this.fromPaste = false;\n e && e.stopPropagation();\n if (!this.isEditing) {\n return;\n }\n // decisions about style changes.\n var nextText = this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,\n charCount = this._text.length,\n nextCharCount = nextText.length,\n removedText, insertedText,\n charDiff = nextCharCount - charCount,\n selectionStart = this.selectionStart, selectionEnd = this.selectionEnd,\n selection = selectionStart !== selectionEnd,\n copiedStyle, removeFrom, removeTo;\n if (this.hiddenTextarea.value === '') {\n this.styles = { };\n this.updateFromTextArea();\n this.fire('changed');\n if (this.canvas) {\n this.canvas.fire('text:changed', { target: this });\n this.canvas.requestRenderAll();\n }\n return;\n }\n\n var textareaSelection = this.fromStringToGraphemeSelection(\n this.hiddenTextarea.selectionStart,\n this.hiddenTextarea.selectionEnd,\n this.hiddenTextarea.value\n );\n var backDelete = selectionStart > textareaSelection.selectionStart;\n\n if (selection) {\n removedText = this._text.slice(selectionStart, selectionEnd);\n charDiff += selectionEnd - selectionStart;\n }\n else if (nextCharCount < charCount) {\n if (backDelete) {\n removedText = this._text.slice(selectionEnd + charDiff, selectionEnd);\n }\n else {\n removedText = this._text.slice(selectionStart, selectionStart - charDiff);\n }\n }\n insertedText = nextText.slice(textareaSelection.selectionEnd - charDiff, textareaSelection.selectionEnd);\n if (removedText && removedText.length) {\n if (insertedText.length) {\n // let's copy some style before deleting.\n // we want to copy the style before the cursor OR the style at the cursor if selection\n // is bigger than 0.\n copiedStyle = this.getSelectionStyles(selectionStart, selectionStart + 1, false);\n // now duplicate the style one for each inserted text.\n copiedStyle = insertedText.map(function() {\n // this return an array of references, but that is fine since we are\n // copying the style later.\n return copiedStyle[0];\n });\n }\n if (selection) {\n removeFrom = selectionStart;\n removeTo = selectionEnd;\n }\n else if (backDelete) {\n // detect differences between forwardDelete and backDelete\n removeFrom = selectionEnd - removedText.length;\n removeTo = selectionEnd;\n }\n else {\n removeFrom = selectionEnd;\n removeTo = selectionEnd + removedText.length;\n }\n this.removeStyleFromTo(removeFrom, removeTo);\n }\n if (insertedText.length) {\n if (fromPaste && insertedText.join('') === fabric.copiedText && !fabric.disableStyleCopyPaste) {\n copiedStyle = fabric.copiedTextStyle;\n }\n this.insertNewStyleBlock(insertedText, selectionStart, copiedStyle);\n }\n this.updateFromTextArea();\n this.fire('changed');\n if (this.canvas) {\n this.canvas.fire('text:changed', { target: this });\n this.canvas.requestRenderAll();\n }\n },\n /**\n * Composition start\n */\n onCompositionStart: function() {\n this.inCompositionMode = true;\n },\n\n /**\n * Composition end\n */\n onCompositionEnd: function() {\n this.inCompositionMode = false;\n },\n\n // /**\n // * Composition update\n // */\n onCompositionUpdate: function(e) {\n this.compositionStart = e.target.selectionStart;\n this.compositionEnd = e.target.selectionEnd;\n this.updateTextareaPosition();\n },\n\n /**\n * Copies selected text\n * @param {Event} e Event object\n */\n copy: function() {\n if (this.selectionStart === this.selectionEnd) {\n //do not cut-copy if no selection\n return;\n }\n\n fabric.copiedText = this.getSelectedText();\n if (!fabric.disableStyleCopyPaste) {\n fabric.copiedTextStyle = this.getSelectionStyles(this.selectionStart, this.selectionEnd, true);\n }\n else {\n fabric.copiedTextStyle = null;\n }\n this._copyDone = true;\n },\n\n /**\n * Pastes text\n * @param {Event} e Event object\n */\n paste: function() {\n this.fromPaste = true;\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @return {Object} Clipboard data object\n */\n _getClipboardData: function(e) {\n return (e && e.clipboardData) || fabric.window.clipboardData;\n },\n\n /**\n * Finds the width in pixels before the cursor on the same line\n * @private\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @return {Number} widthBeforeCursor width before cursor\n */\n _getWidthBeforeCursor: function(lineIndex, charIndex) {\n var widthBeforeCursor = this._getLineLeftOffset(lineIndex), bound;\n\n if (charIndex > 0) {\n bound = this.__charBounds[lineIndex][charIndex - 1];\n widthBeforeCursor += bound.left + bound.width;\n }\n return widthBeforeCursor;\n },\n\n /**\n * Gets start offset of a selection\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n getDownCursorOffset: function(e, isRight) {\n var selectionProp = this._getSelectionForOffset(e, isRight),\n cursorLocation = this.get2DCursorLocation(selectionProp),\n lineIndex = cursorLocation.lineIndex;\n // if on last line, down cursor goes to end of line\n if (lineIndex === this._textLines.length - 1 || e.metaKey || e.keyCode === 34) {\n // move to the end of a text\n return this._text.length - selectionProp;\n }\n var charIndex = cursorLocation.charIndex,\n widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex),\n indexOnOtherLine = this._getIndexOnLine(lineIndex + 1, widthBeforeCursor),\n textAfterCursor = this._textLines[lineIndex].slice(charIndex);\n return textAfterCursor.length + indexOnOtherLine + 1 + this.missingNewlineOffset(lineIndex);\n },\n\n /**\n * private\n * Helps finding if the offset should be counted from Start or End\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n _getSelectionForOffset: function(e, isRight) {\n if (e.shiftKey && this.selectionStart !== this.selectionEnd && isRight) {\n return this.selectionEnd;\n }\n else {\n return this.selectionStart;\n }\n },\n\n /**\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n getUpCursorOffset: function(e, isRight) {\n var selectionProp = this._getSelectionForOffset(e, isRight),\n cursorLocation = this.get2DCursorLocation(selectionProp),\n lineIndex = cursorLocation.lineIndex;\n if (lineIndex === 0 || e.metaKey || e.keyCode === 33) {\n // if on first line, up cursor goes to start of line\n return -selectionProp;\n }\n var charIndex = cursorLocation.charIndex,\n widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex),\n indexOnOtherLine = this._getIndexOnLine(lineIndex - 1, widthBeforeCursor),\n textBeforeCursor = this._textLines[lineIndex].slice(0, charIndex),\n missingNewlineOffset = this.missingNewlineOffset(lineIndex - 1);\n // return a negative offset\n return -this._textLines[lineIndex - 1].length\n + indexOnOtherLine - textBeforeCursor.length + (1 - missingNewlineOffset);\n },\n\n /**\n * for a given width it founds the matching character.\n * @private\n */\n _getIndexOnLine: function(lineIndex, width) {\n\n var line = this._textLines[lineIndex],\n lineLeftOffset = this._getLineLeftOffset(lineIndex),\n widthOfCharsOnLine = lineLeftOffset,\n indexOnLine = 0, charWidth, foundMatch;\n\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charWidth = this.__charBounds[lineIndex][j].width;\n widthOfCharsOnLine += charWidth;\n if (widthOfCharsOnLine > width) {\n foundMatch = true;\n var leftEdge = widthOfCharsOnLine - charWidth,\n rightEdge = widthOfCharsOnLine,\n offsetFromLeftEdge = Math.abs(leftEdge - width),\n offsetFromRightEdge = Math.abs(rightEdge - width);\n\n indexOnLine = offsetFromRightEdge < offsetFromLeftEdge ? j : (j - 1);\n break;\n }\n }\n\n // reached end\n if (!foundMatch) {\n indexOnLine = line.length - 1;\n }\n\n return indexOnLine;\n },\n\n\n /**\n * Moves cursor down\n * @param {Event} e Event object\n */\n moveCursorDown: function(e) {\n if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) {\n return;\n }\n this._moveCursorUpOrDown('Down', e);\n },\n\n /**\n * Moves cursor up\n * @param {Event} e Event object\n */\n moveCursorUp: function(e) {\n if (this.selectionStart === 0 && this.selectionEnd === 0) {\n return;\n }\n this._moveCursorUpOrDown('Up', e);\n },\n\n /**\n * Moves cursor up or down, fires the events\n * @param {String} direction 'Up' or 'Down'\n * @param {Event} e Event object\n */\n _moveCursorUpOrDown: function(direction, e) {\n // getUpCursorOffset\n // getDownCursorOffset\n var action = 'get' + direction + 'CursorOffset',\n offset = this[action](e, this._selectionDirection === 'right');\n if (e.shiftKey) {\n this.moveCursorWithShift(offset);\n }\n else {\n this.moveCursorWithoutShift(offset);\n }\n if (offset !== 0) {\n this.setSelectionInBoundaries();\n this.abortCursorAnimation();\n this._currentCursorOpacity = 1;\n this.initDelayedCursor();\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Moves cursor with shift\n * @param {Number} offset\n */\n moveCursorWithShift: function(offset) {\n var newSelection = this._selectionDirection === 'left'\n ? this.selectionStart + offset\n : this.selectionEnd + offset;\n this.setSelectionStartEndWithShift(this.selectionStart, this.selectionEnd, newSelection);\n return offset !== 0;\n },\n\n /**\n * Moves cursor up without shift\n * @param {Number} offset\n */\n moveCursorWithoutShift: function(offset) {\n if (offset < 0) {\n this.selectionStart += offset;\n this.selectionEnd = this.selectionStart;\n }\n else {\n this.selectionEnd += offset;\n this.selectionStart = this.selectionEnd;\n }\n return offset !== 0;\n },\n\n /**\n * Moves cursor left\n * @param {Event} e Event object\n */\n moveCursorLeft: function(e) {\n if (this.selectionStart === 0 && this.selectionEnd === 0) {\n return;\n }\n this._moveCursorLeftOrRight('Left', e);\n },\n\n /**\n * @private\n * @return {Boolean} true if a change happened\n */\n _move: function(e, prop, direction) {\n var newValue;\n if (e.altKey) {\n newValue = this['findWordBoundary' + direction](this[prop]);\n }\n else if (e.metaKey || e.keyCode === 35 || e.keyCode === 36 ) {\n newValue = this['findLineBoundary' + direction](this[prop]);\n }\n else {\n this[prop] += direction === 'Left' ? -1 : 1;\n return true;\n }\n if (typeof newValue !== undefined && this[prop] !== newValue) {\n this[prop] = newValue;\n return true;\n }\n },\n\n /**\n * @private\n */\n _moveLeft: function(e, prop) {\n return this._move(e, prop, 'Left');\n },\n\n /**\n * @private\n */\n _moveRight: function(e, prop) {\n return this._move(e, prop, 'Right');\n },\n\n /**\n * Moves cursor left without keeping selection\n * @param {Event} e\n */\n moveCursorLeftWithoutShift: function(e) {\n var change = true;\n this._selectionDirection = 'left';\n\n // only move cursor when there is no selection,\n // otherwise we discard it, and leave cursor on same place\n if (this.selectionEnd === this.selectionStart && this.selectionStart !== 0) {\n change = this._moveLeft(e, 'selectionStart');\n\n }\n this.selectionEnd = this.selectionStart;\n return change;\n },\n\n /**\n * Moves cursor left while keeping selection\n * @param {Event} e\n */\n moveCursorLeftWithShift: function(e) {\n if (this._selectionDirection === 'right' && this.selectionStart !== this.selectionEnd) {\n return this._moveLeft(e, 'selectionEnd');\n }\n else if (this.selectionStart !== 0){\n this._selectionDirection = 'left';\n return this._moveLeft(e, 'selectionStart');\n }\n },\n\n /**\n * Moves cursor right\n * @param {Event} e Event object\n */\n moveCursorRight: function(e) {\n if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) {\n return;\n }\n this._moveCursorLeftOrRight('Right', e);\n },\n\n /**\n * Moves cursor right or Left, fires event\n * @param {String} direction 'Left', 'Right'\n * @param {Event} e Event object\n */\n _moveCursorLeftOrRight: function(direction, e) {\n var actionName = 'moveCursor' + direction + 'With';\n this._currentCursorOpacity = 1;\n\n if (e.shiftKey) {\n actionName += 'Shift';\n }\n else {\n actionName += 'outShift';\n }\n if (this[actionName](e)) {\n this.abortCursorAnimation();\n this.initDelayedCursor();\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Moves cursor right while keeping selection\n * @param {Event} e\n */\n moveCursorRightWithShift: function(e) {\n if (this._selectionDirection === 'left' && this.selectionStart !== this.selectionEnd) {\n return this._moveRight(e, 'selectionStart');\n }\n else if (this.selectionEnd !== this._text.length) {\n this._selectionDirection = 'right';\n return this._moveRight(e, 'selectionEnd');\n }\n },\n\n /**\n * Moves cursor right without keeping selection\n * @param {Event} e Event object\n */\n moveCursorRightWithoutShift: function(e) {\n var changed = true;\n this._selectionDirection = 'right';\n\n if (this.selectionStart === this.selectionEnd) {\n changed = this._moveRight(e, 'selectionStart');\n this.selectionEnd = this.selectionStart;\n }\n else {\n this.selectionStart = this.selectionEnd;\n }\n return changed;\n },\n\n /**\n * Removes characters from start/end\n * start/end ar per grapheme position in _text array.\n *\n * @param {Number} start\n * @param {Number} end default to start + 1\n */\n removeChars: function(start, end) {\n if (typeof end === 'undefined') {\n end = start + 1;\n }\n this.removeStyleFromTo(start, end);\n this._text.splice(start, end - start);\n this.text = this._text.join('');\n this.set('dirty', true);\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this._removeExtraneousStyles();\n },\n\n /**\n * insert characters at start position, before start position.\n * start equal 1 it means the text get inserted between actual grapheme 0 and 1\n * if style array is provided, it must be as the same length of text in graphemes\n * if end is provided and is bigger than start, old text is replaced.\n * start/end ar per grapheme position in _text array.\n *\n * @param {String} text text to insert\n * @param {Array} style array of style objects\n * @param {Number} start\n * @param {Number} end default to start + 1\n */\n insertChars: function(text, style, start, end) {\n if (typeof end === 'undefined') {\n end = start;\n }\n if (end > start) {\n this.removeStyleFromTo(start, end);\n }\n var graphemes = fabric.util.string.graphemeSplit(text);\n this.insertNewStyleBlock(graphemes, start, style);\n this._text = [].concat(this._text.slice(0, start), graphemes, this._text.slice(end));\n this.text = this._text.join('');\n this.set('dirty', true);\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this._removeExtraneousStyles();\n },\n\n});\n\n\n/* _TO_SVG_START_ */\n(function() {\n var toFixed = fabric.util.toFixed,\n multipleSpacesRegex = / +/g;\n\n fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ {\n\n /**\n * Returns SVG representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n _toSVG: function() {\n var offsets = this._getSVGLeftTopOffsets(),\n textAndBg = this._getSVGTextAndBg(offsets.textTop, offsets.textLeft);\n return this._wrapSVGTextAndBg(textAndBg);\n },\n\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n return this._createBaseSVGMarkup(\n this._toSVG(),\n { reviver: reviver, noStyle: true, withShadow: true }\n );\n },\n\n /**\n * @private\n */\n _getSVGLeftTopOffsets: function() {\n return {\n textLeft: -this.width / 2,\n textTop: -this.height / 2,\n lineTop: this.getHeightOfLine(0)\n };\n },\n\n /**\n * @private\n */\n _wrapSVGTextAndBg: function(textAndBg) {\n var noShadow = true,\n textDecoration = this.getSvgTextDecoration(this);\n return [\n textAndBg.textBgRects.join(''),\n '\\t\\t',\n textAndBg.textSpans.join(''),\n '\\n'\n ];\n },\n\n /**\n * @private\n * @param {Number} textTopOffset Text top offset\n * @param {Number} textLeftOffset Text left offset\n * @return {Object}\n */\n _getSVGTextAndBg: function(textTopOffset, textLeftOffset) {\n var textSpans = [],\n textBgRects = [],\n height = textTopOffset, lineOffset;\n // bounding-box background\n this._setSVGBg(textBgRects);\n\n // text and text-background\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n lineOffset = this._getLineLeftOffset(i);\n if (this.textBackgroundColor || this.styleHas('textBackgroundColor', i)) {\n this._setSVGTextLineBg(textBgRects, i, textLeftOffset + lineOffset, height);\n }\n this._setSVGTextLineText(textSpans, i, textLeftOffset + lineOffset, height);\n height += this.getHeightOfLine(i);\n }\n\n return {\n textSpans: textSpans,\n textBgRects: textBgRects\n };\n },\n\n /**\n * @private\n */\n _createTextCharSpan: function(_char, styleDecl, left, top) {\n var shouldUseWhitespace = _char !== _char.trim() || _char.match(multipleSpacesRegex),\n styleProps = this.getSvgSpanStyles(styleDecl, shouldUseWhitespace),\n fillStyles = styleProps ? 'style=\"' + styleProps + '\"' : '',\n dy = styleDecl.deltaY, dySpan = '',\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n if (dy) {\n dySpan = ' dy=\"' + toFixed(dy, NUM_FRACTION_DIGITS) + '\" ';\n }\n return [\n '',\n fabric.util.string.escapeXml(_char),\n ''\n ].join('');\n },\n\n _setSVGTextLineText: function(textSpans, lineIndex, textLeftOffset, textTopOffset) {\n // set proper line offset\n var lineHeight = this.getHeightOfLine(lineIndex),\n isJustify = this.textAlign.indexOf('justify') !== -1,\n actualStyle,\n nextStyle,\n charsToRender = '',\n charBox, style,\n boxWidth = 0,\n line = this._textLines[lineIndex],\n timeToRender;\n\n textTopOffset += lineHeight * (1 - this._fontSizeFraction) / this.lineHeight;\n for (var i = 0, len = line.length - 1; i <= len; i++) {\n timeToRender = i === len || this.charSpacing;\n charsToRender += line[i];\n charBox = this.__charBounds[lineIndex][i];\n if (boxWidth === 0) {\n textLeftOffset += charBox.kernedWidth - charBox.width;\n boxWidth += charBox.width;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n if (isJustify && !timeToRender) {\n if (this._reSpaceAndTab.test(line[i])) {\n timeToRender = true;\n }\n }\n if (!timeToRender) {\n // if we have charSpacing, we render char by char\n actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n timeToRender = this._hasStyleChangedForSvg(actualStyle, nextStyle);\n }\n if (timeToRender) {\n style = this._getStyleDeclaration(lineIndex, i) || { };\n textSpans.push(this._createTextCharSpan(charsToRender, style, textLeftOffset, textTopOffset));\n charsToRender = '';\n actualStyle = nextStyle;\n textLeftOffset += boxWidth;\n boxWidth = 0;\n }\n }\n },\n\n _pushTextBgRect: function(textBgRects, color, left, top, width, height) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n textBgRects.push(\n '\\t\\t\\n');\n },\n\n _setSVGTextLineBg: function(textBgRects, i, leftOffset, textTopOffset) {\n var line = this._textLines[i],\n heightOfLine = this.getHeightOfLine(i) / this.lineHeight,\n boxWidth = 0,\n boxStart = 0,\n charBox, currentColor,\n lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n if (currentColor !== lastColor) {\n lastColor && this._pushTextBgRect(textBgRects, lastColor, leftOffset + boxStart,\n textTopOffset, boxWidth, heightOfLine);\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastColor = currentColor;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n currentColor && this._pushTextBgRect(textBgRects, currentColor, leftOffset + boxStart,\n textTopOffset, boxWidth, heightOfLine);\n },\n\n /**\n * Adobe Illustrator (at least CS5) is unable to render rgba()-based fill values\n * we work around it by \"moving\" alpha channel into opacity attribute and setting fill's alpha to 1\n *\n * @private\n * @param {*} value\n * @return {String}\n */\n _getFillAttributes: function(value) {\n var fillColor = (value && typeof value === 'string') ? new fabric.Color(value) : '';\n if (!fillColor || !fillColor.getSource() || fillColor.getAlpha() === 1) {\n return 'fill=\"' + value + '\"';\n }\n return 'opacity=\"' + fillColor.getAlpha() + '\" fill=\"' + fillColor.setAlpha(1).toRgb() + '\"';\n },\n\n /**\n * @private\n */\n _getSVGLineTopOffset: function(lineIndex) {\n var lineTopOffset = 0, lastHeight = 0;\n for (var j = 0; j < lineIndex; j++) {\n lineTopOffset += this.getHeightOfLine(j);\n }\n lastHeight = this.getHeightOfLine(j);\n return {\n lineTop: lineTopOffset,\n offset: (this._fontSizeMult - this._fontSizeFraction) * lastHeight / (this.lineHeight * this._fontSizeMult)\n };\n },\n\n /**\n * Returns styles-string for svg-export\n * @param {Boolean} skipShadow a boolean to skip shadow filter output\n * @return {String}\n */\n getSvgStyles: function(skipShadow) {\n var svgStyle = fabric.Object.prototype.getSvgStyles.call(this, skipShadow);\n return svgStyle + ' white-space: pre;';\n },\n });\n})();\n/* _TO_SVG_END_ */\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = {});\n\n /**\n * Textbox class, based on IText, allows the user to resize the text rectangle\n * and wraps lines automatically. Textboxes have their Y scaling locked, the\n * user can only change width. Height is adjusted automatically based on the\n * wrapping of lines.\n * @class fabric.Textbox\n * @extends fabric.IText\n * @mixes fabric.Observable\n * @return {fabric.Textbox} thisArg\n * @see {@link fabric.Textbox#initialize} for constructor definition\n */\n fabric.Textbox = fabric.util.createClass(fabric.IText, fabric.Observable, {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'textbox',\n\n /**\n * Minimum width of textbox, in pixels.\n * @type Number\n * @default\n */\n minWidth: 20,\n\n /**\n * Minimum calculated width of a textbox, in pixels.\n * fixed to 2 so that an empty textbox cannot go to 0\n * and is still selectable without text.\n * @type Number\n * @default\n */\n dynamicMinWidth: 2,\n\n /**\n * Cached array of text wrapping.\n * @type Array\n */\n __cachedLines: null,\n\n /**\n * Override standard Object class values\n */\n lockScalingFlip: true,\n\n /**\n * Override standard Object class values\n * Textbox needs this on false\n */\n noScaleCache: false,\n\n /**\n * Properties which when set cause object to change dimensions\n * @type Object\n * @private\n */\n _dimensionAffectingProps: fabric.Text.prototype._dimensionAffectingProps.concat('width'),\n\n /**\n * Use this regular expression to split strings in breakable lines\n * @private\n */\n _wordJoiners: /[ \\t\\r]/,\n\n /**\n * Use this boolean property in order to split strings that have no white space concept.\n * this is a cheap way to help with chinese/japanese\n * @type Boolean\n * @since 2.6.0\n */\n splitByGrapheme: false,\n\n /**\n * Unlike superclass's version of this function, Textbox does not update\n * its width.\n * @private\n * @override\n */\n initDimensions: function() {\n if (this.__skipDimension) {\n return;\n }\n this.isEditing && this.initDelayedCursor();\n this.clearContextTop();\n this._clearCache();\n // clear dynamicMinWidth as it will be different after we re-wrap line\n this.dynamicMinWidth = 0;\n // wrap lines\n this._styleMap = this._generateStyleMap(this._splitText());\n // if after wrapping, the width is smaller than dynamicMinWidth, change the width and re-wrap\n if (this.dynamicMinWidth > this.width) {\n this._set('width', this.dynamicMinWidth);\n }\n if (this.textAlign.indexOf('justify') !== -1) {\n // once text is measured we need to make space fatter to make justified text.\n this.enlargeSpaces();\n }\n // clear cache and re-calculate height\n this.height = this.calcTextHeight();\n this.saveState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Generate an object that translates the style object so that it is\n * broken up by visual lines (new lines and automatic wrapping).\n * The original text styles object is broken up by actual lines (new lines only),\n * which is only sufficient for Text / IText\n * @private\n */\n _generateStyleMap: function(textInfo) {\n var realLineCount = 0,\n realLineCharCount = 0,\n charCount = 0,\n map = {};\n\n for (var i = 0; i < textInfo.graphemeLines.length; i++) {\n if (textInfo.graphemeText[charCount] === '\\n' && i > 0) {\n realLineCharCount = 0;\n charCount++;\n realLineCount++;\n }\n else if (!this.splitByGrapheme && this._reSpaceAndTab.test(textInfo.graphemeText[charCount]) && i > 0) {\n // this case deals with space's that are removed from end of lines when wrapping\n realLineCharCount++;\n charCount++;\n }\n\n map[i] = { line: realLineCount, offset: realLineCharCount };\n\n charCount += textInfo.graphemeLines[i].length;\n realLineCharCount += textInfo.graphemeLines[i].length;\n }\n\n return map;\n },\n\n /**\n * Returns true if object has a style property or has it on a specified line\n * @param {Number} lineIndex\n * @return {Boolean}\n */\n styleHas: function(property, lineIndex) {\n if (this._styleMap && !this.isWrapping) {\n var map = this._styleMap[lineIndex];\n if (map) {\n lineIndex = map.line;\n }\n }\n return fabric.Text.prototype.styleHas.call(this, property, lineIndex);\n },\n\n /**\n * Returns true if object has no styling or no styling in a line\n * @param {Number} lineIndex , lineIndex is on wrapped lines.\n * @return {Boolean}\n */\n isEmptyStyles: function(lineIndex) {\n if (!this.styles) {\n return true;\n }\n var offset = 0, nextLineIndex = lineIndex + 1, nextOffset, obj, shouldLimit = false,\n map = this._styleMap[lineIndex], mapNextLine = this._styleMap[lineIndex + 1];\n if (map) {\n lineIndex = map.line;\n offset = map.offset;\n }\n if (mapNextLine) {\n nextLineIndex = mapNextLine.line;\n shouldLimit = nextLineIndex === lineIndex;\n nextOffset = mapNextLine.offset;\n }\n obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n for (var p1 in obj) {\n for (var p2 in obj[p1]) {\n if (p2 >= offset && (!shouldLimit || p2 < nextOffset)) {\n // eslint-disable-next-line no-unused-vars\n for (var p3 in obj[p1][p2]) {\n return false;\n }\n }\n }\n }\n return true;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _getStyleDeclaration: function(lineIndex, charIndex) {\n if (this._styleMap && !this.isWrapping) {\n var map = this._styleMap[lineIndex];\n if (!map) {\n return null;\n }\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n }\n return this.callSuper('_getStyleDeclaration', lineIndex, charIndex);\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} style\n * @private\n */\n _setStyleDeclaration: function(lineIndex, charIndex, style) {\n var map = this._styleMap[lineIndex];\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n\n this.styles[lineIndex][charIndex] = style;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _deleteStyleDeclaration: function(lineIndex, charIndex) {\n var map = this._styleMap[lineIndex];\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n delete this.styles[lineIndex][charIndex];\n },\n\n /**\n * probably broken need a fix\n * Returns the real style line that correspond to the wrapped lineIndex line\n * Used just to verify if the line does exist or not.\n * @param {Number} lineIndex\n * @returns {Boolean} if the line exists or not\n * @private\n */\n _getLineStyle: function(lineIndex) {\n var map = this._styleMap[lineIndex];\n return !!this.styles[map.line];\n },\n\n /**\n * Set the line style to an empty object so that is initialized\n * @param {Number} lineIndex\n * @param {Object} style\n * @private\n */\n _setLineStyle: function(lineIndex) {\n var map = this._styleMap[lineIndex];\n this.styles[map.line] = {};\n },\n\n /**\n * Wraps text using the 'width' property of Textbox. First this function\n * splits text on newlines, so we preserve newlines entered by the user.\n * Then it wraps each line using the width of the Textbox by calling\n * _wrapLine().\n * @param {Array} lines The string array of text that is split into lines\n * @param {Number} desiredWidth width you want to wrap to\n * @returns {Array} Array of lines\n */\n _wrapText: function(lines, desiredWidth) {\n var wrapped = [], i;\n this.isWrapping = true;\n for (i = 0; i < lines.length; i++) {\n wrapped = wrapped.concat(this._wrapLine(lines[i], i, desiredWidth));\n }\n this.isWrapping = false;\n return wrapped;\n },\n\n /**\n * Helper function to measure a string of text, given its lineIndex and charIndex offset\n * it gets called when charBounds are not available yet.\n * @param {CanvasRenderingContext2D} ctx\n * @param {String} text\n * @param {number} lineIndex\n * @param {number} charOffset\n * @returns {number}\n * @private\n */\n _measureWord: function(word, lineIndex, charOffset) {\n var width = 0, prevGrapheme, skipLeft = true;\n charOffset = charOffset || 0;\n for (var i = 0, len = word.length; i < len; i++) {\n var box = this._getGraphemeBox(word[i], lineIndex, i + charOffset, prevGrapheme, skipLeft);\n width += box.kernedWidth;\n prevGrapheme = word[i];\n }\n return width;\n },\n\n /**\n * Wraps a line of text using the width of the Textbox and a context.\n * @param {Array} line The grapheme array that represent the line\n * @param {Number} lineIndex\n * @param {Number} desiredWidth width you want to wrap the line to\n * @param {Number} reservedSpace space to remove from wrapping for custom functionalities\n * @returns {Array} Array of line(s) into which the given text is wrapped\n * to.\n */\n _wrapLine: function(_line, lineIndex, desiredWidth, reservedSpace) {\n var lineWidth = 0,\n splitByGrapheme = this.splitByGrapheme,\n graphemeLines = [],\n line = [],\n // spaces in different languages?\n words = splitByGrapheme ? fabric.util.string.graphemeSplit(_line) : _line.split(this._wordJoiners),\n word = '',\n offset = 0,\n infix = splitByGrapheme ? '' : ' ',\n wordWidth = 0,\n infixWidth = 0,\n largestWordWidth = 0,\n lineJustStarted = true,\n additionalSpace = this._getWidthOfCharSpacing(),\n reservedSpace = reservedSpace || 0;\n // fix a difference between split and graphemeSplit\n if (words.length === 0) {\n words.push([]);\n }\n desiredWidth -= reservedSpace;\n for (var i = 0; i < words.length; i++) {\n // if using splitByGrapheme words are already in graphemes.\n word = splitByGrapheme ? words[i] : fabric.util.string.graphemeSplit(words[i]);\n wordWidth = this._measureWord(word, lineIndex, offset);\n offset += word.length;\n\n lineWidth += infixWidth + wordWidth - additionalSpace;\n if (lineWidth > desiredWidth && !lineJustStarted) {\n graphemeLines.push(line);\n line = [];\n lineWidth = wordWidth;\n lineJustStarted = true;\n }\n else {\n lineWidth += additionalSpace;\n }\n\n if (!lineJustStarted && !splitByGrapheme) {\n line.push(infix);\n }\n line = line.concat(word);\n\n infixWidth = splitByGrapheme ? 0 : this._measureWord([infix], lineIndex, offset);\n offset++;\n lineJustStarted = false;\n // keep track of largest word\n if (wordWidth > largestWordWidth) {\n largestWordWidth = wordWidth;\n }\n }\n\n i && graphemeLines.push(line);\n\n if (largestWordWidth + reservedSpace > this.dynamicMinWidth) {\n this.dynamicMinWidth = largestWordWidth - additionalSpace + reservedSpace;\n }\n return graphemeLines;\n },\n\n /**\n * Detect if the text line is ended with an hard break\n * text and itext do not have wrapping, return false\n * @param {Number} lineIndex text to split\n * @return {Boolean}\n */\n isEndOfWrapping: function(lineIndex) {\n if (!this._styleMap[lineIndex + 1]) {\n // is last line, return true;\n return true;\n }\n if (this._styleMap[lineIndex + 1].line !== this._styleMap[lineIndex].line) {\n // this is last line before a line break, return true;\n return true;\n }\n return false;\n },\n\n /**\n * Detect if a line has a linebreak and so we need to account for it when moving\n * and counting style.\n * @return Number\n */\n missingNewlineOffset: function(lineIndex) {\n if (this.splitByGrapheme) {\n return this.isEndOfWrapping(lineIndex) ? 1 : 0;\n }\n return 1;\n },\n\n /**\n * Gets lines of text to render in the Textbox. This function calculates\n * text wrapping on the fly every time it is called.\n * @param {String} text text to split\n * @returns {Array} Array of lines in the Textbox.\n * @override\n */\n _splitTextIntoLines: function(text) {\n var newText = fabric.Text.prototype._splitTextIntoLines.call(this, text),\n graphemeLines = this._wrapText(newText.lines, this.width),\n lines = new Array(graphemeLines.length);\n for (var i = 0; i < graphemeLines.length; i++) {\n lines[i] = graphemeLines[i].join('');\n }\n newText.lines = lines;\n newText.graphemeLines = graphemeLines;\n return newText;\n },\n\n getMinWidth: function() {\n return Math.max(this.minWidth, this.dynamicMinWidth);\n },\n\n _removeExtraneousStyles: function() {\n var linesToKeep = {};\n for (var prop in this._styleMap) {\n if (this._textLines[prop]) {\n linesToKeep[this._styleMap[prop].line] = 1;\n }\n }\n for (var prop in this.styles) {\n if (!linesToKeep[prop]) {\n delete this.styles[prop];\n }\n }\n },\n\n /**\n * Returns object representation of an instance\n * @method toObject\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['minWidth', 'splitByGrapheme'].concat(propertiesToInclude));\n }\n });\n\n /**\n * Returns fabric.Textbox instance from an object representation\n * @static\n * @memberOf fabric.Textbox\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Textbox instance is created\n */\n fabric.Textbox.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Textbox', object, callback, 'text');\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n var controlsUtils = fabric.controlsUtils,\n scaleSkewStyleHandler = controlsUtils.scaleSkewCursorStyleHandler,\n scaleStyleHandler = controlsUtils.scaleCursorStyleHandler,\n scalingEqually = controlsUtils.scalingEqually,\n scalingYOrSkewingX = controlsUtils.scalingYOrSkewingX,\n scalingXOrSkewingY = controlsUtils.scalingXOrSkewingY,\n scaleOrSkewActionName = controlsUtils.scaleOrSkewActionName,\n objectControls = fabric.Object.prototype.controls;\n\n objectControls.ml = new fabric.Control({\n x: -0.5,\n y: 0,\n cursorStyleHandler: scaleSkewStyleHandler,\n actionHandler: scalingXOrSkewingY,\n getActionName: scaleOrSkewActionName,\n });\n\n objectControls.mr = new fabric.Control({\n x: 0.5,\n y: 0,\n cursorStyleHandler: scaleSkewStyleHandler,\n actionHandler: scalingXOrSkewingY,\n getActionName: scaleOrSkewActionName,\n });\n\n objectControls.mb = new fabric.Control({\n x: 0,\n y: 0.5,\n cursorStyleHandler: scaleSkewStyleHandler,\n actionHandler: scalingYOrSkewingX,\n getActionName: scaleOrSkewActionName,\n });\n\n objectControls.mt = new fabric.Control({\n x: 0,\n y: -0.5,\n cursorStyleHandler: scaleSkewStyleHandler,\n actionHandler: scalingYOrSkewingX,\n getActionName: scaleOrSkewActionName,\n });\n\n objectControls.tl = new fabric.Control({\n x: -0.5,\n y: -0.5,\n cursorStyleHandler: scaleStyleHandler,\n actionHandler: scalingEqually\n });\n\n objectControls.tr = new fabric.Control({\n x: 0.5,\n y: -0.5,\n cursorStyleHandler: scaleStyleHandler,\n actionHandler: scalingEqually\n });\n\n objectControls.bl = new fabric.Control({\n x: -0.5,\n y: 0.5,\n cursorStyleHandler: scaleStyleHandler,\n actionHandler: scalingEqually\n });\n\n objectControls.br = new fabric.Control({\n x: 0.5,\n y: 0.5,\n cursorStyleHandler: scaleStyleHandler,\n actionHandler: scalingEqually\n });\n\n objectControls.mtr = new fabric.Control({\n x: 0,\n y: -0.5,\n actionHandler: controlsUtils.rotationWithSnapping,\n cursorStyleHandler: controlsUtils.rotationStyleHandler,\n offsetY: -40,\n withConnection: true,\n actionName: 'rotate',\n });\n\n if (fabric.Textbox) {\n // this is breaking the prototype inheritance, no time / ideas to fix it.\n // is important to document that if you want to have all objects to have a\n // specific custom control, you have to add it to Object prototype and to Textbox\n // prototype. The controls are shared as references. So changes to control `tr`\n // can still apply to all objects if needed.\n var textBoxControls = fabric.Textbox.prototype.controls = { };\n\n textBoxControls.mtr = objectControls.mtr;\n textBoxControls.tr = objectControls.tr;\n textBoxControls.br = objectControls.br;\n textBoxControls.tl = objectControls.tl;\n textBoxControls.bl = objectControls.bl;\n textBoxControls.mt = objectControls.mt;\n textBoxControls.mb = objectControls.mb;\n\n textBoxControls.mr = new fabric.Control({\n x: 0.5,\n y: 0,\n actionHandler: controlsUtils.changeWidth,\n cursorStyleHandler: scaleSkewStyleHandler,\n actionName: 'resizing',\n });\n\n textBoxControls.ml = new fabric.Control({\n x: -0.5,\n y: 0,\n actionHandler: controlsUtils.changeWidth,\n cursorStyleHandler: scaleSkewStyleHandler,\n actionName: 'resizing',\n });\n }\n})();\n\n\n(function () {\n /** ERASER_START */\n var __setBgOverlayColor = fabric.StaticCanvas.prototype.__setBgOverlayColor;\n var ___setBgOverlay = fabric.StaticCanvas.prototype.__setBgOverlay;\n var __setSVGBgOverlayColor = fabric.StaticCanvas.prototype._setSVGBgOverlayColor;\n fabric.util.object.extend(fabric.StaticCanvas.prototype, {\n backgroundColor: undefined,\n overlayColor: undefined,\n /**\n * Create Rect that holds the color to support erasing\n * patches {@link CommonMethods#_initGradient}\n * @private\n * @param {'bakground'|'overlay'} property\n * @param {(String|fabric.Pattern|fabric.Rect)} color Color or pattern or rect (in case of erasing)\n * @param {Function} callback Callback to invoke when color is set\n * @param {Object} options\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n __setBgOverlayColor: function (property, color, callback, options) {\n if (color && color.isType && color.isType('rect')) {\n // color is already an object\n this[property] = color;\n color.set(options);\n callback && callback(this[property]);\n }\n else {\n var _this = this;\n var cb = function () {\n _this[property] = new fabric.Rect(fabric.util.object.extend({\n width: _this.width,\n height: _this.height,\n fill: _this[property],\n }, options));\n callback && callback(_this[property]);\n };\n __setBgOverlayColor.call(this, property, color, cb);\n // invoke cb in case of gradient\n // see {@link CommonMethods#_initGradient}\n if (color && color.colorStops && !(color instanceof fabric.Gradient)) {\n cb();\n }\n }\n\n return this;\n },\n\n setBackgroundColor: function (backgroundColor, callback, options) {\n return this.__setBgOverlayColor('backgroundColor', backgroundColor, callback, options);\n },\n\n setOverlayColor: function (overlayColor, callback, options) {\n return this.__setBgOverlayColor('overlayColor', overlayColor, callback, options);\n },\n\n /**\n * patch serialization - from json\n * background/overlay properties could be objects if parsed by this mixin or could be legacy values\n * @private\n * @param {String} property Property to set (backgroundImage, overlayImage, backgroundColor, overlayColor)\n * @param {(Object|String)} value Value to set\n * @param {Object} loaded Set loaded property to true if property is set\n * @param {Object} callback Callback function to invoke after property is set\n */\n __setBgOverlay: function (property, value, loaded, callback) {\n var _this = this;\n\n if ((property === 'backgroundColor' || property === 'overlayColor') &&\n (value && typeof value === 'object' && value.type === 'rect')) {\n fabric.util.enlivenObjects([value], function (enlivedObject) {\n _this[property] = enlivedObject[0];\n loaded[property] = true;\n callback && callback();\n });\n }\n else {\n ___setBgOverlay.call(this, property, value, loaded, callback);\n }\n },\n\n /**\n * patch serialization - to svg\n * background/overlay properties could be objects if parsed by this mixin or could be legacy values\n * @private\n */\n _setSVGBgOverlayColor: function (markup, property, reviver) {\n var filler = this[property + 'Color'];\n if (filler && filler.isType && filler.isType('rect')) {\n var excludeFromExport = filler.excludeFromExport || (this[property] && this[property].excludeFromExport);\n if (filler && !excludeFromExport && filler.toSVG) {\n markup.push(filler.toSVG(reviver));\n }\n }\n else {\n __setSVGBgOverlayColor.call(this, markup, property, reviver);\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {string} property 'background' or 'overlay'\n */\n _renderBackgroundOrOverlay: function (ctx, property) {\n var fill = this[property + 'Color'], object = this[property + 'Image'],\n v = this.viewportTransform, needsVpt = this[property + 'Vpt'];\n if (!fill && !object) {\n return;\n }\n if (fill || object) {\n ctx.save();\n if (needsVpt) {\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n }\n fill && fill.render(ctx);\n object && object.render(ctx);\n ctx.restore();\n }\n },\n });\n\n var _toObject = fabric.Object.prototype.toObject;\n var __createBaseSVGMarkup = fabric.Object.prototype._createBaseSVGMarkup;\n fabric.util.object.extend(fabric.Object.prototype, {\n /**\n * Indicates whether this object can be erased by {@link fabric.EraserBrush}\n * @type boolean\n * @default true\n */\n erasable: true,\n\n /**\n *\n * @returns {fabric.Group | null}\n */\n getEraser: function () {\n return this.clipPath && this.clipPath.eraser ? this.clipPath : null;\n },\n\n /**\n * Returns an object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function (additionalProperties) {\n return _toObject.call(this, ['erasable'].concat(additionalProperties));\n },\n\n /**\n * use to achieve erasing for svg\n * credit: https://travishorn.com/removing-parts-of-shapes-in-svg-b539a89e5649\n * @param {Function} reviver\n * @returns {string} markup\n */\n eraserToSVG: function (options) {\n var eraser = this.getEraser();\n if (eraser) {\n var fill = eraser._objects[0].fill;\n eraser._objects[0].fill = 'white';\n eraser.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++;\n var commons = [\n 'id=\"' + eraser.clipPathId + '\"',\n /*options.additionalTransform ? ' transform=\"' + options.additionalTransform + '\" ' : ''*/\n ].join(' ');\n var objectMarkup = ['', '', eraser.toSVG(options.reviver), '', ''];\n eraser._objects[0].fill = fill;\n return objectMarkup.join('\\n');\n }\n return '';\n },\n\n /**\n * use to achieve erasing for svg, override \n * @param {string[]} objectMarkup\n * @param {Object} options\n * @returns\n */\n _createBaseSVGMarkup: function (objectMarkup, options) {\n var eraser = this.getEraser();\n if (eraser) {\n var eraserMarkup = this.eraserToSVG(options);\n this.clipPath = null;\n var markup = __createBaseSVGMarkup.call(this, objectMarkup, options);\n this.clipPath = eraser;\n return [\n eraserMarkup,\n markup.replace('>', 'mask=\"url(#' + eraser.clipPathId + ')\" >')\n ].join('\\n');\n }\n else {\n return __createBaseSVGMarkup.call(this, objectMarkup, options);\n }\n }\n });\n\n var _groupToObject = fabric.Group.prototype.toObject;\n fabric.util.object.extend(fabric.Group.prototype, {\n /**\n * Returns an object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function (additionalProperties) {\n return _groupToObject.call(this, ['eraser'].concat(additionalProperties));\n }\n });\n\n fabric.util.object.extend(fabric.Canvas.prototype, {\n /**\n * Used by {@link #renderAll}\n * @returns boolean\n */\n isErasing: function () {\n return (\n this.isDrawingMode &&\n this.freeDrawingBrush &&\n this.freeDrawingBrush.type === 'eraser' &&\n this.freeDrawingBrush._isErasing\n );\n },\n\n /**\n * While erasing, the brush is in charge of rendering the canvas\n * It uses both layers to achieve diserd erasing effect\n *\n * @returns fabric.Canvas\n */\n renderAll: function () {\n if (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) {\n this.clearContext(this.contextTop);\n this.contextTopDirty = false;\n }\n // while erasing the brush is in charge of rendering the canvas so we return\n if (this.isErasing()) {\n this.freeDrawingBrush._render();\n return;\n }\n if (this.hasLostContext) {\n this.renderTopLayer(this.contextTop);\n }\n var canvasToDrawOn = this.contextContainer;\n this.renderCanvas(canvasToDrawOn, this._chooseObjectsToRender());\n return this;\n }\n });\n\n\n /**\n * EraserBrush class\n * Supports selective erasing meaning that only erasable objects are affected by the eraser brush.\n * In order to support selective erasing all non erasable objects are rendered on the main/bottom ctx\n * while the entire canvas is rendered on the top ctx.\n * Canvas bakground/overlay image/color are handled as well.\n * When erasing occurs, the path clips the top ctx and reveals the bottom ctx.\n * This achieves the desired effect of seeming to erase only erasable objects.\n * After erasing is done the created path is added to all intersected objects' `clipPath` property.\n *\n *\n * @class fabric.EraserBrush\n * @extends fabric.PencilBrush\n */\n fabric.EraserBrush = fabric.util.createClass(\n fabric.PencilBrush,\n /** @lends fabric.EraserBrush.prototype */ {\n type: 'eraser',\n\n /**\n * Indicates that the ctx is ready and rendering can begin.\n * Used to prevent a race condition caused by {@link fabric.EraserBrush#onMouseMove} firing before {@link fabric.EraserBrush#onMouseDown} has completed\n *\n * @private\n */\n _ready: false,\n\n /**\n * @private\n */\n _drawOverlayOnTop: false,\n\n /**\n * @private\n */\n _isErasing: false,\n\n initialize: function (canvas) {\n this.callSuper('initialize', canvas);\n this._renderBound = this._render.bind(this);\n this.render = this.render.bind(this);\n },\n\n /**\n * Used to hide a drawable from the rendering process\n * @param {fabric.Object} object\n */\n hideObject: function (object) {\n if (object) {\n object._originalOpacity = object.opacity;\n object.set({ opacity: 0 });\n }\n },\n\n /**\n * Restores hiding an object\n * {@link favric.EraserBrush#hideObject}\n * @param {fabric.Object} object\n */\n restoreObjectVisibility: function (object) {\n if (object && object._originalOpacity) {\n object.set({ opacity: object._originalOpacity });\n object._originalOpacity = undefined;\n }\n },\n\n /**\n * Drawing Logic For background drawables: (`backgroundImage`, `backgroundColor`)\n * 1. if erasable = true:\n * we need to hide the drawable on the bottom ctx so when the brush is erasing it will clip the top ctx and reveal white space underneath\n * 2. if erasable = false:\n * we need to draw the drawable only on the bottom ctx so the brush won't affect it\n * @param {'bottom' | 'top' | 'overlay'} layer\n */\n prepareCanvasBackgroundForLayer: function (layer) {\n if (layer === 'overlay') {\n return;\n }\n var canvas = this.canvas;\n var image = canvas.get('backgroundImage');\n var color = canvas.get('backgroundColor');\n var erasablesOnLayer = layer === 'top';\n if (image && image.erasable === !erasablesOnLayer) {\n this.hideObject(image);\n }\n if (color && color.erasable === !erasablesOnLayer) {\n this.hideObject(color);\n }\n },\n\n /**\n * Drawing Logic For overlay drawables (`overlayImage`, `overlayColor`)\n * We must draw on top ctx to be on top of visible canvas\n * 1. if erasable = true:\n * we need to draw the drawable on the top ctx as a normal object\n * 2. if erasable = false:\n * we need to draw the drawable on top of the brush,\n * this means we need to repaint for every stroke\n *\n * @param {'bottom' | 'top' | 'overlay'} layer\n * @returns boolean render overlay above brush\n */\n prepareCanvasOverlayForLayer: function (layer) {\n var canvas = this.canvas;\n var image = canvas.get('overlayImage');\n var color = canvas.get('overlayColor');\n if (layer === 'bottom') {\n this.hideObject(image);\n this.hideObject(color);\n return false;\n };\n var erasablesOnLayer = layer === 'top';\n var renderOverlayOnTop = (image && !image.erasable) || (color && !color.erasable);\n if (image && image.erasable === !erasablesOnLayer) {\n this.hideObject(image);\n }\n if (color && color.erasable === !erasablesOnLayer) {\n this.hideObject(color);\n }\n return renderOverlayOnTop;\n },\n\n /**\n * @private\n */\n restoreCanvasDrawables: function () {\n var canvas = this.canvas;\n this.restoreObjectVisibility(canvas.get('backgroundImage'));\n this.restoreObjectVisibility(canvas.get('backgroundColor'));\n this.restoreObjectVisibility(canvas.get('overlayImage'));\n this.restoreObjectVisibility(canvas.get('overlayColor'));\n },\n\n /**\n * @private\n * This is designed to support erasing a group with both erasable and non-erasable objects.\n * Iterates over collections to allow nested selective erasing.\n * Used by {@link fabric.EraserBrush#prepareCanvasObjectsForLayer}\n * to prepare the bottom layer by hiding erasable nested objects\n *\n * @param {fabric.Collection} collection\n */\n prepareCollectionTraversal: function (collection) {\n var _this = this;\n collection.forEachObject(function (obj) {\n if (obj.forEachObject) {\n _this.prepareCollectionTraversal(obj);\n }\n else {\n if (obj.erasable) {\n _this.hideObject(obj);\n }\n }\n });\n },\n\n /**\n * @private\n * Used by {@link fabric.EraserBrush#prepareCanvasObjectsForLayer}\n * to reverse the action of {@link fabric.EraserBrush#prepareCollectionTraversal}\n *\n * @param {fabric.Collection} collection\n */\n restoreCollectionTraversal: function (collection) {\n var _this = this;\n collection.forEachObject(function (obj) {\n if (obj.forEachObject) {\n _this.restoreCollectionTraversal(obj);\n }\n else {\n _this.restoreObjectVisibility(obj);\n }\n });\n },\n\n /**\n * @private\n * This is designed to support erasing a group with both erasable and non-erasable objects.\n *\n * @param {'bottom' | 'top' | 'overlay'} layer\n */\n prepareCanvasObjectsForLayer: function (layer) {\n if (layer !== 'bottom') { return; }\n this.prepareCollectionTraversal(this.canvas);\n },\n\n /**\n * @private\n * @param {'bottom' | 'top' | 'overlay'} layer\n */\n restoreCanvasObjectsFromLayer: function (layer) {\n if (layer !== 'bottom') { return; }\n this.restoreCollectionTraversal(this.canvas);\n },\n\n /**\n * @private\n * @param {'bottom' | 'top' | 'overlay'} layer\n * @returns boolean render overlay above brush\n */\n prepareCanvasForLayer: function (layer) {\n this.prepareCanvasBackgroundForLayer(layer);\n this.prepareCanvasObjectsForLayer(layer);\n return this.prepareCanvasOverlayForLayer(layer);\n },\n\n /**\n * @private\n * @param {'bottom' | 'top' | 'overlay'} layer\n */\n restoreCanvasFromLayer: function (layer) {\n this.restoreCanvasDrawables();\n this.restoreCanvasObjectsFromLayer(layer);\n },\n\n /**\n * Render all non-erasable objects on bottom layer with the exception of overlays to avoid being clipped by the brush.\n * Groups are rendered for nested selective erasing, non-erasable objects are visible while erasable objects are not.\n */\n renderBottomLayer: function () {\n var canvas = this.canvas;\n this.prepareCanvasForLayer('bottom');\n canvas.renderCanvas(\n canvas.getContext(),\n canvas.getObjects().filter(function (obj) {\n return !obj.erasable || obj.isType('group');\n })\n );\n this.restoreCanvasFromLayer('bottom');\n },\n\n /**\n * 1. Render all objects on top layer, erasable and non-erasable\n * This is important for cases such as overlapping objects, the background object erasable and the foreground object not erasable.\n * 2. Render the brush\n */\n renderTopLayer: function () {\n var canvas = this.canvas;\n this._drawOverlayOnTop = this.prepareCanvasForLayer('top');\n canvas.renderCanvas(\n canvas.contextTop,\n canvas.getObjects()\n );\n this.callSuper('_render');\n this.restoreCanvasFromLayer('top');\n },\n\n /**\n * Render all non-erasable overlays on top of the brush so that they won't get erased\n */\n renderOverlay: function () {\n this.prepareCanvasForLayer('overlay');\n var canvas = this.canvas;\n var ctx = canvas.contextTop;\n this._saveAndTransform(ctx);\n canvas._renderOverlay(ctx);\n ctx.restore();\n this.restoreCanvasFromLayer('overlay');\n },\n\n /**\n * @extends @class fabric.BaseBrush\n * @param {CanvasRenderingContext2D} ctx\n */\n _saveAndTransform: function (ctx) {\n this.callSuper('_saveAndTransform', ctx);\n ctx.globalCompositeOperation = 'destination-out';\n },\n\n /**\n * We indicate {@link fabric.PencilBrush} to repaint itself if necessary\n * @returns\n */\n needsFullRender: function () {\n return this.callSuper('needsFullRender') || this._drawOverlayOnTop;\n },\n\n /**\n *\n * @param {fabric.Point} pointer\n * @param {fabric.IEvent} options\n * @returns\n */\n onMouseDown: function (pointer, options) {\n if (!this.canvas._isMainEvent(options.e)) {\n return;\n }\n this._prepareForDrawing(pointer);\n // capture coordinates immediately\n // this allows to draw dots (when movement never occurs)\n this._captureDrawingPath(pointer);\n\n this._isErasing = true;\n this.canvas.fire('erasing:start');\n this._ready = true;\n this._render();\n },\n\n /**\n * Rendering is done in 4 steps:\n * 1. Draw all non-erasable objects on bottom ctx with the exception of overlays {@link fabric.EraserBrush#renderBottomLayer}\n * 2. Draw all objects on top ctx including erasable drawables {@link fabric.EraserBrush#renderTopLayer}\n * 3. Draw eraser {@link fabric.PencilBrush#_render} at {@link fabric.EraserBrush#renderTopLayer}\n * 4. Draw non-erasable overlays {@link fabric.EraserBrush#renderOverlay}\n *\n * @param {fabric.Canvas} canvas\n */\n _render: function () {\n if (!this._ready) {\n return;\n }\n this.isRendering = 1;\n this.renderBottomLayer();\n this.renderTopLayer();\n this.renderOverlay();\n this.isRendering = 0;\n },\n\n /**\n * @public\n */\n render: function () {\n if (this._isErasing) {\n if (this.isRendering) {\n this.isRendering = fabric.util.requestAnimFrame(this._renderBound);\n }\n else {\n this._render();\n }\n return true;\n }\n return false;\n },\n\n /**\n * Adds path to existing clipPath of object\n *\n * @param {fabric.Object} obj\n * @param {fabric.Path} path\n */\n _addPathToObjectEraser: function (obj, path) {\n var clipObject;\n var _this = this;\n // object is collection, i.e group\n if (obj.forEachObject) {\n obj.forEachObject(function (_obj) {\n if (_obj.erasable) {\n _this._addPathToObjectEraser(_obj, path);\n }\n });\n return;\n }\n if (!obj.getEraser()) {\n var size = obj._getNonTransformedDimensions();\n var rect = new fabric.Rect({\n width: size.x,\n height: size.y,\n clipPath: obj.clipPath,\n originX: 'center',\n originY: 'center'\n });\n clipObject = new fabric.Group([rect], {\n eraser: true\n });\n }\n else {\n clipObject = obj.clipPath;\n }\n\n path.clone(function (path) {\n path.globalCompositeOperation = 'destination-out';\n // http://fabricjs.com/using-transformations\n var desiredTransform = fabric.util.multiplyTransformMatrices(\n fabric.util.invertTransform(\n obj.calcTransformMatrix()\n ),\n path.calcTransformMatrix()\n );\n fabric.util.applyTransformToObject(path, desiredTransform);\n clipObject.addWithUpdate(path);\n obj.set({\n clipPath: clipObject,\n dirty: true\n });\n });\n },\n\n /**\n * Add the eraser path to canvas drawables' clip paths\n *\n * @param {fabric.Canvas} source\n * @param {fabric.Canvas} path\n * @returns {Object} canvas drawables that were erased by the path\n */\n applyEraserToCanvas: function (path) {\n var canvas = this.canvas;\n var drawables = {};\n [\n 'backgroundImage',\n 'backgroundColor',\n 'overlayImage',\n 'overlayColor',\n ].forEach(function (prop) {\n var drawable = canvas[prop];\n if (drawable && drawable.erasable) {\n this._addPathToObjectEraser(drawable, path);\n drawables[prop] = drawable;\n }\n }, this);\n return drawables;\n },\n\n /**\n * On mouseup after drawing the path on contextTop canvas\n * we use the points captured to create an new fabric path object\n * and add it to every intersected erasable object.\n */\n _finalizeAndAddPath: function () {\n var ctx = this.canvas.contextTop, canvas = this.canvas;\n ctx.closePath();\n if (this.decimate) {\n this._points = this.decimatePoints(this._points, this.decimate);\n }\n\n // clear\n canvas.clearContext(canvas.contextTop);\n this._isErasing = false;\n\n var pathData = this._points && this._points.length > 1 ?\n this.convertPointsToSVGPath(this._points).join('') :\n 'M 0 0 Q 0 0 0 0 L 0 0';\n if (pathData === 'M 0 0 Q 0 0 0 0 L 0 0') {\n canvas.fire('erasing:end');\n // do not create 0 width/height paths, as they are\n // rendered inconsistently across browsers\n // Firefox 4, for example, renders a dot,\n // whereas Chrome 10 renders nothing\n canvas.requestRenderAll();\n return;\n }\n\n var path = this.createPath(pathData);\n canvas.fire('before:path:created', { path: path });\n\n // finalize erasing\n var drawables = this.applyEraserToCanvas(path);\n var _this = this;\n var targets = [];\n canvas.forEachObject(function (obj) {\n if (obj.erasable && obj.intersectsWithObject(path)) {\n _this._addPathToObjectEraser(obj, path);\n targets.push(obj);\n }\n });\n\n canvas.fire('erasing:end', { path: path, targets: targets, drawables: drawables });\n\n canvas.requestRenderAll();\n path.setCoords();\n this._resetShadow();\n\n // fire event 'path' created\n canvas.fire('path:created', { path: path });\n }\n }\n );\n\n /** ERASER_END */\n})();\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","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\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","\"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});","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","'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","module.exports = require('./_shared')('native-function-to-string', Function.toString);\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 $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","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","// 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.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","// 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.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.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\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.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.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.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.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.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\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.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","// 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","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 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 $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","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","'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","'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","// 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","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v18.1.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"./expressionService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar context_1 = require(\"../context/context\");\nvar utils_1 = require(\"../utils\");\nvar events_1 = require(\"../events\");\nvar eventService_1 = require(\"../eventService\");\nvar valueCache_1 = require(\"./valueCache\");\nvar ValueService = (function () {\n function ValueService() {\n this.initialised = false;\n }\n ValueService.prototype.init = function () {\n this.cellExpressions = this.gridOptionsWrapper.isEnableCellExpressions();\n this.initialised = true;\n };\n ValueService.prototype.getValue = function (column, rowNode, forFilter, ignoreAggData) {\n // console.log(`turnActive = ${this.turnActive}`);\n if (forFilter === void 0) { forFilter = false; }\n if (ignoreAggData === void 0) { ignoreAggData = false; }\n // hack - the grid is getting refreshed before this bean gets initialised, race condition.\n // really should have a way so they get initialised in the right order???\n if (!this.initialised) {\n this.init();\n }\n // pull these out to make code below easier to read\n var colDef = column.getColDef();\n var field = colDef.field;\n var colId = column.getId();\n var data = rowNode.data;\n var result;\n // if there is a value getter, this gets precedence over a field\n var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;\n var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;\n if (forFilter && colDef.filterValueGetter) {\n result = this.executeValueGetter(colDef.filterValueGetter, data, column, rowNode);\n }\n else if (groupDataExists) {\n result = rowNode.groupData[colId];\n }\n else if (aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (field && data) {\n result = utils_1._.getValueUsingField(data, field, column.isFieldContainsDots());\n }\n else {\n result = undefined;\n }\n // the result could be an expression itself, if we are allowing cell values to be expressions\n if (this.cellExpressions && (typeof result === 'string') && result.indexOf('=') === 0) {\n var cellValueGetter = result.substring(1);\n result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n }\n return result;\n };\n ValueService.prototype.setValue = function (rowNode, colKey, newValue) {\n var column = this.columnController.getPrimaryColumn(colKey);\n if (!rowNode || !column) {\n return;\n }\n // this will only happen if user is trying to paste into a group row, which doesn't make sense\n // the user should not be trying to paste into group rows\n var data = rowNode.data;\n if (utils_1._.missing(data)) {\n rowNode.data = {};\n }\n // for backwards compatibility we are also retrieving the newValueHandler as well as the valueSetter\n var _a = column.getColDef(), field = _a.field, newValueHandler = _a.newValueHandler, valueSetter = _a.valueSetter;\n // need either a field or a newValueHandler for this to work\n if (utils_1._.missing(field) && utils_1._.missing(newValueHandler) && utils_1._.missing(valueSetter)) {\n // we don't tell user about newValueHandler, as that is deprecated\n console.warn(\"ag-Grid: you need either field or valueSetter set on colDef for editing to work\");\n return;\n }\n var params = {\n node: rowNode,\n data: rowNode.data,\n oldValue: this.getValue(column, rowNode),\n newValue: newValue,\n colDef: column.getColDef(),\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n params.newValue = newValue;\n var valueWasDifferent;\n if (utils_1._.exists(newValueHandler)) {\n valueWasDifferent = newValueHandler(params);\n }\n else if (utils_1._.exists(valueSetter)) {\n valueWasDifferent = this.expressionService.evaluate(valueSetter, params);\n }\n else {\n valueWasDifferent = this.setValueUsingField(data, field, newValue, column.isFieldContainsDots());\n }\n // in case user forgot to return something (possible if they are not using TypeScript\n // and just forgot, or using an old newValueHandler we didn't always expect a return\n // value here), we default the return value to true, so we always refresh.\n if (valueWasDifferent === undefined) {\n valueWasDifferent = true;\n }\n // if no change to the value, then no need to do the updating, or notifying via events.\n // otherwise the user could be tabbing around the grid, and cellValueChange would get called\n // all the time.\n if (!valueWasDifferent) {\n return;\n }\n // reset quick filter on this row\n rowNode.resetQuickFilterAggregateText();\n this.valueCache.onDataChanged();\n params.newValue = this.getValue(column, rowNode);\n if (typeof column.getColDef().onCellValueChanged === 'function') {\n // to make callback async, do in a timeout\n setTimeout(function () { return column.getColDef().onCellValueChanged(params); }, 0);\n }\n var event = {\n type: events_1.Events.EVENT_CELL_VALUE_CHANGED,\n event: null,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n column: params.column,\n api: params.api,\n colDef: params.colDef,\n columnApi: params.columnApi,\n context: params.context,\n data: rowNode.data,\n node: rowNode,\n oldValue: params.oldValue,\n newValue: params.newValue,\n value: params.newValue\n };\n this.eventService.dispatchEvent(event);\n };\n ValueService.prototype.setValueUsingField = function (data, field, newValue, isFieldContainsDots) {\n // if no '.', then it's not a deep value\n var valuesAreSame;\n if (!isFieldContainsDots) {\n data[field] = newValue;\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n var fieldPieces = field.split('.');\n var currentObject = data;\n while (fieldPieces.length > 0 && currentObject) {\n var fieldPiece = fieldPieces.shift();\n if (fieldPieces.length === 0) {\n currentObject[fieldPiece] = newValue;\n }\n else {\n currentObject = currentObject[fieldPiece];\n }\n }\n }\n return !valuesAreSame;\n };\n ValueService.prototype.executeValueGetter = function (filterValueGetter, data, column, rowNode) {\n var colId = column.getId();\n // if inside the same turn, just return back the value we got last time\n var valueFromCache = this.valueCache.getValue(rowNode, colId);\n if (valueFromCache !== undefined) {\n return valueFromCache;\n }\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n var result = this.expressionService.evaluate(filterValueGetter, params);\n // if a turn is active, store the value in case the grid asks for it again\n this.valueCache.setValue(rowNode, colId, result);\n return result;\n };\n ValueService.prototype.getValueCallback = function (node, field) {\n var otherColumn = this.columnController.getPrimaryColumn(field);\n if (otherColumn) {\n return this.getValue(otherColumn, node);\n }\n else {\n return null;\n }\n };\n // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col\n ValueService.prototype.getKeyForNode = function (col, rowNode) {\n var value = this.getValue(col, rowNode);\n var result;\n var keyCreator = col.getColDef().keyCreator;\n if (keyCreator) {\n result = keyCreator({ value: value });\n }\n else {\n result = value;\n }\n // if already a string, or missing, just return it\n if (typeof result === 'string' || result === null || result === undefined) {\n return result;\n }\n result = String(result);\n if (result === '[object Object]') {\n utils_1._.doOnce(function () {\n console.warn('ag-Grid: a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (se ag-Grid docs) or b) to toString() on the object to return a key');\n }, 'getKeyForNode - warn about [object,object]');\n }\n return result;\n };\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], ValueService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('expressionService'),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], ValueService.prototype, \"expressionService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], ValueService.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], ValueService.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('valueCache'),\n __metadata(\"design:type\", valueCache_1.ValueCache)\n ], ValueService.prototype, \"valueCache\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ValueService.prototype, \"init\", null);\n ValueService = __decorate([\n context_1.Bean('valueService')\n ], ValueService);\n return ValueService;\n}());\nexports.ValueService = ValueService;\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","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v18.1.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar selectionController_1 = require(\"../selectionController\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar context_1 = require(\"../context/context\");\nvar constants_1 = require(\"../constants\");\nvar utils_1 = require(\"../utils\");\nvar valueCache_1 = require(\"../valueService/valueCache\");\nvar gridApi_1 = require(\"../gridApi\");\nvar RowNode = (function () {\n function RowNode() {\n /** Children mapped by the pivot columns */\n this.childrenMapped = {};\n /** True by default - can be overridden via gridOptions.isRowSelectable(rowNode) */\n this.selectable = true;\n this.selected = false;\n }\n RowNode.prototype.setData = function (data) {\n var oldData = this.data;\n this.data = data;\n this.valueCache.onDataChanged();\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n // when we are doing master / detail, the detail node is lazy created, but then kept around.\n // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data\n // in sync, otherwise expand/collapse of the detail would still show the old values.\n RowNode.prototype.updateDataOnDetailNode = function () {\n if (this.detailNode) {\n this.detailNode.data = this.data;\n }\n };\n RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {\n return {\n type: RowNode.EVENT_DATA_CHANGED,\n node: this,\n oldData: oldData,\n newData: newData,\n update: update\n };\n };\n RowNode.prototype.createLocalRowEvent = function (type) {\n return {\n type: type,\n node: this\n };\n };\n // similar to setRowData, however it is expected that the data is the same data item. this\n // is intended to be used with Redux type stores, where the whole data can be changed. we are\n // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n RowNode.prototype.updateData = function (data) {\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n this.updateDataOnDetailNode();\n var event = this.createDataChangedEvent(data, oldData, true);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.getRowIndexString = function () {\n if (this.rowPinned === constants_1.Constants.PINNED_TOP) {\n return 't-' + this.rowIndex;\n }\n else if (this.rowPinned === constants_1.Constants.PINNED_BOTTOM) {\n return 'b-' + this.rowIndex;\n }\n else {\n return this.rowIndex.toString();\n }\n };\n RowNode.prototype.createDaemonNode = function () {\n var oldNode = new RowNode();\n this.context.wireBean(oldNode);\n // just copy the id and data, this is enough for the node to be used\n // in the selection controller (the selection controller is the only\n // place where daemon nodes can live).\n oldNode.id = this.id;\n oldNode.data = this.data;\n oldNode.daemon = true;\n oldNode.selected = this.selected;\n oldNode.level = this.level;\n return oldNode;\n };\n RowNode.prototype.setDataAndId = function (data, id) {\n var oldNode = utils_1.Utils.exists(this.id) ? this.createDaemonNode() : null;\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.setId(id);\n this.selectionController.syncInRowNode(this, oldNode);\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.checkRowSelectable = function () {\n var isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n var shouldInvokeIsRowSelectable = isRowSelectableFunc && utils_1.Utils.exists(this);\n this.setRowSelectable(shouldInvokeIsRowSelectable ? isRowSelectableFunc(this) : true);\n };\n RowNode.prototype.setRowSelectable = function (newVal) {\n if (this.selectable !== newVal) {\n this.selectable = newVal;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_SELECTABLE_CHANGED));\n }\n }\n };\n RowNode.prototype.setId = function (id) {\n // see if user is providing the id's\n var getRowNodeId = this.gridOptionsWrapper.getRowNodeIdFunc();\n if (getRowNodeId) {\n // if user is providing the id's, then we set the id only after the data has been set.\n // this is important for virtual pagination and viewport, where empty rows exist.\n if (this.data) {\n this.id = getRowNodeId(this.data);\n }\n else {\n // this can happen if user has set blank into the rowNode after the row previously\n // having data. this happens in virtual page row model, when data is delete and\n // the page is refreshed.\n this.id = undefined;\n }\n }\n else {\n this.id = id;\n }\n };\n RowNode.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);\n };\n RowNode.prototype.clearRowTop = function () {\n this.oldRowTop = this.rowTop;\n this.setRowTop(null);\n };\n RowNode.prototype.setFirstChild = function (firstChild) {\n if (this.firstChild === firstChild) {\n return;\n }\n this.firstChild = firstChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setLastChild = function (lastChild) {\n if (this.lastChild === lastChild) {\n return;\n }\n this.lastChild = lastChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setChildIndex = function (childIndex) {\n if (this.childIndex === childIndex) {\n return;\n }\n this.childIndex = childIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setRowTop = function (rowTop) {\n if (this.rowTop === rowTop) {\n return;\n }\n this.rowTop = rowTop;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));\n }\n };\n RowNode.prototype.setDragging = function (dragging) {\n if (this.dragging === dragging) {\n return;\n }\n this.dragging = dragging;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DRAGGING_CHANGED));\n }\n };\n RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {\n if (this.allChildrenCount === allChildrenCount) {\n return;\n }\n this.allChildrenCount = allChildrenCount;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));\n }\n };\n RowNode.prototype.setRowHeight = function (rowHeight) {\n this.rowHeight = rowHeight;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));\n }\n };\n RowNode.prototype.setRowIndex = function (rowIndex) {\n this.rowIndex = rowIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setUiLevel = function (uiLevel) {\n if (this.uiLevel === uiLevel) {\n return;\n }\n this.uiLevel = uiLevel;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));\n }\n };\n RowNode.prototype.setExpanded = function (expanded) {\n if (this.expanded === expanded) {\n return;\n }\n this.expanded = expanded;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));\n }\n var event = this.createGlobalRowEvent(events_1.Events.EVENT_ROW_GROUP_OPENED);\n this.mainEventService.dispatchEvent(event);\n if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.gridApi.redrawRows({ rowNodes: [this] });\n }\n };\n RowNode.prototype.createGlobalRowEvent = function (type) {\n var event = {\n type: type,\n node: this,\n data: this.data,\n rowIndex: this.rowIndex,\n rowPinned: this.rowPinned,\n context: this.gridOptionsWrapper.getContext(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n return event;\n };\n RowNode.prototype.dispatchLocalEvent = function (event) {\n if (this.eventService) {\n this.eventService.dispatchEvent(event);\n }\n };\n // we also allow editing the value via the editors. when it is done via\n // the editors, no 'cell changed' event gets fired, as it's assumed that\n // the cell knows about the change given it's in charge of the editing.\n // this method is for the client to call, so the cell listens for the change\n // event, and also flashes the cell when the change occurs.\n RowNode.prototype.setDataValue = function (colKey, newValue) {\n var column = this.columnController.getPrimaryColumn(colKey);\n this.valueService.setValue(this, column, newValue);\n this.dispatchCellChangedEvent(column, newValue);\n };\n RowNode.prototype.setGroupValue = function (colKey, newValue) {\n var column = this.columnController.getGridColumn(colKey);\n if (utils_1.Utils.missing(this.groupData)) {\n this.groupData = {};\n }\n this.groupData[column.getColId()] = newValue;\n this.dispatchCellChangedEvent(column, newValue);\n };\n // sets the data for an aggregation\n RowNode.prototype.setAggData = function (newAggData) {\n var _this = this;\n // find out all keys that could potentially change\n var colIds = utils_1.Utils.getAllKeysInObjects([this.aggData, newAggData]);\n this.aggData = newAggData;\n // if no event service, nobody has registered for events, so no need fire event\n if (this.eventService) {\n colIds.forEach(function (colId) {\n var column = _this.columnController.getGridColumn(colId);\n var value = _this.aggData ? _this.aggData[colId] : undefined;\n _this.dispatchCellChangedEvent(column, value);\n });\n }\n };\n RowNode.prototype.hasChildren = function () {\n // we need to return true when this.group=true, as this is used by server side row model\n // (as children are lazy loaded and stored in a cache anyway). otherwise we return true\n // if children exist.\n return this.group || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);\n };\n RowNode.prototype.isEmptyFillerNode = function () {\n return this.group && utils_1.Utils.missingOrEmpty(this.childrenAfterGroup);\n };\n RowNode.prototype.dispatchCellChangedEvent = function (column, newValue) {\n var cellChangedEvent = {\n type: RowNode.EVENT_CELL_CHANGED,\n node: this,\n column: column,\n newValue: newValue\n };\n this.dispatchLocalEvent(cellChangedEvent);\n };\n RowNode.prototype.resetQuickFilterAggregateText = function () {\n this.quickFilterAggregateText = null;\n };\n RowNode.prototype.isExpandable = function () {\n return this.hasChildren() || this.master;\n };\n RowNode.prototype.isSelected = function () {\n // for footers, we just return what our sibling selected state is, as cannot select a footer\n if (this.footer) {\n return this.sibling.isSelected();\n }\n return this.selected;\n };\n RowNode.prototype.depthFirstSearch = function (callback) {\n if (this.childrenAfterGroup) {\n this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });\n }\n callback(this);\n };\n // + rowController.updateGroupsInSelection()\n // + selectionController.calculatedSelectedForAllGroupNodes()\n RowNode.prototype.calculateSelectedFromChildren = function () {\n var atLeastOneSelected = false;\n var atLeastOneDeSelected = false;\n var atLeastOneMixed = false;\n var newSelectedValue;\n if (this.childrenAfterGroup) {\n for (var i = 0; i < this.childrenAfterGroup.length; i++) {\n var child = this.childrenAfterGroup[i];\n // skip non-selectable nodes to prevent inconsistent selection values\n if (!child.selectable)\n continue;\n var childState = child.isSelected();\n switch (childState) {\n case true:\n atLeastOneSelected = true;\n break;\n case false:\n atLeastOneDeSelected = true;\n break;\n default:\n atLeastOneMixed = true;\n break;\n }\n }\n }\n if (atLeastOneMixed) {\n newSelectedValue = undefined;\n }\n else if (atLeastOneSelected && !atLeastOneDeSelected) {\n newSelectedValue = true;\n }\n else if (!atLeastOneSelected && atLeastOneDeSelected) {\n newSelectedValue = false;\n }\n else {\n newSelectedValue = undefined;\n }\n this.selectThisNode(newSelectedValue);\n };\n RowNode.prototype.setSelectedInitialValue = function (selected) {\n this.selected = selected;\n };\n RowNode.prototype.setSelected = function (newValue, clearSelection, suppressFinishActions) {\n if (clearSelection === void 0) { clearSelection = false; }\n if (suppressFinishActions === void 0) { suppressFinishActions = false; }\n this.setSelectedParams({\n newValue: newValue,\n clearSelection: clearSelection,\n suppressFinishActions: suppressFinishActions,\n rangeSelect: false\n });\n };\n RowNode.prototype.isRowPinned = function () {\n return this.rowPinned === constants_1.Constants.PINNED_TOP || this.rowPinned === constants_1.Constants.PINNED_BOTTOM;\n };\n // to make calling code more readable, this is the same method as setSelected except it takes names parameters\n RowNode.prototype.setSelectedParams = function (params) {\n var groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n var newValue = params.newValue === true;\n var clearSelection = params.clearSelection === true;\n var suppressFinishActions = params.suppressFinishActions === true;\n var rangeSelect = params.rangeSelect === true;\n // groupSelectsFiltered only makes sense when group selects children\n var groupSelectsFiltered = groupSelectsChildren && (params.groupSelectsFiltered === true);\n if (this.id === undefined) {\n console.warn('ag-Grid: cannot select node until id for node is known');\n return 0;\n }\n if (this.rowPinned) {\n console.log('ag-Grid: cannot select pinned rows');\n return 0;\n }\n // if we are a footer, we don't do selection, just pass the info\n // to the sibling (the parent of the group)\n if (this.footer) {\n var count = this.sibling.setSelectedParams(params);\n return count;\n }\n if (rangeSelect) {\n var newRowClicked = this.selectionController.getLastSelectedNode() !== this;\n var allowMultiSelect = this.gridOptionsWrapper.isRowSelectionMulti();\n if (newRowClicked && allowMultiSelect) {\n return this.doRowRangeSelection();\n }\n }\n var updatedCount = 0;\n // when groupSelectsFiltered, then this node may end up intermediate despite\n // trying to set it to true / false. this group will be calculated further on\n // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it\n // here, otherwise the updatedCount would include it.\n var skipThisNode = groupSelectsFiltered && this.group;\n if (!skipThisNode) {\n var thisNodeWasSelected = this.selectThisNode(newValue);\n if (thisNodeWasSelected) {\n updatedCount++;\n }\n }\n if (groupSelectsChildren && this.group) {\n updatedCount += this.selectChildNodes(newValue, groupSelectsFiltered);\n }\n // clear other nodes if not doing multi select\n if (!suppressFinishActions) {\n var clearOtherNodes = newValue && (clearSelection || !this.gridOptionsWrapper.isRowSelectionMulti());\n if (clearOtherNodes) {\n updatedCount += this.selectionController.clearOtherNodes(this);\n }\n // only if we selected something, then update groups and fire events\n if (updatedCount > 0) {\n this.selectionController.updateGroupsFromChildrenSelections();\n // this is the very end of the 'action node', so we are finished all the updates,\n // include any parent / child changes that this method caused\n var event_1 = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.mainEventService.dispatchEvent(event_1);\n }\n // so if user next does shift-select, we know where to start the selection from\n if (newValue) {\n this.selectionController.setLastSelectedNode(this);\n }\n }\n return updatedCount;\n };\n // selects all rows between this node and the last selected node (or the top if this is the first selection).\n // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n // holding down 'shift'.\n RowNode.prototype.doRowRangeSelection = function () {\n var updatedCount = 0;\n var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n var lastSelectedNode = this.selectionController.getLastSelectedNode();\n var nodesToSelect = this.rowModel.getNodesInRangeForSelection(this, lastSelectedNode);\n nodesToSelect.forEach(function (rowNode) {\n if (rowNode.group && groupsSelectChildren) {\n return;\n }\n var nodeWasSelected = rowNode.selectThisNode(true);\n if (nodeWasSelected) {\n updatedCount++;\n }\n });\n this.selectionController.updateGroupsFromChildrenSelections();\n var event = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.mainEventService.dispatchEvent(event);\n return updatedCount;\n };\n RowNode.prototype.isParentOfNode = function (potentialParent) {\n var parentNode = this.parent;\n while (parentNode) {\n if (parentNode === potentialParent) {\n return true;\n }\n parentNode = parentNode.parent;\n }\n return false;\n };\n RowNode.prototype.selectThisNode = function (newValue) {\n if (!this.selectable || this.selected === newValue)\n return false;\n this.selected = newValue;\n if (this.eventService) {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));\n }\n var event = this.createGlobalRowEvent(events_1.Events.EVENT_ROW_SELECTED);\n this.mainEventService.dispatchEvent(event);\n return true;\n };\n RowNode.prototype.selectChildNodes = function (newValue, groupSelectsFiltered) {\n var children = groupSelectsFiltered ? this.childrenAfterFilter : this.childrenAfterGroup;\n var updatedCount = 0;\n if (utils_1.Utils.missing(children)) {\n return;\n }\n for (var i = 0; i < children.length; i++) {\n updatedCount += children[i].setSelectedParams({\n newValue: newValue,\n clearSelection: false,\n suppressFinishActions: true,\n groupSelectsFiltered: groupSelectsFiltered\n });\n }\n return updatedCount;\n };\n RowNode.prototype.addEventListener = function (eventType, listener) {\n if (!this.eventService) {\n this.eventService = new eventService_1.EventService();\n }\n this.eventService.addEventListener(eventType, listener);\n };\n RowNode.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n RowNode.prototype.onMouseEnter = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));\n };\n RowNode.prototype.onMouseLeave = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));\n };\n RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {\n var currentRowNode = this;\n // if we are hiding groups, then if we are the first child, of the first child,\n // all the way up to the column we are interested in, then we show the group cell.\n var isCandidate = true;\n var foundFirstChildPath = false;\n var nodeToSwapIn;\n while (isCandidate && !foundFirstChildPath) {\n var parentRowNode = currentRowNode.parent;\n var firstChild = utils_1.Utils.exists(parentRowNode) && currentRowNode.firstChild;\n if (firstChild) {\n if (parentRowNode.rowGroupColumn === rowGroupColumn) {\n foundFirstChildPath = true;\n nodeToSwapIn = parentRowNode;\n }\n }\n else {\n isCandidate = false;\n }\n currentRowNode = parentRowNode;\n }\n return foundFirstChildPath ? nodeToSwapIn : null;\n };\n RowNode.EVENT_ROW_SELECTED = 'rowSelected';\n RowNode.EVENT_DATA_CHANGED = 'dataChanged';\n RowNode.EVENT_CELL_CHANGED = 'cellChanged';\n RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';\n RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';\n RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';\n RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';\n RowNode.EVENT_TOP_CHANGED = 'topChanged';\n RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';\n RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';\n RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';\n RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';\n RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n RowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';\n RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';\n RowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], RowNode.prototype, \"mainEventService\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], RowNode.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('selectionController'),\n __metadata(\"design:type\", selectionController_1.SelectionController)\n ], RowNode.prototype, \"selectionController\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], RowNode.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('valueService'),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], RowNode.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], RowNode.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], RowNode.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('valueCache'),\n __metadata(\"design:type\", valueCache_1.ValueCache)\n ], RowNode.prototype, \"valueCache\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], RowNode.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], RowNode.prototype, \"gridApi\", void 0);\n return RowNode;\n}());\nexports.RowNode = RowNode;\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","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","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","'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","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v18.1.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nvar context_1 = require(\"./context/context\");\nvar context_2 = require(\"./context/context\");\nvar logger_1 = require(\"./logger\");\nvar eventService_1 = require(\"./eventService\");\nvar events_1 = require(\"./events\");\nvar context_3 = require(\"./context/context\");\nvar gridOptionsWrapper_1 = require(\"./gridOptionsWrapper\");\nvar context_4 = require(\"./context/context\");\nvar constants_1 = require(\"./constants\");\nvar columnApi_1 = require(\"./columnController/columnApi\");\nvar gridApi_1 = require(\"./gridApi\");\nvar SelectionController = (function () {\n function SelectionController() {\n }\n SelectionController.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('SelectionController');\n this.reset();\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.eventService.addEventListener(events_1.Events.EVENT_ROW_DATA_CHANGED, this.reset.bind(this));\n }\n else {\n this.logger.log('dont know what to do here');\n }\n };\n SelectionController.prototype.init = function () {\n this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.eventService.addEventListener(events_1.Events.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n };\n SelectionController.prototype.setLastSelectedNode = function (rowNode) {\n this.lastSelectedNode = rowNode;\n };\n SelectionController.prototype.getLastSelectedNode = function () {\n return this.lastSelectedNode;\n };\n SelectionController.prototype.getSelectedNodes = function () {\n var selectedNodes = [];\n utils_1.Utils.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode) {\n selectedNodes.push(rowNode);\n }\n });\n return selectedNodes;\n };\n SelectionController.prototype.getSelectedRows = function () {\n var selectedRows = [];\n utils_1.Utils.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.data) {\n selectedRows.push(rowNode.data);\n }\n });\n return selectedRows;\n };\n SelectionController.prototype.removeGroupsFromSelection = function () {\n var _this = this;\n utils_1.Utils.iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.group) {\n _this.selectedNodes[rowNode.id] = undefined;\n }\n });\n };\n // should only be called if groupSelectsChildren=true\n SelectionController.prototype.updateGroupsFromChildrenSelections = function () {\n // we only do this when group selection state depends on selected children\n if (!this.gridOptionsWrapper.isGroupSelectsChildren()) {\n return;\n }\n // also only do it if CSRM (code should never allow this anyway)\n if (this.rowModel.getType() !== constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n return;\n }\n var clientSideRowModel = this.rowModel;\n clientSideRowModel.getTopLevelNodes().forEach(function (rowNode) {\n rowNode.depthFirstSearch(function (rowNode) {\n if (rowNode.group) {\n rowNode.calculateSelectedFromChildren();\n }\n });\n });\n };\n SelectionController.prototype.getNodeForIdIfSelected = function (id) {\n return this.selectedNodes[id];\n };\n SelectionController.prototype.clearOtherNodes = function (rowNodeToKeepSelected) {\n var _this = this;\n var groupsToRefresh = {};\n var updatedCount = 0;\n utils_1.Utils.iterateObject(this.selectedNodes, function (key, otherRowNode) {\n if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {\n var rowNode = _this.selectedNodes[otherRowNode.id];\n updatedCount += rowNode.setSelectedParams({ newValue: false, clearSelection: false, suppressFinishActions: true });\n if (_this.groupSelectsChildren && otherRowNode.parent) {\n groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;\n }\n }\n });\n utils_1.Utils.iterateObject(groupsToRefresh, function (key, group) {\n group.calculateSelectedFromChildren();\n });\n return updatedCount;\n };\n SelectionController.prototype.onRowSelected = function (event) {\n var rowNode = event.node;\n // we do not store the group rows when the groups select children\n if (this.groupSelectsChildren && rowNode.group) {\n return;\n }\n if (rowNode.isSelected()) {\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n this.selectedNodes[rowNode.id] = undefined;\n }\n };\n SelectionController.prototype.syncInRowNode = function (rowNode, oldNode) {\n this.syncInOldRowNode(rowNode, oldNode);\n this.syncInNewRowNode(rowNode);\n };\n // if the id has changed for the node, then this means the rowNode\n // is getting used for a different data item, which breaks\n // our selectedNodes, as the node now is mapped by the old id\n // which is inconsistent. so to keep the old node as selected,\n // we swap in the clone (with the old id and old data). this means\n // the oldNode is effectively a daemon we keep a reference to,\n // so if client calls api.getSelectedNodes(), it gets the daemon\n // in the result. when the client un-selects, the reference to the\n // daemon is removed. the daemon, because it's an oldNode, is not\n // used by the grid for rendering, it's a copy of what the node used\n // to be like before the id was changed.\n SelectionController.prototype.syncInOldRowNode = function (rowNode, oldNode) {\n var oldNodeHasDifferentId = utils_1.Utils.exists(oldNode) && (rowNode.id !== oldNode.id);\n if (oldNodeHasDifferentId) {\n var oldNodeSelected = utils_1.Utils.exists(this.selectedNodes[oldNode.id]);\n if (oldNodeSelected) {\n this.selectedNodes[oldNode.id] = oldNode;\n }\n }\n };\n SelectionController.prototype.syncInNewRowNode = function (rowNode) {\n if (utils_1.Utils.exists(this.selectedNodes[rowNode.id])) {\n rowNode.setSelectedInitialValue(true);\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n rowNode.setSelectedInitialValue(false);\n }\n };\n SelectionController.prototype.reset = function () {\n this.logger.log('reset');\n this.selectedNodes = {};\n this.lastSelectedNode = null;\n };\n // returns a list of all nodes at 'best cost' - a feature to be used\n // with groups / trees. if a group has all it's children selected,\n // then the group appears in the result, but not the children.\n // Designed for use with 'children' as the group selection type,\n // where groups don't actually appear in the selection normally.\n SelectionController.prototype.getBestCostNodeSelection = function () {\n if (this.rowModel.getType() !== constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n console.warn('getBestCostNodeSelection is only avilable when using normal row model');\n }\n var clientSideRowModel = this.rowModel;\n var topLevelNodes = clientSideRowModel.getTopLevelNodes();\n if (topLevelNodes === null) {\n console.warn('selectAll not available doing rowModel=virtual');\n return;\n }\n var result = [];\n // recursive function, to find the selected nodes\n function traverse(nodes) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n var node = nodes[i];\n if (node.isSelected()) {\n result.push(node);\n }\n else {\n // if not selected, then if it's a group, and the group\n // has children, continue to search for selections\n if (node.group && node.children) {\n traverse(node.children);\n }\n }\n }\n }\n traverse(topLevelNodes);\n return result;\n };\n SelectionController.prototype.setRowModel = function (rowModel) {\n this.rowModel = rowModel;\n };\n SelectionController.prototype.isEmpty = function () {\n var count = 0;\n utils_1.Utils.iterateObject(this.selectedNodes, function (nodeId, rowNode) {\n if (rowNode) {\n count++;\n }\n });\n return count === 0;\n };\n SelectionController.prototype.deselectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n var callback = function (rowNode) { return rowNode.selectThisNode(false); };\n var rowModelClientSide = this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (justFiltered) {\n if (!rowModelClientSide) {\n console.error('ag-Grid: selecting just filtered only works with In Memory Row Model');\n return;\n }\n var clientSideRowModel = this.rowModel;\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n utils_1.Utils.iterateObject(this.selectedNodes, function (id, rowNode) {\n // remember the reference can be to null, as we never 'delete' from the map\n if (rowNode) {\n callback(rowNode);\n }\n });\n // this clears down the map (whereas above only sets the items in map to 'undefined')\n this.reset();\n }\n // the above does not clean up the parent rows if they are selected\n if (rowModelClientSide && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n SelectionController.prototype.selectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n if (this.rowModel.getType() !== constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n throw \"selectAll only available with normal row model, ie not \" + this.rowModel.getType();\n }\n var clientSideRowModel = this.rowModel;\n var callback = function (rowNode) { return rowNode.selectThisNode(true); };\n if (justFiltered) {\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n clientSideRowModel.forEachNode(callback);\n }\n // the above does not clean up the parent rows if they are selected\n if (this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: events_1.Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n // Deprecated method\n SelectionController.prototype.selectNode = function (rowNode, tryMulti) {\n rowNode.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n };\n // Deprecated method\n SelectionController.prototype.deselectIndex = function (rowIndex) {\n var node = this.rowModel.getRow(rowIndex);\n this.deselectNode(node);\n };\n // Deprecated method\n SelectionController.prototype.deselectNode = function (rowNode) {\n rowNode.setSelectedParams({ newValue: false, clearSelection: false });\n };\n // Deprecated method\n SelectionController.prototype.selectIndex = function (index, tryMulti) {\n var node = this.rowModel.getRow(index);\n this.selectNode(node, tryMulti);\n };\n __decorate([\n context_3.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], SelectionController.prototype, \"eventService\", void 0);\n __decorate([\n context_3.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], SelectionController.prototype, \"rowModel\", void 0);\n __decorate([\n context_3.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], SelectionController.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_3.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], SelectionController.prototype, \"columnApi\", void 0);\n __decorate([\n context_3.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], SelectionController.prototype, \"gridApi\", void 0);\n __decorate([\n __param(0, context_2.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], SelectionController.prototype, \"setBeans\", null);\n __decorate([\n context_4.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], SelectionController.prototype, \"init\", null);\n SelectionController = __decorate([\n context_1.Bean('selectionController')\n ], SelectionController);\n return SelectionController;\n}());\nexports.SelectionController = SelectionController;\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';\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","// 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","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","// 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.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","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v18.1.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar popupService_1 = require(\"../widgets/popupService\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar context_1 = require(\"../context/context\");\nvar eventService_1 = require(\"../eventService\");\nvar events_1 = require(\"../events\");\nvar gridApi_1 = require(\"../gridApi\");\nvar componentResolver_1 = require(\"../components/framework/componentResolver\");\nvar FilterManager = (function () {\n function FilterManager() {\n this.allFilters = {};\n this.quickFilter = null;\n this.quickFilterParts = null;\n }\n FilterManager_1 = FilterManager;\n FilterManager.prototype.init = function () {\n this.eventService.addEventListener(events_1.Events.EVENT_ROW_DATA_CHANGED, this.onNewRowsLoaded.bind(this));\n this.eventService.addEventListener(events_1.Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n this.quickFilter = this.parseQuickFilter(this.gridOptionsWrapper.getQuickFilterText());\n this.setQuickFilterParts();\n // check this here, in case there is a filter from the start\n this.checkExternalFilter();\n };\n FilterManager.prototype.setQuickFilterParts = function () {\n if (this.quickFilter) {\n this.quickFilterParts = this.quickFilter.split(' ');\n }\n else {\n this.quickFilterParts = null;\n }\n };\n FilterManager.prototype.setFilterModel = function (model) {\n var _this = this;\n var allPromises = [];\n if (model) {\n // mark the filters as we set them, so any active filters left over we stop\n var modelKeys_1 = Object.keys(model);\n utils_1.Utils.iterateObject(this.allFilters, function (colId, filterWrapper) {\n utils_1.Utils.removeFromArray(modelKeys_1, colId);\n var newModel = model[colId];\n _this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel);\n allPromises.push(filterWrapper.filterPromise);\n });\n // at this point, processedFields contains data for which we don't have a filter working yet\n utils_1.Utils.iterateArray(modelKeys_1, function (colId) {\n var column = _this.columnController.getPrimaryColumn(colId);\n if (!column) {\n console.warn('Warning ag-grid setFilterModel - no column found for colId ' + colId);\n return;\n }\n var filterWrapper = _this.getOrCreateFilterWrapper(column);\n _this.setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]);\n allPromises.push(filterWrapper.filterPromise);\n });\n }\n else {\n utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n _this.setModelOnFilterWrapper(filterWrapper.filterPromise, null);\n allPromises.push(filterWrapper.filterPromise);\n });\n }\n utils_1.Promise.all(allPromises).then(function (whatever) {\n _this.onFilterChanged();\n });\n };\n FilterManager.prototype.setModelOnFilterWrapper = function (filterPromise, newModel) {\n filterPromise.then(function (filter) {\n if (typeof filter.setModel !== 'function') {\n console.warn('Warning ag-grid - filter missing setModel method, which is needed for setFilterModel');\n return;\n }\n filter.setModel(newModel);\n });\n };\n FilterManager.prototype.getFilterModel = function () {\n var result = {};\n utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n // because user can provide filters, we provide useful error checking and messages\n var filterPromise = filterWrapper.filterPromise;\n var filter = filterPromise.resolveNow(null, function (filter) { return filter; });\n if (filter == null) {\n return null;\n }\n if (typeof filter.getModel !== 'function') {\n console.warn('Warning ag-grid - filter API missing getModel method, which is needed for getFilterModel');\n return;\n }\n var model = filter.getModel();\n if (utils_1.Utils.exists(model)) {\n result[key] = model;\n }\n });\n return result;\n };\n // returns true if any advanced filter (ie not quick filter) active\n FilterManager.prototype.isAdvancedFilterPresent = function () {\n return this.advancedFilterPresent;\n };\n FilterManager.prototype.setAdvancedFilterPresent = function () {\n var atLeastOneActive = false;\n utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n if (filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); })) {\n atLeastOneActive = true;\n }\n });\n this.advancedFilterPresent = atLeastOneActive;\n };\n FilterManager.prototype.updateFilterFlagInColumns = function (source) {\n utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n var filterActive = filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n filterWrapper.column.setFilterActive(filterActive, source);\n });\n };\n // returns true if quickFilter or advancedFilter\n FilterManager.prototype.isAnyFilterPresent = function () {\n return this.isQuickFilterPresent() || this.advancedFilterPresent || this.externalFilterPresent;\n };\n FilterManager.prototype.doesFilterPass = function (node, filterToSkip) {\n var data = node.data;\n var colKeys = Object.keys(this.allFilters);\n for (var i = 0, l = colKeys.length; i < l; i++) {\n var colId = colKeys[i];\n var filterWrapper = this.allFilters[colId];\n // if no filter, always pass\n if (filterWrapper === undefined) {\n continue;\n }\n var filter = filterWrapper.filterPromise.resolveNow(undefined, function (filter) { return filter; });\n // if filter not yet there, continue\n if (filter === undefined) {\n continue;\n }\n if (filter === filterToSkip) {\n continue;\n }\n // don't bother with filters that are not active\n if (!filter.isFilterActive()) {\n continue;\n }\n if (!filter.doesFilterPass) {\n console.error('Filter is missing method doesFilterPass');\n }\n var params = {\n node: node,\n data: data\n };\n if (!filter.doesFilterPass(params)) {\n return false;\n }\n }\n // all filters passed\n return true;\n };\n FilterManager.prototype.parseQuickFilter = function (newFilter) {\n if (utils_1.Utils.missing(newFilter) || newFilter === \"\") {\n return null;\n }\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n console.warn('ag-grid: cannot do quick filtering when doing virtual paging');\n return null;\n }\n return newFilter.toUpperCase();\n };\n // returns true if it has changed (not just same value again)\n FilterManager.prototype.setQuickFilter = function (newFilter) {\n var parsedFilter = this.parseQuickFilter(newFilter);\n if (this.quickFilter !== parsedFilter) {\n this.quickFilter = parsedFilter;\n this.setQuickFilterParts();\n this.onFilterChanged();\n }\n };\n FilterManager.prototype.checkExternalFilter = function () {\n this.externalFilterPresent = this.gridOptionsWrapper.isExternalFilterPresent();\n };\n FilterManager.prototype.onFilterChanged = function () {\n this.setAdvancedFilterPresent();\n this.updateFilterFlagInColumns(\"filterChanged\");\n this.checkExternalFilter();\n utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.onAnyFilterChanged) {\n filter.onAnyFilterChanged();\n }\n });\n });\n var event = {\n type: events_1.Events.EVENT_FILTER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n FilterManager.prototype.isQuickFilterPresent = function () {\n return this.quickFilter !== null;\n };\n FilterManager.prototype.doesRowPassOtherFilters = function (filterToSkip, node) {\n return this.doesRowPassFilter(node, filterToSkip);\n };\n FilterManager.prototype.doesRowPassQuickFilterNoCache = function (node, filterPart) {\n var _this = this;\n var columns = this.columnController.getAllColumnsForQuickFilter();\n var filterPasses = false;\n columns.forEach(function (column) {\n if (filterPasses) {\n return;\n }\n var part = _this.getQuickFilterTextForColumn(column, node);\n if (utils_1.Utils.exists(part)) {\n if (part.indexOf(filterPart) >= 0) {\n filterPasses = true;\n }\n }\n });\n return filterPasses;\n };\n FilterManager.prototype.doesRowPassQuickFilterCache = function (node, filterPart) {\n if (!node.quickFilterAggregateText) {\n this.aggregateRowForQuickFilter(node);\n }\n var filterPasses = node.quickFilterAggregateText.indexOf(filterPart) >= 0;\n return filterPasses;\n };\n FilterManager.prototype.doesRowPassQuickFilter = function (node) {\n var _this = this;\n var filterPasses = true;\n var usingCache = this.gridOptionsWrapper.isCacheQuickFilter();\n this.quickFilterParts.forEach(function (filterPart) {\n var partPasses = usingCache ?\n _this.doesRowPassQuickFilterCache(node, filterPart) : _this.doesRowPassQuickFilterNoCache(node, filterPart);\n // each part must pass, if any fails, then the whole filter fails\n if (!partPasses) {\n filterPasses = false;\n }\n });\n return filterPasses;\n };\n FilterManager.prototype.doesRowPassFilter = function (node, filterToSkip) {\n // the row must pass ALL of the filters, so if any of them fail,\n // we return true. that means if a row passes the quick filter,\n // but fails the column filter, it fails overall\n // first up, check quick filter\n if (this.isQuickFilterPresent()) {\n if (!this.doesRowPassQuickFilter(node)) {\n return false;\n }\n }\n // secondly, give the client a chance to reject this row\n if (this.externalFilterPresent) {\n if (!this.gridOptionsWrapper.doesExternalFilterPass(node)) {\n return false;\n }\n }\n // lastly, check our internal advanced filter\n if (this.advancedFilterPresent) {\n if (!this.doesFilterPass(node, filterToSkip)) {\n return false;\n }\n }\n // got this far, all filters pass\n return true;\n };\n FilterManager.prototype.getQuickFilterTextForColumn = function (column, rowNode) {\n var value = this.valueService.getValue(column, rowNode, true);\n var valueAfterCallback;\n var colDef = column.getColDef();\n if (column.getColDef().getQuickFilterText) {\n var params = {\n value: value,\n node: rowNode,\n data: rowNode.data,\n column: column,\n colDef: colDef\n };\n valueAfterCallback = column.getColDef().getQuickFilterText(params);\n }\n else {\n valueAfterCallback = value;\n }\n if (valueAfterCallback && valueAfterCallback !== '') {\n return valueAfterCallback.toString().toUpperCase();\n }\n else {\n return null;\n }\n };\n FilterManager.prototype.aggregateRowForQuickFilter = function (node) {\n var _this = this;\n var stringParts = [];\n var columns = this.columnController.getAllColumnsForQuickFilter();\n columns.forEach(function (column) {\n var part = _this.getQuickFilterTextForColumn(column, node);\n if (utils_1.Utils.exists(part)) {\n stringParts.push(part);\n }\n });\n node.quickFilterAggregateText = stringParts.join(FilterManager_1.QUICK_FILTER_SEPARATOR);\n };\n FilterManager.prototype.onNewRowsLoaded = function (source) {\n utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.onNewRowsLoaded) {\n filter.onNewRowsLoaded();\n }\n });\n });\n this.updateFilterFlagInColumns(source);\n this.setAdvancedFilterPresent();\n };\n FilterManager.prototype.createValueGetter = function (column) {\n var _this = this;\n return function (node) {\n return _this.valueService.getValue(column, node, true);\n };\n };\n FilterManager.prototype.getFilterComponent = function (column) {\n var filterWrapper = this.getOrCreateFilterWrapper(column);\n return filterWrapper.filterPromise;\n };\n FilterManager.prototype.getOrCreateFilterWrapper = function (column) {\n var filterWrapper = this.cachedFilter(column);\n if (!filterWrapper) {\n filterWrapper = this.createFilterWrapper(column);\n this.allFilters[column.getColId()] = filterWrapper;\n }\n return filterWrapper;\n };\n FilterManager.prototype.cachedFilter = function (column) {\n return this.allFilters[column.getColId()];\n };\n FilterManager.prototype.createFilterInstance = function (column, $scope) {\n var _this = this;\n var defaultFilter = 'agTextColumnFilter';\n if (this.gridOptionsWrapper.isEnterprise()) {\n defaultFilter = 'agSetColumnFilter';\n }\n var sanitisedColDef = utils_1.Utils.cloneObject(column.getColDef());\n var event = {\n type: events_1.Events.EVENT_FILTER_MODIFIED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n var filterChangedCallback = this.onFilterChanged.bind(this);\n var filterModifiedCallback = function () { return _this.eventService.dispatchEvent(event); };\n var params = {\n column: column,\n colDef: sanitisedColDef,\n rowModel: this.rowModel,\n filterChangedCallback: filterChangedCallback,\n filterModifiedCallback: filterModifiedCallback,\n valueGetter: this.createValueGetter(column),\n context: this.gridOptionsWrapper.getContext(),\n doesRowPassOtherFilter: null,\n $scope: $scope\n };\n return this.componentResolver.createAgGridComponent(sanitisedColDef, params, 'filter', {\n api: this.gridApi,\n columnApi: this.columnApi,\n column: column,\n colDef: sanitisedColDef\n }, defaultFilter, true, function (params, filter) { return utils_1.Utils.assign(params, {\n doesRowPassOtherFilter: _this.doesRowPassOtherFilters.bind(_this, filter),\n }); });\n };\n FilterManager.prototype.createFilterWrapper = function (column) {\n var filterWrapper = {\n column: column,\n filterPromise: null,\n scope: null,\n compiledElement: null,\n guiPromise: utils_1.Promise.external()\n };\n filterWrapper.scope = this.gridOptionsWrapper.isAngularCompileFilters() ? this.$scope.$new() : null;\n filterWrapper.filterPromise = this.createFilterInstance(column, filterWrapper.scope);\n this.putIntoGui(filterWrapper);\n return filterWrapper;\n };\n FilterManager.prototype.putIntoGui = function (filterWrapper) {\n var _this = this;\n var eFilterGui = document.createElement('div');\n eFilterGui.className = 'ag-filter';\n filterWrapper.filterPromise.then(function (filter) {\n var guiFromFilter = filter.getGui();\n if (utils_1.Utils.missing(guiFromFilter)) {\n console.warn(\"getGui method from filter returned \" + guiFromFilter + \", it should be a DOM element or an HTML template string.\");\n }\n // for backwards compatibility with Angular 1 - we\n // used to allow providing back HTML from getGui().\n // once we move away from supporting Angular 1\n // directly, we can change this.\n if (typeof guiFromFilter === 'string') {\n guiFromFilter = utils_1.Utils.loadTemplate(guiFromFilter);\n }\n eFilterGui.appendChild(guiFromFilter);\n if (filterWrapper.scope) {\n var compiledElement = _this.$compile(eFilterGui)(filterWrapper.scope);\n filterWrapper.compiledElement = compiledElement;\n setTimeout(function () { return filterWrapper.scope.$apply(); }, 0);\n }\n filterWrapper.guiPromise.resolve(eFilterGui);\n });\n };\n FilterManager.prototype.onNewColumnsLoaded = function () {\n this.destroy();\n };\n // destroys the filter, so it not longer takes part\n FilterManager.prototype.destroyFilter = function (column, source) {\n if (source === void 0) { source = \"api\"; }\n var filterWrapper = this.allFilters[column.getColId()];\n if (filterWrapper) {\n this.disposeFilterWrapper(filterWrapper, source);\n this.onFilterChanged();\n }\n };\n FilterManager.prototype.disposeFilterWrapper = function (filterWrapper, source) {\n var _this = this;\n filterWrapper.filterPromise.then(function (filter) {\n filter.setModel(null);\n if (filter.destroy) {\n filter.destroy();\n }\n filterWrapper.column.setFilterActive(false, source);\n if (filterWrapper.scope) {\n if (filterWrapper.compiledElement) {\n filterWrapper.compiledElement.remove();\n }\n filterWrapper.scope.$destroy();\n }\n delete _this.allFilters[filterWrapper.column.getColId()];\n });\n };\n FilterManager.prototype.destroy = function () {\n var _this = this;\n utils_1.Utils.iterateObject(this.allFilters, function (key, filterWrapper) {\n _this.disposeFilterWrapper(filterWrapper, \"filterDestroyed\");\n });\n };\n FilterManager.QUICK_FILTER_SEPARATOR = '\\n';\n __decorate([\n context_1.Autowired('$compile'),\n __metadata(\"design:type\", Object)\n ], FilterManager.prototype, \"$compile\", void 0);\n __decorate([\n context_1.Autowired('$scope'),\n __metadata(\"design:type\", Object)\n ], FilterManager.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], FilterManager.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired('gridCore'),\n __metadata(\"design:type\", Object)\n ], FilterManager.prototype, \"gridCore\", void 0);\n __decorate([\n context_1.Autowired('popupService'),\n __metadata(\"design:type\", popupService_1.PopupService)\n ], FilterManager.prototype, \"popupService\", void 0);\n __decorate([\n context_1.Autowired('valueService'),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], FilterManager.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired('columnController'),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], FilterManager.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired('rowModel'),\n __metadata(\"design:type\", Object)\n ], FilterManager.prototype, \"rowModel\", void 0);\n __decorate([\n context_1.Autowired('eventService'),\n __metadata(\"design:type\", eventService_1.EventService)\n ], FilterManager.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired('enterprise'),\n __metadata(\"design:type\", Boolean)\n ], FilterManager.prototype, \"enterprise\", void 0);\n __decorate([\n context_1.Autowired('context'),\n __metadata(\"design:type\", context_1.Context)\n ], FilterManager.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired('columnApi'),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], FilterManager.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired('gridApi'),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], FilterManager.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired('componentResolver'),\n __metadata(\"design:type\", componentResolver_1.ComponentResolver)\n ], FilterManager.prototype, \"componentResolver\", void 0);\n __decorate([\n context_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], FilterManager.prototype, \"init\", null);\n __decorate([\n context_1.PreDestroy,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], FilterManager.prototype, \"destroy\", null);\n FilterManager = FilterManager_1 = __decorate([\n context_1.Bean('filterManager')\n ], FilterManager);\n return FilterManager;\n var FilterManager_1;\n}());\nexports.FilterManager = FilterManager;\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","'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';\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","'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","'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","// 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","'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","// 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';\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","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","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","'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","// 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 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 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';\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","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\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 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","'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","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","'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 $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';\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 $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","'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 $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","// 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';\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","'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","// 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","// 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';\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';\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","require('./_set-species')('Array');\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';\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';\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","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\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';\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","'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';\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')('Int8', 1, function (init) {\n return function Int8Array(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","// 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","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')('Uint16', 2, function (init) {\n return function Uint16Array(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')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\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","// 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';\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","'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.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.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.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.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","// 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","export const HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport const defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: (err) => typeof console !== \"undefined\" && console.warn(err),\n getWeek: (givenDate) => {\n const date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\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","'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/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://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/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/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","'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","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\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","// 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","// 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","'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","'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/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://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","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v18.1.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar logger_1 = require(\"../logger\");\nvar context_1 = require(\"../context/context\");\nvar context_2 = require(\"../context/context\");\nvar ExpressionService = (function () {\n function ExpressionService() {\n this.expressionToFunctionCache = {};\n }\n ExpressionService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ExpressionService');\n };\n ExpressionService.prototype.evaluate = function (expressionOrFunc, params) {\n if (typeof expressionOrFunc === 'function') {\n // valueGetter is a function, so just call it\n var func = expressionOrFunc;\n return func(params);\n }\n else if (typeof expressionOrFunc === 'string') {\n // valueGetter is an expression, so execute the expression\n var expression = expressionOrFunc;\n return this.evaluateExpression(expression, params);\n }\n else {\n console.error('ag-Grid: value should be either a string or a function', expressionOrFunc);\n }\n };\n ExpressionService.prototype.evaluateExpression = function (expression, params) {\n try {\n var javaScriptFunction = this.createExpressionFunction(expression);\n // the params don't have all these values, rather we add every possible\n // value a params can have, which makes whatever is in the params available.\n var result = javaScriptFunction(params.value, params.context, params.oldValue, params.newValue, params.value, params.node, params.data, params.colDef, params.rowIndex, params.api, params.columnApi, params.getValue, params.column, params.columnGroup);\n return result;\n }\n catch (e) {\n // the expression failed, which can happen, as it's the client that\n // provides the expression. so print a nice message\n console.log('Processing of the expression failed');\n console.log('Expression = ' + expression);\n console.log('Exception = ' + e);\n return null;\n }\n };\n ExpressionService.prototype.createExpressionFunction = function (expression) {\n // check cache first\n if (this.expressionToFunctionCache[expression]) {\n return this.expressionToFunctionCache[expression];\n }\n // if not found in cache, return the function\n var functionBody = this.createFunctionBody(expression);\n var theFunction = new Function('x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup', functionBody);\n // store in cache\n this.expressionToFunctionCache[expression] = theFunction;\n return theFunction;\n };\n ExpressionService.prototype.createFunctionBody = function (expression) {\n // if the expression has the 'return' word in it, then use as is,\n // if not, then wrap it with return and ';' to make a function\n if (expression.indexOf('return') >= 0) {\n return expression;\n }\n else {\n return 'return ' + expression + ';';\n }\n };\n __decorate([\n __param(0, context_2.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], ExpressionService.prototype, \"setBeans\", null);\n ExpressionService = __decorate([\n context_1.Bean('expressionService')\n ], ExpressionService);\n return ExpressionService;\n}());\nexports.ExpressionService = ExpressionService;\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\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.of\nrequire('./_set-collection-of')('WeakSet');\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-set.from\nrequire('./_set-collection-from')('Set');\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-weakset.from\nrequire('./_set-collection-from')('WeakSet');\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.S, 'System', { global: require('./_global') });\n","/**\n * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components\n * @version v18.1.2\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar gridOptionsWrapper_1 = require(\"../gridOptionsWrapper\");\nvar expressionService_1 = require(\"../valueService/expressionService\");\nvar templateService_1 = require(\"../templateService\");\nvar valueService_1 = require(\"../valueService/valueService\");\nvar eventService_1 = require(\"../eventService\");\nvar rowComp_1 = require(\"./rowComp\");\nvar events_1 = require(\"../events\");\nvar constants_1 = require(\"../constants\");\nvar cellComp_1 = require(\"./cellComp\");\nvar context_1 = require(\"../context/context\");\nvar gridCore_1 = require(\"../gridCore\");\nvar columnApi_1 = require(\"../columnController/columnApi\");\nvar columnController_1 = require(\"../columnController/columnController\");\nvar logger_1 = require(\"../logger\");\nvar focusedCellController_1 = require(\"../focusedCellController\");\nvar cellNavigationService_1 = require(\"../cellNavigationService\");\nvar gridCell_1 = require(\"../entities/gridCell\");\nvar beanStub_1 = require(\"../context/beanStub\");\nvar paginationProxy_1 = require(\"../rowModels/paginationProxy\");\nvar gridApi_1 = require(\"../gridApi\");\nvar pinnedRowModel_1 = require(\"../rowModels/pinnedRowModel\");\nvar beans_1 = require(\"./beans\");\nvar animationFrameService_1 = require(\"../misc/animationFrameService\");\nvar heightScaler_1 = require(\"./heightScaler\");\nvar RowRenderer = (function (_super) {\n __extends(RowRenderer, _super);\n function RowRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // map of row ids to row objects. keeps track of which elements\n // are rendered for which rows in the dom.\n _this.rowCompsByIndex = {};\n _this.floatingTopRowComps = [];\n _this.floatingBottomRowComps = [];\n // we only allow one refresh at a time, otherwise the internal memory structure here\n // will get messed up. this can happen if the user has a cellRenderer, and inside the\n // renderer they call an API method that results in another pass of the refresh,\n // then it will be trying to draw rows in the middle of a refresh.\n _this.refreshInProgress = false;\n return _this;\n }\n RowRenderer.prototype.agWire = function (loggerFactory) {\n this.logger = loggerFactory.create(\"RowRenderer\");\n };\n RowRenderer.prototype.registerGridComp = function (gridPanel) {\n this.gridPanel = gridPanel;\n this.rowContainers = this.gridPanel.getRowContainers();\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_BODY_SCROLL, this.redrawAfterScroll.bind(this));\n this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_BODY_HEIGHT_CHANGED, this.redrawAfterScroll.bind(this));\n this.redrawAfterModelUpdate();\n };\n RowRenderer.prototype.onPageLoaded = function (refreshEvent) {\n if (utils_1.Utils.missing(refreshEvent)) {\n refreshEvent = {\n type: events_1.Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: false\n };\n }\n this.onModelUpdated(refreshEvent);\n };\n RowRenderer.prototype.getAllCellsForColumn = function (column) {\n var eCells = [];\n utils_1.Utils.iterateObject(this.rowCompsByIndex, callback);\n utils_1.Utils.iterateObject(this.floatingBottomRowComps, callback);\n utils_1.Utils.iterateObject(this.floatingTopRowComps, callback);\n function callback(key, rowComp) {\n var eCell = rowComp.getCellForCol(column);\n if (eCell) {\n eCells.push(eCell);\n }\n }\n return eCells;\n };\n RowRenderer.prototype.refreshFloatingRowComps = function () {\n this.refreshFloatingRows(this.floatingTopRowComps, this.pinnedRowModel.getPinnedTopRowData(), this.rowContainers.floatingTopPinnedLeft, this.rowContainers.floatingTopPinnedRight, this.rowContainers.floatingTop, this.rowContainers.floatingTopFullWidth);\n this.refreshFloatingRows(this.floatingBottomRowComps, this.pinnedRowModel.getPinnedBottomRowData(), this.rowContainers.floatingBottomPinnedLeft, this.rowContainers.floatingBottomPinnedRight, this.rowContainers.floatingBottom, this.rowContainers.floatingBottomFullWith);\n };\n RowRenderer.prototype.refreshFloatingRows = function (rowComps, rowNodes, pinnedLeftContainerComp, pinnedRightContainerComp, bodyContainerComp, fullWidthContainerComp) {\n var _this = this;\n rowComps.forEach(function (row) {\n row.destroy();\n });\n rowComps.length = 0;\n if (rowNodes) {\n rowNodes.forEach(function (node) {\n var rowComp = new rowComp_1.RowComp(_this.$scope, bodyContainerComp, pinnedLeftContainerComp, pinnedRightContainerComp, fullWidthContainerComp, node, _this.beans, false, false);\n rowComp.init();\n rowComps.push(rowComp);\n });\n }\n this.flushContainers(rowComps);\n };\n RowRenderer.prototype.onPinnedRowDataChanged = function () {\n // recycling rows in order to ensure cell editing is not cancelled\n var params = {\n recycleRows: true\n };\n this.redrawAfterModelUpdate(params);\n };\n RowRenderer.prototype.onModelUpdated = function (refreshEvent) {\n var params = {\n recycleRows: refreshEvent.keepRenderedRows,\n animate: refreshEvent.animate,\n newData: refreshEvent.newData,\n newPage: refreshEvent.newPage,\n // because this is a model updated event (not pinned rows), we\n // can skip updating the pinned rows. this is needed so that if user\n // is doing transaction updates, the pinned rows are not getting constantly\n // trashed - or editing cells in pinned rows are not refreshed and put into read mode\n onlyBody: true\n };\n this.redrawAfterModelUpdate(params);\n };\n // if the row nodes are not rendered, no index is returned\n RowRenderer.prototype.getRenderedIndexesForRowNodes = function (rowNodes) {\n var result = [];\n if (utils_1.Utils.missing(rowNodes)) {\n return result;\n }\n utils_1.Utils.iterateObject(this.rowCompsByIndex, function (index, renderedRow) {\n var rowNode = renderedRow.getRowNode();\n if (rowNodes.indexOf(rowNode) >= 0) {\n result.push(index);\n }\n });\n return result;\n };\n RowRenderer.prototype.redrawRows = function (rowNodes) {\n if (!rowNodes || rowNodes.length == 0) {\n return;\n }\n // we only need to be worried about rendered rows, as this method is\n // called to whats rendered. if the row isn't rendered, we don't care\n var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);\n // remove the rows\n this.removeRowComps(indexesToRemove);\n // add draw them again\n this.redrawAfterModelUpdate({\n recycleRows: true\n });\n };\n RowRenderer.prototype.getCellToRestoreFocusToAfterRefresh = function (params) {\n var focusedCell = params.suppressKeepFocus ? null : this.focusedCellController.getFocusCellToUseAfterRefresh();\n if (utils_1.Utils.missing(focusedCell)) {\n return null;\n }\n // if the dom is not actually focused on a cell, then we don't try to refocus. the problem this\n // solves is with editing - if the user is editing, eg focus is on a text field, and not on the\n // cell itself, then the cell can be registered as having focus, however it's the text field that\n // has the focus and not the cell div. therefore, when the refresh is finished, the grid will focus\n // the cell, and not the textfield. that means if the user is in a text field, and the grid refreshes,\n // the focus is lost from the text field. we do not want this.\n var activeElement = document.activeElement;\n var domData = this.gridOptionsWrapper.getDomData(activeElement, cellComp_1.CellComp.DOM_DATA_KEY_CELL_COMP);\n var elementIsNotACellDev = utils_1.Utils.missing(domData);\n if (elementIsNotACellDev) {\n return null;\n }\n return focusedCell;\n };\n // gets called after changes to the model.\n RowRenderer.prototype.redrawAfterModelUpdate = function (params) {\n if (params === void 0) { params = {}; }\n this.getLockOnRefresh();\n var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);\n this.sizeContainerToPageHeight();\n this.scrollToTopIfNewData(params);\n var recycleRows = params.recycleRows;\n var animate = params.animate && this.gridOptionsWrapper.isAnimateRows();\n var rowsToRecycle = this.binRowComps(recycleRows);\n this.redraw(rowsToRecycle, animate);\n if (!params.onlyBody) {\n this.refreshFloatingRowComps();\n }\n this.restoreFocusedCell(focusedCell);\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.scrollToTopIfNewData = function (params) {\n var scrollToTop = params.newData || params.newPage;\n var suppressScrollToTop = this.gridOptionsWrapper.isSuppressScrollOnNewData();\n if (scrollToTop && !suppressScrollToTop) {\n this.gridPanel.scrollToTop();\n }\n };\n RowRenderer.prototype.sizeContainerToPageHeight = function () {\n var containerHeight = this.paginationProxy.getCurrentPageHeight();\n // we need at least 1 pixel for the horizontal scroll to work. so if there are now rows,\n // we still want the scroll to be present, otherwise there would be no way to access the columns\n // on the RHS - and if that was where the filter was that cause no rows to be presented, there\n // is no way to remove the filter.\n if (containerHeight === 0) {\n containerHeight = 1;\n }\n this.heightScaler.setModelHeight(containerHeight);\n var realHeight = this.heightScaler.getUiContainerHeight();\n this.rowContainers.body.setHeight(realHeight);\n this.rowContainers.fullWidth.setHeight(realHeight);\n this.rowContainers.pinnedLeft.setHeight(realHeight);\n this.rowContainers.pinnedRight.setHeight(realHeight);\n };\n RowRenderer.prototype.getLockOnRefresh = function () {\n if (this.refreshInProgress) {\n throw new Error(\"ag-Grid: cannot get grid to draw rows when it is in the middle of drawing rows. \" +\n \"Your code probably called a grid API method while the grid was in the render stage. To overcome \" +\n \"this, put the API call into a timeout, eg instead of api.refreshView(), \" +\n \"call setTimeout(function(){api.refreshView(),0}). To see what part of your code \" +\n \"that caused the refresh check this stacktrace.\");\n }\n this.refreshInProgress = true;\n };\n RowRenderer.prototype.releaseLockOnRefresh = function () {\n this.refreshInProgress = false;\n };\n // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without\n // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits\n // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the\n // edited cell).\n RowRenderer.prototype.restoreFocusedCell = function (gridCell) {\n if (gridCell) {\n this.focusedCellController.setFocusedCell(gridCell.rowIndex, gridCell.column, gridCell.floating, true);\n }\n };\n RowRenderer.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.forEachRowComp(function (key, rowComp) {\n rowComp.stopEditing(cancel);\n });\n };\n RowRenderer.prototype.forEachCellComp = function (callback) {\n this.forEachRowComp(function (key, rowComp) { return rowComp.forEachCellComp(callback); });\n };\n RowRenderer.prototype.forEachRowComp = function (callback) {\n utils_1.Utils.iterateObject(this.rowCompsByIndex, callback);\n utils_1.Utils.iterateObject(this.floatingTopRowComps, callback);\n utils_1.Utils.iterateObject(this.floatingBottomRowComps, callback);\n };\n RowRenderer.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n var rowComp = this.rowCompsByIndex[rowIndex];\n if (rowComp) {\n rowComp.addEventListener(eventName, callback);\n }\n };\n RowRenderer.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) { return cellComp.flashCell(); });\n };\n RowRenderer.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n var refreshCellParams = {\n forceRefresh: params.force,\n newData: false\n };\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) { return cellComp.refreshCell(refreshCellParams); });\n };\n RowRenderer.prototype.getCellRendererInstances = function (params) {\n var res = [];\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) {\n var cellRenderer = cellComp.getCellRenderer();\n if (cellRenderer) {\n res.push(cellRenderer);\n }\n });\n return res;\n };\n RowRenderer.prototype.getCellEditorInstances = function (params) {\n var res = [];\n this.forEachCellCompFiltered(params.rowNodes, params.columns, function (cellComp) {\n var cellEditor = cellComp.getCellEditor();\n if (cellEditor) {\n res.push(cellEditor);\n }\n });\n return res;\n };\n RowRenderer.prototype.getEditingCells = function () {\n var res = [];\n this.forEachCellComp(function (cellComp) {\n if (cellComp.isEditing()) {\n var gridCellDef = cellComp.getGridCell().getGridCellDef();\n res.push(gridCellDef);\n }\n });\n return res;\n };\n // calls the callback for each cellComp that match the provided rowNodes and columns. eg if one row node\n // and two columns provided, that identifies 4 cells, so callback gets called 4 times, once for each cell.\n RowRenderer.prototype.forEachCellCompFiltered = function (rowNodes, columns, callback) {\n var _this = this;\n var rowIdsMap;\n if (utils_1.Utils.exists(rowNodes)) {\n rowIdsMap = {\n top: {},\n bottom: {},\n normal: {}\n };\n rowNodes.forEach(function (rowNode) {\n if (rowNode.rowPinned === constants_1.Constants.PINNED_TOP) {\n rowIdsMap.top[rowNode.id] = true;\n }\n else if (rowNode.rowPinned === constants_1.Constants.PINNED_BOTTOM) {\n rowIdsMap.bottom[rowNode.id] = true;\n }\n else {\n rowIdsMap.normal[rowNode.id] = true;\n }\n });\n }\n var colIdsMap;\n if (utils_1.Utils.exists(columns)) {\n colIdsMap = {};\n columns.forEach(function (colKey) {\n var column = _this.columnController.getGridColumn(colKey);\n if (utils_1.Utils.exists(column)) {\n colIdsMap[column.getId()] = true;\n }\n });\n }\n var processRow = function (rowComp) {\n var rowNode = rowComp.getRowNode();\n var id = rowNode.id;\n var floating = rowNode.rowPinned;\n // skip this row if it is missing from the provided list\n if (utils_1.Utils.exists(rowIdsMap)) {\n if (floating === constants_1.Constants.PINNED_BOTTOM) {\n if (!rowIdsMap.bottom[id]) {\n return;\n }\n }\n else if (floating === constants_1.Constants.PINNED_TOP) {\n if (!rowIdsMap.top[id]) {\n return;\n }\n }\n else {\n if (!rowIdsMap.normal[id]) {\n return;\n }\n }\n }\n rowComp.forEachCellComp(function (cellComp) {\n var colId = cellComp.getColumn().getId();\n var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n if (excludeColFromRefresh) {\n return;\n }\n callback(cellComp);\n });\n };\n utils_1.Utils.iterateObject(this.rowCompsByIndex, function (index, rowComp) {\n processRow(rowComp);\n });\n if (this.floatingTopRowComps) {\n this.floatingTopRowComps.forEach(processRow);\n }\n if (this.floatingBottomRowComps) {\n this.floatingBottomRowComps.forEach(processRow);\n }\n };\n RowRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n var rowIndexesToRemove = Object.keys(this.rowCompsByIndex);\n this.removeRowComps(rowIndexesToRemove);\n };\n RowRenderer.prototype.binRowComps = function (recycleRows) {\n var _this = this;\n var indexesToRemove;\n var rowsToRecycle = {};\n if (recycleRows) {\n indexesToRemove = [];\n utils_1.Utils.iterateObject(this.rowCompsByIndex, function (index, rowComp) {\n var rowNode = rowComp.getRowNode();\n if (utils_1.Utils.exists(rowNode.id)) {\n rowsToRecycle[rowNode.id] = rowComp;\n delete _this.rowCompsByIndex[index];\n }\n else {\n indexesToRemove.push(index);\n }\n });\n }\n else {\n indexesToRemove = Object.keys(this.rowCompsByIndex);\n }\n this.removeRowComps(indexesToRemove);\n return rowsToRecycle;\n };\n // takes array of row indexes\n RowRenderer.prototype.removeRowComps = function (rowsToRemove) {\n var _this = this;\n // if no fromIndex then set to -1, which will refresh everything\n // let realFromIndex = -1;\n rowsToRemove.forEach(function (indexToRemove) {\n var renderedRow = _this.rowCompsByIndex[indexToRemove];\n renderedRow.destroy();\n delete _this.rowCompsByIndex[indexToRemove];\n });\n };\n // gets called when rows don't change, but viewport does, so after:\n // 1) height of grid body changes, ie number of displayed rows has changed\n // 2) grid scrolled to new position\n // 3) ensure index visible (which is a scroll)\n RowRenderer.prototype.redrawAfterScroll = function () {\n this.getLockOnRefresh();\n this.redraw(null, false, true);\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.removeRowCompsNotToDraw = function (indexesToDraw) {\n // for speedy lookup, dump into map\n var indexesToDrawMap = {};\n indexesToDraw.forEach(function (index) { return (indexesToDrawMap[index] = true); });\n var existingIndexes = Object.keys(this.rowCompsByIndex);\n var indexesNotToDraw = utils_1.Utils.filter(existingIndexes, function (index) { return !indexesToDrawMap[index]; });\n this.removeRowComps(indexesNotToDraw);\n };\n RowRenderer.prototype.calculateIndexesToDraw = function () {\n var _this = this;\n // all in all indexes in the viewport\n var indexesToDraw = utils_1.Utils.createArrayOfNumbers(this.firstRenderedRow, this.lastRenderedRow);\n // add in indexes of rows we want to keep, because they are currently editing\n utils_1.Utils.iterateObject(this.rowCompsByIndex, function (indexStr, rowComp) {\n var index = Number(indexStr);\n if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {\n if (_this.keepRowBecauseEditing(rowComp)) {\n indexesToDraw.push(index);\n }\n }\n });\n indexesToDraw.sort(function (a, b) { return a - b; });\n return indexesToDraw;\n };\n RowRenderer.prototype.redraw = function (rowsToRecycle, animate, afterScroll) {\n var _this = this;\n if (animate === void 0) { animate = false; }\n if (afterScroll === void 0) { afterScroll = false; }\n this.heightScaler.update();\n this.workOutFirstAndLastRowsToRender();\n // the row can already exist and be in the following:\n // rowsToRecycle -> if model change, then the index may be different, however row may\n // exist here from previous time (mapped by id).\n // this.rowCompsByIndex -> if just a scroll, then this will contain what is currently in the viewport\n // this is all the indexes we want, including those that already exist, so this method\n // will end up going through each index and drawing only if the row doesn't already exist\n var indexesToDraw = this.calculateIndexesToDraw();\n this.removeRowCompsNotToDraw(indexesToDraw);\n // add in new rows\n var nextVmTurnFunctions = [];\n var rowComps = [];\n indexesToDraw.forEach(function (rowIndex) {\n var rowComp = _this.createOrUpdateRowComp(rowIndex, rowsToRecycle, animate, afterScroll);\n if (utils_1.Utils.exists(rowComp)) {\n rowComps.push(rowComp);\n utils_1.Utils.pushAll(nextVmTurnFunctions, rowComp.getAndClearNextVMTurnFunctions());\n }\n });\n this.flushContainers(rowComps);\n utils_1.Utils.executeNextVMTurn(nextVmTurnFunctions);\n if (afterScroll && !this.gridOptionsWrapper.isSuppressAnimationFrame()) {\n this.beans.taskQueue.addP2Task(this.destroyRowComps.bind(this, rowsToRecycle, animate));\n }\n else {\n this.destroyRowComps(rowsToRecycle, animate);\n }\n this.checkAngularCompile();\n };\n RowRenderer.prototype.flushContainers = function (rowComps) {\n utils_1.Utils.iterateObject(this.rowContainers, function (key, rowContainerComp) {\n if (rowContainerComp) {\n rowContainerComp.flushRowTemplates();\n }\n });\n rowComps.forEach(function (rowComp) { return rowComp.afterFlush(); });\n };\n RowRenderer.prototype.onDisplayedColumnsChanged = function () {\n var pinningLeft = this.columnController.isPinningLeft();\n var pinningRight = this.columnController.isPinningRight();\n var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;\n if (atLeastOneChanged) {\n this.pinningLeft = pinningLeft;\n this.pinningRight = pinningRight;\n if (this.gridOptionsWrapper.isEmbedFullWidthRows()) {\n this.redrawFullWidthEmbeddedRows();\n }\n }\n };\n // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,\n // then it should go into the pinned left area if pinning left, or the center area if not pinning.\n RowRenderer.prototype.redrawFullWidthEmbeddedRows = function () {\n // if either of the pinned panels has shown / hidden, then need to redraw the fullWidth bits when\n // embedded, as what appears in each section depends on whether we are pinned or not\n var rowsToRemove = [];\n utils_1.Utils.iterateObject(this.rowCompsByIndex, function (id, rowComp) {\n if (rowComp.isFullWidth()) {\n var rowIndex = rowComp.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n }\n });\n this.refreshFloatingRowComps();\n this.removeRowComps(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.createOrUpdateRowComp = function (rowIndex, rowsToRecycle, animate, afterScroll) {\n var rowNode;\n var rowComp = this.rowCompsByIndex[rowIndex];\n // if no row comp, see if we can get it from the previous rowComps\n if (!rowComp) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n if (utils_1.Utils.exists(rowNode) && utils_1.Utils.exists(rowsToRecycle) && rowsToRecycle[rowNode.id]) {\n rowComp = rowsToRecycle[rowNode.id];\n rowsToRecycle[rowNode.id] = null;\n }\n }\n var creatingNewRowComp = !rowComp;\n if (creatingNewRowComp) {\n // create a new one\n if (!rowNode) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n }\n if (utils_1.Utils.exists(rowNode)) {\n rowComp = this.createRowComp(rowNode, animate, afterScroll);\n }\n else {\n // this should never happen - if somehow we are trying to create\n // a row for a rowNode that does not exist.\n return;\n }\n }\n else {\n // ensure row comp is in right position in DOM\n rowComp.ensureDomOrder();\n }\n this.rowCompsByIndex[rowIndex] = rowComp;\n return rowComp;\n };\n RowRenderer.prototype.destroyRowComps = function (rowCompsMap, animate) {\n var delayedFuncs = [];\n utils_1.Utils.iterateObject(rowCompsMap, function (nodeId, rowComp) {\n // if row was used, then it's null\n if (!rowComp) {\n return;\n }\n rowComp.destroy(animate);\n utils_1.Utils.pushAll(delayedFuncs, rowComp.getAndClearDelayedDestroyFunctions());\n });\n utils_1.Utils.executeInAWhile(delayedFuncs);\n };\n RowRenderer.prototype.checkAngularCompile = function () {\n var _this = this;\n // if we are doing angular compiling, then do digest the scope here\n if (this.gridOptionsWrapper.isAngularCompileRows()) {\n // we do it in a timeout, in case we are already in an apply\n setTimeout(function () {\n _this.$scope.$apply();\n }, 0);\n }\n };\n RowRenderer.prototype.workOutFirstAndLastRowsToRender = function () {\n var newFirst;\n var newLast;\n if (!this.paginationProxy.isRowsToRender()) {\n newFirst = 0;\n newLast = -1; // setting to -1 means nothing in range\n }\n else {\n var pageFirstRow = this.paginationProxy.getPageFirstRow();\n var pageLastRow = this.paginationProxy.getPageLastRow();\n var pixelOffset = this.paginationProxy ? this.paginationProxy.getPixelOffset() : 0;\n var heightOffset = this.heightScaler.getOffset();\n var bodyVRange = this.gridPanel.getVScrollPosition();\n var topPixel = bodyVRange.top;\n var bottomPixel = bodyVRange.bottom;\n var realPixelTop = topPixel + pixelOffset + heightOffset;\n var realPixelBottom = bottomPixel + pixelOffset + heightOffset;\n var first = this.paginationProxy.getRowIndexAtPixel(realPixelTop);\n var last = this.paginationProxy.getRowIndexAtPixel(realPixelBottom);\n //add in buffer\n var buffer = this.gridOptionsWrapper.getRowBuffer();\n first = first - buffer;\n last = last + buffer;\n // adjust, in case buffer extended actual size\n if (first < pageFirstRow) {\n first = pageFirstRow;\n }\n if (last > pageLastRow) {\n last = pageLastRow;\n }\n newFirst = first;\n newLast = last;\n }\n var firstDiffers = newFirst !== this.firstRenderedRow;\n var lastDiffers = newLast !== this.lastRenderedRow;\n if (firstDiffers || lastDiffers) {\n this.firstRenderedRow = newFirst;\n this.lastRenderedRow = newLast;\n var event_1 = {\n type: events_1.Events.EVENT_VIEWPORT_CHANGED,\n firstRow: newFirst,\n lastRow: newLast,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n RowRenderer.prototype.getFirstVirtualRenderedRow = function () {\n return this.firstRenderedRow;\n };\n RowRenderer.prototype.getLastVirtualRenderedRow = function () {\n return this.lastRenderedRow;\n };\n // check that none of the rows to remove are editing or focused as:\n // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,\n // eg user starts editing, enters some text, then scrolls down and then up, next time row rendered\n // the edit is reset - so we want to keep it rendered.\n // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,\n // otherwise the user can range select and drag (with focus cell going out of the viewport)\n // and then ctrl+c, nothing will happen if cell is removed from dom.\n RowRenderer.prototype.keepRowBecauseEditing = function (rowComp) {\n var REMOVE_ROW = false;\n var KEEP_ROW = true;\n var rowNode = rowComp.getRowNode();\n var rowHasFocus = this.focusedCellController.isRowNodeFocused(rowNode);\n var rowIsEditing = rowComp.isEditing();\n var mightWantToKeepRow = rowHasFocus || rowIsEditing;\n // if we deffo don't want to keep it,\n if (!mightWantToKeepRow) {\n return REMOVE_ROW;\n }\n // editing row, only remove if it is no longer rendered, eg filtered out or new data set.\n // the reason we want to keep is if user is scrolling up and down, we don't want to loose\n // the context of the editing in process.\n var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);\n return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n };\n RowRenderer.prototype.createRowComp = function (rowNode, animate, afterScroll) {\n var useAnimationFrameForCreate = afterScroll && !this.gridOptionsWrapper.isSuppressAnimationFrame();\n var rowComp = new rowComp_1.RowComp(this.$scope, this.rowContainers.body, this.rowContainers.pinnedLeft, this.rowContainers.pinnedRight, this.rowContainers.fullWidth, rowNode, this.beans, animate, useAnimationFrameForCreate);\n rowComp.init();\n return rowComp;\n };\n RowRenderer.prototype.getRenderedNodes = function () {\n var renderedRows = this.rowCompsByIndex;\n return Object.keys(renderedRows).map(function (key) {\n return renderedRows[key].getRowNode();\n });\n };\n // we use index for rows, but column object for columns, as the next column (by index) might not\n // be visible (header grouping) so it's not reliable, so using the column object instead.\n RowRenderer.prototype.navigateToNextCell = function (event, key, previousCell, allowUserOverride) {\n var nextCell = previousCell;\n // we keep searching for a next cell until we find one. this is how the group rows get skipped\n while (true) {\n nextCell = this.cellNavigationService.getNextCellToFocus(key, nextCell);\n if (utils_1.Utils.missing(nextCell)) {\n break;\n }\n var skipGroupRows = this.gridOptionsWrapper.isGroupUseEntireRow();\n if (skipGroupRows) {\n var rowNode = this.paginationProxy.getRow(nextCell.rowIndex);\n if (!rowNode.group) {\n break;\n }\n }\n else {\n break;\n }\n }\n // allow user to override what cell to go to next. when doing normal cell navigation (with keys)\n // we allow this, however if processing 'enter after edit' we don't allow override\n if (allowUserOverride) {\n var userFunc = this.gridOptionsWrapper.getNavigateToNextCellFunc();\n if (utils_1.Utils.exists(userFunc)) {\n var params = {\n key: key,\n previousCellDef: previousCell,\n nextCellDef: nextCell ? nextCell.getGridCellDef() : null,\n event: event\n };\n var nextCellDef = userFunc(params);\n if (utils_1.Utils.exists(nextCellDef)) {\n nextCell = new gridCell_1.GridCell(nextCellDef);\n }\n else {\n nextCell = null;\n }\n }\n }\n // no next cell means we have reached a grid boundary, eg left, right, top or bottom of grid\n if (!nextCell) {\n return;\n }\n this.ensureCellVisible(nextCell);\n this.focusedCellController.setFocusedCell(nextCell.rowIndex, nextCell.column, nextCell.floating, true);\n if (this.rangeController) {\n var gridCell = new gridCell_1.GridCell({ rowIndex: nextCell.rowIndex, floating: nextCell.floating, column: nextCell.column });\n this.rangeController.setRangeToCell(gridCell);\n }\n };\n RowRenderer.prototype.ensureCellVisible = function (gridCell) {\n // this scrolls the row into view\n if (utils_1.Utils.missing(gridCell.floating)) {\n this.gridPanel.ensureIndexVisible(gridCell.rowIndex);\n }\n if (!gridCell.column.isPinned()) {\n this.gridPanel.ensureColumnVisible(gridCell.column);\n }\n // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n // floating cell, the scrolls get out of sync\n this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter();\n // need to flush frames, to make sure the correct cells are rendered\n this.animationFrameService.flushAllFrames();\n };\n RowRenderer.prototype.startEditingCell = function (gridCell, keyPress, charPress) {\n var cell = this.getComponentForCell(gridCell);\n if (cell) {\n cell.startRowOrCellEdit(keyPress, charPress);\n }\n };\n RowRenderer.prototype.getComponentForCell = function (gridCell) {\n var rowComponent;\n switch (gridCell.floating) {\n case constants_1.Constants.PINNED_TOP:\n rowComponent = this.floatingTopRowComps[gridCell.rowIndex];\n break;\n case constants_1.Constants.PINNED_BOTTOM:\n rowComponent = this.floatingBottomRowComps[gridCell.rowIndex];\n break;\n default:\n rowComponent = this.rowCompsByIndex[gridCell.rowIndex];\n break;\n }\n if (!rowComponent) {\n return null;\n }\n var cellComponent = rowComponent.getRenderedCellForColumn(gridCell.column);\n return cellComponent;\n };\n RowRenderer.prototype.onTabKeyDown = function (previousRenderedCell, keyboardEvent) {\n var backwards = keyboardEvent.shiftKey;\n var success = this.moveToCellAfter(previousRenderedCell, backwards);\n if (success) {\n keyboardEvent.preventDefault();\n }\n };\n RowRenderer.prototype.tabToNextCell = function (backwards) {\n var focusedCell = this.focusedCellController.getFocusedCell();\n // if no focus, then cannot navigate\n if (utils_1.Utils.missing(focusedCell)) {\n return false;\n }\n var renderedCell = this.getComponentForCell(focusedCell);\n // if cell is not rendered, means user has scrolled away from the cell\n if (utils_1.Utils.missing(renderedCell)) {\n return false;\n }\n var result = this.moveToCellAfter(renderedCell, backwards);\n return result;\n };\n RowRenderer.prototype.moveToCellAfter = function (previousRenderedCell, backwards) {\n var editing = previousRenderedCell.isEditing();\n var res;\n if (editing) {\n if (this.gridOptionsWrapper.isFullRowEdit()) {\n res = this.moveToNextEditingRow(previousRenderedCell, backwards);\n }\n else {\n res = this.moveToNextEditingCell(previousRenderedCell, backwards);\n }\n }\n else {\n res = this.moveToNextCellNotEditing(previousRenderedCell, backwards);\n }\n return res;\n };\n RowRenderer.prototype.moveToNextEditingCell = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getGridCell();\n // need to do this before getting next cell to edit, in case the next cell\n // has editable function (eg colDef.editable=func() ) and it depends on the\n // result of this cell, so need to save updates from the first edit, in case\n // the value is referenced in the function.\n previousRenderedCell.stopEditing();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, true);\n var foundCell = utils_1.Utils.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n nextRenderedCell.startEditingIfEnabled(null, null, true);\n nextRenderedCell.focusCell(false);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveToNextEditingRow = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getGridCell();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, true);\n var foundCell = utils_1.Utils.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n this.moveEditToNextCellOrRow(previousRenderedCell, nextRenderedCell);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveToNextCellNotEditing = function (previousRenderedCell, backwards) {\n var gridCell = previousRenderedCell.getGridCell();\n // find the next cell to start editing\n var nextRenderedCell = this.findNextCellToFocusOn(gridCell, backwards, false);\n var foundCell = utils_1.Utils.exists(nextRenderedCell);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (foundCell) {\n nextRenderedCell.focusCell(true);\n }\n return foundCell;\n };\n RowRenderer.prototype.moveEditToNextCellOrRow = function (previousRenderedCell, nextRenderedCell) {\n var pGridCell = previousRenderedCell.getGridCell();\n var nGridCell = nextRenderedCell.getGridCell();\n var rowsMatch = pGridCell.rowIndex === nGridCell.rowIndex && pGridCell.floating === nGridCell.floating;\n if (rowsMatch) {\n // same row, so we don't start / stop editing, we just move the focus along\n previousRenderedCell.setFocusOutOnEditor();\n nextRenderedCell.setFocusInOnEditor();\n }\n else {\n var pRow = previousRenderedCell.getRenderedRow();\n var nRow = nextRenderedCell.getRenderedRow();\n previousRenderedCell.setFocusOutOnEditor();\n pRow.stopEditing();\n nRow.startRowEditing();\n nextRenderedCell.setFocusInOnEditor();\n }\n nextRenderedCell.focusCell();\n };\n // called by the cell, when tab is pressed while editing.\n // @return: RenderedCell when navigation successful, otherwise null\n RowRenderer.prototype.findNextCellToFocusOn = function (gridCell, backwards, startEditing) {\n var nextCell = gridCell;\n while (true) {\n nextCell = this.cellNavigationService.getNextTabbedCell(nextCell, backwards);\n // allow user to override what cell to go to next\n var userFunc = this.gridOptionsWrapper.getTabToNextCellFunc();\n if (utils_1.Utils.exists(userFunc)) {\n var params = {\n backwards: backwards,\n editing: startEditing,\n previousCellDef: gridCell.getGridCellDef(),\n nextCellDef: nextCell ? nextCell.getGridCellDef() : null\n };\n var nextCellDef = userFunc(params);\n if (utils_1.Utils.exists(nextCellDef)) {\n nextCell = new gridCell_1.GridCell(nextCellDef);\n }\n else {\n nextCell = null;\n }\n }\n // if no 'next cell', means we have got to last cell of grid, so nothing to move to,\n // so bottom right cell going forwards, or top left going backwards\n if (!nextCell) {\n return null;\n }\n // if editing, but cell not editable, skip cell. we do this before we do all of\n // the 'ensure index visible' and 'flush all frames', otherwise if we are skipping\n // a bunch of cells (eg 10 rows) then all the work on ensuring cell visible is useless\n // (except for the last one) which causes grid to stall for a while.\n if (startEditing) {\n var rowNode = this.paginationProxy.getRow(nextCell.rowIndex);\n var cellIsEditable = nextCell.column.isCellEditable(rowNode);\n if (!cellIsEditable) {\n continue;\n }\n }\n // this scrolls the row into view\n var cellIsNotFloating = utils_1.Utils.missing(nextCell.floating);\n if (cellIsNotFloating) {\n this.gridPanel.ensureIndexVisible(nextCell.rowIndex);\n }\n // pinned columns don't scroll, so no need to ensure index visible\n if (!nextCell.column.isPinned()) {\n this.gridPanel.ensureColumnVisible(nextCell.column);\n }\n // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n // floating cell, the scrolls get out of sync\n this.gridPanel.horizontallyScrollHeaderCenterAndFloatingCenter();\n // get the grid panel to flush all animation frames - otherwise the call below to get the cellComp\n // could fail, if we just scrolled the grid (to make a cell visible) and the rendering hasn't finished.\n this.animationFrameService.flushAllFrames();\n // we have to call this after ensureColumnVisible - otherwise it could be a virtual column\n // or row that is not currently in view, hence the renderedCell would not exist\n var nextCellComp = this.getComponentForCell(nextCell);\n // if next cell is fullWidth row, then no rendered cell,\n // as fullWidth rows have no cells, so we skip it\n if (utils_1.Utils.missing(nextCellComp)) {\n continue;\n }\n if (nextCellComp.isSuppressNavigable()) {\n continue;\n }\n // by default, when we click a cell, it gets selected into a range, so to keep keyboard navigation\n // consistent, we set into range here also.\n if (this.rangeController) {\n var gridCell_2 = new gridCell_1.GridCell({ rowIndex: nextCell.rowIndex, floating: nextCell.floating, column: nextCell.column });\n this.rangeController.setRangeToCell(gridCell_2);\n }\n // we successfully tabbed onto a grid cell, so return true\n return nextCellComp;\n }\n };\n __decorate([\n context_1.Autowired(\"paginationProxy\"),\n __metadata(\"design:type\", paginationProxy_1.PaginationProxy)\n ], RowRenderer.prototype, \"paginationProxy\", void 0);\n __decorate([\n context_1.Autowired(\"columnController\"),\n __metadata(\"design:type\", columnController_1.ColumnController)\n ], RowRenderer.prototype, \"columnController\", void 0);\n __decorate([\n context_1.Autowired(\"gridOptionsWrapper\"),\n __metadata(\"design:type\", gridOptionsWrapper_1.GridOptionsWrapper)\n ], RowRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n context_1.Autowired(\"gridCore\"),\n __metadata(\"design:type\", gridCore_1.GridCore)\n ], RowRenderer.prototype, \"gridCore\", void 0);\n __decorate([\n context_1.Autowired(\"$scope\"),\n __metadata(\"design:type\", Object)\n ], RowRenderer.prototype, \"$scope\", void 0);\n __decorate([\n context_1.Autowired(\"expressionService\"),\n __metadata(\"design:type\", expressionService_1.ExpressionService)\n ], RowRenderer.prototype, \"expressionService\", void 0);\n __decorate([\n context_1.Autowired(\"templateService\"),\n __metadata(\"design:type\", templateService_1.TemplateService)\n ], RowRenderer.prototype, \"templateService\", void 0);\n __decorate([\n context_1.Autowired(\"valueService\"),\n __metadata(\"design:type\", valueService_1.ValueService)\n ], RowRenderer.prototype, \"valueService\", void 0);\n __decorate([\n context_1.Autowired(\"eventService\"),\n __metadata(\"design:type\", eventService_1.EventService)\n ], RowRenderer.prototype, \"eventService\", void 0);\n __decorate([\n context_1.Autowired(\"pinnedRowModel\"),\n __metadata(\"design:type\", pinnedRowModel_1.PinnedRowModel)\n ], RowRenderer.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n context_1.Autowired(\"context\"),\n __metadata(\"design:type\", context_1.Context)\n ], RowRenderer.prototype, \"context\", void 0);\n __decorate([\n context_1.Autowired(\"loggerFactory\"),\n __metadata(\"design:type\", logger_1.LoggerFactory)\n ], RowRenderer.prototype, \"loggerFactory\", void 0);\n __decorate([\n context_1.Autowired(\"focusedCellController\"),\n __metadata(\"design:type\", focusedCellController_1.FocusedCellController)\n ], RowRenderer.prototype, \"focusedCellController\", void 0);\n __decorate([\n context_1.Autowired(\"cellNavigationService\"),\n __metadata(\"design:type\", cellNavigationService_1.CellNavigationService)\n ], RowRenderer.prototype, \"cellNavigationService\", void 0);\n __decorate([\n context_1.Autowired(\"columnApi\"),\n __metadata(\"design:type\", columnApi_1.ColumnApi)\n ], RowRenderer.prototype, \"columnApi\", void 0);\n __decorate([\n context_1.Autowired(\"gridApi\"),\n __metadata(\"design:type\", gridApi_1.GridApi)\n ], RowRenderer.prototype, \"gridApi\", void 0);\n __decorate([\n context_1.Autowired(\"beans\"),\n __metadata(\"design:type\", beans_1.Beans)\n ], RowRenderer.prototype, \"beans\", void 0);\n __decorate([\n context_1.Autowired(\"heightScaler\"),\n __metadata(\"design:type\", heightScaler_1.HeightScaler)\n ], RowRenderer.prototype, \"heightScaler\", void 0);\n __decorate([\n context_1.Autowired(\"animationFrameService\"),\n __metadata(\"design:type\", animationFrameService_1.AnimationFrameService)\n ], RowRenderer.prototype, \"animationFrameService\", void 0);\n __decorate([\n context_1.Optional(\"rangeController\"),\n __metadata(\"design:type\", Object)\n ], RowRenderer.prototype, \"rangeController\", void 0);\n __decorate([\n __param(0, context_1.Qualifier(\"loggerFactory\")),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [logger_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], RowRenderer.prototype, \"agWire\", null);\n __decorate([\n context_1.PreDestroy,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], RowRenderer.prototype, \"destroy\", null);\n RowRenderer = __decorate([\n context_1.Bean(\"rowRenderer\")\n ], RowRenderer);\n return RowRenderer;\n}(beanStub_1.BeanStub));\nexports.RowRenderer = RowRenderer;\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://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 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://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://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","// 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","// 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://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 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 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 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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","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 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://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","'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","// 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","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\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","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(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 = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\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 define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(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 define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\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","require('../../modules/core.regexp.escape');\nmodule.exports = require('../../modules/_core').RegExp.escape;\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","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","// Expose `IntlPolyfill` as global to add locale data into runtime later on.\nglobal.IntlPolyfill = require('./lib/core.js');\n\n// Require all locale data for `Intl`. This module will be\n// ignored when bundling for the browser with Browserify/Webpack.\nrequire('./locale-data/complete.js');\n\n// hack to export the polyfill as global Intl if needed\nif (!global.Intl) {\n global.Intl = global.IntlPolyfill;\n global.IntlPolyfill.__applyLocaleSensitivePrototypes();\n}\n\n// providing an idiomatic api for the nodejs version of this module\nmodule.exports = global.IntlPolyfill;\n","'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\n\nvar jsx = function () {\n var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7;\n return function createRawReactElement(type, props, key, children) {\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n\n if (!props && childrenLength !== 0) {\n props = {};\n }\n\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : '' + key,\n ref: null,\n props: props,\n _owner: null\n };\n };\n}();\n\nvar asyncToGenerator = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new Promise(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return Promise.resolve(value).then(function (value) {\n return step(\"next\", value);\n }, function (err) {\n return step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar defineEnumerableProperties = function (obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if (\"value\" in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n\n return obj;\n};\n\nvar defaults = function (obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n\n return obj;\n};\n\nvar defineProperty$1 = function (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\nvar _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\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar _instanceof = function (left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n};\n\nvar interopRequireDefault = function (obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n};\n\nvar interopRequireWildcard = function (obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n};\n\nvar newArrowCheck = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};\n\nvar objectDestructuringEmpty = function (obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar selfGlobal = typeof global === \"undefined\" ? self : global;\n\nvar set = function set(object, property, value, receiver) {\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent !== null) {\n set(parent, property, value, receiver);\n }\n } else if (\"value\" in desc && desc.writable) {\n desc.value = value;\n } else {\n var setter = desc.set;\n\n if (setter !== undefined) {\n setter.call(receiver, value);\n }\n }\n\n return value;\n};\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nvar slicedToArrayLoose = function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n var _arr = [];\n\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {\n _arr.push(_step.value);\n\n if (i && _arr.length === i) break;\n }\n\n return _arr;\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n};\n\nvar taggedTemplateLiteral = function (strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n};\n\nvar taggedTemplateLiteralLoose = function (strings, raw) {\n strings.raw = raw;\n return strings;\n};\n\nvar temporalRef = function (val, name, undef) {\n if (val === undef) {\n throw new ReferenceError(name + \" is not defined - temporal dead zone\");\n } else {\n return val;\n }\n};\n\nvar temporalUndefined = {};\n\nvar toArray = function (arr) {\n return Array.isArray(arr) ? arr : Array.from(arr);\n};\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n\n\nvar babelHelpers$1 = Object.freeze({\n jsx: jsx,\n asyncToGenerator: asyncToGenerator,\n classCallCheck: classCallCheck,\n createClass: createClass,\n defineEnumerableProperties: defineEnumerableProperties,\n defaults: defaults,\n defineProperty: defineProperty$1,\n get: get,\n inherits: inherits,\n interopRequireDefault: interopRequireDefault,\n interopRequireWildcard: interopRequireWildcard,\n newArrowCheck: newArrowCheck,\n objectDestructuringEmpty: objectDestructuringEmpty,\n objectWithoutProperties: objectWithoutProperties,\n possibleConstructorReturn: possibleConstructorReturn,\n selfGlobal: selfGlobal,\n set: set,\n slicedToArray: slicedToArray,\n slicedToArrayLoose: slicedToArrayLoose,\n taggedTemplateLiteral: taggedTemplateLiteral,\n taggedTemplateLiteralLoose: taggedTemplateLiteralLoose,\n temporalRef: temporalRef,\n temporalUndefined: temporalUndefined,\n toArray: toArray,\n toConsumableArray: toConsumableArray,\n typeof: _typeof,\n extends: _extends,\n instanceof: _instanceof\n});\n\nvar realDefineProp = function () {\n var sentinel = function sentinel() {};\n try {\n Object.defineProperty(sentinel, 'a', {\n get: function get() {\n return 1;\n }\n });\n Object.defineProperty(sentinel, 'prototype', { writable: false });\n return sentinel.a === 1 && sentinel.prototype instanceof Object;\n } catch (e) {\n return false;\n }\n}();\n\n// Need a workaround for getters in ES3\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\n// We use this a lot (and need it for proto-less objects)\nvar hop = Object.prototype.hasOwnProperty;\n\n// Naive defineProperty for compatibility\nvar defineProperty = realDefineProp ? Object.defineProperty : function (obj, name, desc) {\n if ('get' in desc && obj.__defineGetter__) obj.__defineGetter__(name, desc.get);else if (!hop.call(obj, name) || 'value' in desc) obj[name] = desc.value;\n};\n\n// Array.prototype.indexOf, as good as we need it to be\nvar arrIndexOf = Array.prototype.indexOf || function (search) {\n /*jshint validthis:true */\n var t = this;\n if (!t.length) return -1;\n\n for (var i = arguments[1] || 0, max = t.length; i < max; i++) {\n if (t[i] === search) return i;\n }\n\n return -1;\n};\n\n// Create an object with the specified prototype (2nd arg required for Record)\nvar objCreate = Object.create || function (proto, props) {\n var obj = void 0;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (var k in props) {\n if (hop.call(props, k)) defineProperty(obj, k, props[k]);\n }\n\n return obj;\n};\n\n// Snapshot some (hopefully still) native built-ins\nvar arrSlice = Array.prototype.slice;\nvar arrConcat = Array.prototype.concat;\nvar arrPush = Array.prototype.push;\nvar arrJoin = Array.prototype.join;\nvar arrShift = Array.prototype.shift;\n\n// Naive Function.prototype.bind for compatibility\nvar fnBind = Function.prototype.bind || function (thisObj) {\n var fn = this,\n args = arrSlice.call(arguments, 1);\n\n // All our (presently) bound functions have either 1 or 0 arguments. By returning\n // different function signatures, we can pass some tests in ES3 environments\n if (fn.length === 1) {\n return function () {\n return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments)));\n };\n }\n return function () {\n return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments)));\n };\n};\n\n// Object housing internal properties for constructors\nvar internals = objCreate(null);\n\n// Keep internal properties internal\nvar secret = Math.random();\n\n// Helper functions\n// ================\n\n/**\n * A function to deal with the inaccuracy of calculating log10 in pre-ES6\n * JavaScript environments. Math.log(num) / Math.LN10 was responsible for\n * causing issue #62.\n */\nfunction log10Floor(n) {\n // ES6 provides the more accurate Math.log10\n if (typeof Math.log10 === 'function') return Math.floor(Math.log10(n));\n\n var x = Math.round(Math.log(n) * Math.LOG10E);\n return x - (Number('1e' + x) > n);\n}\n\n/**\n * A map that doesn't contain Object in its prototype chain\n */\nfunction Record(obj) {\n // Copy only own properties over unless this object is already a Record instance\n for (var k in obj) {\n if (obj instanceof Record || hop.call(obj, k)) defineProperty(this, k, { value: obj[k], enumerable: true, writable: true, configurable: true });\n }\n}\nRecord.prototype = objCreate(null);\n\n/**\n * An ordered list\n */\nfunction List() {\n defineProperty(this, 'length', { writable: true, value: 0 });\n\n if (arguments.length) arrPush.apply(this, arrSlice.call(arguments));\n}\nList.prototype = objCreate(null);\n\n/**\n * Constructs a regular expression to restore tainted RegExp properties\n */\nfunction createRegExpRestore() {\n if (internals.disableRegExpRestore) {\n return function () {/* no-op */};\n }\n\n var regExpCache = {\n lastMatch: RegExp.lastMatch || '',\n leftContext: RegExp.leftContext,\n multiline: RegExp.multiline,\n input: RegExp.input\n },\n has = false;\n\n // Create a snapshot of all the 'captured' properties\n for (var i = 1; i <= 9; i++) {\n has = (regExpCache['$' + i] = RegExp['$' + i]) || has;\n }return function () {\n // Now we've snapshotted some properties, escape the lastMatch string\n var esc = /[.?*+^$[\\]\\\\(){}|-]/g,\n lm = regExpCache.lastMatch.replace(esc, '\\\\$&'),\n reg = new List();\n\n // If any of the captured strings were non-empty, iterate over them all\n if (has) {\n for (var _i = 1; _i <= 9; _i++) {\n var m = regExpCache['$' + _i];\n\n // If it's empty, add an empty capturing group\n if (!m) lm = '()' + lm;\n\n // Else find the string in lm and escape & wrap it to capture it\n else {\n m = m.replace(esc, '\\\\$&');\n lm = lm.replace(m, '(' + m + ')');\n }\n\n // Push it to the reg and chop lm to make sure further groups come after\n arrPush.call(reg, lm.slice(0, lm.indexOf('(') + 1));\n lm = lm.slice(lm.indexOf('(') + 1);\n }\n }\n\n var exprStr = arrJoin.call(reg, '') + lm;\n\n // Shorten the regex by replacing each part of the expression with a match\n // for a string of that exact length. This is safe for the type of\n // expressions generated above, because the expression matches the whole\n // match string, so we know each group and each segment between capturing\n // groups can be matched by its length alone.\n exprStr = exprStr.replace(/(\\\\\\(|\\\\\\)|[^()])+/g, function (match) {\n return '[\\\\s\\\\S]{' + match.replace('\\\\', '').length + '}';\n });\n\n // Create the regular expression that will reconstruct the RegExp properties\n var expr = new RegExp(exprStr, regExpCache.multiline ? 'gm' : 'g');\n\n // Set the lastIndex of the generated expression to ensure that the match\n // is found in the correct index.\n expr.lastIndex = regExpCache.leftContext.length;\n\n expr.exec(regExpCache.input);\n };\n}\n\n/**\n * Mimics ES5's abstract ToObject() function\n */\nfunction toObject(arg) {\n if (arg === null) throw new TypeError('Cannot convert null or undefined to object');\n\n if ((typeof arg === 'undefined' ? 'undefined' : babelHelpers$1['typeof'](arg)) === 'object') return arg;\n return Object(arg);\n}\n\nfunction toNumber(arg) {\n if (typeof arg === 'number') return arg;\n return Number(arg);\n}\n\nfunction toInteger(arg) {\n var number = toNumber(arg);\n if (isNaN(number)) return 0;\n if (number === +0 || number === -0 || number === +Infinity || number === -Infinity) return number;\n if (number < 0) return Math.floor(Math.abs(number)) * -1;\n return Math.floor(Math.abs(number));\n}\n\nfunction toLength(arg) {\n var len = toInteger(arg);\n if (len <= 0) return 0;\n if (len === Infinity) return Math.pow(2, 53) - 1;\n return Math.min(len, Math.pow(2, 53) - 1);\n}\n\n/**\n * Returns \"internal\" properties for an object\n */\nfunction getInternalProperties(obj) {\n if (hop.call(obj, '__getInternalProperties')) return obj.__getInternalProperties(secret);\n\n return objCreate(null);\n}\n\n/**\n* Defines regular expressions for various operations related to the BCP 47 syntax,\n* as defined at http://tools.ietf.org/html/bcp47#section-2.1\n*/\n\n// extlang = 3ALPHA ; selected ISO 639 codes\n// *2(\"-\" 3ALPHA) ; permanently reserved\nvar extlang = '[a-z]{3}(?:-[a-z]{3}){0,2}';\n\n// language = 2*3ALPHA ; shortest ISO 639 code\n// [\"-\" extlang] ; sometimes followed by\n// ; extended language subtags\n// / 4ALPHA ; or reserved for future use\n// / 5*8ALPHA ; or registered language subtag\nvar language = '(?:[a-z]{2,3}(?:-' + extlang + ')?|[a-z]{4}|[a-z]{5,8})';\n\n// script = 4ALPHA ; ISO 15924 code\nvar script = '[a-z]{4}';\n\n// region = 2ALPHA ; ISO 3166-1 code\n// / 3DIGIT ; UN M.49 code\nvar region = '(?:[a-z]{2}|\\\\d{3})';\n\n// variant = 5*8alphanum ; registered variants\n// / (DIGIT 3alphanum)\nvar variant = '(?:[a-z0-9]{5,8}|\\\\d[a-z0-9]{3})';\n\n// ; Single alphanumerics\n// ; \"x\" reserved for private use\n// singleton = DIGIT ; 0 - 9\n// / %x41-57 ; A - W\n// / %x59-5A ; Y - Z\n// / %x61-77 ; a - w\n// / %x79-7A ; y - z\nvar singleton = '[0-9a-wy-z]';\n\n// extension = singleton 1*(\"-\" (2*8alphanum))\nvar extension = singleton + '(?:-[a-z0-9]{2,8})+';\n\n// privateuse = \"x\" 1*(\"-\" (1*8alphanum))\nvar privateuse = 'x(?:-[a-z0-9]{1,8})+';\n\n// irregular = \"en-GB-oed\" ; irregular tags do not match\n// / \"i-ami\" ; the 'langtag' production and\n// / \"i-bnn\" ; would not otherwise be\n// / \"i-default\" ; considered 'well-formed'\n// / \"i-enochian\" ; These tags are all valid,\n// / \"i-hak\" ; but most are deprecated\n// / \"i-klingon\" ; in favor of more modern\n// / \"i-lux\" ; subtags or subtag\n// / \"i-mingo\" ; combination\n// / \"i-navajo\"\n// / \"i-pwn\"\n// / \"i-tao\"\n// / \"i-tay\"\n// / \"i-tsu\"\n// / \"sgn-BE-FR\"\n// / \"sgn-BE-NL\"\n// / \"sgn-CH-DE\"\nvar irregular = '(?:en-GB-oed' + '|i-(?:ami|bnn|default|enochian|hak|klingon|lux|mingo|navajo|pwn|tao|tay|tsu)' + '|sgn-(?:BE-FR|BE-NL|CH-DE))';\n\n// regular = \"art-lojban\" ; these tags match the 'langtag'\n// / \"cel-gaulish\" ; production, but their subtags\n// / \"no-bok\" ; are not extended language\n// / \"no-nyn\" ; or variant subtags: their meaning\n// / \"zh-guoyu\" ; is defined by their registration\n// / \"zh-hakka\" ; and all of these are deprecated\n// / \"zh-min\" ; in favor of a more modern\n// / \"zh-min-nan\" ; subtag or sequence of subtags\n// / \"zh-xiang\"\nvar regular = '(?:art-lojban|cel-gaulish|no-bok|no-nyn' + '|zh-(?:guoyu|hakka|min|min-nan|xiang))';\n\n// grandfathered = irregular ; non-redundant tags registered\n// / regular ; during the RFC 3066 era\nvar grandfathered = '(?:' + irregular + '|' + regular + ')';\n\n// langtag = language\n// [\"-\" script]\n// [\"-\" region]\n// *(\"-\" variant)\n// *(\"-\" extension)\n// [\"-\" privateuse]\nvar langtag = language + '(?:-' + script + ')?(?:-' + region + ')?(?:-' + variant + ')*(?:-' + extension + ')*(?:-' + privateuse + ')?';\n\n// Language-Tag = langtag ; normal language tags\n// / privateuse ; private use tag\n// / grandfathered ; grandfathered tags\nvar expBCP47Syntax = RegExp('^(?:' + langtag + '|' + privateuse + '|' + grandfathered + ')$', 'i');\n\n// Match duplicate variants in a language tag\nvar expVariantDupes = RegExp('^(?!x).*?-(' + variant + ')-(?:\\\\w{4,8}-(?!x-))*\\\\1\\\\b', 'i');\n\n// Match duplicate singletons in a language tag (except in private use)\nvar expSingletonDupes = RegExp('^(?!x).*?-(' + singleton + ')-(?:\\\\w+-(?!x-))*\\\\1\\\\b', 'i');\n\n// Match all extension sequences\nvar expExtSequences = RegExp('-' + extension, 'ig');\n\n// Default locale is the first-added locale data for us\nvar defaultLocale = void 0;\nfunction setDefaultLocale(locale) {\n defaultLocale = locale;\n}\n\n// IANA Subtag Registry redundant tag and subtag maps\nvar redundantTags = {\n tags: {\n \"art-lojban\": \"jbo\",\n \"i-ami\": \"ami\",\n \"i-bnn\": \"bnn\",\n \"i-hak\": \"hak\",\n \"i-klingon\": \"tlh\",\n \"i-lux\": \"lb\",\n \"i-navajo\": \"nv\",\n \"i-pwn\": \"pwn\",\n \"i-tao\": \"tao\",\n \"i-tay\": \"tay\",\n \"i-tsu\": \"tsu\",\n \"no-bok\": \"nb\",\n \"no-nyn\": \"nn\",\n \"sgn-BE-FR\": \"sfb\",\n \"sgn-BE-NL\": \"vgt\",\n \"sgn-CH-DE\": \"sgg\",\n \"zh-guoyu\": \"cmn\",\n \"zh-hakka\": \"hak\",\n \"zh-min-nan\": \"nan\",\n \"zh-xiang\": \"hsn\",\n \"sgn-BR\": \"bzs\",\n \"sgn-CO\": \"csn\",\n \"sgn-DE\": \"gsg\",\n \"sgn-DK\": \"dsl\",\n \"sgn-ES\": \"ssp\",\n \"sgn-FR\": \"fsl\",\n \"sgn-GB\": \"bfi\",\n \"sgn-GR\": \"gss\",\n \"sgn-IE\": \"isg\",\n \"sgn-IT\": \"ise\",\n \"sgn-JP\": \"jsl\",\n \"sgn-MX\": \"mfs\",\n \"sgn-NI\": \"ncs\",\n \"sgn-NL\": \"dse\",\n \"sgn-NO\": \"nsl\",\n \"sgn-PT\": \"psr\",\n \"sgn-SE\": \"swl\",\n \"sgn-US\": \"ase\",\n \"sgn-ZA\": \"sfs\",\n \"zh-cmn\": \"cmn\",\n \"zh-cmn-Hans\": \"cmn-Hans\",\n \"zh-cmn-Hant\": \"cmn-Hant\",\n \"zh-gan\": \"gan\",\n \"zh-wuu\": \"wuu\",\n \"zh-yue\": \"yue\"\n },\n subtags: {\n BU: \"MM\",\n DD: \"DE\",\n FX: \"FR\",\n TP: \"TL\",\n YD: \"YE\",\n ZR: \"CD\",\n heploc: \"alalc97\",\n 'in': \"id\",\n iw: \"he\",\n ji: \"yi\",\n jw: \"jv\",\n mo: \"ro\",\n ayx: \"nun\",\n bjd: \"drl\",\n ccq: \"rki\",\n cjr: \"mom\",\n cka: \"cmr\",\n cmk: \"xch\",\n drh: \"khk\",\n drw: \"prs\",\n gav: \"dev\",\n hrr: \"jal\",\n ibi: \"opa\",\n kgh: \"kml\",\n lcq: \"ppr\",\n mst: \"mry\",\n myt: \"mry\",\n sca: \"hle\",\n tie: \"ras\",\n tkk: \"twm\",\n tlw: \"weo\",\n tnf: \"prs\",\n ybd: \"rki\",\n yma: \"lrr\"\n },\n extLang: {\n aao: [\"aao\", \"ar\"],\n abh: [\"abh\", \"ar\"],\n abv: [\"abv\", \"ar\"],\n acm: [\"acm\", \"ar\"],\n acq: [\"acq\", \"ar\"],\n acw: [\"acw\", \"ar\"],\n acx: [\"acx\", \"ar\"],\n acy: [\"acy\", \"ar\"],\n adf: [\"adf\", \"ar\"],\n ads: [\"ads\", \"sgn\"],\n aeb: [\"aeb\", \"ar\"],\n aec: [\"aec\", \"ar\"],\n aed: [\"aed\", \"sgn\"],\n aen: [\"aen\", \"sgn\"],\n afb: [\"afb\", \"ar\"],\n afg: [\"afg\", \"sgn\"],\n ajp: [\"ajp\", \"ar\"],\n apc: [\"apc\", \"ar\"],\n apd: [\"apd\", \"ar\"],\n arb: [\"arb\", \"ar\"],\n arq: [\"arq\", \"ar\"],\n ars: [\"ars\", \"ar\"],\n ary: [\"ary\", \"ar\"],\n arz: [\"arz\", \"ar\"],\n ase: [\"ase\", \"sgn\"],\n asf: [\"asf\", \"sgn\"],\n asp: [\"asp\", \"sgn\"],\n asq: [\"asq\", \"sgn\"],\n asw: [\"asw\", \"sgn\"],\n auz: [\"auz\", \"ar\"],\n avl: [\"avl\", \"ar\"],\n ayh: [\"ayh\", \"ar\"],\n ayl: [\"ayl\", \"ar\"],\n ayn: [\"ayn\", \"ar\"],\n ayp: [\"ayp\", \"ar\"],\n bbz: [\"bbz\", \"ar\"],\n bfi: [\"bfi\", \"sgn\"],\n bfk: [\"bfk\", \"sgn\"],\n bjn: [\"bjn\", \"ms\"],\n bog: [\"bog\", \"sgn\"],\n bqn: [\"bqn\", \"sgn\"],\n bqy: [\"bqy\", \"sgn\"],\n btj: [\"btj\", \"ms\"],\n bve: [\"bve\", \"ms\"],\n bvl: [\"bvl\", \"sgn\"],\n bvu: [\"bvu\", \"ms\"],\n bzs: [\"bzs\", \"sgn\"],\n cdo: [\"cdo\", \"zh\"],\n cds: [\"cds\", \"sgn\"],\n cjy: [\"cjy\", \"zh\"],\n cmn: [\"cmn\", \"zh\"],\n coa: [\"coa\", \"ms\"],\n cpx: [\"cpx\", \"zh\"],\n csc: [\"csc\", \"sgn\"],\n csd: [\"csd\", \"sgn\"],\n cse: [\"cse\", \"sgn\"],\n csf: [\"csf\", \"sgn\"],\n csg: [\"csg\", \"sgn\"],\n csl: [\"csl\", \"sgn\"],\n csn: [\"csn\", \"sgn\"],\n csq: [\"csq\", \"sgn\"],\n csr: [\"csr\", \"sgn\"],\n czh: [\"czh\", \"zh\"],\n czo: [\"czo\", \"zh\"],\n doq: [\"doq\", \"sgn\"],\n dse: [\"dse\", \"sgn\"],\n dsl: [\"dsl\", \"sgn\"],\n dup: [\"dup\", \"ms\"],\n ecs: [\"ecs\", \"sgn\"],\n esl: [\"esl\", \"sgn\"],\n esn: [\"esn\", \"sgn\"],\n eso: [\"eso\", \"sgn\"],\n eth: [\"eth\", \"sgn\"],\n fcs: [\"fcs\", \"sgn\"],\n fse: [\"fse\", \"sgn\"],\n fsl: [\"fsl\", \"sgn\"],\n fss: [\"fss\", \"sgn\"],\n gan: [\"gan\", \"zh\"],\n gds: [\"gds\", \"sgn\"],\n gom: [\"gom\", \"kok\"],\n gse: [\"gse\", \"sgn\"],\n gsg: [\"gsg\", \"sgn\"],\n gsm: [\"gsm\", \"sgn\"],\n gss: [\"gss\", \"sgn\"],\n gus: [\"gus\", \"sgn\"],\n hab: [\"hab\", \"sgn\"],\n haf: [\"haf\", \"sgn\"],\n hak: [\"hak\", \"zh\"],\n hds: [\"hds\", \"sgn\"],\n hji: [\"hji\", \"ms\"],\n hks: [\"hks\", \"sgn\"],\n hos: [\"hos\", \"sgn\"],\n hps: [\"hps\", \"sgn\"],\n hsh: [\"hsh\", \"sgn\"],\n hsl: [\"hsl\", \"sgn\"],\n hsn: [\"hsn\", \"zh\"],\n icl: [\"icl\", \"sgn\"],\n ils: [\"ils\", \"sgn\"],\n inl: [\"inl\", \"sgn\"],\n ins: [\"ins\", \"sgn\"],\n ise: [\"ise\", \"sgn\"],\n isg: [\"isg\", \"sgn\"],\n isr: [\"isr\", \"sgn\"],\n jak: [\"jak\", \"ms\"],\n jax: [\"jax\", \"ms\"],\n jcs: [\"jcs\", \"sgn\"],\n jhs: [\"jhs\", \"sgn\"],\n jls: [\"jls\", \"sgn\"],\n jos: [\"jos\", \"sgn\"],\n jsl: [\"jsl\", \"sgn\"],\n jus: [\"jus\", \"sgn\"],\n kgi: [\"kgi\", \"sgn\"],\n knn: [\"knn\", \"kok\"],\n kvb: [\"kvb\", \"ms\"],\n kvk: [\"kvk\", \"sgn\"],\n kvr: [\"kvr\", \"ms\"],\n kxd: [\"kxd\", \"ms\"],\n lbs: [\"lbs\", \"sgn\"],\n lce: [\"lce\", \"ms\"],\n lcf: [\"lcf\", \"ms\"],\n liw: [\"liw\", \"ms\"],\n lls: [\"lls\", \"sgn\"],\n lsg: [\"lsg\", \"sgn\"],\n lsl: [\"lsl\", \"sgn\"],\n lso: [\"lso\", \"sgn\"],\n lsp: [\"lsp\", \"sgn\"],\n lst: [\"lst\", \"sgn\"],\n lsy: [\"lsy\", \"sgn\"],\n ltg: [\"ltg\", \"lv\"],\n lvs: [\"lvs\", \"lv\"],\n lzh: [\"lzh\", \"zh\"],\n max: [\"max\", \"ms\"],\n mdl: [\"mdl\", \"sgn\"],\n meo: [\"meo\", \"ms\"],\n mfa: [\"mfa\", \"ms\"],\n mfb: [\"mfb\", \"ms\"],\n mfs: [\"mfs\", \"sgn\"],\n min: [\"min\", \"ms\"],\n mnp: [\"mnp\", \"zh\"],\n mqg: [\"mqg\", \"ms\"],\n mre: [\"mre\", \"sgn\"],\n msd: [\"msd\", \"sgn\"],\n msi: [\"msi\", \"ms\"],\n msr: [\"msr\", \"sgn\"],\n mui: [\"mui\", \"ms\"],\n mzc: [\"mzc\", \"sgn\"],\n mzg: [\"mzg\", \"sgn\"],\n mzy: [\"mzy\", \"sgn\"],\n nan: [\"nan\", \"zh\"],\n nbs: [\"nbs\", \"sgn\"],\n ncs: [\"ncs\", \"sgn\"],\n nsi: [\"nsi\", \"sgn\"],\n nsl: [\"nsl\", \"sgn\"],\n nsp: [\"nsp\", \"sgn\"],\n nsr: [\"nsr\", \"sgn\"],\n nzs: [\"nzs\", \"sgn\"],\n okl: [\"okl\", \"sgn\"],\n orn: [\"orn\", \"ms\"],\n ors: [\"ors\", \"ms\"],\n pel: [\"pel\", \"ms\"],\n pga: [\"pga\", \"ar\"],\n pks: [\"pks\", \"sgn\"],\n prl: [\"prl\", \"sgn\"],\n prz: [\"prz\", \"sgn\"],\n psc: [\"psc\", \"sgn\"],\n psd: [\"psd\", \"sgn\"],\n pse: [\"pse\", \"ms\"],\n psg: [\"psg\", \"sgn\"],\n psl: [\"psl\", \"sgn\"],\n pso: [\"pso\", \"sgn\"],\n psp: [\"psp\", \"sgn\"],\n psr: [\"psr\", \"sgn\"],\n pys: [\"pys\", \"sgn\"],\n rms: [\"rms\", \"sgn\"],\n rsi: [\"rsi\", \"sgn\"],\n rsl: [\"rsl\", \"sgn\"],\n sdl: [\"sdl\", \"sgn\"],\n sfb: [\"sfb\", \"sgn\"],\n sfs: [\"sfs\", \"sgn\"],\n sgg: [\"sgg\", \"sgn\"],\n sgx: [\"sgx\", \"sgn\"],\n shu: [\"shu\", \"ar\"],\n slf: [\"slf\", \"sgn\"],\n sls: [\"sls\", \"sgn\"],\n sqk: [\"sqk\", \"sgn\"],\n sqs: [\"sqs\", \"sgn\"],\n ssh: [\"ssh\", \"ar\"],\n ssp: [\"ssp\", \"sgn\"],\n ssr: [\"ssr\", \"sgn\"],\n svk: [\"svk\", \"sgn\"],\n swc: [\"swc\", \"sw\"],\n swh: [\"swh\", \"sw\"],\n swl: [\"swl\", \"sgn\"],\n syy: [\"syy\", \"sgn\"],\n tmw: [\"tmw\", \"ms\"],\n tse: [\"tse\", \"sgn\"],\n tsm: [\"tsm\", \"sgn\"],\n tsq: [\"tsq\", \"sgn\"],\n tss: [\"tss\", \"sgn\"],\n tsy: [\"tsy\", \"sgn\"],\n tza: [\"tza\", \"sgn\"],\n ugn: [\"ugn\", \"sgn\"],\n ugy: [\"ugy\", \"sgn\"],\n ukl: [\"ukl\", \"sgn\"],\n uks: [\"uks\", \"sgn\"],\n urk: [\"urk\", \"ms\"],\n uzn: [\"uzn\", \"uz\"],\n uzs: [\"uzs\", \"uz\"],\n vgt: [\"vgt\", \"sgn\"],\n vkk: [\"vkk\", \"ms\"],\n vkt: [\"vkt\", \"ms\"],\n vsi: [\"vsi\", \"sgn\"],\n vsl: [\"vsl\", \"sgn\"],\n vsv: [\"vsv\", \"sgn\"],\n wuu: [\"wuu\", \"zh\"],\n xki: [\"xki\", \"sgn\"],\n xml: [\"xml\", \"sgn\"],\n xmm: [\"xmm\", \"ms\"],\n xms: [\"xms\", \"sgn\"],\n yds: [\"yds\", \"sgn\"],\n ysl: [\"ysl\", \"sgn\"],\n yue: [\"yue\", \"zh\"],\n zib: [\"zib\", \"sgn\"],\n zlm: [\"zlm\", \"ms\"],\n zmi: [\"zmi\", \"ms\"],\n zsl: [\"zsl\", \"sgn\"],\n zsm: [\"zsm\", \"ms\"]\n }\n};\n\n/**\n * Convert only a-z to uppercase as per section 6.1 of the spec\n */\nfunction toLatinUpperCase(str) {\n var i = str.length;\n\n while (i--) {\n var ch = str.charAt(i);\n\n if (ch >= \"a\" && ch <= \"z\") str = str.slice(0, i) + ch.toUpperCase() + str.slice(i + 1);\n }\n\n return str;\n}\n\n/**\n * The IsStructurallyValidLanguageTag abstract operation verifies that the locale\n * argument (which must be a String value)\n *\n * - represents a well-formed BCP 47 language tag as specified in RFC 5646 section\n * 2.1, or successor,\n * - does not include duplicate variant subtags, and\n * - does not include duplicate singleton subtags.\n *\n * The abstract operation returns true if locale can be generated from the ABNF\n * grammar in section 2.1 of the RFC, starting with Language-Tag, and does not\n * contain duplicate variant or singleton subtags (other than as a private use\n * subtag). It returns false otherwise. Terminal value characters in the grammar are\n * interpreted as the Unicode equivalents of the ASCII octet values given.\n */\nfunction /* 6.2.2 */IsStructurallyValidLanguageTag(locale) {\n // represents a well-formed BCP 47 language tag as specified in RFC 5646\n if (!expBCP47Syntax.test(locale)) return false;\n\n // does not include duplicate variant subtags, and\n if (expVariantDupes.test(locale)) return false;\n\n // does not include duplicate singleton subtags.\n if (expSingletonDupes.test(locale)) return false;\n\n return true;\n}\n\n/**\n * The CanonicalizeLanguageTag abstract operation returns the canonical and case-\n * regularized form of the locale argument (which must be a String value that is\n * a structurally valid BCP 47 language tag as verified by the\n * IsStructurallyValidLanguageTag abstract operation). It takes the steps\n * specified in RFC 5646 section 4.5, or successor, to bring the language tag\n * into canonical form, and to regularize the case of the subtags, but does not\n * take the steps to bring a language tag into “extlang form” and to reorder\n * variant subtags.\n\n * The specifications for extensions to BCP 47 language tags, such as RFC 6067,\n * may include canonicalization rules for the extension subtag sequences they\n * define that go beyond the canonicalization rules of RFC 5646 section 4.5.\n * Implementations are allowed, but not required, to apply these additional rules.\n */\nfunction /* 6.2.3 */CanonicalizeLanguageTag(locale) {\n var match = void 0,\n parts = void 0;\n\n // A language tag is in 'canonical form' when the tag is well-formed\n // according to the rules in Sections 2.1 and 2.2\n\n // Section 2.1 says all subtags use lowercase...\n locale = locale.toLowerCase();\n\n // ...with 2 exceptions: 'two-letter and four-letter subtags that neither\n // appear at the start of the tag nor occur after singletons. Such two-letter\n // subtags are all uppercase (as in the tags \"en-CA-x-ca\" or \"sgn-BE-FR\") and\n // four-letter subtags are titlecase (as in the tag \"az-Latn-x-latn\").\n parts = locale.split('-');\n for (var i = 1, max = parts.length; i < max; i++) {\n // Two-letter subtags are all uppercase\n if (parts[i].length === 2) parts[i] = parts[i].toUpperCase();\n\n // Four-letter subtags are titlecase\n else if (parts[i].length === 4) parts[i] = parts[i].charAt(0).toUpperCase() + parts[i].slice(1);\n\n // Is it a singleton?\n else if (parts[i].length === 1 && parts[i] !== 'x') break;\n }\n locale = arrJoin.call(parts, '-');\n\n // The steps laid out in RFC 5646 section 4.5 are as follows:\n\n // 1. Extension sequences are ordered into case-insensitive ASCII order\n // by singleton subtag.\n if ((match = locale.match(expExtSequences)) && match.length > 1) {\n // The built-in sort() sorts by ASCII order, so use that\n match.sort();\n\n // Replace all extensions with the joined, sorted array\n locale = locale.replace(RegExp('(?:' + expExtSequences.source + ')+', 'i'), arrJoin.call(match, ''));\n }\n\n // 2. Redundant or grandfathered tags are replaced by their 'Preferred-\n // Value', if there is one.\n if (hop.call(redundantTags.tags, locale)) locale = redundantTags.tags[locale];\n\n // 3. Subtags are replaced by their 'Preferred-Value', if there is one.\n // For extlangs, the original primary language subtag is also\n // replaced if there is a primary language subtag in the 'Preferred-\n // Value'.\n parts = locale.split('-');\n\n for (var _i = 1, _max = parts.length; _i < _max; _i++) {\n if (hop.call(redundantTags.subtags, parts[_i])) parts[_i] = redundantTags.subtags[parts[_i]];else if (hop.call(redundantTags.extLang, parts[_i])) {\n parts[_i] = redundantTags.extLang[parts[_i]][0];\n\n // For extlang tags, the prefix needs to be removed if it is redundant\n if (_i === 1 && redundantTags.extLang[parts[1]][1] === parts[0]) {\n parts = arrSlice.call(parts, _i++);\n _max -= 1;\n }\n }\n }\n\n return arrJoin.call(parts, '-');\n}\n\n/**\n * The DefaultLocale abstract operation returns a String value representing the\n * structurally valid (6.2.2) and canonicalized (6.2.3) BCP 47 language tag for the\n * host environment’s current locale.\n */\nfunction /* 6.2.4 */DefaultLocale() {\n return defaultLocale;\n}\n\n// Sect 6.3 Currency Codes\n// =======================\n\nvar expCurrencyCode = /^[A-Z]{3}$/;\n\n/**\n * The IsWellFormedCurrencyCode abstract operation verifies that the currency argument\n * (after conversion to a String value) represents a well-formed 3-letter ISO currency\n * code. The following steps are taken:\n */\nfunction /* 6.3.1 */IsWellFormedCurrencyCode(currency) {\n // 1. Let `c` be ToString(currency)\n var c = String(currency);\n\n // 2. Let `normalized` be the result of mapping c to upper case as described\n // in 6.1.\n var normalized = toLatinUpperCase(c);\n\n // 3. If the string length of normalized is not 3, return false.\n // 4. If normalized contains any character that is not in the range \"A\" to \"Z\"\n // (U+0041 to U+005A), return false.\n if (expCurrencyCode.test(normalized) === false) return false;\n\n // 5. Return true\n return true;\n}\n\nvar expUnicodeExSeq = /-u(?:-[0-9a-z]{2,8})+/gi; // See `extension` below\n\nfunction /* 9.2.1 */CanonicalizeLocaleList(locales) {\n // The abstract operation CanonicalizeLocaleList takes the following steps:\n\n // 1. If locales is undefined, then a. Return a new empty List\n if (locales === undefined) return new List();\n\n // 2. Let seen be a new empty List.\n var seen = new List();\n\n // 3. If locales is a String value, then\n // a. Let locales be a new array created as if by the expression new\n // Array(locales) where Array is the standard built-in constructor with\n // that name and locales is the value of locales.\n locales = typeof locales === 'string' ? [locales] : locales;\n\n // 4. Let O be ToObject(locales).\n var O = toObject(locales);\n\n // 5. Let lenValue be the result of calling the [[Get]] internal method of\n // O with the argument \"length\".\n // 6. Let len be ToUint32(lenValue).\n var len = toLength(O.length);\n\n // 7. Let k be 0.\n var k = 0;\n\n // 8. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ToString(k).\n var Pk = String(k);\n\n // b. Let kPresent be the result of calling the [[HasProperty]] internal\n // method of O with argument Pk.\n var kPresent = Pk in O;\n\n // c. If kPresent is true, then\n if (kPresent) {\n // i. Let kValue be the result of calling the [[Get]] internal\n // method of O with argument Pk.\n var kValue = O[Pk];\n\n // ii. If the type of kValue is not String or Object, then throw a\n // TypeError exception.\n if (kValue === null || typeof kValue !== 'string' && (typeof kValue === \"undefined\" ? \"undefined\" : babelHelpers$1[\"typeof\"](kValue)) !== 'object') throw new TypeError('String or Object type expected');\n\n // iii. Let tag be ToString(kValue).\n var tag = String(kValue);\n\n // iv. If the result of calling the abstract operation\n // IsStructurallyValidLanguageTag (defined in 6.2.2), passing tag as\n // the argument, is false, then throw a RangeError exception.\n if (!IsStructurallyValidLanguageTag(tag)) throw new RangeError(\"'\" + tag + \"' is not a structurally valid language tag\");\n\n // v. Let tag be the result of calling the abstract operation\n // CanonicalizeLanguageTag (defined in 6.2.3), passing tag as the\n // argument.\n tag = CanonicalizeLanguageTag(tag);\n\n // vi. If tag is not an element of seen, then append tag as the last\n // element of seen.\n if (arrIndexOf.call(seen, tag) === -1) arrPush.call(seen, tag);\n }\n\n // d. Increase k by 1.\n k++;\n }\n\n // 9. Return seen.\n return seen;\n}\n\n/**\n * The BestAvailableLocale abstract operation compares the provided argument\n * locale, which must be a String value with a structurally valid and\n * canonicalized BCP 47 language tag, against the locales in availableLocales and\n * returns either the longest non-empty prefix of locale that is an element of\n * availableLocales, or undefined if there is no such element. It uses the\n * fallback mechanism of RFC 4647, section 3.4. The following steps are taken:\n */\nfunction /* 9.2.2 */BestAvailableLocale(availableLocales, locale) {\n // 1. Let candidate be locale\n var candidate = locale;\n\n // 2. Repeat\n while (candidate) {\n // a. If availableLocales contains an element equal to candidate, then return\n // candidate.\n if (arrIndexOf.call(availableLocales, candidate) > -1) return candidate;\n\n // b. Let pos be the character index of the last occurrence of \"-\"\n // (U+002D) within candidate. If that character does not occur, return\n // undefined.\n var pos = candidate.lastIndexOf('-');\n\n if (pos < 0) return;\n\n // c. If pos ≥ 2 and the character \"-\" occurs at index pos-2 of candidate,\n // then decrease pos by 2.\n if (pos >= 2 && candidate.charAt(pos - 2) === '-') pos -= 2;\n\n // d. Let candidate be the substring of candidate from position 0, inclusive,\n // to position pos, exclusive.\n candidate = candidate.substring(0, pos);\n }\n}\n\n/**\n * The LookupMatcher abstract operation compares requestedLocales, which must be\n * a List as returned by CanonicalizeLocaleList, against the locales in\n * availableLocales and determines the best available language to meet the\n * request. The following steps are taken:\n */\nfunction /* 9.2.3 */LookupMatcher(availableLocales, requestedLocales) {\n // 1. Let i be 0.\n var i = 0;\n\n // 2. Let len be the number of elements in requestedLocales.\n var len = requestedLocales.length;\n\n // 3. Let availableLocale be undefined.\n var availableLocale = void 0;\n\n var locale = void 0,\n noExtensionsLocale = void 0;\n\n // 4. Repeat while i < len and availableLocale is undefined:\n while (i < len && !availableLocale) {\n // a. Let locale be the element of requestedLocales at 0-origined list\n // position i.\n locale = requestedLocales[i];\n\n // b. Let noExtensionsLocale be the String value that is locale with all\n // Unicode locale extension sequences removed.\n noExtensionsLocale = String(locale).replace(expUnicodeExSeq, '');\n\n // c. Let availableLocale be the result of calling the\n // BestAvailableLocale abstract operation (defined in 9.2.2) with\n // arguments availableLocales and noExtensionsLocale.\n availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale);\n\n // d. Increase i by 1.\n i++;\n }\n\n // 5. Let result be a new Record.\n var result = new Record();\n\n // 6. If availableLocale is not undefined, then\n if (availableLocale !== undefined) {\n // a. Set result.[[locale]] to availableLocale.\n result['[[locale]]'] = availableLocale;\n\n // b. If locale and noExtensionsLocale are not the same String value, then\n if (String(locale) !== String(noExtensionsLocale)) {\n // i. Let extension be the String value consisting of the first\n // substring of locale that is a Unicode locale extension sequence.\n var extension = locale.match(expUnicodeExSeq)[0];\n\n // ii. Let extensionIndex be the character position of the initial\n // \"-\" of the first Unicode locale extension sequence within locale.\n var extensionIndex = locale.indexOf('-u-');\n\n // iii. Set result.[[extension]] to extension.\n result['[[extension]]'] = extension;\n\n // iv. Set result.[[extensionIndex]] to extensionIndex.\n result['[[extensionIndex]]'] = extensionIndex;\n }\n }\n // 7. Else\n else\n // a. Set result.[[locale]] to the value returned by the DefaultLocale abstract\n // operation (defined in 6.2.4).\n result['[[locale]]'] = DefaultLocale();\n\n // 8. Return result\n return result;\n}\n\n/**\n * The BestFitMatcher abstract operation compares requestedLocales, which must be\n * a List as returned by CanonicalizeLocaleList, against the locales in\n * availableLocales and determines the best available language to meet the\n * request. The algorithm is implementation dependent, but should produce results\n * that a typical user of the requested locales would perceive as at least as\n * good as those produced by the LookupMatcher abstract operation. Options\n * specified through Unicode locale extension sequences must be ignored by the\n * algorithm. Information about such subsequences is returned separately.\n * The abstract operation returns a record with a [[locale]] field, whose value\n * is the language tag of the selected locale, which must be an element of\n * availableLocales. If the language tag of the request locale that led to the\n * selected locale contained a Unicode locale extension sequence, then the\n * returned record also contains an [[extension]] field whose value is the first\n * Unicode locale extension sequence, and an [[extensionIndex]] field whose value\n * is the index of the first Unicode locale extension sequence within the request\n * locale language tag.\n */\nfunction /* 9.2.4 */BestFitMatcher(availableLocales, requestedLocales) {\n return LookupMatcher(availableLocales, requestedLocales);\n}\n\n/**\n * The ResolveLocale abstract operation compares a BCP 47 language priority list\n * requestedLocales against the locales in availableLocales and determines the\n * best available language to meet the request. availableLocales and\n * requestedLocales must be provided as List values, options as a Record.\n */\nfunction /* 9.2.5 */ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData) {\n if (availableLocales.length === 0) {\n throw new ReferenceError('No locale data has been provided for this object yet.');\n }\n\n // The following steps are taken:\n // 1. Let matcher be the value of options.[[localeMatcher]].\n var matcher = options['[[localeMatcher]]'];\n\n var r = void 0;\n\n // 2. If matcher is \"lookup\", then\n if (matcher === 'lookup')\n // a. Let r be the result of calling the LookupMatcher abstract operation\n // (defined in 9.2.3) with arguments availableLocales and\n // requestedLocales.\n r = LookupMatcher(availableLocales, requestedLocales);\n\n // 3. Else\n else\n // a. Let r be the result of calling the BestFitMatcher abstract\n // operation (defined in 9.2.4) with arguments availableLocales and\n // requestedLocales.\n r = BestFitMatcher(availableLocales, requestedLocales);\n\n // 4. Let foundLocale be the value of r.[[locale]].\n var foundLocale = r['[[locale]]'];\n\n var extensionSubtags = void 0,\n extensionSubtagsLength = void 0;\n\n // 5. If r has an [[extension]] field, then\n if (hop.call(r, '[[extension]]')) {\n // a. Let extension be the value of r.[[extension]].\n var extension = r['[[extension]]'];\n // b. Let split be the standard built-in function object defined in ES5,\n // 15.5.4.14.\n var split = String.prototype.split;\n // c. Let extensionSubtags be the result of calling the [[Call]] internal\n // method of split with extension as the this value and an argument\n // list containing the single item \"-\".\n extensionSubtags = split.call(extension, '-');\n // d. Let extensionSubtagsLength be the result of calling the [[Get]]\n // internal method of extensionSubtags with argument \"length\".\n extensionSubtagsLength = extensionSubtags.length;\n }\n\n // 6. Let result be a new Record.\n var result = new Record();\n\n // 7. Set result.[[dataLocale]] to foundLocale.\n result['[[dataLocale]]'] = foundLocale;\n\n // 8. Let supportedExtension be \"-u\".\n var supportedExtension = '-u';\n // 9. Let i be 0.\n var i = 0;\n // 10. Let len be the result of calling the [[Get]] internal method of\n // relevantExtensionKeys with argument \"length\".\n var len = relevantExtensionKeys.length;\n\n // 11 Repeat while i < len:\n while (i < len) {\n // a. Let key be the result of calling the [[Get]] internal method of\n // relevantExtensionKeys with argument ToString(i).\n var key = relevantExtensionKeys[i];\n // b. Let foundLocaleData be the result of calling the [[Get]] internal\n // method of localeData with the argument foundLocale.\n var foundLocaleData = localeData[foundLocale];\n // c. Let keyLocaleData be the result of calling the [[Get]] internal\n // method of foundLocaleData with the argument key.\n var keyLocaleData = foundLocaleData[key];\n // d. Let value be the result of calling the [[Get]] internal method of\n // keyLocaleData with argument \"0\".\n var value = keyLocaleData['0'];\n // e. Let supportedExtensionAddition be \"\".\n var supportedExtensionAddition = '';\n // f. Let indexOf be the standard built-in function object defined in\n // ES5, 15.4.4.14.\n var indexOf = arrIndexOf;\n\n // g. If extensionSubtags is not undefined, then\n if (extensionSubtags !== undefined) {\n // i. Let keyPos be the result of calling the [[Call]] internal\n // method of indexOf with extensionSubtags as the this value and\n // an argument list containing the single item key.\n var keyPos = indexOf.call(extensionSubtags, key);\n\n // ii. If keyPos ≠ -1, then\n if (keyPos !== -1) {\n // 1. If keyPos + 1 < extensionSubtagsLength and the length of the\n // result of calling the [[Get]] internal method of\n // extensionSubtags with argument ToString(keyPos +1) is greater\n // than 2, then\n if (keyPos + 1 < extensionSubtagsLength && extensionSubtags[keyPos + 1].length > 2) {\n // a. Let requestedValue be the result of calling the [[Get]]\n // internal method of extensionSubtags with argument\n // ToString(keyPos + 1).\n var requestedValue = extensionSubtags[keyPos + 1];\n // b. Let valuePos be the result of calling the [[Call]]\n // internal method of indexOf with keyLocaleData as the\n // this value and an argument list containing the single\n // item requestedValue.\n var valuePos = indexOf.call(keyLocaleData, requestedValue);\n\n // c. If valuePos ≠ -1, then\n if (valuePos !== -1) {\n // i. Let value be requestedValue.\n value = requestedValue,\n // ii. Let supportedExtensionAddition be the\n // concatenation of \"-\", key, \"-\", and value.\n supportedExtensionAddition = '-' + key + '-' + value;\n }\n }\n // 2. Else\n else {\n // a. Let valuePos be the result of calling the [[Call]]\n // internal method of indexOf with keyLocaleData as the this\n // value and an argument list containing the single item\n // \"true\".\n var _valuePos = indexOf(keyLocaleData, 'true');\n\n // b. If valuePos ≠ -1, then\n if (_valuePos !== -1)\n // i. Let value be \"true\".\n value = 'true';\n }\n }\n }\n // h. If options has a field [[]], then\n if (hop.call(options, '[[' + key + ']]')) {\n // i. Let optionsValue be the value of options.[[]].\n var optionsValue = options['[[' + key + ']]'];\n\n // ii. If the result of calling the [[Call]] internal method of indexOf\n // with keyLocaleData as the this value and an argument list\n // containing the single item optionsValue is not -1, then\n if (indexOf.call(keyLocaleData, optionsValue) !== -1) {\n // 1. If optionsValue is not equal to value, then\n if (optionsValue !== value) {\n // a. Let value be optionsValue.\n value = optionsValue;\n // b. Let supportedExtensionAddition be \"\".\n supportedExtensionAddition = '';\n }\n }\n }\n // i. Set result.[[]] to value.\n result['[[' + key + ']]'] = value;\n\n // j. Append supportedExtensionAddition to supportedExtension.\n supportedExtension += supportedExtensionAddition;\n\n // k. Increase i by 1.\n i++;\n }\n // 12. If the length of supportedExtension is greater than 2, then\n if (supportedExtension.length > 2) {\n // a.\n var privateIndex = foundLocale.indexOf(\"-x-\");\n // b.\n if (privateIndex === -1) {\n // i.\n foundLocale = foundLocale + supportedExtension;\n }\n // c.\n else {\n // i.\n var preExtension = foundLocale.substring(0, privateIndex);\n // ii.\n var postExtension = foundLocale.substring(privateIndex);\n // iii.\n foundLocale = preExtension + supportedExtension + postExtension;\n }\n // d. asserting - skipping\n // e.\n foundLocale = CanonicalizeLanguageTag(foundLocale);\n }\n // 13. Set result.[[locale]] to foundLocale.\n result['[[locale]]'] = foundLocale;\n\n // 14. Return result.\n return result;\n}\n\n/**\n * The LookupSupportedLocales abstract operation returns the subset of the\n * provided BCP 47 language priority list requestedLocales for which\n * availableLocales has a matching locale when using the BCP 47 Lookup algorithm.\n * Locales appear in the same order in the returned list as in requestedLocales.\n * The following steps are taken:\n */\nfunction /* 9.2.6 */LookupSupportedLocales(availableLocales, requestedLocales) {\n // 1. Let len be the number of elements in requestedLocales.\n var len = requestedLocales.length;\n // 2. Let subset be a new empty List.\n var subset = new List();\n // 3. Let k be 0.\n var k = 0;\n\n // 4. Repeat while k < len\n while (k < len) {\n // a. Let locale be the element of requestedLocales at 0-origined list\n // position k.\n var locale = requestedLocales[k];\n // b. Let noExtensionsLocale be the String value that is locale with all\n // Unicode locale extension sequences removed.\n var noExtensionsLocale = String(locale).replace(expUnicodeExSeq, '');\n // c. Let availableLocale be the result of calling the\n // BestAvailableLocale abstract operation (defined in 9.2.2) with\n // arguments availableLocales and noExtensionsLocale.\n var availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale);\n\n // d. If availableLocale is not undefined, then append locale to the end of\n // subset.\n if (availableLocale !== undefined) arrPush.call(subset, locale);\n\n // e. Increment k by 1.\n k++;\n }\n\n // 5. Let subsetArray be a new Array object whose elements are the same\n // values in the same order as the elements of subset.\n var subsetArray = arrSlice.call(subset);\n\n // 6. Return subsetArray.\n return subsetArray;\n}\n\n/**\n * The BestFitSupportedLocales abstract operation returns the subset of the\n * provided BCP 47 language priority list requestedLocales for which\n * availableLocales has a matching locale when using the Best Fit Matcher\n * algorithm. Locales appear in the same order in the returned list as in\n * requestedLocales. The steps taken are implementation dependent.\n */\nfunction /*9.2.7 */BestFitSupportedLocales(availableLocales, requestedLocales) {\n // ###TODO: implement this function as described by the specification###\n return LookupSupportedLocales(availableLocales, requestedLocales);\n}\n\n/**\n * The SupportedLocales abstract operation returns the subset of the provided BCP\n * 47 language priority list requestedLocales for which availableLocales has a\n * matching locale. Two algorithms are available to match the locales: the Lookup\n * algorithm described in RFC 4647 section 3.4, and an implementation dependent\n * best-fit algorithm. Locales appear in the same order in the returned list as\n * in requestedLocales. The following steps are taken:\n */\nfunction /*9.2.8 */SupportedLocales(availableLocales, requestedLocales, options) {\n var matcher = void 0,\n subset = void 0;\n\n // 1. If options is not undefined, then\n if (options !== undefined) {\n // a. Let options be ToObject(options).\n options = new Record(toObject(options));\n // b. Let matcher be the result of calling the [[Get]] internal method of\n // options with argument \"localeMatcher\".\n matcher = options.localeMatcher;\n\n // c. If matcher is not undefined, then\n if (matcher !== undefined) {\n // i. Let matcher be ToString(matcher).\n matcher = String(matcher);\n\n // ii. If matcher is not \"lookup\" or \"best fit\", then throw a RangeError\n // exception.\n if (matcher !== 'lookup' && matcher !== 'best fit') throw new RangeError('matcher should be \"lookup\" or \"best fit\"');\n }\n }\n // 2. If matcher is undefined or \"best fit\", then\n if (matcher === undefined || matcher === 'best fit')\n // a. Let subset be the result of calling the BestFitSupportedLocales\n // abstract operation (defined in 9.2.7) with arguments\n // availableLocales and requestedLocales.\n subset = BestFitSupportedLocales(availableLocales, requestedLocales);\n // 3. Else\n else\n // a. Let subset be the result of calling the LookupSupportedLocales\n // abstract operation (defined in 9.2.6) with arguments\n // availableLocales and requestedLocales.\n subset = LookupSupportedLocales(availableLocales, requestedLocales);\n\n // 4. For each named own property name P of subset,\n for (var P in subset) {\n if (!hop.call(subset, P)) continue;\n\n // a. Let desc be the result of calling the [[GetOwnProperty]] internal\n // method of subset with P.\n // b. Set desc.[[Writable]] to false.\n // c. Set desc.[[Configurable]] to false.\n // d. Call the [[DefineOwnProperty]] internal method of subset with P, desc,\n // and true as arguments.\n defineProperty(subset, P, {\n writable: false, configurable: false, value: subset[P]\n });\n }\n // \"Freeze\" the array so no new elements can be added\n defineProperty(subset, 'length', { writable: false });\n\n // 5. Return subset\n return subset;\n}\n\n/**\n * The GetOption abstract operation extracts the value of the property named\n * property from the provided options object, converts it to the required type,\n * checks whether it is one of a List of allowed values, and fills in a fallback\n * value if necessary.\n */\nfunction /*9.2.9 */GetOption(options, property, type, values, fallback) {\n // 1. Let value be the result of calling the [[Get]] internal method of\n // options with argument property.\n var value = options[property];\n\n // 2. If value is not undefined, then\n if (value !== undefined) {\n // a. Assert: type is \"boolean\" or \"string\".\n // b. If type is \"boolean\", then let value be ToBoolean(value).\n // c. If type is \"string\", then let value be ToString(value).\n value = type === 'boolean' ? Boolean(value) : type === 'string' ? String(value) : value;\n\n // d. If values is not undefined, then\n if (values !== undefined) {\n // i. If values does not contain an element equal to value, then throw a\n // RangeError exception.\n if (arrIndexOf.call(values, value) === -1) throw new RangeError(\"'\" + value + \"' is not an allowed value for `\" + property + '`');\n }\n\n // e. Return value.\n return value;\n }\n // Else return fallback.\n return fallback;\n}\n\n/**\n * The GetNumberOption abstract operation extracts a property value from the\n * provided options object, converts it to a Number value, checks whether it is\n * in the allowed range, and fills in a fallback value if necessary.\n */\nfunction /* 9.2.10 */GetNumberOption(options, property, minimum, maximum, fallback) {\n // 1. Let value be the result of calling the [[Get]] internal method of\n // options with argument property.\n var value = options[property];\n\n // 2. If value is not undefined, then\n if (value !== undefined) {\n // a. Let value be ToNumber(value).\n value = Number(value);\n\n // b. If value is NaN or less than minimum or greater than maximum, throw a\n // RangeError exception.\n if (isNaN(value) || value < minimum || value > maximum) throw new RangeError('Value is not a number or outside accepted range');\n\n // c. Return floor(value).\n return Math.floor(value);\n }\n // 3. Else return fallback.\n return fallback;\n}\n\n// 8 The Intl Object\nvar Intl = {};\n\n// 8.2 Function Properties of the Intl Object\n\n// 8.2.1\n// @spec[tc39/ecma402/master/spec/intl.html]\n// @clause[sec-intl.getcanonicallocales]\nfunction getCanonicalLocales(locales) {\n // 1. Let ll be ? CanonicalizeLocaleList(locales).\n var ll = CanonicalizeLocaleList(locales);\n // 2. Return CreateArrayFromList(ll).\n {\n var result = [];\n\n var len = ll.length;\n var k = 0;\n\n while (k < len) {\n result[k] = ll[k];\n k++;\n }\n return result;\n }\n}\n\nObject.defineProperty(Intl, 'getCanonicalLocales', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: getCanonicalLocales\n});\n\n// Currency minor units output from get-4217 grunt task, formatted\nvar currencyMinorUnits = {\n BHD: 3, BYR: 0, XOF: 0, BIF: 0, XAF: 0, CLF: 4, CLP: 0, KMF: 0, DJF: 0,\n XPF: 0, GNF: 0, ISK: 0, IQD: 3, JPY: 0, JOD: 3, KRW: 0, KWD: 3, LYD: 3,\n OMR: 3, PYG: 0, RWF: 0, TND: 3, UGX: 0, UYI: 0, VUV: 0, VND: 0\n};\n\n// Define the NumberFormat constructor internally so it cannot be tainted\nfunction NumberFormatConstructor() {\n var locales = arguments[0];\n var options = arguments[1];\n\n if (!this || this === Intl) {\n return new Intl.NumberFormat(locales, options);\n }\n\n return InitializeNumberFormat(toObject(this), locales, options);\n}\n\ndefineProperty(Intl, 'NumberFormat', {\n configurable: true,\n writable: true,\n value: NumberFormatConstructor\n});\n\n// Must explicitly set prototypes as unwritable\ndefineProperty(Intl.NumberFormat, 'prototype', {\n writable: false\n});\n\n/**\n * The abstract operation InitializeNumberFormat accepts the arguments\n * numberFormat (which must be an object), locales, and options. It initializes\n * numberFormat as a NumberFormat object.\n */\nfunction /*11.1.1.1 */InitializeNumberFormat(numberFormat, locales, options) {\n // This will be a internal properties object if we're not already initialized\n var internal = getInternalProperties(numberFormat);\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore();\n\n // 1. If numberFormat has an [[initializedIntlObject]] internal property with\n // value true, throw a TypeError exception.\n if (internal['[[initializedIntlObject]]'] === true) throw new TypeError('`this` object has already been initialized as an Intl object');\n\n // Need this to access the `internal` object\n defineProperty(numberFormat, '__getInternalProperties', {\n value: function value() {\n // NOTE: Non-standard, for internal use only\n if (arguments[0] === secret) return internal;\n }\n });\n\n // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true.\n internal['[[initializedIntlObject]]'] = true;\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n var requestedLocales = CanonicalizeLocaleList(locales);\n\n // 4. If options is undefined, then\n if (options === undefined)\n // a. Let options be the result of creating a new object as if by the\n // expression new Object() where Object is the standard built-in constructor\n // with that name.\n options = {};\n\n // 5. Else\n else\n // a. Let options be ToObject(options).\n options = toObject(options);\n\n // 6. Let opt be a new Record.\n var opt = new Record(),\n\n\n // 7. Let matcher be the result of calling the GetOption abstract operation\n // (defined in 9.2.9) with the arguments options, \"localeMatcher\", \"string\",\n // a List containing the two String values \"lookup\" and \"best fit\", and\n // \"best fit\".\n matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit');\n\n // 8. Set opt.[[localeMatcher]] to matcher.\n opt['[[localeMatcher]]'] = matcher;\n\n // 9. Let NumberFormat be the standard built-in object that is the initial value\n // of Intl.NumberFormat.\n // 10. Let localeData be the value of the [[localeData]] internal property of\n // NumberFormat.\n var localeData = internals.NumberFormat['[[localeData]]'];\n\n // 11. Let r be the result of calling the ResolveLocale abstract operation\n // (defined in 9.2.5) with the [[availableLocales]] internal property of\n // NumberFormat, requestedLocales, opt, the [[relevantExtensionKeys]]\n // internal property of NumberFormat, and localeData.\n var r = ResolveLocale(internals.NumberFormat['[[availableLocales]]'], requestedLocales, opt, internals.NumberFormat['[[relevantExtensionKeys]]'], localeData);\n\n // 12. Set the [[locale]] internal property of numberFormat to the value of\n // r.[[locale]].\n internal['[[locale]]'] = r['[[locale]]'];\n\n // 13. Set the [[numberingSystem]] internal property of numberFormat to the value\n // of r.[[nu]].\n internal['[[numberingSystem]]'] = r['[[nu]]'];\n\n // The specification doesn't tell us to do this, but it's helpful later on\n internal['[[dataLocale]]'] = r['[[dataLocale]]'];\n\n // 14. Let dataLocale be the value of r.[[dataLocale]].\n var dataLocale = r['[[dataLocale]]'];\n\n // 15. Let s be the result of calling the GetOption abstract operation with the\n // arguments options, \"style\", \"string\", a List containing the three String\n // values \"decimal\", \"percent\", and \"currency\", and \"decimal\".\n var s = GetOption(options, 'style', 'string', new List('decimal', 'percent', 'currency'), 'decimal');\n\n // 16. Set the [[style]] internal property of numberFormat to s.\n internal['[[style]]'] = s;\n\n // 17. Let c be the result of calling the GetOption abstract operation with the\n // arguments options, \"currency\", \"string\", undefined, and undefined.\n var c = GetOption(options, 'currency', 'string');\n\n // 18. If c is not undefined and the result of calling the\n // IsWellFormedCurrencyCode abstract operation (defined in 6.3.1) with\n // argument c is false, then throw a RangeError exception.\n if (c !== undefined && !IsWellFormedCurrencyCode(c)) throw new RangeError(\"'\" + c + \"' is not a valid currency code\");\n\n // 19. If s is \"currency\" and c is undefined, throw a TypeError exception.\n if (s === 'currency' && c === undefined) throw new TypeError('Currency code is required when style is currency');\n\n var cDigits = void 0;\n\n // 20. If s is \"currency\", then\n if (s === 'currency') {\n // a. Let c be the result of converting c to upper case as specified in 6.1.\n c = c.toUpperCase();\n\n // b. Set the [[currency]] internal property of numberFormat to c.\n internal['[[currency]]'] = c;\n\n // c. Let cDigits be the result of calling the CurrencyDigits abstract\n // operation (defined below) with argument c.\n cDigits = CurrencyDigits(c);\n }\n\n // 21. Let cd be the result of calling the GetOption abstract operation with the\n // arguments options, \"currencyDisplay\", \"string\", a List containing the\n // three String values \"code\", \"symbol\", and \"name\", and \"symbol\".\n var cd = GetOption(options, 'currencyDisplay', 'string', new List('code', 'symbol', 'name'), 'symbol');\n\n // 22. If s is \"currency\", then set the [[currencyDisplay]] internal property of\n // numberFormat to cd.\n if (s === 'currency') internal['[[currencyDisplay]]'] = cd;\n\n // 23. Let mnid be the result of calling the GetNumberOption abstract operation\n // (defined in 9.2.10) with arguments options, \"minimumIntegerDigits\", 1, 21,\n // and 1.\n var mnid = GetNumberOption(options, 'minimumIntegerDigits', 1, 21, 1);\n\n // 24. Set the [[minimumIntegerDigits]] internal property of numberFormat to mnid.\n internal['[[minimumIntegerDigits]]'] = mnid;\n\n // 25. If s is \"currency\", then let mnfdDefault be cDigits; else let mnfdDefault\n // be 0.\n var mnfdDefault = s === 'currency' ? cDigits : 0;\n\n // 26. Let mnfd be the result of calling the GetNumberOption abstract operation\n // with arguments options, \"minimumFractionDigits\", 0, 20, and mnfdDefault.\n var mnfd = GetNumberOption(options, 'minimumFractionDigits', 0, 20, mnfdDefault);\n\n // 27. Set the [[minimumFractionDigits]] internal property of numberFormat to mnfd.\n internal['[[minimumFractionDigits]]'] = mnfd;\n\n // 28. If s is \"currency\", then let mxfdDefault be max(mnfd, cDigits); else if s\n // is \"percent\", then let mxfdDefault be max(mnfd, 0); else let mxfdDefault\n // be max(mnfd, 3).\n var mxfdDefault = s === 'currency' ? Math.max(mnfd, cDigits) : s === 'percent' ? Math.max(mnfd, 0) : Math.max(mnfd, 3);\n\n // 29. Let mxfd be the result of calling the GetNumberOption abstract operation\n // with arguments options, \"maximumFractionDigits\", mnfd, 20, and mxfdDefault.\n var mxfd = GetNumberOption(options, 'maximumFractionDigits', mnfd, 20, mxfdDefault);\n\n // 30. Set the [[maximumFractionDigits]] internal property of numberFormat to mxfd.\n internal['[[maximumFractionDigits]]'] = mxfd;\n\n // 31. Let mnsd be the result of calling the [[Get]] internal method of options\n // with argument \"minimumSignificantDigits\".\n var mnsd = options.minimumSignificantDigits;\n\n // 32. Let mxsd be the result of calling the [[Get]] internal method of options\n // with argument \"maximumSignificantDigits\".\n var mxsd = options.maximumSignificantDigits;\n\n // 33. If mnsd is not undefined or mxsd is not undefined, then:\n if (mnsd !== undefined || mxsd !== undefined) {\n // a. Let mnsd be the result of calling the GetNumberOption abstract\n // operation with arguments options, \"minimumSignificantDigits\", 1, 21,\n // and 1.\n mnsd = GetNumberOption(options, 'minimumSignificantDigits', 1, 21, 1);\n\n // b. Let mxsd be the result of calling the GetNumberOption abstract\n // operation with arguments options, \"maximumSignificantDigits\", mnsd,\n // 21, and 21.\n mxsd = GetNumberOption(options, 'maximumSignificantDigits', mnsd, 21, 21);\n\n // c. Set the [[minimumSignificantDigits]] internal property of numberFormat\n // to mnsd, and the [[maximumSignificantDigits]] internal property of\n // numberFormat to mxsd.\n internal['[[minimumSignificantDigits]]'] = mnsd;\n internal['[[maximumSignificantDigits]]'] = mxsd;\n }\n // 34. Let g be the result of calling the GetOption abstract operation with the\n // arguments options, \"useGrouping\", \"boolean\", undefined, and true.\n var g = GetOption(options, 'useGrouping', 'boolean', undefined, true);\n\n // 35. Set the [[useGrouping]] internal property of numberFormat to g.\n internal['[[useGrouping]]'] = g;\n\n // 36. Let dataLocaleData be the result of calling the [[Get]] internal method of\n // localeData with argument dataLocale.\n var dataLocaleData = localeData[dataLocale];\n\n // 37. Let patterns be the result of calling the [[Get]] internal method of\n // dataLocaleData with argument \"patterns\".\n var patterns = dataLocaleData.patterns;\n\n // 38. Assert: patterns is an object (see 11.2.3)\n\n // 39. Let stylePatterns be the result of calling the [[Get]] internal method of\n // patterns with argument s.\n var stylePatterns = patterns[s];\n\n // 40. Set the [[positivePattern]] internal property of numberFormat to the\n // result of calling the [[Get]] internal method of stylePatterns with the\n // argument \"positivePattern\".\n internal['[[positivePattern]]'] = stylePatterns.positivePattern;\n\n // 41. Set the [[negativePattern]] internal property of numberFormat to the\n // result of calling the [[Get]] internal method of stylePatterns with the\n // argument \"negativePattern\".\n internal['[[negativePattern]]'] = stylePatterns.negativePattern;\n\n // 42. Set the [[boundFormat]] internal property of numberFormat to undefined.\n internal['[[boundFormat]]'] = undefined;\n\n // 43. Set the [[initializedNumberFormat]] internal property of numberFormat to\n // true.\n internal['[[initializedNumberFormat]]'] = true;\n\n // In ES3, we need to pre-bind the format() function\n if (es3) numberFormat.format = GetFormatNumber.call(numberFormat);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // Return the newly initialised object\n return numberFormat;\n}\n\nfunction CurrencyDigits(currency) {\n // When the CurrencyDigits abstract operation is called with an argument currency\n // (which must be an upper case String value), the following steps are taken:\n\n // 1. If the ISO 4217 currency and funds code list contains currency as an\n // alphabetic code, then return the minor unit value corresponding to the\n // currency from the list; else return 2.\n return currencyMinorUnits[currency] !== undefined ? currencyMinorUnits[currency] : 2;\n}\n\n/* 11.2.3 */internals.NumberFormat = {\n '[[availableLocales]]': [],\n '[[relevantExtensionKeys]]': ['nu'],\n '[[localeData]]': {}\n};\n\n/**\n * When the supportedLocalesOf method of Intl.NumberFormat is called, the\n * following steps are taken:\n */\n/* 11.2.2 */\ndefineProperty(Intl.NumberFormat, 'supportedLocalesOf', {\n configurable: true,\n writable: true,\n value: fnBind.call(function (locales) {\n // Bound functions only have the `this` value altered if being used as a constructor,\n // this lets us imitate a native function that has no constructor\n if (!hop.call(this, '[[availableLocales]]')) throw new TypeError('supportedLocalesOf() is not a constructor');\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore(),\n\n\n // 1. If options is not provided, then let options be undefined.\n options = arguments[1],\n\n\n // 2. Let availableLocales be the value of the [[availableLocales]] internal\n // property of the standard built-in object that is the initial value of\n // Intl.NumberFormat.\n\n availableLocales = this['[[availableLocales]]'],\n\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n requestedLocales = CanonicalizeLocaleList(locales);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // 4. Return the result of calling the SupportedLocales abstract operation\n // (defined in 9.2.8) with arguments availableLocales, requestedLocales,\n // and options.\n return SupportedLocales(availableLocales, requestedLocales, options);\n }, internals.NumberFormat)\n});\n\n/**\n * This named accessor property returns a function that formats a number\n * according to the effective locale and the formatting options of this\n * NumberFormat object.\n */\n/* 11.3.2 */defineProperty(Intl.NumberFormat.prototype, 'format', {\n configurable: true,\n get: GetFormatNumber\n});\n\nfunction GetFormatNumber() {\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 11.3_b\n if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for format() is not an initialized Intl.NumberFormat object.');\n\n // The value of the [[Get]] attribute is a function that takes the following\n // steps:\n\n // 1. If the [[boundFormat]] internal property of this NumberFormat object\n // is undefined, then:\n if (internal['[[boundFormat]]'] === undefined) {\n // a. Let F be a Function object, with internal properties set as\n // specified for built-in functions in ES5, 15, or successor, and the\n // length property set to 1, that takes the argument value and\n // performs the following steps:\n var F = function F(value) {\n // i. If value is not provided, then let value be undefined.\n // ii. Let x be ToNumber(value).\n // iii. Return the result of calling the FormatNumber abstract\n // operation (defined below) with arguments this and x.\n return FormatNumber(this, /* x = */Number(value));\n };\n\n // b. Let bind be the standard built-in function object defined in ES5,\n // 15.3.4.5.\n // c. Let bf be the result of calling the [[Call]] internal method of\n // bind with F as the this value and an argument list containing\n // the single item this.\n var bf = fnBind.call(F, this);\n\n // d. Set the [[boundFormat]] internal property of this NumberFormat\n // object to bf.\n internal['[[boundFormat]]'] = bf;\n }\n // Return the value of the [[boundFormat]] internal property of this\n // NumberFormat object.\n return internal['[[boundFormat]]'];\n}\n\nfunction formatToParts() {\n var value = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];\n\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for formatToParts() is not an initialized Intl.NumberFormat object.');\n\n var x = Number(value);\n return FormatNumberToParts(this, x);\n}\n\nObject.defineProperty(Intl.NumberFormat.prototype, 'formatToParts', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: formatToParts\n});\n\n/*\n * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html]\n * @clause[sec-formatnumbertoparts]\n */\nfunction FormatNumberToParts(numberFormat, x) {\n // 1. Let parts be ? PartitionNumberPattern(numberFormat, x).\n var parts = PartitionNumberPattern(numberFormat, x);\n // 2. Let result be ArrayCreate(0).\n var result = [];\n // 3. Let n be 0.\n var n = 0;\n // 4. For each part in parts, do:\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n // a. Let O be ObjectCreate(%ObjectPrototype%).\n var O = {};\n // a. Perform ? CreateDataPropertyOrThrow(O, \"type\", part.[[type]]).\n O.type = part['[[type]]'];\n // a. Perform ? CreateDataPropertyOrThrow(O, \"value\", part.[[value]]).\n O.value = part['[[value]]'];\n // a. Perform ? CreateDataPropertyOrThrow(result, ? ToString(n), O).\n result[n] = O;\n // a. Increment n by 1.\n n += 1;\n }\n // 5. Return result.\n return result;\n}\n\n/*\n * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html]\n * @clause[sec-partitionnumberpattern]\n */\nfunction PartitionNumberPattern(numberFormat, x) {\n\n var internal = getInternalProperties(numberFormat),\n locale = internal['[[dataLocale]]'],\n nums = internal['[[numberingSystem]]'],\n data = internals.NumberFormat['[[localeData]]'][locale],\n ild = data.symbols[nums] || data.symbols.latn,\n pattern = void 0;\n\n // 1. If x is not NaN and x < 0, then:\n if (!isNaN(x) && x < 0) {\n // a. Let x be -x.\n x = -x;\n // a. Let pattern be the value of numberFormat.[[negativePattern]].\n pattern = internal['[[negativePattern]]'];\n }\n // 2. Else,\n else {\n // a. Let pattern be the value of numberFormat.[[positivePattern]].\n pattern = internal['[[positivePattern]]'];\n }\n // 3. Let result be a new empty List.\n var result = new List();\n // 4. Let beginIndex be Call(%StringProto_indexOf%, pattern, \"{\", 0).\n var beginIndex = pattern.indexOf('{', 0);\n // 5. Let endIndex be 0.\n var endIndex = 0;\n // 6. Let nextIndex be 0.\n var nextIndex = 0;\n // 7. Let length be the number of code units in pattern.\n var length = pattern.length;\n // 8. Repeat while beginIndex is an integer index into pattern:\n while (beginIndex > -1 && beginIndex < length) {\n // a. Set endIndex to Call(%StringProto_indexOf%, pattern, \"}\", beginIndex)\n endIndex = pattern.indexOf('}', beginIndex);\n // a. If endIndex = -1, throw new Error exception.\n if (endIndex === -1) throw new Error();\n // a. If beginIndex is greater than nextIndex, then:\n if (beginIndex > nextIndex) {\n // i. Let literal be a substring of pattern from position nextIndex, inclusive, to position beginIndex, exclusive.\n var literal = pattern.substring(nextIndex, beginIndex);\n // ii. Add new part record { [[type]]: \"literal\", [[value]]: literal } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': literal });\n }\n // a. Let p be the substring of pattern from position beginIndex, exclusive, to position endIndex, exclusive.\n var p = pattern.substring(beginIndex + 1, endIndex);\n // a. If p is equal \"number\", then:\n if (p === \"number\") {\n // i. If x is NaN,\n if (isNaN(x)) {\n // 1. Let n be an ILD String value indicating the NaN value.\n var n = ild.nan;\n // 2. Add new part record { [[type]]: \"nan\", [[value]]: n } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'nan', '[[value]]': n });\n }\n // ii. Else if isFinite(x) is false,\n else if (!isFinite(x)) {\n // 1. Let n be an ILD String value indicating infinity.\n var _n = ild.infinity;\n // 2. Add new part record { [[type]]: \"infinity\", [[value]]: n } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'infinity', '[[value]]': _n });\n }\n // iii. Else,\n else {\n // 1. If the value of numberFormat.[[style]] is \"percent\" and isFinite(x), let x be 100 × x.\n if (internal['[[style]]'] === 'percent' && isFinite(x)) x *= 100;\n\n var _n2 = void 0;\n // 2. If the numberFormat.[[minimumSignificantDigits]] and numberFormat.[[maximumSignificantDigits]] are present, then\n if (hop.call(internal, '[[minimumSignificantDigits]]') && hop.call(internal, '[[maximumSignificantDigits]]')) {\n // a. Let n be ToRawPrecision(x, numberFormat.[[minimumSignificantDigits]], numberFormat.[[maximumSignificantDigits]]).\n _n2 = ToRawPrecision(x, internal['[[minimumSignificantDigits]]'], internal['[[maximumSignificantDigits]]']);\n }\n // 3. Else,\n else {\n // a. Let n be ToRawFixed(x, numberFormat.[[minimumIntegerDigits]], numberFormat.[[minimumFractionDigits]], numberFormat.[[maximumFractionDigits]]).\n _n2 = ToRawFixed(x, internal['[[minimumIntegerDigits]]'], internal['[[minimumFractionDigits]]'], internal['[[maximumFractionDigits]]']);\n }\n // 4. If the value of the numberFormat.[[numberingSystem]] matches one of the values in the \"Numbering System\" column of Table 2 below, then\n if (numSys[nums]) {\n (function () {\n // a. Let digits be an array whose 10 String valued elements are the UTF-16 string representations of the 10 digits specified in the \"Digits\" column of the matching row in Table 2.\n var digits = numSys[nums];\n // a. Replace each digit in n with the value of digits[digit].\n _n2 = String(_n2).replace(/\\d/g, function (digit) {\n return digits[digit];\n });\n })();\n }\n // 5. Else use an implementation dependent algorithm to map n to the appropriate representation of n in the given numbering system.\n else _n2 = String(_n2); // ###TODO###\n\n var integer = void 0;\n var fraction = void 0;\n // 6. Let decimalSepIndex be Call(%StringProto_indexOf%, n, \".\", 0).\n var decimalSepIndex = _n2.indexOf('.', 0);\n // 7. If decimalSepIndex > 0, then:\n if (decimalSepIndex > 0) {\n // a. Let integer be the substring of n from position 0, inclusive, to position decimalSepIndex, exclusive.\n integer = _n2.substring(0, decimalSepIndex);\n // a. Let fraction be the substring of n from position decimalSepIndex, exclusive, to the end of n.\n fraction = _n2.substring(decimalSepIndex + 1, decimalSepIndex.length);\n }\n // 8. Else:\n else {\n // a. Let integer be n.\n integer = _n2;\n // a. Let fraction be undefined.\n fraction = undefined;\n }\n // 9. If the value of the numberFormat.[[useGrouping]] is true,\n if (internal['[[useGrouping]]'] === true) {\n // a. Let groupSepSymbol be the ILND String representing the grouping separator.\n var groupSepSymbol = ild.group;\n // a. Let groups be a List whose elements are, in left to right order, the substrings defined by ILND set of locations within the integer.\n var groups = [];\n // ----> implementation:\n // Primary group represents the group closest to the decimal\n var pgSize = data.patterns.primaryGroupSize || 3;\n // Secondary group is every other group\n var sgSize = data.patterns.secondaryGroupSize || pgSize;\n // Group only if necessary\n if (integer.length > pgSize) {\n // Index of the primary grouping separator\n var end = integer.length - pgSize;\n // Starting index for our loop\n var idx = end % sgSize;\n var start = integer.slice(0, idx);\n if (start.length) arrPush.call(groups, start);\n // Loop to separate into secondary grouping digits\n while (idx < end) {\n arrPush.call(groups, integer.slice(idx, idx + sgSize));\n idx += sgSize;\n }\n // Add the primary grouping digits\n arrPush.call(groups, integer.slice(end));\n } else {\n arrPush.call(groups, integer);\n }\n // a. Assert: The number of elements in groups List is greater than 0.\n if (groups.length === 0) throw new Error();\n // a. Repeat, while groups List is not empty:\n while (groups.length) {\n // i. Remove the first element from groups and let integerGroup be the value of that element.\n var integerGroup = arrShift.call(groups);\n // ii. Add new part record { [[type]]: \"integer\", [[value]]: integerGroup } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'integer', '[[value]]': integerGroup });\n // iii. If groups List is not empty, then:\n if (groups.length) {\n // 1. Add new part record { [[type]]: \"group\", [[value]]: groupSepSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'group', '[[value]]': groupSepSymbol });\n }\n }\n }\n // 10. Else,\n else {\n // a. Add new part record { [[type]]: \"integer\", [[value]]: integer } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'integer', '[[value]]': integer });\n }\n // 11. If fraction is not undefined, then:\n if (fraction !== undefined) {\n // a. Let decimalSepSymbol be the ILND String representing the decimal separator.\n var decimalSepSymbol = ild.decimal;\n // a. Add new part record { [[type]]: \"decimal\", [[value]]: decimalSepSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'decimal', '[[value]]': decimalSepSymbol });\n // a. Add new part record { [[type]]: \"fraction\", [[value]]: fraction } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'fraction', '[[value]]': fraction });\n }\n }\n }\n // a. Else if p is equal \"plusSign\", then:\n else if (p === \"plusSign\") {\n // i. Let plusSignSymbol be the ILND String representing the plus sign.\n var plusSignSymbol = ild.plusSign;\n // ii. Add new part record { [[type]]: \"plusSign\", [[value]]: plusSignSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'plusSign', '[[value]]': plusSignSymbol });\n }\n // a. Else if p is equal \"minusSign\", then:\n else if (p === \"minusSign\") {\n // i. Let minusSignSymbol be the ILND String representing the minus sign.\n var minusSignSymbol = ild.minusSign;\n // ii. Add new part record { [[type]]: \"minusSign\", [[value]]: minusSignSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'minusSign', '[[value]]': minusSignSymbol });\n }\n // a. Else if p is equal \"percentSign\" and numberFormat.[[style]] is \"percent\", then:\n else if (p === \"percentSign\" && internal['[[style]]'] === \"percent\") {\n // i. Let percentSignSymbol be the ILND String representing the percent sign.\n var percentSignSymbol = ild.percentSign;\n // ii. Add new part record { [[type]]: \"percentSign\", [[value]]: percentSignSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': percentSignSymbol });\n }\n // a. Else if p is equal \"currency\" and numberFormat.[[style]] is \"currency\", then:\n else if (p === \"currency\" && internal['[[style]]'] === \"currency\") {\n // i. Let currency be the value of numberFormat.[[currency]].\n var currency = internal['[[currency]]'];\n\n var cd = void 0;\n\n // ii. If numberFormat.[[currencyDisplay]] is \"code\", then\n if (internal['[[currencyDisplay]]'] === \"code\") {\n // 1. Let cd be currency.\n cd = currency;\n }\n // iii. Else if numberFormat.[[currencyDisplay]] is \"symbol\", then\n else if (internal['[[currencyDisplay]]'] === \"symbol\") {\n // 1. Let cd be an ILD string representing currency in short form. If the implementation does not have such a representation of currency, use currency itself.\n cd = data.currencies[currency] || currency;\n }\n // iv. Else if numberFormat.[[currencyDisplay]] is \"name\", then\n else if (internal['[[currencyDisplay]]'] === \"name\") {\n // 1. Let cd be an ILD string representing currency in long form. If the implementation does not have such a representation of currency, then use currency itself.\n cd = currency;\n }\n // v. Add new part record { [[type]]: \"currency\", [[value]]: cd } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'currency', '[[value]]': cd });\n }\n // a. Else,\n else {\n // i. Let literal be the substring of pattern from position beginIndex, inclusive, to position endIndex, inclusive.\n var _literal = pattern.substring(beginIndex, endIndex);\n // ii. Add new part record { [[type]]: \"literal\", [[value]]: literal } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': _literal });\n }\n // a. Set nextIndex to endIndex + 1.\n nextIndex = endIndex + 1;\n // a. Set beginIndex to Call(%StringProto_indexOf%, pattern, \"{\", nextIndex)\n beginIndex = pattern.indexOf('{', nextIndex);\n }\n // 9. If nextIndex is less than length, then:\n if (nextIndex < length) {\n // a. Let literal be the substring of pattern from position nextIndex, inclusive, to position length, exclusive.\n var _literal2 = pattern.substring(nextIndex, length);\n // a. Add new part record { [[type]]: \"literal\", [[value]]: literal } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': _literal2 });\n }\n // 10. Return result.\n return result;\n}\n\n/*\n * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html]\n * @clause[sec-formatnumber]\n */\nfunction FormatNumber(numberFormat, x) {\n // 1. Let parts be ? PartitionNumberPattern(numberFormat, x).\n var parts = PartitionNumberPattern(numberFormat, x);\n // 2. Let result be an empty String.\n var result = '';\n // 3. For each part in parts, do:\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n // a. Set result to a String value produced by concatenating result and part.[[value]].\n result += part['[[value]]'];\n }\n // 4. Return result.\n return result;\n}\n\n/**\n * When the ToRawPrecision abstract operation is called with arguments x (which\n * must be a finite non-negative number), minPrecision, and maxPrecision (both\n * must be integers between 1 and 21) the following steps are taken:\n */\nfunction ToRawPrecision(x, minPrecision, maxPrecision) {\n // 1. Let p be maxPrecision.\n var p = maxPrecision;\n\n var m = void 0,\n e = void 0;\n\n // 2. If x = 0, then\n if (x === 0) {\n // a. Let m be the String consisting of p occurrences of the character \"0\".\n m = arrJoin.call(Array(p + 1), '0');\n // b. Let e be 0.\n e = 0;\n }\n // 3. Else\n else {\n // a. Let e and n be integers such that 10ᵖ⁻¹ ≤ n < 10ᵖ and for which the\n // exact mathematical value of n × 10ᵉ⁻ᵖ⁺¹ – x is as close to zero as\n // possible. If there are two such sets of e and n, pick the e and n for\n // which n × 10ᵉ⁻ᵖ⁺¹ is larger.\n e = log10Floor(Math.abs(x));\n\n // Easier to get to m from here\n var f = Math.round(Math.exp(Math.abs(e - p + 1) * Math.LN10));\n\n // b. Let m be the String consisting of the digits of the decimal\n // representation of n (in order, with no leading zeroes)\n m = String(Math.round(e - p + 1 < 0 ? x * f : x / f));\n }\n\n // 4. If e ≥ p, then\n if (e >= p)\n // a. Return the concatenation of m and e-p+1 occurrences of the character \"0\".\n return m + arrJoin.call(Array(e - p + 1 + 1), '0');\n\n // 5. If e = p-1, then\n else if (e === p - 1)\n // a. Return m.\n return m;\n\n // 6. If e ≥ 0, then\n else if (e >= 0)\n // a. Let m be the concatenation of the first e+1 characters of m, the character\n // \".\", and the remaining p–(e+1) characters of m.\n m = m.slice(0, e + 1) + '.' + m.slice(e + 1);\n\n // 7. If e < 0, then\n else if (e < 0)\n // a. Let m be the concatenation of the String \"0.\", –(e+1) occurrences of the\n // character \"0\", and the string m.\n m = '0.' + arrJoin.call(Array(-(e + 1) + 1), '0') + m;\n\n // 8. If m contains the character \".\", and maxPrecision > minPrecision, then\n if (m.indexOf(\".\") >= 0 && maxPrecision > minPrecision) {\n // a. Let cut be maxPrecision – minPrecision.\n var cut = maxPrecision - minPrecision;\n\n // b. Repeat while cut > 0 and the last character of m is \"0\":\n while (cut > 0 && m.charAt(m.length - 1) === '0') {\n // i. Remove the last character from m.\n m = m.slice(0, -1);\n\n // ii. Decrease cut by 1.\n cut--;\n }\n\n // c. If the last character of m is \".\", then\n if (m.charAt(m.length - 1) === '.')\n // i. Remove the last character from m.\n m = m.slice(0, -1);\n }\n // 9. Return m.\n return m;\n}\n\n/**\n * @spec[tc39/ecma402/master/spec/numberformat.html]\n * @clause[sec-torawfixed]\n * When the ToRawFixed abstract operation is called with arguments x (which must\n * be a finite non-negative number), minInteger (which must be an integer between\n * 1 and 21), minFraction, and maxFraction (which must be integers between 0 and\n * 20) the following steps are taken:\n */\nfunction ToRawFixed(x, minInteger, minFraction, maxFraction) {\n // 1. Let f be maxFraction.\n var f = maxFraction;\n // 2. Let n be an integer for which the exact mathematical value of n ÷ 10f – x is as close to zero as possible. If there are two such n, pick the larger n.\n var n = Math.pow(10, f) * x; // diverging...\n // 3. If n = 0, let m be the String \"0\". Otherwise, let m be the String consisting of the digits of the decimal representation of n (in order, with no leading zeroes).\n var m = n === 0 ? \"0\" : n.toFixed(0); // divering...\n\n {\n // this diversion is needed to take into consideration big numbers, e.g.:\n // 1.2344501e+37 -> 12344501000000000000000000000000000000\n var idx = void 0;\n var exp = (idx = m.indexOf('e')) > -1 ? m.slice(idx + 1) : 0;\n if (exp) {\n m = m.slice(0, idx).replace('.', '');\n m += arrJoin.call(Array(exp - (m.length - 1) + 1), '0');\n }\n }\n\n var int = void 0;\n // 4. If f ≠ 0, then\n if (f !== 0) {\n // a. Let k be the number of characters in m.\n var k = m.length;\n // a. If k ≤ f, then\n if (k <= f) {\n // i. Let z be the String consisting of f+1–k occurrences of the character \"0\".\n var z = arrJoin.call(Array(f + 1 - k + 1), '0');\n // ii. Let m be the concatenation of Strings z and m.\n m = z + m;\n // iii. Let k be f+1.\n k = f + 1;\n }\n // a. Let a be the first k–f characters of m, and let b be the remaining f characters of m.\n var a = m.substring(0, k - f),\n b = m.substring(k - f, m.length);\n // a. Let m be the concatenation of the three Strings a, \".\", and b.\n m = a + \".\" + b;\n // a. Let int be the number of characters in a.\n int = a.length;\n }\n // 5. Else, let int be the number of characters in m.\n else int = m.length;\n // 6. Let cut be maxFraction – minFraction.\n var cut = maxFraction - minFraction;\n // 7. Repeat while cut > 0 and the last character of m is \"0\":\n while (cut > 0 && m.slice(-1) === \"0\") {\n // a. Remove the last character from m.\n m = m.slice(0, -1);\n // a. Decrease cut by 1.\n cut--;\n }\n // 8. If the last character of m is \".\", then\n if (m.slice(-1) === \".\") {\n // a. Remove the last character from m.\n m = m.slice(0, -1);\n }\n // 9. If int < minInteger, then\n if (int < minInteger) {\n // a. Let z be the String consisting of minInteger–int occurrences of the character \"0\".\n var _z = arrJoin.call(Array(minInteger - int + 1), '0');\n // a. Let m be the concatenation of Strings z and m.\n m = _z + m;\n }\n // 10. Return m.\n return m;\n}\n\n// Sect 11.3.2 Table 2, Numbering systems\n// ======================================\nvar numSys = {\n arab: [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"],\n arabext: [\"۰\", \"۱\", \"۲\", \"۳\", \"۴\", \"۵\", \"۶\", \"۷\", \"۸\", \"۹\"],\n bali: [\"᭐\", \"᭑\", \"᭒\", \"᭓\", \"᭔\", \"᭕\", \"᭖\", \"᭗\", \"᭘\", \"᭙\"],\n beng: [\"০\", \"১\", \"২\", \"৩\", \"৪\", \"৫\", \"৬\", \"৭\", \"৮\", \"৯\"],\n deva: [\"०\", \"१\", \"२\", \"३\", \"४\", \"५\", \"६\", \"७\", \"८\", \"९\"],\n fullwide: [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n gujr: [\"૦\", \"૧\", \"૨\", \"૩\", \"૪\", \"૫\", \"૬\", \"૭\", \"૮\", \"૯\"],\n guru: [\"੦\", \"੧\", \"੨\", \"੩\", \"੪\", \"੫\", \"੬\", \"੭\", \"੮\", \"੯\"],\n hanidec: [\"〇\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"七\", \"八\", \"九\"],\n khmr: [\"០\", \"១\", \"២\", \"៣\", \"៤\", \"៥\", \"៦\", \"៧\", \"៨\", \"៩\"],\n knda: [\"೦\", \"೧\", \"೨\", \"೩\", \"೪\", \"೫\", \"೬\", \"೭\", \"೮\", \"೯\"],\n laoo: [\"໐\", \"໑\", \"໒\", \"໓\", \"໔\", \"໕\", \"໖\", \"໗\", \"໘\", \"໙\"],\n latn: [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n limb: [\"᥆\", \"᥇\", \"᥈\", \"᥉\", \"᥊\", \"᥋\", \"᥌\", \"᥍\", \"᥎\", \"᥏\"],\n mlym: [\"൦\", \"൧\", \"൨\", \"൩\", \"൪\", \"൫\", \"൬\", \"൭\", \"൮\", \"൯\"],\n mong: [\"᠐\", \"᠑\", \"᠒\", \"᠓\", \"᠔\", \"᠕\", \"᠖\", \"᠗\", \"᠘\", \"᠙\"],\n mymr: [\"၀\", \"၁\", \"၂\", \"၃\", \"၄\", \"၅\", \"၆\", \"၇\", \"၈\", \"၉\"],\n orya: [\"୦\", \"୧\", \"୨\", \"୩\", \"୪\", \"୫\", \"୬\", \"୭\", \"୮\", \"୯\"],\n tamldec: [\"௦\", \"௧\", \"௨\", \"௩\", \"௪\", \"௫\", \"௬\", \"௭\", \"௮\", \"௯\"],\n telu: [\"౦\", \"౧\", \"౨\", \"౩\", \"౪\", \"౫\", \"౬\", \"౭\", \"౮\", \"౯\"],\n thai: [\"๐\", \"๑\", \"๒\", \"๓\", \"๔\", \"๕\", \"๖\", \"๗\", \"๘\", \"๙\"],\n tibt: [\"༠\", \"༡\", \"༢\", \"༣\", \"༤\", \"༥\", \"༦\", \"༧\", \"༨\", \"༩\"]\n};\n\n/**\n * This function provides access to the locale and formatting options computed\n * during initialization of the object.\n *\n * The function returns a new object whose properties and attributes are set as\n * if constructed by an object literal assigning to each of the following\n * properties the value of the corresponding internal property of this\n * NumberFormat object (see 11.4): locale, numberingSystem, style, currency,\n * currencyDisplay, minimumIntegerDigits, minimumFractionDigits,\n * maximumFractionDigits, minimumSignificantDigits, maximumSignificantDigits, and\n * useGrouping. Properties whose corresponding internal properties are not present\n * are not assigned.\n */\n/* 11.3.3 */defineProperty(Intl.NumberFormat.prototype, 'resolvedOptions', {\n configurable: true,\n writable: true,\n value: function value() {\n var prop = void 0,\n descs = new Record(),\n props = ['locale', 'numberingSystem', 'style', 'currency', 'currencyDisplay', 'minimumIntegerDigits', 'minimumFractionDigits', 'maximumFractionDigits', 'minimumSignificantDigits', 'maximumSignificantDigits', 'useGrouping'],\n internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 11.3_b\n if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.NumberFormat object.');\n\n for (var i = 0, max = props.length; i < max; i++) {\n if (hop.call(internal, prop = '[[' + props[i] + ']]')) descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true };\n }\n\n return objCreate({}, descs);\n }\n});\n\n/* jslint esnext: true */\n\n// Match these datetime components in a CLDR pattern, except those in single quotes\nvar expDTComponents = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n// trim patterns after transformations\nvar expPatternTrimmer = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n// Skip over patterns with these datetime components because we don't have data\n// to back them up:\n// timezone, weekday, amoung others\nvar unwantedDTCs = /[rqQASjJgwWIQq]/; // xXVO were removed from this list in favor of computing matches with timeZoneName values but printing as empty string\n\nvar dtKeys = [\"era\", \"year\", \"month\", \"day\", \"weekday\", \"quarter\"];\nvar tmKeys = [\"hour\", \"minute\", \"second\", \"hour12\", \"timeZoneName\"];\n\nfunction isDateFormatOnly(obj) {\n for (var i = 0; i < tmKeys.length; i += 1) {\n if (obj.hasOwnProperty(tmKeys[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction isTimeFormatOnly(obj) {\n for (var i = 0; i < dtKeys.length; i += 1) {\n if (obj.hasOwnProperty(dtKeys[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction joinDateAndTimeFormats(dateFormatObj, timeFormatObj) {\n var o = { _: {} };\n for (var i = 0; i < dtKeys.length; i += 1) {\n if (dateFormatObj[dtKeys[i]]) {\n o[dtKeys[i]] = dateFormatObj[dtKeys[i]];\n }\n if (dateFormatObj._[dtKeys[i]]) {\n o._[dtKeys[i]] = dateFormatObj._[dtKeys[i]];\n }\n }\n for (var j = 0; j < tmKeys.length; j += 1) {\n if (timeFormatObj[tmKeys[j]]) {\n o[tmKeys[j]] = timeFormatObj[tmKeys[j]];\n }\n if (timeFormatObj._[tmKeys[j]]) {\n o._[tmKeys[j]] = timeFormatObj._[tmKeys[j]];\n }\n }\n return o;\n}\n\nfunction computeFinalPatterns(formatObj) {\n // From http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns:\n // 'In patterns, two single quotes represents a literal single quote, either\n // inside or outside single quotes. Text within single quotes is not\n // interpreted in any way (except for two adjacent single quotes).'\n formatObj.pattern12 = formatObj.extendedPattern.replace(/'([^']*)'/g, function ($0, literal) {\n return literal ? literal : \"'\";\n });\n\n // pattern 12 is always the default. we can produce the 24 by removing {ampm}\n formatObj.pattern = formatObj.pattern12.replace('{ampm}', '').replace(expPatternTrimmer, '');\n return formatObj;\n}\n\nfunction expDTComponentsMeta($0, formatObj) {\n switch ($0.charAt(0)) {\n // --- Era\n case 'G':\n formatObj.era = ['short', 'short', 'short', 'long', 'narrow'][$0.length - 1];\n return '{era}';\n\n // --- Year\n case 'y':\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n formatObj.year = $0.length === 2 ? '2-digit' : 'numeric';\n return '{year}';\n\n // --- Quarter (not supported in this polyfill)\n case 'Q':\n case 'q':\n formatObj.quarter = ['numeric', '2-digit', 'short', 'long', 'narrow'][$0.length - 1];\n return '{quarter}';\n\n // --- Month\n case 'M':\n case 'L':\n formatObj.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][$0.length - 1];\n return '{month}';\n\n // --- Week (not supported in this polyfill)\n case 'w':\n // week of the year\n formatObj.week = $0.length === 2 ? '2-digit' : 'numeric';\n return '{weekday}';\n case 'W':\n // week of the month\n formatObj.week = 'numeric';\n return '{weekday}';\n\n // --- Day\n case 'd':\n // day of the month\n formatObj.day = $0.length === 2 ? '2-digit' : 'numeric';\n return '{day}';\n case 'D': // day of the year\n case 'F': // day of the week\n case 'g':\n // 1..n: Modified Julian day\n formatObj.day = 'numeric';\n return '{day}';\n\n // --- Week Day\n case 'E':\n // day of the week\n formatObj.weekday = ['short', 'short', 'short', 'long', 'narrow', 'short'][$0.length - 1];\n return '{weekday}';\n case 'e':\n // local day of the week\n formatObj.weekday = ['numeric', '2-digit', 'short', 'long', 'narrow', 'short'][$0.length - 1];\n return '{weekday}';\n case 'c':\n // stand alone local day of the week\n formatObj.weekday = ['numeric', undefined, 'short', 'long', 'narrow', 'short'][$0.length - 1];\n return '{weekday}';\n\n // --- Period\n case 'a': // AM, PM\n case 'b': // am, pm, noon, midnight\n case 'B':\n // flexible day periods\n formatObj.hour12 = true;\n return '{ampm}';\n\n // --- Hour\n case 'h':\n case 'H':\n formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric';\n return '{hour}';\n case 'k':\n case 'K':\n formatObj.hour12 = true; // 12-hour-cycle time formats (using h or K)\n formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric';\n return '{hour}';\n\n // --- Minute\n case 'm':\n formatObj.minute = $0.length === 2 ? '2-digit' : 'numeric';\n return '{minute}';\n\n // --- Second\n case 's':\n formatObj.second = $0.length === 2 ? '2-digit' : 'numeric';\n return '{second}';\n case 'S':\n case 'A':\n formatObj.second = 'numeric';\n return '{second}';\n\n // --- Timezone\n case 'z': // 1..3, 4: specific non-location format\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x':\n // 1, 2, 3, 4: The ISO8601 varios formats\n // this polyfill only supports much, for now, we are just doing something dummy\n formatObj.timeZoneName = $0.length < 4 ? 'short' : 'long';\n return '{timeZoneName}';\n }\n}\n\n/**\n * Converts the CLDR availableFormats into the objects and patterns required by\n * the ECMAScript Internationalization API specification.\n */\nfunction createDateTimeFormat(skeleton, pattern) {\n // we ignore certain patterns that are unsupported to avoid this expensive op.\n if (unwantedDTCs.test(pattern)) return undefined;\n\n var formatObj = {\n originalPattern: pattern,\n _: {}\n };\n\n // Replace the pattern string with the one required by the specification, whilst\n // at the same time evaluating it for the subsets and formats\n formatObj.extendedPattern = pattern.replace(expDTComponents, function ($0) {\n // See which symbol we're dealing with\n return expDTComponentsMeta($0, formatObj._);\n });\n\n // Match the skeleton string with the one required by the specification\n // this implementation is based on the Date Field Symbol Table:\n // http://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n // Note: we are adding extra data to the formatObject even though this polyfill\n // might not support it.\n skeleton.replace(expDTComponents, function ($0) {\n // See which symbol we're dealing with\n return expDTComponentsMeta($0, formatObj);\n });\n\n return computeFinalPatterns(formatObj);\n}\n\n/**\n * Processes DateTime formats from CLDR to an easier-to-parse format.\n * the result of this operation should be cached the first time a particular\n * calendar is analyzed.\n *\n * The specification requires we support at least the following subsets of\n * date/time components:\n *\n * - 'weekday', 'year', 'month', 'day', 'hour', 'minute', 'second'\n * - 'weekday', 'year', 'month', 'day'\n * - 'year', 'month', 'day'\n * - 'year', 'month'\n * - 'month', 'day'\n * - 'hour', 'minute', 'second'\n * - 'hour', 'minute'\n *\n * We need to cherry pick at least these subsets from the CLDR data and convert\n * them into the pattern objects used in the ECMA-402 API.\n */\nfunction createDateTimeFormats(formats) {\n var availableFormats = formats.availableFormats;\n var timeFormats = formats.timeFormats;\n var dateFormats = formats.dateFormats;\n var result = [];\n var skeleton = void 0,\n pattern = void 0,\n computed = void 0,\n i = void 0,\n j = void 0;\n var timeRelatedFormats = [];\n var dateRelatedFormats = [];\n\n // Map available (custom) formats into a pattern for createDateTimeFormats\n for (skeleton in availableFormats) {\n if (availableFormats.hasOwnProperty(skeleton)) {\n pattern = availableFormats[skeleton];\n computed = createDateTimeFormat(skeleton, pattern);\n if (computed) {\n result.push(computed);\n // in some cases, the format is only displaying date specific props\n // or time specific props, in which case we need to also produce the\n // combined formats.\n if (isDateFormatOnly(computed)) {\n dateRelatedFormats.push(computed);\n } else if (isTimeFormatOnly(computed)) {\n timeRelatedFormats.push(computed);\n }\n }\n }\n }\n\n // Map time formats into a pattern for createDateTimeFormats\n for (skeleton in timeFormats) {\n if (timeFormats.hasOwnProperty(skeleton)) {\n pattern = timeFormats[skeleton];\n computed = createDateTimeFormat(skeleton, pattern);\n if (computed) {\n result.push(computed);\n timeRelatedFormats.push(computed);\n }\n }\n }\n\n // Map date formats into a pattern for createDateTimeFormats\n for (skeleton in dateFormats) {\n if (dateFormats.hasOwnProperty(skeleton)) {\n pattern = dateFormats[skeleton];\n computed = createDateTimeFormat(skeleton, pattern);\n if (computed) {\n result.push(computed);\n dateRelatedFormats.push(computed);\n }\n }\n }\n\n // combine custom time and custom date formats when they are orthogonals to complete the\n // formats supported by CLDR.\n // This Algo is based on section \"Missing Skeleton Fields\" from:\n // http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems\n for (i = 0; i < timeRelatedFormats.length; i += 1) {\n for (j = 0; j < dateRelatedFormats.length; j += 1) {\n if (dateRelatedFormats[j].month === 'long') {\n pattern = dateRelatedFormats[j].weekday ? formats.full : formats.long;\n } else if (dateRelatedFormats[j].month === 'short') {\n pattern = formats.medium;\n } else {\n pattern = formats.short;\n }\n computed = joinDateAndTimeFormats(dateRelatedFormats[j], timeRelatedFormats[i]);\n computed.originalPattern = pattern;\n computed.extendedPattern = pattern.replace('{0}', timeRelatedFormats[i].extendedPattern).replace('{1}', dateRelatedFormats[j].extendedPattern).replace(/^[,\\s]+|[,\\s]+$/gi, '');\n result.push(computeFinalPatterns(computed));\n }\n }\n\n return result;\n}\n\n// this represents the exceptions of the rule that are not covered by CLDR availableFormats\n// for single property configurations, they play no role when using multiple properties, and\n// those that are not in this table, are not exceptions or are not covered by the data we\n// provide.\nvar validSyntheticProps = {\n second: {\n numeric: 's',\n '2-digit': 'ss'\n },\n minute: {\n numeric: 'm',\n '2-digit': 'mm'\n },\n year: {\n numeric: 'y',\n '2-digit': 'yy'\n },\n day: {\n numeric: 'd',\n '2-digit': 'dd'\n },\n month: {\n numeric: 'L',\n '2-digit': 'LL',\n narrow: 'LLLLL',\n short: 'LLL',\n long: 'LLLL'\n },\n weekday: {\n narrow: 'ccccc',\n short: 'ccc',\n long: 'cccc'\n }\n};\n\nfunction generateSyntheticFormat(propName, propValue) {\n if (validSyntheticProps[propName] && validSyntheticProps[propName][propValue]) {\n var _ref2;\n\n return _ref2 = {\n originalPattern: validSyntheticProps[propName][propValue],\n _: defineProperty$1({}, propName, propValue),\n extendedPattern: \"{\" + propName + \"}\"\n }, defineProperty$1(_ref2, propName, propValue), defineProperty$1(_ref2, \"pattern12\", \"{\" + propName + \"}\"), defineProperty$1(_ref2, \"pattern\", \"{\" + propName + \"}\"), _ref2;\n }\n}\n\n// An object map of date component keys, saves using a regex later\nvar dateWidths = objCreate(null, { narrow: {}, short: {}, long: {} });\n\n/**\n * Returns a string for a date component, resolved using multiple inheritance as specified\n * as specified in the Unicode Technical Standard 35.\n */\nfunction resolveDateString(data, ca, component, width, key) {\n // From http://www.unicode.org/reports/tr35/tr35.html#Multiple_Inheritance:\n // 'In clearly specified instances, resources may inherit from within the same locale.\n // For example, ... the Buddhist calendar inherits from the Gregorian calendar.'\n var obj = data[ca] && data[ca][component] ? data[ca][component] : data.gregory[component],\n\n\n // \"sideways\" inheritance resolves strings when a key doesn't exist\n alts = {\n narrow: ['short', 'long'],\n short: ['long', 'narrow'],\n long: ['short', 'narrow']\n },\n\n\n //\n resolved = hop.call(obj, width) ? obj[width] : hop.call(obj, alts[width][0]) ? obj[alts[width][0]] : obj[alts[width][1]];\n\n // `key` wouldn't be specified for components 'dayPeriods'\n return key !== null ? resolved[key] : resolved;\n}\n\n// Define the DateTimeFormat constructor internally so it cannot be tainted\nfunction DateTimeFormatConstructor() {\n var locales = arguments[0];\n var options = arguments[1];\n\n if (!this || this === Intl) {\n return new Intl.DateTimeFormat(locales, options);\n }\n return InitializeDateTimeFormat(toObject(this), locales, options);\n}\n\ndefineProperty(Intl, 'DateTimeFormat', {\n configurable: true,\n writable: true,\n value: DateTimeFormatConstructor\n});\n\n// Must explicitly set prototypes as unwritable\ndefineProperty(DateTimeFormatConstructor, 'prototype', {\n writable: false\n});\n\n/**\n * The abstract operation InitializeDateTimeFormat accepts the arguments dateTimeFormat\n * (which must be an object), locales, and options. It initializes dateTimeFormat as a\n * DateTimeFormat object.\n */\nfunction /* 12.1.1.1 */InitializeDateTimeFormat(dateTimeFormat, locales, options) {\n // This will be a internal properties object if we're not already initialized\n var internal = getInternalProperties(dateTimeFormat);\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore();\n\n // 1. If dateTimeFormat has an [[initializedIntlObject]] internal property with\n // value true, throw a TypeError exception.\n if (internal['[[initializedIntlObject]]'] === true) throw new TypeError('`this` object has already been initialized as an Intl object');\n\n // Need this to access the `internal` object\n defineProperty(dateTimeFormat, '__getInternalProperties', {\n value: function value() {\n // NOTE: Non-standard, for internal use only\n if (arguments[0] === secret) return internal;\n }\n });\n\n // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true.\n internal['[[initializedIntlObject]]'] = true;\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n var requestedLocales = CanonicalizeLocaleList(locales);\n\n // 4. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined below) with arguments options, \"any\", and \"date\".\n options = ToDateTimeOptions(options, 'any', 'date');\n\n // 5. Let opt be a new Record.\n var opt = new Record();\n\n // 6. Let matcher be the result of calling the GetOption abstract operation\n // (defined in 9.2.9) with arguments options, \"localeMatcher\", \"string\", a List\n // containing the two String values \"lookup\" and \"best fit\", and \"best fit\".\n var matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit');\n\n // 7. Set opt.[[localeMatcher]] to matcher.\n opt['[[localeMatcher]]'] = matcher;\n\n // 8. Let DateTimeFormat be the standard built-in object that is the initial\n // value of Intl.DateTimeFormat.\n var DateTimeFormat = internals.DateTimeFormat; // This is what we *really* need\n\n // 9. Let localeData be the value of the [[localeData]] internal property of\n // DateTimeFormat.\n var localeData = DateTimeFormat['[[localeData]]'];\n\n // 10. Let r be the result of calling the ResolveLocale abstract operation\n // (defined in 9.2.5) with the [[availableLocales]] internal property of\n // DateTimeFormat, requestedLocales, opt, the [[relevantExtensionKeys]]\n // internal property of DateTimeFormat, and localeData.\n var r = ResolveLocale(DateTimeFormat['[[availableLocales]]'], requestedLocales, opt, DateTimeFormat['[[relevantExtensionKeys]]'], localeData);\n\n // 11. Set the [[locale]] internal property of dateTimeFormat to the value of\n // r.[[locale]].\n internal['[[locale]]'] = r['[[locale]]'];\n\n // 12. Set the [[calendar]] internal property of dateTimeFormat to the value of\n // r.[[ca]].\n internal['[[calendar]]'] = r['[[ca]]'];\n\n // 13. Set the [[numberingSystem]] internal property of dateTimeFormat to the value of\n // r.[[nu]].\n internal['[[numberingSystem]]'] = r['[[nu]]'];\n\n // The specification doesn't tell us to do this, but it's helpful later on\n internal['[[dataLocale]]'] = r['[[dataLocale]]'];\n\n // 14. Let dataLocale be the value of r.[[dataLocale]].\n var dataLocale = r['[[dataLocale]]'];\n\n // 15. Let tz be the result of calling the [[Get]] internal method of options with\n // argument \"timeZone\".\n var tz = options.timeZone;\n\n // 16. If tz is not undefined, then\n if (tz !== undefined) {\n // a. Let tz be ToString(tz).\n // b. Convert tz to upper case as described in 6.1.\n // NOTE: If an implementation accepts additional time zone values, as permitted\n // under certain conditions by the Conformance clause, different casing\n // rules apply.\n tz = toLatinUpperCase(tz);\n\n // c. If tz is not \"UTC\", then throw a RangeError exception.\n // ###TODO: accept more time zones###\n if (tz !== 'UTC') throw new RangeError('timeZone is not supported.');\n }\n\n // 17. Set the [[timeZone]] internal property of dateTimeFormat to tz.\n internal['[[timeZone]]'] = tz;\n\n // 18. Let opt be a new Record.\n opt = new Record();\n\n // 19. For each row of Table 3, except the header row, do:\n for (var prop in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, prop)) continue;\n\n // 20. Let prop be the name given in the Property column of the row.\n // 21. Let value be the result of calling the GetOption abstract operation,\n // passing as argument options, the name given in the Property column of the\n // row, \"string\", a List containing the strings given in the Values column of\n // the row, and undefined.\n var value = GetOption(options, prop, 'string', dateTimeComponents[prop]);\n\n // 22. Set opt.[[]] to value.\n opt['[[' + prop + ']]'] = value;\n }\n\n // Assigned a value below\n var bestFormat = void 0;\n\n // 23. Let dataLocaleData be the result of calling the [[Get]] internal method of\n // localeData with argument dataLocale.\n var dataLocaleData = localeData[dataLocale];\n\n // 24. Let formats be the result of calling the [[Get]] internal method of\n // dataLocaleData with argument \"formats\".\n // Note: we process the CLDR formats into the spec'd structure\n var formats = ToDateTimeFormats(dataLocaleData.formats);\n\n // 25. Let matcher be the result of calling the GetOption abstract operation with\n // arguments options, \"formatMatcher\", \"string\", a List containing the two String\n // values \"basic\" and \"best fit\", and \"best fit\".\n matcher = GetOption(options, 'formatMatcher', 'string', new List('basic', 'best fit'), 'best fit');\n\n // Optimization: caching the processed formats as a one time operation by\n // replacing the initial structure from localeData\n dataLocaleData.formats = formats;\n\n // 26. If matcher is \"basic\", then\n if (matcher === 'basic') {\n // 27. Let bestFormat be the result of calling the BasicFormatMatcher abstract\n // operation (defined below) with opt and formats.\n bestFormat = BasicFormatMatcher(opt, formats);\n\n // 28. Else\n } else {\n {\n // diverging\n var _hr = GetOption(options, 'hour12', 'boolean' /*, undefined, undefined*/);\n opt.hour12 = _hr === undefined ? dataLocaleData.hour12 : _hr;\n }\n // 29. Let bestFormat be the result of calling the BestFitFormatMatcher\n // abstract operation (defined below) with opt and formats.\n bestFormat = BestFitFormatMatcher(opt, formats);\n }\n\n // 30. For each row in Table 3, except the header row, do\n for (var _prop in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, _prop)) continue;\n\n // a. Let prop be the name given in the Property column of the row.\n // b. Let pDesc be the result of calling the [[GetOwnProperty]] internal method of\n // bestFormat with argument prop.\n // c. If pDesc is not undefined, then\n if (hop.call(bestFormat, _prop)) {\n // i. Let p be the result of calling the [[Get]] internal method of bestFormat\n // with argument prop.\n var p = bestFormat[_prop];\n {\n // diverging\n p = bestFormat._ && hop.call(bestFormat._, _prop) ? bestFormat._[_prop] : p;\n }\n\n // ii. Set the [[]] internal property of dateTimeFormat to p.\n internal['[[' + _prop + ']]'] = p;\n }\n }\n\n var pattern = void 0; // Assigned a value below\n\n // 31. Let hr12 be the result of calling the GetOption abstract operation with\n // arguments options, \"hour12\", \"boolean\", undefined, and undefined.\n var hr12 = GetOption(options, 'hour12', 'boolean' /*, undefined, undefined*/);\n\n // 32. If dateTimeFormat has an internal property [[hour]], then\n if (internal['[[hour]]']) {\n // a. If hr12 is undefined, then let hr12 be the result of calling the [[Get]]\n // internal method of dataLocaleData with argument \"hour12\".\n hr12 = hr12 === undefined ? dataLocaleData.hour12 : hr12;\n\n // b. Set the [[hour12]] internal property of dateTimeFormat to hr12.\n internal['[[hour12]]'] = hr12;\n\n // c. If hr12 is true, then\n if (hr12 === true) {\n // i. Let hourNo0 be the result of calling the [[Get]] internal method of\n // dataLocaleData with argument \"hourNo0\".\n var hourNo0 = dataLocaleData.hourNo0;\n\n // ii. Set the [[hourNo0]] internal property of dateTimeFormat to hourNo0.\n internal['[[hourNo0]]'] = hourNo0;\n\n // iii. Let pattern be the result of calling the [[Get]] internal method of\n // bestFormat with argument \"pattern12\".\n pattern = bestFormat.pattern12;\n }\n\n // d. Else\n else\n // i. Let pattern be the result of calling the [[Get]] internal method of\n // bestFormat with argument \"pattern\".\n pattern = bestFormat.pattern;\n }\n\n // 33. Else\n else\n // a. Let pattern be the result of calling the [[Get]] internal method of\n // bestFormat with argument \"pattern\".\n pattern = bestFormat.pattern;\n\n // 34. Set the [[pattern]] internal property of dateTimeFormat to pattern.\n internal['[[pattern]]'] = pattern;\n\n // 35. Set the [[boundFormat]] internal property of dateTimeFormat to undefined.\n internal['[[boundFormat]]'] = undefined;\n\n // 36. Set the [[initializedDateTimeFormat]] internal property of dateTimeFormat to\n // true.\n internal['[[initializedDateTimeFormat]]'] = true;\n\n // In ES3, we need to pre-bind the format() function\n if (es3) dateTimeFormat.format = GetFormatDateTime.call(dateTimeFormat);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // Return the newly initialised object\n return dateTimeFormat;\n}\n\n/**\n * Several DateTimeFormat algorithms use values from the following table, which provides\n * property names and allowable values for the components of date and time formats:\n */\nvar dateTimeComponents = {\n weekday: [\"narrow\", \"short\", \"long\"],\n era: [\"narrow\", \"short\", \"long\"],\n year: [\"2-digit\", \"numeric\"],\n month: [\"2-digit\", \"numeric\", \"narrow\", \"short\", \"long\"],\n day: [\"2-digit\", \"numeric\"],\n hour: [\"2-digit\", \"numeric\"],\n minute: [\"2-digit\", \"numeric\"],\n second: [\"2-digit\", \"numeric\"],\n timeZoneName: [\"short\", \"long\"]\n};\n\n/**\n * When the ToDateTimeOptions abstract operation is called with arguments options,\n * required, and defaults, the following steps are taken:\n */\nfunction ToDateTimeFormats(formats) {\n if (Object.prototype.toString.call(formats) === '[object Array]') {\n return formats;\n }\n return createDateTimeFormats(formats);\n}\n\n/**\n * When the ToDateTimeOptions abstract operation is called with arguments options,\n * required, and defaults, the following steps are taken:\n */\nfunction ToDateTimeOptions(options, required, defaults) {\n // 1. If options is undefined, then let options be null, else let options be\n // ToObject(options).\n if (options === undefined) options = null;else {\n // (#12) options needs to be a Record, but it also needs to inherit properties\n var opt2 = toObject(options);\n options = new Record();\n\n for (var k in opt2) {\n options[k] = opt2[k];\n }\n }\n\n // 2. Let create be the standard built-in function object defined in ES5, 15.2.3.5.\n var create = objCreate;\n\n // 3. Let options be the result of calling the [[Call]] internal method of create with\n // undefined as the this value and an argument list containing the single item\n // options.\n options = create(options);\n\n // 4. Let needDefaults be true.\n var needDefaults = true;\n\n // 5. If required is \"date\" or \"any\", then\n if (required === 'date' || required === 'any') {\n // a. For each of the property names \"weekday\", \"year\", \"month\", \"day\":\n // i. If the result of calling the [[Get]] internal method of options with the\n // property name is not undefined, then let needDefaults be false.\n if (options.weekday !== undefined || options.year !== undefined || options.month !== undefined || options.day !== undefined) needDefaults = false;\n }\n\n // 6. If required is \"time\" or \"any\", then\n if (required === 'time' || required === 'any') {\n // a. For each of the property names \"hour\", \"minute\", \"second\":\n // i. If the result of calling the [[Get]] internal method of options with the\n // property name is not undefined, then let needDefaults be false.\n if (options.hour !== undefined || options.minute !== undefined || options.second !== undefined) needDefaults = false;\n }\n\n // 7. If needDefaults is true and defaults is either \"date\" or \"all\", then\n if (needDefaults && (defaults === 'date' || defaults === 'all'))\n // a. For each of the property names \"year\", \"month\", \"day\":\n // i. Call the [[DefineOwnProperty]] internal method of options with the\n // property name, Property Descriptor {[[Value]]: \"numeric\", [[Writable]]:\n // true, [[Enumerable]]: true, [[Configurable]]: true}, and false.\n options.year = options.month = options.day = 'numeric';\n\n // 8. If needDefaults is true and defaults is either \"time\" or \"all\", then\n if (needDefaults && (defaults === 'time' || defaults === 'all'))\n // a. For each of the property names \"hour\", \"minute\", \"second\":\n // i. Call the [[DefineOwnProperty]] internal method of options with the\n // property name, Property Descriptor {[[Value]]: \"numeric\", [[Writable]]:\n // true, [[Enumerable]]: true, [[Configurable]]: true}, and false.\n options.hour = options.minute = options.second = 'numeric';\n\n // 9. Return options.\n return options;\n}\n\n/**\n * When the BasicFormatMatcher abstract operation is called with two arguments options and\n * formats, the following steps are taken:\n */\nfunction BasicFormatMatcher(options, formats) {\n // 1. Let removalPenalty be 120.\n var removalPenalty = 120;\n\n // 2. Let additionPenalty be 20.\n var additionPenalty = 20;\n\n // 3. Let longLessPenalty be 8.\n var longLessPenalty = 8;\n\n // 4. Let longMorePenalty be 6.\n var longMorePenalty = 6;\n\n // 5. Let shortLessPenalty be 6.\n var shortLessPenalty = 6;\n\n // 6. Let shortMorePenalty be 3.\n var shortMorePenalty = 3;\n\n // 7. Let bestScore be -Infinity.\n var bestScore = -Infinity;\n\n // 8. Let bestFormat be undefined.\n var bestFormat = void 0;\n\n // 9. Let i be 0.\n var i = 0;\n\n // 10. Assert: formats is an Array object.\n\n // 11. Let len be the result of calling the [[Get]] internal method of formats with argument \"length\".\n var len = formats.length;\n\n // 12. Repeat while i < len:\n while (i < len) {\n // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i).\n var format = formats[i];\n\n // b. Let score be 0.\n var score = 0;\n\n // c. For each property shown in Table 3:\n for (var property in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, property)) continue;\n\n // i. Let optionsProp be options.[[]].\n var optionsProp = options['[[' + property + ']]'];\n\n // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format\n // with argument property.\n // iii. If formatPropDesc is not undefined, then\n // 1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property.\n var formatProp = hop.call(format, property) ? format[property] : undefined;\n\n // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by\n // additionPenalty.\n if (optionsProp === undefined && formatProp !== undefined) score -= additionPenalty;\n\n // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by\n // removalPenalty.\n else if (optionsProp !== undefined && formatProp === undefined) score -= removalPenalty;\n\n // vi. Else\n else {\n // 1. Let values be the array [\"2-digit\", \"numeric\", \"narrow\", \"short\",\n // \"long\"].\n var values = ['2-digit', 'numeric', 'narrow', 'short', 'long'];\n\n // 2. Let optionsPropIndex be the index of optionsProp within values.\n var optionsPropIndex = arrIndexOf.call(values, optionsProp);\n\n // 3. Let formatPropIndex be the index of formatProp within values.\n var formatPropIndex = arrIndexOf.call(values, formatProp);\n\n // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2).\n var delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2);\n\n // 5. If delta = 2, decrease score by longMorePenalty.\n if (delta === 2) score -= longMorePenalty;\n\n // 6. Else if delta = 1, decrease score by shortMorePenalty.\n else if (delta === 1) score -= shortMorePenalty;\n\n // 7. Else if delta = -1, decrease score by shortLessPenalty.\n else if (delta === -1) score -= shortLessPenalty;\n\n // 8. Else if delta = -2, decrease score by longLessPenalty.\n else if (delta === -2) score -= longLessPenalty;\n }\n }\n\n // d. If score > bestScore, then\n if (score > bestScore) {\n // i. Let bestScore be score.\n bestScore = score;\n\n // ii. Let bestFormat be format.\n bestFormat = format;\n }\n\n // e. Increase i by 1.\n i++;\n }\n\n // 13. Return bestFormat.\n return bestFormat;\n}\n\n/**\n * When the BestFitFormatMatcher abstract operation is called with two arguments options\n * and formats, it performs implementation dependent steps, which should return a set of\n * component representations that a typical user of the selected locale would perceive as\n * at least as good as the one returned by BasicFormatMatcher.\n *\n * This polyfill defines the algorithm to be the same as BasicFormatMatcher,\n * with the addition of bonus points awarded where the requested format is of\n * the same data type as the potentially matching format.\n *\n * This algo relies on the concept of closest distance matching described here:\n * http://unicode.org/reports/tr35/tr35-dates.html#Matching_Skeletons\n * Typically a “best match” is found using a closest distance match, such as:\n *\n * Symbols requesting a best choice for the locale are replaced.\n * j → one of {H, k, h, K}; C → one of {a, b, B}\n * -> Covered by cldr.js matching process\n *\n * For fields with symbols representing the same type (year, month, day, etc):\n * Most symbols have a small distance from each other.\n * M ≅ L; E ≅ c; a ≅ b ≅ B; H ≅ k ≅ h ≅ K; ...\n * -> Covered by cldr.js matching process\n *\n * Width differences among fields, other than those marking text vs numeric, are given small distance from each other.\n * MMM ≅ MMMM\n * MM ≅ M\n * Numeric and text fields are given a larger distance from each other.\n * MMM ≈ MM\n * Symbols representing substantial differences (week of year vs week of month) are given much larger a distances from each other.\n * d ≋ D; ...\n * Missing or extra fields cause a match to fail. (But see Missing Skeleton Fields).\n *\n *\n * For example,\n *\n * { month: 'numeric', day: 'numeric' }\n *\n * should match\n *\n * { month: '2-digit', day: '2-digit' }\n *\n * rather than\n *\n * { month: 'short', day: 'numeric' }\n *\n * This makes sense because a user requesting a formatted date with numeric parts would\n * not expect to see the returned format containing narrow, short or long part names\n */\nfunction BestFitFormatMatcher(options, formats) {\n /** Diverging: this block implements the hack for single property configuration, eg.:\n *\n * `new Intl.DateTimeFormat('en', {day: 'numeric'})`\n *\n * should produce a single digit with the day of the month. This is needed because\n * CLDR `availableFormats` data structure doesn't cover these cases.\n */\n {\n var optionsPropNames = [];\n for (var property in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, property)) continue;\n\n if (options['[[' + property + ']]'] !== undefined) {\n optionsPropNames.push(property);\n }\n }\n if (optionsPropNames.length === 1) {\n var _bestFormat = generateSyntheticFormat(optionsPropNames[0], options['[[' + optionsPropNames[0] + ']]']);\n if (_bestFormat) {\n return _bestFormat;\n }\n }\n }\n\n // 1. Let removalPenalty be 120.\n var removalPenalty = 120;\n\n // 2. Let additionPenalty be 20.\n var additionPenalty = 20;\n\n // 3. Let longLessPenalty be 8.\n var longLessPenalty = 8;\n\n // 4. Let longMorePenalty be 6.\n var longMorePenalty = 6;\n\n // 5. Let shortLessPenalty be 6.\n var shortLessPenalty = 6;\n\n // 6. Let shortMorePenalty be 3.\n var shortMorePenalty = 3;\n\n var patternPenalty = 2;\n\n var hour12Penalty = 1;\n\n // 7. Let bestScore be -Infinity.\n var bestScore = -Infinity;\n\n // 8. Let bestFormat be undefined.\n var bestFormat = void 0;\n\n // 9. Let i be 0.\n var i = 0;\n\n // 10. Assert: formats is an Array object.\n\n // 11. Let len be the result of calling the [[Get]] internal method of formats with argument \"length\".\n var len = formats.length;\n\n // 12. Repeat while i < len:\n while (i < len) {\n // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i).\n var format = formats[i];\n\n // b. Let score be 0.\n var score = 0;\n\n // c. For each property shown in Table 3:\n for (var _property in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, _property)) continue;\n\n // i. Let optionsProp be options.[[]].\n var optionsProp = options['[[' + _property + ']]'];\n\n // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format\n // with argument property.\n // iii. If formatPropDesc is not undefined, then\n // 1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property.\n var formatProp = hop.call(format, _property) ? format[_property] : undefined;\n\n // Diverging: using the default properties produced by the pattern/skeleton\n // to match it with user options, and apply a penalty\n var patternProp = hop.call(format._, _property) ? format._[_property] : undefined;\n if (optionsProp !== patternProp) {\n score -= patternPenalty;\n }\n\n // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by\n // additionPenalty.\n if (optionsProp === undefined && formatProp !== undefined) score -= additionPenalty;\n\n // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by\n // removalPenalty.\n else if (optionsProp !== undefined && formatProp === undefined) score -= removalPenalty;\n\n // vi. Else\n else {\n // 1. Let values be the array [\"2-digit\", \"numeric\", \"narrow\", \"short\",\n // \"long\"].\n var values = ['2-digit', 'numeric', 'narrow', 'short', 'long'];\n\n // 2. Let optionsPropIndex be the index of optionsProp within values.\n var optionsPropIndex = arrIndexOf.call(values, optionsProp);\n\n // 3. Let formatPropIndex be the index of formatProp within values.\n var formatPropIndex = arrIndexOf.call(values, formatProp);\n\n // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2).\n var delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2);\n\n {\n // diverging from spec\n // When the bestFit argument is true, subtract additional penalty where data types are not the same\n if (formatPropIndex <= 1 && optionsPropIndex >= 2 || formatPropIndex >= 2 && optionsPropIndex <= 1) {\n // 5. If delta = 2, decrease score by longMorePenalty.\n if (delta > 0) score -= longMorePenalty;else if (delta < 0) score -= longLessPenalty;\n } else {\n // 5. If delta = 2, decrease score by longMorePenalty.\n if (delta > 1) score -= shortMorePenalty;else if (delta < -1) score -= shortLessPenalty;\n }\n }\n }\n }\n\n {\n // diverging to also take into consideration differences between 12 or 24 hours\n // which is special for the best fit only.\n if (format._.hour12 !== options.hour12) {\n score -= hour12Penalty;\n }\n }\n\n // d. If score > bestScore, then\n if (score > bestScore) {\n // i. Let bestScore be score.\n bestScore = score;\n // ii. Let bestFormat be format.\n bestFormat = format;\n }\n\n // e. Increase i by 1.\n i++;\n }\n\n // 13. Return bestFormat.\n return bestFormat;\n}\n\n/* 12.2.3 */internals.DateTimeFormat = {\n '[[availableLocales]]': [],\n '[[relevantExtensionKeys]]': ['ca', 'nu'],\n '[[localeData]]': {}\n};\n\n/**\n * When the supportedLocalesOf method of Intl.DateTimeFormat is called, the\n * following steps are taken:\n */\n/* 12.2.2 */\ndefineProperty(Intl.DateTimeFormat, 'supportedLocalesOf', {\n configurable: true,\n writable: true,\n value: fnBind.call(function (locales) {\n // Bound functions only have the `this` value altered if being used as a constructor,\n // this lets us imitate a native function that has no constructor\n if (!hop.call(this, '[[availableLocales]]')) throw new TypeError('supportedLocalesOf() is not a constructor');\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore(),\n\n\n // 1. If options is not provided, then let options be undefined.\n options = arguments[1],\n\n\n // 2. Let availableLocales be the value of the [[availableLocales]] internal\n // property of the standard built-in object that is the initial value of\n // Intl.NumberFormat.\n\n availableLocales = this['[[availableLocales]]'],\n\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n requestedLocales = CanonicalizeLocaleList(locales);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // 4. Return the result of calling the SupportedLocales abstract operation\n // (defined in 9.2.8) with arguments availableLocales, requestedLocales,\n // and options.\n return SupportedLocales(availableLocales, requestedLocales, options);\n }, internals.NumberFormat)\n});\n\n/**\n * This named accessor property returns a function that formats a number\n * according to the effective locale and the formatting options of this\n * DateTimeFormat object.\n */\n/* 12.3.2 */defineProperty(Intl.DateTimeFormat.prototype, 'format', {\n configurable: true,\n get: GetFormatDateTime\n});\n\nfunction GetFormatDateTime() {\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 12.3_b\n if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for format() is not an initialized Intl.DateTimeFormat object.');\n\n // The value of the [[Get]] attribute is a function that takes the following\n // steps:\n\n // 1. If the [[boundFormat]] internal property of this DateTimeFormat object\n // is undefined, then:\n if (internal['[[boundFormat]]'] === undefined) {\n // a. Let F be a Function object, with internal properties set as\n // specified for built-in functions in ES5, 15, or successor, and the\n // length property set to 0, that takes the argument date and\n // performs the following steps:\n var F = function F() {\n var date = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];\n\n // i. If date is not provided or is undefined, then let x be the\n // result as if by the expression Date.now() where Date.now is\n // the standard built-in function defined in ES5, 15.9.4.4.\n // ii. Else let x be ToNumber(date).\n // iii. Return the result of calling the FormatDateTime abstract\n // operation (defined below) with arguments this and x.\n var x = date === undefined ? Date.now() : toNumber(date);\n return FormatDateTime(this, x);\n };\n // b. Let bind be the standard built-in function object defined in ES5,\n // 15.3.4.5.\n // c. Let bf be the result of calling the [[Call]] internal method of\n // bind with F as the this value and an argument list containing\n // the single item this.\n var bf = fnBind.call(F, this);\n // d. Set the [[boundFormat]] internal property of this NumberFormat\n // object to bf.\n internal['[[boundFormat]]'] = bf;\n }\n // Return the value of the [[boundFormat]] internal property of this\n // NumberFormat object.\n return internal['[[boundFormat]]'];\n}\n\nfunction formatToParts$1() {\n var date = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];\n\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for formatToParts() is not an initialized Intl.DateTimeFormat object.');\n\n var x = date === undefined ? Date.now() : toNumber(date);\n return FormatToPartsDateTime(this, x);\n}\n\nObject.defineProperty(Intl.DateTimeFormat.prototype, 'formatToParts', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: formatToParts$1\n});\n\nfunction CreateDateTimeParts(dateTimeFormat, x) {\n // 1. If x is not a finite Number, then throw a RangeError exception.\n if (!isFinite(x)) throw new RangeError('Invalid valid date passed to format');\n\n var internal = dateTimeFormat.__getInternalProperties(secret);\n\n // Creating restore point for properties on the RegExp object... please wait\n /* let regexpRestore = */createRegExpRestore(); // ###TODO: review this\n\n // 2. Let locale be the value of the [[locale]] internal property of dateTimeFormat.\n var locale = internal['[[locale]]'];\n\n // 3. Let nf be the result of creating a new NumberFormat object as if by the\n // expression new Intl.NumberFormat([locale], {useGrouping: false}) where\n // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3.\n var nf = new Intl.NumberFormat([locale], { useGrouping: false });\n\n // 4. Let nf2 be the result of creating a new NumberFormat object as if by the\n // expression new Intl.NumberFormat([locale], {minimumIntegerDigits: 2, useGrouping:\n // false}) where Intl.NumberFormat is the standard built-in constructor defined in\n // 11.1.3.\n var nf2 = new Intl.NumberFormat([locale], { minimumIntegerDigits: 2, useGrouping: false });\n\n // 5. Let tm be the result of calling the ToLocalTime abstract operation (defined\n // below) with x, the value of the [[calendar]] internal property of dateTimeFormat,\n // and the value of the [[timeZone]] internal property of dateTimeFormat.\n var tm = ToLocalTime(x, internal['[[calendar]]'], internal['[[timeZone]]']);\n\n // 6. Let result be the value of the [[pattern]] internal property of dateTimeFormat.\n var pattern = internal['[[pattern]]'];\n\n // 7.\n var result = new List();\n\n // 8.\n var index = 0;\n\n // 9.\n var beginIndex = pattern.indexOf('{');\n\n // 10.\n var endIndex = 0;\n\n // Need the locale minus any extensions\n var dataLocale = internal['[[dataLocale]]'];\n\n // Need the calendar data from CLDR\n var localeData = internals.DateTimeFormat['[[localeData]]'][dataLocale].calendars;\n var ca = internal['[[calendar]]'];\n\n // 11.\n while (beginIndex !== -1) {\n var fv = void 0;\n // a.\n endIndex = pattern.indexOf('}', beginIndex);\n // b.\n if (endIndex === -1) {\n throw new Error('Unclosed pattern');\n }\n // c.\n if (beginIndex > index) {\n arrPush.call(result, {\n type: 'literal',\n value: pattern.substring(index, beginIndex)\n });\n }\n // d.\n var p = pattern.substring(beginIndex + 1, endIndex);\n // e.\n if (dateTimeComponents.hasOwnProperty(p)) {\n // i. Let f be the value of the [[

]] internal property of dateTimeFormat.\n var f = internal['[[' + p + ']]'];\n // ii. Let v be the value of tm.[[

]].\n var v = tm['[[' + p + ']]'];\n // iii. If p is \"year\" and v ≤ 0, then let v be 1 - v.\n if (p === 'year' && v <= 0) {\n v = 1 - v;\n }\n // iv. If p is \"month\", then increase v by 1.\n else if (p === 'month') {\n v++;\n }\n // v. If p is \"hour\" and the value of the [[hour12]] internal property of\n // dateTimeFormat is true, then\n else if (p === 'hour' && internal['[[hour12]]'] === true) {\n // 1. Let v be v modulo 12.\n v = v % 12;\n // 2. If v is 0 and the value of the [[hourNo0]] internal property of\n // dateTimeFormat is true, then let v be 12.\n if (v === 0 && internal['[[hourNo0]]'] === true) {\n v = 12;\n }\n }\n\n // vi. If f is \"numeric\", then\n if (f === 'numeric') {\n // 1. Let fv be the result of calling the FormatNumber abstract operation\n // (defined in 11.3.2) with arguments nf and v.\n fv = FormatNumber(nf, v);\n }\n // vii. Else if f is \"2-digit\", then\n else if (f === '2-digit') {\n // 1. Let fv be the result of calling the FormatNumber abstract operation\n // with arguments nf2 and v.\n fv = FormatNumber(nf2, v);\n // 2. If the length of fv is greater than 2, let fv be the substring of fv\n // containing the last two characters.\n if (fv.length > 2) {\n fv = fv.slice(-2);\n }\n }\n // viii. Else if f is \"narrow\", \"short\", or \"long\", then let fv be a String\n // value representing f in the desired form; the String value depends upon\n // the implementation and the effective locale and calendar of\n // dateTimeFormat. If p is \"month\", then the String value may also depend\n // on whether dateTimeFormat has a [[day]] internal property. If p is\n // \"timeZoneName\", then the String value may also depend on the value of\n // the [[inDST]] field of tm.\n else if (f in dateWidths) {\n switch (p) {\n case 'month':\n fv = resolveDateString(localeData, ca, 'months', f, tm['[[' + p + ']]']);\n break;\n\n case 'weekday':\n try {\n fv = resolveDateString(localeData, ca, 'days', f, tm['[[' + p + ']]']);\n // fv = resolveDateString(ca.days, f)[tm['[['+ p +']]']];\n } catch (e) {\n throw new Error('Could not find weekday data for locale ' + locale);\n }\n break;\n\n case 'timeZoneName':\n fv = ''; // ###TODO\n break;\n\n case 'era':\n try {\n fv = resolveDateString(localeData, ca, 'eras', f, tm['[[' + p + ']]']);\n } catch (e) {\n throw new Error('Could not find era data for locale ' + locale);\n }\n break;\n\n default:\n fv = tm['[[' + p + ']]'];\n }\n }\n // ix\n arrPush.call(result, {\n type: p,\n value: fv\n });\n // f.\n } else if (p === 'ampm') {\n // i.\n var _v = tm['[[hour]]'];\n // ii./iii.\n fv = resolveDateString(localeData, ca, 'dayPeriods', _v > 11 ? 'pm' : 'am', null);\n // iv.\n arrPush.call(result, {\n type: 'dayPeriod',\n value: fv\n });\n // g.\n } else {\n arrPush.call(result, {\n type: 'literal',\n value: pattern.substring(beginIndex, endIndex + 1)\n });\n }\n // h.\n index = endIndex + 1;\n // i.\n beginIndex = pattern.indexOf('{', index);\n }\n // 12.\n if (endIndex < pattern.length - 1) {\n arrPush.call(result, {\n type: 'literal',\n value: pattern.substr(endIndex + 1)\n });\n }\n // 13.\n return result;\n}\n\n/**\n * When the FormatDateTime abstract operation is called with arguments dateTimeFormat\n * (which must be an object initialized as a DateTimeFormat) and x (which must be a Number\n * value), it returns a String value representing x (interpreted as a time value as\n * specified in ES5, 15.9.1.1) according to the effective locale and the formatting\n * options of dateTimeFormat.\n */\nfunction FormatDateTime(dateTimeFormat, x) {\n var parts = CreateDateTimeParts(dateTimeFormat, x);\n var result = '';\n\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n result += part.value;\n }\n return result;\n}\n\nfunction FormatToPartsDateTime(dateTimeFormat, x) {\n var parts = CreateDateTimeParts(dateTimeFormat, x);\n var result = [];\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n result.push({\n type: part.type,\n value: part.value\n });\n }\n return result;\n}\n\n/**\n * When the ToLocalTime abstract operation is called with arguments date, calendar, and\n * timeZone, the following steps are taken:\n */\nfunction ToLocalTime(date, calendar, timeZone) {\n // 1. Apply calendrical calculations on date for the given calendar and time zone to\n // produce weekday, era, year, month, day, hour, minute, second, and inDST values.\n // The calculations should use best available information about the specified\n // calendar and time zone. If the calendar is \"gregory\", then the calculations must\n // match the algorithms specified in ES5, 15.9.1, except that calculations are not\n // bound by the restrictions on the use of best available information on time zones\n // for local time zone adjustment and daylight saving time adjustment imposed by\n // ES5, 15.9.1.7 and 15.9.1.8.\n // ###TODO###\n var d = new Date(date),\n m = 'get' + (timeZone || '');\n\n // 2. Return a Record with fields [[weekday]], [[era]], [[year]], [[month]], [[day]],\n // [[hour]], [[minute]], [[second]], and [[inDST]], each with the corresponding\n // calculated value.\n return new Record({\n '[[weekday]]': d[m + 'Day'](),\n '[[era]]': +(d[m + 'FullYear']() >= 0),\n '[[year]]': d[m + 'FullYear'](),\n '[[month]]': d[m + 'Month'](),\n '[[day]]': d[m + 'Date'](),\n '[[hour]]': d[m + 'Hours'](),\n '[[minute]]': d[m + 'Minutes'](),\n '[[second]]': d[m + 'Seconds'](),\n '[[inDST]]': false // ###TODO###\n });\n}\n\n/**\n * The function returns a new object whose properties and attributes are set as if\n * constructed by an object literal assigning to each of the following properties the\n * value of the corresponding internal property of this DateTimeFormat object (see 12.4):\n * locale, calendar, numberingSystem, timeZone, hour12, weekday, era, year, month, day,\n * hour, minute, second, and timeZoneName. Properties whose corresponding internal\n * properties are not present are not assigned.\n */\n/* 12.3.3 */defineProperty(Intl.DateTimeFormat.prototype, 'resolvedOptions', {\n writable: true,\n configurable: true,\n value: function value() {\n var prop = void 0,\n descs = new Record(),\n props = ['locale', 'calendar', 'numberingSystem', 'timeZone', 'hour12', 'weekday', 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName'],\n internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 12.3_b\n if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.DateTimeFormat object.');\n\n for (var i = 0, max = props.length; i < max; i++) {\n if (hop.call(internal, prop = '[[' + props[i] + ']]')) descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true };\n }\n\n return objCreate({}, descs);\n }\n});\n\nvar ls = Intl.__localeSensitiveProtos = {\n Number: {},\n Date: {}\n};\n\n/**\n * When the toLocaleString method is called with optional arguments locales and options,\n * the following steps are taken:\n */\n/* 13.2.1 */ls.Number.toLocaleString = function () {\n // Satisfy test 13.2.1_1\n if (Object.prototype.toString.call(this) !== '[object Number]') throw new TypeError('`this` value must be a number for Number.prototype.toLocaleString()');\n\n // 1. Let x be this Number value (as defined in ES5, 15.7.4).\n // 2. If locales is not provided, then let locales be undefined.\n // 3. If options is not provided, then let options be undefined.\n // 4. Let numberFormat be the result of creating a new object as if by the\n // expression new Intl.NumberFormat(locales, options) where\n // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3.\n // 5. Return the result of calling the FormatNumber abstract operation\n // (defined in 11.3.2) with arguments numberFormat and x.\n return FormatNumber(new NumberFormatConstructor(arguments[0], arguments[1]), this);\n};\n\n/**\n * When the toLocaleString method is called with optional arguments locales and options,\n * the following steps are taken:\n */\n/* 13.3.1 */ls.Date.toLocaleString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleString()');\n\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n var x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x)) return 'Invalid Date';\n\n // 3. If locales is not provided, then let locales be undefined.\n var locales = arguments[0];\n\n // 4. If options is not provided, then let options be undefined.\n var options = arguments[1];\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"any\", and \"all\".\n options = ToDateTimeOptions(options, 'any', 'all');\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n var dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\n/**\n * When the toLocaleDateString method is called with optional arguments locales and\n * options, the following steps are taken:\n */\n/* 13.3.2 */ls.Date.toLocaleDateString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleDateString()');\n\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n var x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x)) return 'Invalid Date';\n\n // 3. If locales is not provided, then let locales be undefined.\n var locales = arguments[0],\n\n\n // 4. If options is not provided, then let options be undefined.\n options = arguments[1];\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"date\", and \"date\".\n options = ToDateTimeOptions(options, 'date', 'date');\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n var dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\n/**\n * When the toLocaleTimeString method is called with optional arguments locales and\n * options, the following steps are taken:\n */\n/* 13.3.3 */ls.Date.toLocaleTimeString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleTimeString()');\n\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n var x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x)) return 'Invalid Date';\n\n // 3. If locales is not provided, then let locales be undefined.\n var locales = arguments[0];\n\n // 4. If options is not provided, then let options be undefined.\n var options = arguments[1];\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"time\", and \"time\".\n options = ToDateTimeOptions(options, 'time', 'time');\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n var dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\ndefineProperty(Intl, '__applyLocaleSensitivePrototypes', {\n writable: true,\n configurable: true,\n value: function value() {\n defineProperty(Number.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Number.toLocaleString });\n // Need this here for IE 8, to avoid the _DontEnum_ bug\n defineProperty(Date.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Date.toLocaleString });\n\n for (var k in ls.Date) {\n if (hop.call(ls.Date, k)) defineProperty(Date.prototype, k, { writable: true, configurable: true, value: ls.Date[k] });\n }\n }\n});\n\n/**\n * Can't really ship a single script with data for hundreds of locales, so we provide\n * this __addLocaleData method as a means for the developer to add the data on an\n * as-needed basis\n */\ndefineProperty(Intl, '__addLocaleData', {\n value: function value(data) {\n if (!IsStructurallyValidLanguageTag(data.locale)) throw new Error(\"Object passed doesn't identify itself with a valid language tag\");\n\n addLocaleData(data, data.locale);\n }\n});\n\nfunction addLocaleData(data, tag) {\n // Both NumberFormat and DateTimeFormat require number data, so throw if it isn't present\n if (!data.number) throw new Error(\"Object passed doesn't contain locale data for Intl.NumberFormat\");\n\n var locale = void 0,\n locales = [tag],\n parts = tag.split('-');\n\n // Create fallbacks for locale data with scripts, e.g. Latn, Hans, Vaii, etc\n if (parts.length > 2 && parts[1].length === 4) arrPush.call(locales, parts[0] + '-' + parts[2]);\n\n while (locale = arrShift.call(locales)) {\n // Add to NumberFormat internal properties as per 11.2.3\n arrPush.call(internals.NumberFormat['[[availableLocales]]'], locale);\n internals.NumberFormat['[[localeData]]'][locale] = data.number;\n\n // ...and DateTimeFormat internal properties as per 12.2.3\n if (data.date) {\n data.date.nu = data.number.nu;\n arrPush.call(internals.DateTimeFormat['[[availableLocales]]'], locale);\n internals.DateTimeFormat['[[localeData]]'][locale] = data.date;\n }\n }\n\n // If this is the first set of locale data added, make it the default\n if (defaultLocale === undefined) setDefaultLocale(tag);\n}\n\ndefineProperty(Intl, '__disableRegExpRestore', {\n value: function value() {\n internals.disableRegExpRestore = true;\n }\n});\n\nmodule.exports = Intl;","// ag-grid-enterprise v18.1.1\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar columnSelectComp_1 = require(\"./dist/lib/toolPanel/columnsSelect/columnSelectComp\");\nexports.ColumnSelectComp = columnSelectComp_1.ColumnSelectComp;\nvar toolPanelColumnComp_1 = require(\"./dist/lib/toolPanel/columnsSelect/toolPanelColumnComp\");\nexports.ToolPanelColumnComp = toolPanelColumnComp_1.ToolPanelColumnComp;\nvar toolPanelGroupComp_1 = require(\"./dist/lib/toolPanel/columnsSelect/toolPanelGroupComp\");\nexports.ToolPanelGroupComp = toolPanelGroupComp_1.ToolPanelGroupComp;\nvar aggregationStage_1 = require(\"./dist/lib/rowStages/aggregationStage\");\nexports.AggregationStage = aggregationStage_1.AggregationStage;\nvar groupStage_1 = require(\"./dist/lib/rowStages/groupStage\");\nexports.GroupStage = groupStage_1.GroupStage;\nvar setFilter_1 = require(\"./dist/lib/setFilter/setFilter\");\nexports.SetFilter = setFilter_1.SetFilter;\nvar setFilterModel_1 = require(\"./dist/lib/setFilter/setFilterModel\");\nexports.SetFilterModel = setFilterModel_1.SetFilterModel;\nvar statusBar_1 = require(\"./dist/lib/statusBar/statusBar\");\nexports.StatusBar = statusBar_1.StatusBar;\nvar statusItem_1 = require(\"./dist/lib/statusBar/statusItem\");\nexports.StatusItem = statusItem_1.StatusItem;\nvar clipboardService_1 = require(\"./dist/lib/clipboardService\");\nexports.ClipboardService = clipboardService_1.ClipboardService;\nvar enterpriseBoot_1 = require(\"./dist/lib/enterpriseBoot\");\nexports.EnterpriseBoot = enterpriseBoot_1.EnterpriseBoot;\nvar enterpriseMenu_1 = require(\"./dist/lib/menu/enterpriseMenu\");\nexports.EnterpriseMenu = enterpriseMenu_1.EnterpriseMenu;\nvar menuItemComponent_1 = require(\"./dist/lib/menu/menuItemComponent\");\nexports.MenuItemComponent = menuItemComponent_1.MenuItemComponent;\nvar menuList_1 = require(\"./dist/lib/menu/menuList\");\nexports.MenuList = menuList_1.MenuList;\nvar rangeController_1 = require(\"./dist/lib/rangeController\");\nexports.RangeController = rangeController_1.RangeController;\nvar rowGroupColumnsPanel_1 = require(\"./dist/lib/toolPanel/columnDrop/rowGroupColumnsPanel\");\nexports.RowGroupColumnsPanel = rowGroupColumnsPanel_1.RowGroupColumnsPanel;\nvar contextMenu_1 = require(\"./dist/lib/menu/contextMenu\");\nexports.ContextMenuFactory = contextMenu_1.ContextMenuFactory;\nvar viewportRowModel_1 = require(\"./dist/lib/rowModels/viewport/viewportRowModel\");\nexports.ViewportRowModel = viewportRowModel_1.ViewportRowModel;\nvar richSelectCellEditor_1 = require(\"./dist/lib/rendering/richSelect/richSelectCellEditor\");\nexports.RichSelectCellEditor = richSelectCellEditor_1.RichSelectCellEditor;\nvar richSelectRow_1 = require(\"./dist/lib/rendering/richSelect/richSelectRow\");\nexports.RichSelectRow = richSelectRow_1.RichSelectRow;\nvar virtualList_1 = require(\"./dist/lib/rendering/virtualList\");\nexports.VirtualList = virtualList_1.VirtualList;\nvar abstractColumnDropPanel_1 = require(\"./dist/lib/toolPanel/columnDrop/abstractColumnDropPanel\");\nexports.AbstractColumnDropPanel = abstractColumnDropPanel_1.AbstractColumnDropPanel;\nvar pivotColumnsPanel_1 = require(\"./dist/lib/toolPanel/columnDrop/pivotColumnsPanel\");\nexports.PivotColumnsPanel = pivotColumnsPanel_1.PivotColumnsPanel;\nvar toolPanelComp_1 = require(\"./dist/lib/toolPanel/toolPanelComp\");\nexports.ToolPanelComp = toolPanelComp_1.ToolPanelComp;\nvar licenseManager_1 = require(\"./dist/lib/licenseManager\");\nexports.LicenseManager = licenseManager_1.LicenseManager;\nvar pivotStage_1 = require(\"./dist/lib/rowStages/pivotStage\");\nexports.PivotStage = pivotStage_1.PivotStage;\nvar pivotColDefService_1 = require(\"./dist/lib/rowStages/pivotColDefService\");\nexports.PivotColDefService = pivotColDefService_1.PivotColDefService;\nvar pivotModePanel_1 = require(\"./dist/lib/toolPanel/columnDrop/pivotModePanel\");\nexports.PivotModePanel = pivotModePanel_1.PivotModePanel;\nvar aggFuncService_1 = require(\"./dist/lib/aggregation/aggFuncService\");\nexports.AggFuncService = aggFuncService_1.AggFuncService;\nvar md5_1 = require(\"./dist/lib/license/md5\");\nexports.MD5 = md5_1.MD5;\nvar setFilterListItem_1 = require(\"./dist/lib/setFilter/setFilterListItem\");\nexports.SetFilterListItem = setFilterListItem_1.SetFilterListItem;\nvar columnComponent_1 = require(\"./dist/lib/toolPanel/columnDrop/columnComponent\");\nexports.ColumnComponent = columnComponent_1.ColumnComponent;\nvar valueColumnsPanel_1 = require(\"./dist/lib/toolPanel/columnDrop/valueColumnsPanel\");\nexports.ValuesColumnPanel = valueColumnsPanel_1.ValuesColumnPanel;\nvar pivotCompFactory_1 = require(\"./dist/lib/pivotCompFactory\");\nexports.PivotCompFactory = pivotCompFactory_1.PivotCompFactory;\nvar rowGroupCompFactory_1 = require(\"./dist/lib/rowGroupCompFactory\");\nexports.RowGroupCompFactory = rowGroupCompFactory_1.RowGroupCompFactory;\nvar excelCreator_1 = require(\"./dist/lib/excelCreator\");\nexports.ExcelCreator = excelCreator_1.ExcelCreator;\nvar excelXmlFactory_1 = require(\"./dist/lib/excelXmlFactory\");\nexports.ExcelXmlFactory = excelXmlFactory_1.ExcelXmlFactory;\n// bootstrap the enterprise side of things - this ensures the enterprise code\n// is loaded up and ready to go\nvar main_1 = require(\"ag-grid/main\");\nvar enterpriseMenu_2 = require(\"./dist/lib/menu/enterpriseMenu\");\nvar rangeController_2 = require(\"./dist/lib/rangeController\");\nvar clipboardService_2 = require(\"./dist/lib/clipboardService\");\nvar groupStage_2 = require(\"./dist/lib/rowStages/groupStage\");\nvar aggregationStage_2 = require(\"./dist/lib/rowStages/aggregationStage\");\nvar enterpriseBoot_2 = require(\"./dist/lib/enterpriseBoot\");\nvar statusBar_2 = require(\"./dist/lib/statusBar/statusBar\");\nvar contextMenu_2 = require(\"./dist/lib/menu/contextMenu\");\nvar viewportRowModel_2 = require(\"./dist/lib/rowModels/viewport/viewportRowModel\");\nvar pivotColumnsPanel_2 = require(\"./dist/lib/toolPanel/columnDrop/pivotColumnsPanel\");\nvar toolPanelComp_2 = require(\"./dist/lib/toolPanel/toolPanelComp\");\nvar rowGroupCompFactory_2 = require(\"./dist/lib/rowGroupCompFactory\");\nvar licenseManager_2 = require(\"./dist/lib/licenseManager\");\nvar md5_2 = require(\"./dist/lib/license/md5\");\nvar pivotStage_2 = require(\"./dist/lib/rowStages/pivotStage\");\nvar pivotColDefService_2 = require(\"./dist/lib/rowStages/pivotColDefService\");\nvar aggFuncService_2 = require(\"./dist/lib/aggregation/aggFuncService\");\nvar pivotCompFactory_2 = require(\"./dist/lib/pivotCompFactory\");\nvar menuItemMapper_1 = require(\"./dist/lib/menu/menuItemMapper\");\nvar excelCreator_2 = require(\"./dist/lib/excelCreator\");\nvar excelXmlFactory_2 = require(\"./dist/lib/excelXmlFactory\");\nvar serverSideRowModel_1 = require(\"./dist/lib/rowModels/serverSide/serverSideRowModel\");\nvar columnSelectHeaderComp_1 = require(\"./dist/lib/toolPanel/columnsSelect/columnSelectHeaderComp\");\nvar columnContainerComp_1 = require(\"./dist/lib/toolPanel/columnsSelect/columnContainerComp\");\nvar horizontalResizeComp_1 = require(\"./dist/lib/toolPanel/columnsSelect/horizontalResizeComp\");\nvar toolPanelSelectComp_1 = require(\"./dist/lib/toolPanel/toolPanelSelectComp\");\nvar toolPanelColumnComp_2 = require(\"./dist/lib/toolPanel/toolPanelColumnComp\");\nvar headerColumnDropComp_1 = require(\"./dist/lib/toolPanel/columnDrop/headerColumnDropComp\");\nvar rowModelTypes = { viewport: viewportRowModel_2.ViewportRowModel, serverSide: serverSideRowModel_1.ServerSideRowModel };\nmain_1.Grid.setEnterpriseBeans([enterpriseMenu_2.EnterpriseMenuFactory, excelCreator_2.ExcelCreator, excelXmlFactory_2.ExcelXmlFactory, rowGroupCompFactory_2.RowGroupCompFactory, pivotCompFactory_2.PivotCompFactory,\n pivotColumnsPanel_2.PivotColumnsPanel, rangeController_2.RangeController, clipboardService_2.ClipboardService, pivotStage_2.PivotStage, pivotColDefService_2.PivotColDefService,\n contextMenu_2.ContextMenuFactory, groupStage_2.GroupStage, aggregationStage_2.AggregationStage, enterpriseBoot_2.EnterpriseBoot, aggFuncService_2.AggFuncService,\n licenseManager_2.LicenseManager, md5_2.MD5, menuItemMapper_1.MenuItemMapper], rowModelTypes);\nmain_1.Grid.setEnterpriseComponents([\n { componentName: 'AgColumnSelectHeader', theClass: columnSelectHeaderComp_1.ColumnSelectHeaderComp },\n { componentName: 'AgColumnContainer', theClass: columnContainerComp_1.ColumnContainerComp },\n { componentName: 'AgHorizontalResize', theClass: horizontalResizeComp_1.HorizontalResizeComp },\n { componentName: 'AgToolPanel', theClass: toolPanelComp_2.ToolPanelComp },\n { componentName: 'AgStatusBar', theClass: statusBar_2.StatusBar },\n { componentName: 'AgHeaderColumnDrop', theClass: headerColumnDropComp_1.HeaderColumnDropComp },\n { componentName: 'AgToolPanelColumnComp', theClass: toolPanelColumnComp_2.ToolPanelColumnComp },\n { componentName: 'AgToolPanelSelectComp', theClass: toolPanelSelectComp_1.ToolPanelSelectComp },\n]);\n","// ag-grid-enterprise v18.1.1\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar main_1 = require(\"ag-grid/main\");\nvar DetailCellRenderer = (function (_super) {\n __extends(DetailCellRenderer, _super);\n function DetailCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DetailCellRenderer.prototype.init = function (params) {\n var _this = this;\n this.rowId = params.node.id;\n this.masterGridApi = params.api;\n this.selectAndSetTemplate(params);\n if (main_1._.exists(this.eDetailGrid)) {\n this.addThemeToDetailGrid();\n this.createDetailsGrid(params);\n this.registerDetailWithMaster(params.node);\n this.loadRowData(params);\n setTimeout(function () { return _this.detailGridOptions.api.doLayout(); }, 0);\n }\n else {\n console.warn('ag-Grid: reference to eDetailGrid was missing from the details template. ' +\n 'Please add ref=\"eDetailGrid\" to the template.');\n }\n };\n DetailCellRenderer.prototype.addThemeToDetailGrid = function () {\n // this is needed by environment service of the child grid, the class needs to be on\n // the grid div itself - the browser's CSS on the other hand just inherits from the parent grid theme.\n var theme = this.environment.getTheme();\n if (main_1._.exists(theme)) {\n main_1._.addCssClass(this.eDetailGrid, theme);\n }\n };\n DetailCellRenderer.prototype.registerDetailWithMaster = function (rowNode) {\n var _this = this;\n var gridInfo = {\n id: this.rowId,\n api: this.detailGridOptions.api,\n columnApi: this.detailGridOptions.columnApi\n };\n // register with api\n this.masterGridApi.addDetailGridInfo(this.rowId, gridInfo);\n // register with node\n rowNode.detailGridInfo = gridInfo;\n this.addDestroyFunc(function () {\n _this.masterGridApi.removeDetailGridInfo(_this.rowId); // unregister from api\n rowNode.detailGridInfo = null; // unregister from node\n });\n };\n DetailCellRenderer.prototype.selectAndSetTemplate = function (params) {\n var paramsAny = params;\n if (main_1._.missing(paramsAny.template)) {\n // use default template\n this.setTemplate(DetailCellRenderer.TEMPLATE);\n }\n else {\n // use user provided template\n if (typeof paramsAny.template === 'string') {\n this.setTemplate(paramsAny.template);\n }\n else if (typeof paramsAny.template === 'function') {\n var templateFunc = paramsAny.template;\n var template = templateFunc(params);\n this.setTemplate(template);\n }\n else {\n console.warn('ag-Grid: detailCellRendererParams.template should be function or string');\n this.setTemplate(DetailCellRenderer.TEMPLATE);\n }\n }\n };\n DetailCellRenderer.prototype.createDetailsGrid = function (params) {\n // we clone the detail grid options, as otherwise it would be shared\n // across many instances, and that would be a problem because we set\n // api and columnApi into gridOptions\n var _this = this;\n var gridOptions = params.detailGridOptions;\n if (main_1._.missing(gridOptions)) {\n console.warn('ag-Grid: could not find detail grid options for master detail, ' +\n 'please set gridOptions.detailCellRendererParams.detailGridOptions');\n }\n // IMPORTANT - gridOptions must be cloned\n this.detailGridOptions = main_1._.cloneObject(gridOptions);\n new main_1.Grid(this.eDetailGrid, this.detailGridOptions, {\n seedBeanInstances: {\n // a temporary fix for AG-1574\n // AG-1715 raised to do a wider ranging refactor to improve this\n agGridReact: params.agGridReact,\n // AG-1716 - directly related to AG-1574 and AG-1715\n frameworkComponentWrapper: params.frameworkComponentWrapper\n }\n });\n this.addDestroyFunc(function () { return _this.detailGridOptions.api.destroy(); });\n };\n DetailCellRenderer.prototype.loadRowData = function (params) {\n var userFunc = params.getDetailRowData;\n if (!userFunc) {\n console.warn('ag-Grid: could not find getDetailRowData for master / detail, ' +\n 'please set gridOptions.detailCellRendererParams.getDetailRowData');\n return;\n }\n var funcParams = {\n node: params.node,\n data: params.data,\n successCallback: this.setRowData.bind(this)\n };\n userFunc(funcParams);\n };\n DetailCellRenderer.prototype.setRowData = function (rowData) {\n this.detailGridOptions.api.setRowData(rowData);\n };\n DetailCellRenderer.TEMPLATE = \"

\\n
\\n
\";\n __decorate([\n main_1.RefSelector('eDetailGrid'),\n __metadata(\"design:type\", HTMLElement)\n ], DetailCellRenderer.prototype, \"eDetailGrid\", void 0);\n __decorate([\n main_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", main_1.GridOptionsWrapper)\n ], DetailCellRenderer.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n main_1.Autowired('environment'),\n __metadata(\"design:type\", main_1.Environment)\n ], DetailCellRenderer.prototype, \"environment\", void 0);\n return DetailCellRenderer;\n}(main_1.Component));\nexports.DetailCellRenderer = DetailCellRenderer;\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","// ag-grid-enterprise v18.1.1\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ag_grid_1 = require(\"ag-grid\");\nvar serverSideCache_1 = require(\"./serverSideCache\");\nvar ServerSideRowModel = (function (_super) {\n __extends(ServerSideRowModel, _super);\n function ServerSideRowModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ServerSideRowModel.prototype.postConstruct = function () {\n this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n this.addEventListeners();\n var datasource = this.gridOptionsWrapper.getServerSideDatasource();\n if (ag_grid_1._.exists(datasource)) {\n this.setDatasource(datasource);\n }\n };\n ServerSideRowModel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n ServerSideRowModel.prototype.destroyDatasource = function () {\n if (this.datasource && this.datasource.destroy) {\n this.datasource.destroy();\n }\n this.datasource = null;\n };\n ServerSideRowModel.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideRowModel');\n };\n ServerSideRowModel.prototype.addEventListeners = function () {\n this.addDestroyableEventListener(this.eventService, ag_grid_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, ag_grid_1.Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n this.addDestroyableEventListener(this.eventService, ag_grid_1.Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, ag_grid_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onColumnEverything.bind(this));\n this.addDestroyableEventListener(this.eventService, ag_grid_1.Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, ag_grid_1.Events.EVENT_COLUMN_PIVOT_CHANGED, this.onColumnPivotChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, ag_grid_1.Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addDestroyableEventListener(this.eventService, ag_grid_1.Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n };\n ServerSideRowModel.prototype.setDatasource = function (datasource) {\n this.destroyDatasource();\n this.datasource = datasource;\n this.reset();\n };\n ServerSideRowModel.prototype.isLastRowFound = function () {\n if (this.cacheExists()) {\n return this.rootNode.childrenCache.isMaxRowFound();\n }\n else {\n return false;\n }\n };\n ServerSideRowModel.prototype.onColumnEverything = function () {\n // this is a hack for one customer only, so they can suppress the resetting of the columns.\n // The problem the customer had was they were api.setColumnDefs() after the data source came\n // back with data. So this stops the reload from the grid after the data comes back.\n // Once we have \"AG-1591 Allow delta changes to columns\" fixed, then this hack can be taken out.\n if (this.gridOptionsWrapper.isSuppressEnterpriseResetOnNewColumns()) {\n return;\n }\n // every other customer can continue as normal and have it working!!!\n this.reset();\n };\n ServerSideRowModel.prototype.onFilterChanged = function () {\n this.reset();\n };\n // returns back all the cols that were effected by the sorting. eg if we were sorting by col A,\n // and now we are sorting by col B, the list of impacted cols should be A and B. so if a cache\n // is impacted by sorting on A or B then it needs to be refreshed. this includes where the cache\n // was previously sorted by A and then the A sort now needs to be cleared.\n ServerSideRowModel.prototype.findChangedColumnsInSort = function (newSortModel, oldSortModel) {\n var allColsInBothSorts = [];\n [newSortModel, oldSortModel].forEach(function (sortModel) {\n if (sortModel) {\n var ids = sortModel.map(function (sm) { return sm.colId; });\n allColsInBothSorts = allColsInBothSorts.concat(ids);\n }\n });\n var differentSorts = function (oldSortItem, newSortItem) {\n var oldSort = oldSortItem ? oldSortItem.sort : null;\n var newSort = newSortItem ? newSortItem.sort : null;\n return oldSort !== newSort;\n };\n var differentIndexes = function (oldSortItem, newSortItem) {\n var oldIndex = oldSortModel.indexOf(oldSortItem);\n var newIndex = newSortModel.indexOf(newSortItem);\n return oldIndex !== newIndex;\n };\n return allColsInBothSorts.filter(function (colId) {\n var oldSortItem = ag_grid_1._.find(oldSortModel, function (sm) { return sm.colId === colId; });\n var newSortItem = ag_grid_1._.find(newSortModel, function (sm) { return sm.colId === colId; });\n return differentSorts(oldSortItem, newSortItem) || differentIndexes(oldSortItem, newSortItem);\n });\n };\n ServerSideRowModel.prototype.onSortChanged = function () {\n var newSortModel = this.extractSortModel();\n var oldSortModel = this.cacheParams.sortModel;\n var changedColumnsInSort = this.findChangedColumnsInSort(newSortModel, oldSortModel);\n this.cacheParams.sortModel = newSortModel;\n if (this.cacheExists()) {\n var rowGroupColIds = this.columnController.getRowGroupColumns().map(function (col) { return col.getId(); });\n var serverSideCache = this.rootNode.childrenCache;\n var sortingWithValueCol = this.isSortingWithValueColumn(changedColumnsInSort);\n var sortAlwaysResets = this.gridOptionsWrapper.isServerSideSortingAlwaysResets();\n if (sortAlwaysResets || sortingWithValueCol) {\n this.reset();\n }\n else {\n serverSideCache.refreshCacheAfterSort(changedColumnsInSort, rowGroupColIds);\n }\n }\n };\n ServerSideRowModel.prototype.onValueChanged = function () {\n this.reset();\n };\n ServerSideRowModel.prototype.onColumnRowGroupChanged = function () {\n this.reset();\n };\n ServerSideRowModel.prototype.onColumnPivotChanged = function () {\n this.reset();\n };\n ServerSideRowModel.prototype.onPivotModeChanged = function () {\n this.reset();\n };\n ServerSideRowModel.prototype.onRowGroupOpened = function (event) {\n var rowNode = event.node;\n if (rowNode.expanded) {\n if (ag_grid_1._.missing(rowNode.childrenCache)) {\n this.createNodeCache(rowNode);\n }\n }\n else {\n if (this.gridOptionsWrapper.isPurgeClosedRowNodes() && ag_grid_1._.exists(rowNode.childrenCache)) {\n rowNode.childrenCache.destroy();\n rowNode.childrenCache = null;\n }\n }\n this.updateRowIndexesAndBounds();\n var modelUpdatedEvent = {\n type: ag_grid_1.Events.EVENT_MODEL_UPDATED,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n newPage: false,\n newData: false,\n animate: true,\n keepRenderedRows: true\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n };\n ServerSideRowModel.prototype.reset = function () {\n this.rootNode = new ag_grid_1.RowNode();\n this.rootNode.group = true;\n this.rootNode.level = -1;\n this.context.wireBean(this.rootNode);\n if (this.datasource) {\n this.createNewRowNodeBlockLoader();\n this.cacheParams = this.createCacheParams();\n this.createNodeCache(this.rootNode);\n this.updateRowIndexesAndBounds();\n }\n // this event: 1) clears selection 2) updates filters 3) shows/hides 'no rows' overlay\n var rowDataChangedEvent = {\n type: ag_grid_1.Events.EVENT_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(rowDataChangedEvent);\n // this gets the row to render rows (or remove the previously rendered rows, as it's blank to start).\n // important to NOT pass in an event with keepRenderedRows or animate, as we want the renderer\n // to treat the rows as new rows, as it's all new data\n var modelUpdatedEvent = {\n type: ag_grid_1.Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: false\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n };\n ServerSideRowModel.prototype.createNewRowNodeBlockLoader = function () {\n this.destroyRowNodeBlockLoader();\n var maxConcurrentRequests = this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests();\n this.rowNodeBlockLoader = new ag_grid_1.RowNodeBlockLoader(maxConcurrentRequests);\n this.context.wireBean(this.rowNodeBlockLoader);\n };\n ServerSideRowModel.prototype.destroyRowNodeBlockLoader = function () {\n if (this.rowNodeBlockLoader) {\n this.rowNodeBlockLoader.destroy();\n this.rowNodeBlockLoader = null;\n }\n };\n ServerSideRowModel.prototype.toValueObjects = function (columns) {\n var _this = this;\n return columns.map(function (col) { return ({\n id: col.getId(),\n aggFunc: col.getAggFunc(),\n displayName: _this.columnController.getDisplayNameForColumn(col, 'model'),\n field: col.getColDef().field\n }); });\n };\n ServerSideRowModel.prototype.createCacheParams = function () {\n var rowGroupColumnVos = this.toValueObjects(this.columnController.getRowGroupColumns());\n var valueColumnVos = this.toValueObjects(this.columnController.getValueColumns());\n var pivotColumnVos = this.toValueObjects(this.columnController.getPivotColumns());\n var dynamicRowHeight = this.gridOptionsWrapper.isDynamicRowHeight();\n var maxBlocksInCache = this.gridOptionsWrapper.getMaxBlocksInCache();\n if (dynamicRowHeight && maxBlocksInCache >= 0) {\n console.warn('ag-Grid: Server Side Row Model does not support Dynamic Row Height and Cache Purging. ' +\n 'Either a) remove getRowHeight() callback or b) remove maxBlocksInCache property. Purging has been disabled.');\n maxBlocksInCache = undefined;\n }\n if (maxBlocksInCache >= 0 && this.columnController.isAutoRowHeightActive()) {\n console.warn('ag-Grid: Server Side Row Model does not support Auto Row Height and Cache Purging. ' +\n 'Either a) remove colDef.autoHeight or b) remove maxBlocksInCache property. Purging has been disabled.');\n maxBlocksInCache = undefined;\n }\n var params = {\n // the columns the user has grouped and aggregated by\n valueCols: valueColumnVos,\n rowGroupCols: rowGroupColumnVos,\n pivotCols: pivotColumnVos,\n pivotMode: this.columnController.isPivotMode(),\n // sort and filter model\n filterModel: this.filterManager.getFilterModel(),\n sortModel: this.extractSortModel(),\n rowNodeBlockLoader: this.rowNodeBlockLoader,\n datasource: this.datasource,\n lastAccessedSequence: new ag_grid_1.NumberSequence(),\n overflowSize: 1,\n initialRowCount: 1,\n maxConcurrentRequests: this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests(),\n maxBlocksInCache: maxBlocksInCache,\n blockSize: this.gridOptionsWrapper.getCacheBlockSize(),\n rowHeight: this.rowHeight,\n dynamicRowHeight: dynamicRowHeight\n };\n // set defaults\n if (!(params.maxConcurrentRequests >= 1)) {\n params.maxConcurrentRequests = 2;\n }\n // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the\n // server for one page at a time. so the default if not specified is 100.\n if (!(params.blockSize >= 1)) {\n params.blockSize = 100;\n }\n // if user doesn't give initial rows to display, we assume zero\n if (!(params.initialRowCount >= 1)) {\n params.initialRowCount = 0;\n }\n // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past\n // the current page and request first row of next page\n if (!(params.overflowSize >= 1)) {\n params.overflowSize = 1;\n }\n return params;\n };\n ServerSideRowModel.prototype.createNodeCache = function (rowNode) {\n var cache = new serverSideCache_1.ServerSideCache(this.cacheParams, rowNode);\n this.context.wireBean(cache);\n cache.addEventListener(ag_grid_1.RowNodeCache.EVENT_CACHE_UPDATED, this.onCacheUpdated.bind(this));\n rowNode.childrenCache = cache;\n };\n ServerSideRowModel.prototype.onCacheUpdated = function () {\n this.updateRowIndexesAndBounds();\n var modelUpdatedEvent = {\n type: ag_grid_1.Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: true,\n keepRenderedRows: true,\n newPage: false,\n newData: false\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n };\n ServerSideRowModel.prototype.updateRowIndexesAndBounds = function () {\n if (this.cacheExists()) {\n // NOTE: should not be casting here, the RowModel should use IServerSideRowModel interface?\n var serverSideCache = this.rootNode.childrenCache;\n this.resetRowTops(serverSideCache);\n this.setDisplayIndexes(serverSideCache);\n }\n };\n ServerSideRowModel.prototype.setDisplayIndexes = function (cache) {\n var numberSequence = new ag_grid_1.NumberSequence();\n var nextRowTop = { value: 0 };\n cache.setDisplayIndexes(numberSequence, nextRowTop);\n };\n // resetting row tops is needed for animation, as part of the operation is saving the old location,\n // which is needed for rows that are transitioning in\n ServerSideRowModel.prototype.resetRowTops = function (cache) {\n var numberSequence = new ag_grid_1.NumberSequence();\n cache.forEachNodeDeep(function (rowNode) { return rowNode.clearRowTop(); }, numberSequence);\n };\n ServerSideRowModel.prototype.getRow = function (index) {\n if (this.cacheExists()) {\n return this.rootNode.childrenCache.getRow(index);\n }\n else {\n return null;\n }\n };\n ServerSideRowModel.prototype.getPageFirstRow = function () {\n return 0;\n };\n ServerSideRowModel.prototype.getPageLastRow = function () {\n var lastRow;\n if (this.cacheExists()) {\n // NOTE: should not be casting here, the RowModel should use IServerSideRowModel interface?\n var serverSideCache = this.rootNode.childrenCache;\n lastRow = serverSideCache.getDisplayIndexEnd() - 1;\n }\n else {\n lastRow = 0;\n }\n return lastRow;\n };\n ServerSideRowModel.prototype.getRowCount = function () {\n return this.getPageLastRow() + 1;\n };\n ServerSideRowModel.prototype.getRowBounds = function (index) {\n if (!this.cacheExists()) {\n return {\n rowTop: 0,\n rowHeight: this.rowHeight\n };\n }\n var serverSideCache = this.rootNode.childrenCache;\n return serverSideCache.getRowBounds(index);\n };\n ServerSideRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n if (pixel === 0)\n return 0;\n if (!this.cacheExists())\n return 0;\n var serverSideCache = this.rootNode.childrenCache;\n return serverSideCache.getRowIndexAtPixel(pixel);\n };\n ServerSideRowModel.prototype.getCurrentPageHeight = function () {\n return this.rowHeight * this.getRowCount();\n };\n ServerSideRowModel.prototype.isEmpty = function () {\n return false;\n };\n ServerSideRowModel.prototype.isRowsToRender = function () {\n return this.getRowCount() > 0;\n };\n ServerSideRowModel.prototype.getType = function () {\n return ag_grid_1.Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n };\n ServerSideRowModel.prototype.forEachNode = function (callback) {\n if (this.cacheExists()) {\n this.rootNode.childrenCache.forEachNodeDeep(callback, new ag_grid_1.NumberSequence());\n }\n };\n ServerSideRowModel.prototype.executeOnCache = function (route, callback) {\n if (this.cacheExists()) {\n var topLevelCache = this.rootNode.childrenCache;\n var cacheToPurge = topLevelCache.getChildCache(route);\n if (cacheToPurge) {\n callback(cacheToPurge);\n }\n }\n };\n ServerSideRowModel.prototype.purgeCache = function (route) {\n if (route === void 0) { route = []; }\n this.executeOnCache(route, function (cache) { return cache.purgeCache(); });\n };\n ServerSideRowModel.prototype.removeFromCache = function (route, items) {\n this.executeOnCache(route, function (cache) { return cache.removeFromCache(items); });\n this.rowNodeBlockLoader.checkBlockToLoad();\n };\n ServerSideRowModel.prototype.addToCache = function (route, items, index) {\n this.executeOnCache(route, function (cache) { return cache.addToCache(items, index); });\n };\n ServerSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n if (ag_grid_1._.exists(firstInRange) && firstInRange.parent !== lastInRange.parent)\n return [];\n return lastInRange.parent.childrenCache.getRowNodesInRange(firstInRange, lastInRange);\n };\n ServerSideRowModel.prototype.getRowNode = function (id) {\n var result = null;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n });\n return result;\n };\n ServerSideRowModel.prototype.getBlockState = function () {\n if (this.rowNodeBlockLoader) {\n return this.rowNodeBlockLoader.getBlockState();\n }\n else {\n return null;\n }\n };\n ServerSideRowModel.prototype.isRowPresent = function (rowNode) {\n return false;\n };\n ServerSideRowModel.prototype.extractSortModel = function () {\n var sortModel = this.sortController.getSortModel();\n var rowGroupCols = this.toValueObjects(this.columnController.getRowGroupColumns());\n // find index of auto group column in sort model\n var autoGroupIndex = -1;\n for (var i = 0; i < sortModel.length; ++i) {\n if (sortModel[i].colId === 'ag-Grid-AutoColumn') {\n autoGroupIndex = i;\n break;\n }\n }\n // replace auto column with individual group columns\n if (autoGroupIndex > -1) {\n var individualGroupCols = rowGroupCols.map(function (group) {\n return {\n colId: group.field,\n sort: sortModel[autoGroupIndex].sort\n };\n });\n // remove auto group column\n sortModel.splice(autoGroupIndex, 1);\n var _loop_1 = function (i) {\n var individualGroupCol = individualGroupCols[i];\n // don't add individual group column if non group column already exists as it gets precedence\n var sameNonGroupColumnExists = sortModel.some(function (sm) { return sm.colId === individualGroupCol.colId; });\n if (sameNonGroupColumnExists)\n return \"continue\";\n sortModel.splice(autoGroupIndex++, 0, individualGroupCol);\n };\n // insert individual group columns\n for (var i = 0; i < individualGroupCols.length; i++) {\n _loop_1(i);\n }\n }\n return sortModel;\n };\n ;\n ServerSideRowModel.prototype.isSortingWithValueColumn = function (changedColumnsInSort) {\n var valueColIds = this.columnController.getValueColumns().map(function (col) { return col.getColId(); });\n for (var i = 0; i < changedColumnsInSort.length; i++) {\n var sortColId = changedColumnsInSort[i];\n if (valueColIds.indexOf(sortColId) > -1) {\n return true;\n }\n }\n return false;\n };\n ServerSideRowModel.prototype.cacheExists = function () {\n return ag_grid_1._.exists(this.rootNode) && ag_grid_1._.exists(this.rootNode.childrenCache);\n };\n __decorate([\n ag_grid_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", ag_grid_1.GridOptionsWrapper)\n ], ServerSideRowModel.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n ag_grid_1.Autowired('eventService'),\n __metadata(\"design:type\", ag_grid_1.EventService)\n ], ServerSideRowModel.prototype, \"eventService\", void 0);\n __decorate([\n ag_grid_1.Autowired('context'),\n __metadata(\"design:type\", ag_grid_1.Context)\n ], ServerSideRowModel.prototype, \"context\", void 0);\n __decorate([\n ag_grid_1.Autowired('columnController'),\n __metadata(\"design:type\", ag_grid_1.ColumnController)\n ], ServerSideRowModel.prototype, \"columnController\", void 0);\n __decorate([\n ag_grid_1.Autowired('filterManager'),\n __metadata(\"design:type\", ag_grid_1.FilterManager)\n ], ServerSideRowModel.prototype, \"filterManager\", void 0);\n __decorate([\n ag_grid_1.Autowired('sortController'),\n __metadata(\"design:type\", ag_grid_1.SortController)\n ], ServerSideRowModel.prototype, \"sortController\", void 0);\n __decorate([\n ag_grid_1.Autowired('gridApi'),\n __metadata(\"design:type\", ag_grid_1.GridApi)\n ], ServerSideRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n ag_grid_1.Autowired('columnApi'),\n __metadata(\"design:type\", ag_grid_1.ColumnApi)\n ], ServerSideRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n ag_grid_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ServerSideRowModel.prototype, \"postConstruct\", null);\n __decorate([\n ag_grid_1.PreDestroy,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ServerSideRowModel.prototype, \"destroy\", null);\n __decorate([\n ag_grid_1.PreDestroy,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ServerSideRowModel.prototype, \"destroyDatasource\", null);\n __decorate([\n __param(0, ag_grid_1.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [ag_grid_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], ServerSideRowModel.prototype, \"setBeans\", null);\n ServerSideRowModel = __decorate([\n ag_grid_1.Bean('rowModel')\n ], ServerSideRowModel);\n return ServerSideRowModel;\n}(ag_grid_1.BeanStub));\nexports.ServerSideRowModel = ServerSideRowModel;\n","// ag-grid-enterprise v18.1.1\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ag_grid_1 = require(\"ag-grid\");\nvar serverSideBlock_1 = require(\"./serverSideBlock\");\nvar ServerSideCache = (function (_super) {\n __extends(ServerSideCache, _super);\n function ServerSideCache(cacheParams, parentRowNode) {\n var _this = _super.call(this, cacheParams) || this;\n // this will always be zero for the top level cache only,\n // all the other ones change as the groups open and close\n _this.displayIndexStart = 0;\n _this.displayIndexEnd = 0; // not sure if setting this one to zero is necessary\n _this.cacheTop = 0;\n _this.blockHeights = {};\n _this.parentRowNode = parentRowNode;\n return _this;\n }\n ServerSideCache.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideCache');\n };\n ServerSideCache.prototype.init = function () {\n _super.prototype.init.call(this);\n };\n ServerSideCache.prototype.getRowBounds = function (index) {\n var _this = this;\n this.logger.log(\"getRowBounds(\" + index + \")\");\n // we return null if row not found\n var result;\n var blockFound = false;\n var lastBlock;\n this.forEachBlockInOrder(function (block) {\n if (blockFound)\n return;\n if (block.isDisplayIndexInBlock(index)) {\n result = block.getRowBounds(index, _this.getVirtualRowCount());\n blockFound = true;\n }\n else if (block.isBlockBefore(index)) {\n lastBlock = block;\n }\n });\n if (!blockFound) {\n var nextRowTop = void 0;\n var nextRowIndex = void 0;\n if (lastBlock) {\n nextRowTop = lastBlock.getBlockTop() + lastBlock.getBlockHeight();\n nextRowIndex = lastBlock.getDisplayIndexEnd();\n }\n else {\n nextRowTop = this.cacheTop;\n nextRowIndex = this.displayIndexStart;\n }\n var rowsBetween = index - nextRowIndex;\n result = {\n rowHeight: this.cacheParams.rowHeight,\n rowTop: nextRowTop + rowsBetween * this.cacheParams.rowHeight\n };\n }\n // NOTE: what about purged blocks\n this.logger.log(\"getRowBounds(\" + index + \"), result = \" + result);\n return result;\n };\n ServerSideCache.prototype.destroyBlock = function (block) {\n _super.prototype.destroyBlock.call(this, block);\n };\n ServerSideCache.prototype.getRowIndexAtPixel = function (pixel) {\n var _this = this;\n this.logger.log(\"getRowIndexAtPixel(\" + pixel + \")\");\n // we return null if row not found\n var result;\n var blockFound = false;\n var lastBlock;\n this.forEachBlockInOrder(function (block) {\n if (blockFound)\n return;\n if (block.isPixelInRange(pixel)) {\n result = block.getRowIndexAtPixel(pixel, _this.getVirtualRowCount());\n blockFound = true;\n }\n else if (block.getBlockTop() > pixel) {\n lastBlock = block;\n }\n });\n if (!blockFound) {\n var nextRowTop = void 0;\n var nextRowIndex = void 0;\n if (lastBlock) {\n nextRowTop = lastBlock.getBlockTop() + lastBlock.getBlockHeight();\n nextRowIndex = lastBlock.getDisplayIndexEnd();\n }\n else {\n nextRowTop = this.cacheTop;\n nextRowIndex = this.displayIndexStart;\n }\n var pixelsBetween = pixel - nextRowTop;\n var rowsBetween = (pixelsBetween / this.cacheParams.rowHeight) | 0;\n result = nextRowIndex + rowsBetween;\n }\n var lastAllowedIndex = this.getDisplayIndexEnd() - 1;\n if (result > lastAllowedIndex) {\n result = lastAllowedIndex;\n }\n //NOTE: purged\n this.logger.log(\"getRowIndexAtPixel(\" + pixel + \") result = \" + result);\n return result;\n };\n ServerSideCache.prototype.clearRowTops = function () {\n var _this = this;\n this.forEachBlockInOrder(function (block) { return block.clearRowTops(_this.getVirtualRowCount()); });\n };\n ServerSideCache.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n var _this = this;\n this.displayIndexStart = displayIndexSeq.peek();\n this.cacheTop = nextRowTop.value;\n var lastBlockId = -1;\n this.forEachBlockInOrder(function (currentBlock, blockId) {\n // if we skipped blocks, then we need to skip the row indexes. we assume that all missing\n // blocks are made up of closed RowNodes only (if they were groups), as we never expire from\n // the cache if any row nodes are open.\n var blocksSkippedCount = blockId - lastBlockId - 1;\n var rowsSkippedCount = blocksSkippedCount * _this.cacheParams.blockSize;\n if (rowsSkippedCount > 0) {\n displayIndexSeq.skip(rowsSkippedCount);\n }\n for (var i = 1; i <= blocksSkippedCount; i++) {\n var blockToAddId = blockId - i;\n if (ag_grid_1._.exists(_this.blockHeights[blockToAddId])) {\n nextRowTop.value += _this.blockHeights[blockToAddId];\n }\n else {\n nextRowTop.value += _this.cacheParams.blockSize * _this.cacheParams.rowHeight;\n }\n }\n lastBlockId = blockId;\n currentBlock.setDisplayIndexes(displayIndexSeq, _this.getVirtualRowCount(), nextRowTop);\n _this.blockHeights[blockId] = currentBlock.getBlockHeight();\n });\n // if any blocks missing at the end, need to increase the row index for them also\n // eg if block size = 10, we have total rows of 25 (indexes 0 .. 24), but first 2 blocks loaded (because\n // last row was ejected from cache), then:\n // lastVisitedRow = 19, virtualRowCount = 25, rows not accounted for = 5 (24 - 19)\n var lastVisitedRow = ((lastBlockId + 1) * this.cacheParams.blockSize) - 1;\n var rowCount = this.getVirtualRowCount();\n var rowsNotAccountedFor = rowCount - lastVisitedRow - 1;\n if (rowsNotAccountedFor > 0) {\n displayIndexSeq.skip(rowsNotAccountedFor);\n nextRowTop.value += rowsNotAccountedFor * this.cacheParams.rowHeight;\n }\n this.displayIndexEnd = displayIndexSeq.peek();\n this.cacheHeight = nextRowTop.value - this.cacheTop;\n };\n // gets called in a) init() above and b) by the grid\n ServerSideCache.prototype.getRow = function (displayRowIndex, dontCreateBlock) {\n var _this = this;\n if (dontCreateBlock === void 0) { dontCreateBlock = false; }\n // this can happen if asking for a row that doesn't exist in the model,\n // eg if a cell range is selected, and the user filters so rows no longer\n // exist\n if (!this.isDisplayIndexInCache(displayRowIndex)) {\n return null;\n }\n // if we have the block, then this is the block\n var block = null;\n // this is the last block that we have BEFORE the right block\n var beforeBlock = null;\n this.forEachBlockInOrder(function (currentBlock) {\n if (currentBlock.isDisplayIndexInBlock(displayRowIndex)) {\n block = currentBlock;\n }\n else if (currentBlock.isBlockBefore(displayRowIndex)) {\n // this will get assigned many times, but the last time will\n // be the closest block to the required block that is BEFORE\n beforeBlock = currentBlock;\n }\n });\n // when we are moving rows around, we don't want to trigger loads\n if (ag_grid_1._.missing(block) && dontCreateBlock) {\n return null;\n }\n // if block not found, we need to load it\n if (ag_grid_1._.missing(block)) {\n var blockNumber = void 0;\n var displayIndexStart_1;\n var nextRowTop = void 0;\n // because missing blocks are always fully closed, we can work out\n // the start index of the block we want by hopping from the closest block,\n // as we know the row count in closed blocks is equal to the page size\n if (beforeBlock) {\n blockNumber = beforeBlock.getBlockNumber() + 1;\n displayIndexStart_1 = beforeBlock.getDisplayIndexEnd();\n nextRowTop = beforeBlock.getBlockHeight() + beforeBlock.getBlockTop();\n var isInRange = function () {\n return displayRowIndex >= displayIndexStart_1 && displayRowIndex < (displayIndexStart_1 + _this.cacheParams.blockSize);\n };\n while (!isInRange()) {\n displayIndexStart_1 += this.cacheParams.blockSize;\n var cachedBlockHeight = this.blockHeights[blockNumber];\n if (ag_grid_1._.exists(cachedBlockHeight)) {\n nextRowTop += cachedBlockHeight;\n }\n else {\n nextRowTop += this.cacheParams.rowHeight * this.cacheParams.blockSize;\n }\n blockNumber++;\n }\n }\n else {\n var localIndex = displayRowIndex - this.displayIndexStart;\n blockNumber = Math.floor(localIndex / this.cacheParams.blockSize);\n displayIndexStart_1 = this.displayIndexStart + (blockNumber * this.cacheParams.blockSize);\n nextRowTop = this.cacheTop + (blockNumber * this.cacheParams.blockSize * this.cacheParams.rowHeight);\n }\n block = this.createBlock(blockNumber, displayIndexStart_1, { value: nextRowTop });\n this.logger.log(\"block missing, rowIndex = \" + displayRowIndex + \", creating #\" + blockNumber + \", displayIndexStart = \" + displayIndexStart_1);\n }\n var rowNode = block.getRow(displayRowIndex);\n return rowNode;\n };\n ServerSideCache.prototype.createBlock = function (blockNumber, displayIndex, nextRowTop) {\n var newBlock = new serverSideBlock_1.ServerSideBlock(blockNumber, this.parentRowNode, this.cacheParams, this);\n this.context.wireBean(newBlock);\n var displayIndexSequence = new ag_grid_1.NumberSequence(displayIndex);\n newBlock.setDisplayIndexes(displayIndexSequence, this.getVirtualRowCount(), nextRowTop);\n this.postCreateBlock(newBlock);\n return newBlock;\n };\n ServerSideCache.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n ServerSideCache.prototype.isDisplayIndexInCache = function (displayIndex) {\n if (this.getVirtualRowCount() === 0) {\n return false;\n }\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n ServerSideCache.prototype.getChildCache = function (keys) {\n var _this = this;\n if (ag_grid_1._.missingOrEmpty(keys)) {\n return this;\n }\n var nextKey = keys[0];\n var nextServerSideCache = null;\n this.forEachBlockInOrder(function (block) {\n // callback: (rowNode: RowNode, index: number) => void, sequence: NumberSequence, rowCount: number\n block.forEachNodeShallow(function (rowNode) {\n if (rowNode.key === nextKey) {\n nextServerSideCache = rowNode.childrenCache;\n }\n }, new ag_grid_1.NumberSequence(), _this.getVirtualRowCount());\n });\n if (nextServerSideCache) {\n var keyListForNextLevel = keys.slice(1, keys.length);\n return nextServerSideCache.getChildCache(keyListForNextLevel);\n }\n else {\n return null;\n }\n };\n ServerSideCache.prototype.isPixelInRange = function (pixel) {\n if (this.getVirtualRowCount() === 0) {\n return false;\n }\n return pixel >= this.cacheTop && pixel < (this.cacheTop + this.cacheHeight);\n };\n ServerSideCache.prototype.removeFromCache = function (items) {\n var _this = this;\n // create map of id's for quick lookup\n var itemsToDeleteById = {};\n var idForNodeFunc = this.gridOptionsWrapper.getRowNodeIdFunc();\n items.forEach(function (item) {\n var id = idForNodeFunc(item);\n itemsToDeleteById[id] = item;\n });\n var deletedCount = 0;\n this.forEachBlockInOrder(function (block) {\n var startRow = block.getStartRow();\n var endRow = block.getEndRow();\n var deletedCountFromThisBlock = 0;\n for (var rowIndex = startRow; rowIndex < endRow; rowIndex++) {\n var rowNode = block.getRowUsingLocalIndex(rowIndex, true);\n if (!rowNode) {\n continue;\n }\n var deleteThisRow = !!itemsToDeleteById[rowNode.id];\n if (deleteThisRow) {\n deletedCountFromThisBlock++;\n deletedCount++;\n block.setDirty();\n rowNode.clearRowTop();\n continue;\n }\n // if rows were deleted, then we need to move this row node to\n // it's new location\n if (deletedCount > 0) {\n block.setDirty();\n var newIndex = rowIndex - deletedCount;\n var blockId = Math.floor(newIndex / _this.cacheParams.blockSize);\n var blockToInsert = _this.getBlock(blockId);\n if (blockToInsert) {\n blockToInsert.setRowNode(newIndex, rowNode);\n }\n }\n }\n if (deletedCountFromThisBlock > 0) {\n for (var i = deletedCountFromThisBlock; i > 0; i--) {\n block.setBlankRowNode(endRow - i);\n }\n }\n });\n if (this.isMaxRowFound()) {\n this.hack_setVirtualRowCount(this.getVirtualRowCount() - deletedCount);\n }\n this.onCacheUpdated();\n var event = {\n type: ag_grid_1.Events.EVENT_ROW_DATA_UPDATED,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n this.eventService.dispatchEvent(event);\n };\n ServerSideCache.prototype.addToCache = function (items, indexToInsert) {\n var _this = this;\n var newNodes = [];\n this.forEachBlockInReverseOrder(function (block) {\n var pageEndRow = block.getEndRow();\n // if the insertion is after this page, then this page is not impacted\n if (pageEndRow <= indexToInsert) {\n return;\n }\n _this.moveItemsDown(block, indexToInsert, items.length);\n var newNodesThisPage = _this.insertItems(block, indexToInsert, items);\n newNodesThisPage.forEach(function (rowNode) { return newNodes.push(rowNode); });\n });\n if (this.isMaxRowFound()) {\n this.hack_setVirtualRowCount(this.getVirtualRowCount() + items.length);\n }\n this.onCacheUpdated();\n var event = {\n type: ag_grid_1.Events.EVENT_ROW_DATA_UPDATED,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n this.eventService.dispatchEvent(event);\n };\n ServerSideCache.prototype.moveItemsDown = function (block, moveFromIndex, moveCount) {\n var startRow = block.getStartRow();\n var endRow = block.getEndRow();\n var indexOfLastRowToMove = moveFromIndex + moveCount;\n // all rows need to be moved down below the insertion index\n for (var currentRowIndex = endRow - 1; currentRowIndex >= startRow; currentRowIndex--) {\n // don't move rows at or before the insertion index\n if (currentRowIndex < indexOfLastRowToMove) {\n continue;\n }\n var indexOfNodeWeWant = currentRowIndex - moveCount;\n var nodeForThisIndex = this.getRow(indexOfNodeWeWant, true);\n if (nodeForThisIndex) {\n block.setRowNode(currentRowIndex, nodeForThisIndex);\n }\n else {\n block.setBlankRowNode(currentRowIndex);\n block.setDirty();\n }\n }\n };\n ServerSideCache.prototype.insertItems = function (block, indexToInsert, items) {\n var pageStartRow = block.getStartRow();\n var pageEndRow = block.getEndRow();\n var newRowNodes = [];\n // next stage is insert the rows into this page, if applicable\n for (var index = 0; index < items.length; index++) {\n var rowIndex = indexToInsert + index;\n var currentRowInThisPage = rowIndex >= pageStartRow && rowIndex < pageEndRow;\n if (currentRowInThisPage) {\n var dataItem = items[index];\n var newRowNode = block.setNewData(rowIndex, dataItem);\n newRowNodes.push(newRowNode);\n }\n }\n return newRowNodes;\n };\n ServerSideCache.prototype.refreshCacheAfterSort = function (changedColumnsInSort, rowGroupColIds) {\n var _this = this;\n var level = this.parentRowNode.level + 1;\n var grouping = level < this.cacheParams.rowGroupCols.length;\n var shouldPurgeCache;\n if (grouping) {\n var groupColVo = this.cacheParams.rowGroupCols[level];\n var groupField = groupColVo.field;\n var rowGroupBlock = rowGroupColIds.indexOf(groupField) > -1;\n var sortingByGroup = changedColumnsInSort.indexOf(groupField) > -1;\n shouldPurgeCache = rowGroupBlock && sortingByGroup;\n }\n else {\n shouldPurgeCache = true;\n }\n if (shouldPurgeCache) {\n this.purgeCache();\n }\n else {\n this.forEachBlockInOrder(function (block) {\n if (block.isGroupLevel()) {\n var callback = function (rowNode) {\n var nextCache = rowNode.childrenCache;\n if (nextCache) {\n nextCache.refreshCacheAfterSort(changedColumnsInSort, rowGroupColIds);\n }\n };\n block.forEachNodeShallow(callback, new ag_grid_1.NumberSequence(), _this.getVirtualRowCount());\n }\n });\n }\n };\n __decorate([\n ag_grid_1.Autowired('eventService'),\n __metadata(\"design:type\", ag_grid_1.EventService)\n ], ServerSideCache.prototype, \"eventService\", void 0);\n __decorate([\n ag_grid_1.Autowired('context'),\n __metadata(\"design:type\", ag_grid_1.Context)\n ], ServerSideCache.prototype, \"context\", void 0);\n __decorate([\n ag_grid_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", ag_grid_1.GridOptionsWrapper)\n ], ServerSideCache.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n __param(0, ag_grid_1.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [ag_grid_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], ServerSideCache.prototype, \"setBeans\", null);\n __decorate([\n ag_grid_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ServerSideCache.prototype, \"init\", null);\n return ServerSideCache;\n}(ag_grid_1.RowNodeCache));\nexports.ServerSideCache = ServerSideCache;\n","// ag-grid-enterprise v18.1.1\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ag_grid_1 = require(\"ag-grid\");\nvar ServerSideBlock = (function (_super) {\n __extends(ServerSideBlock, _super);\n function ServerSideBlock(pageNumber, parentRowNode, params, parentCache) {\n var _this = _super.call(this, pageNumber, params) || this;\n _this.params = params;\n _this.parentRowNode = parentRowNode;\n _this.parentCache = parentCache;\n _this.level = parentRowNode.level + 1;\n _this.groupLevel = _this.level < params.rowGroupCols.length;\n _this.leafGroup = _this.level === (params.rowGroupCols.length - 1);\n return _this;\n }\n ServerSideBlock.prototype.createNodeIdPrefix = function () {\n var parts = [];\n var rowNode = this.parentRowNode;\n // pull keys from all parent nodes, but do not include the root node\n while (rowNode.level >= 0) {\n parts.push(rowNode.key);\n rowNode = rowNode.parent;\n }\n if (parts.length > 0) {\n this.nodeIdPrefix = parts.reverse().join('-') + '-';\n }\n };\n ServerSideBlock.prototype.createIdForIndex = function (index) {\n if (ag_grid_1._.exists(this.nodeIdPrefix)) {\n return this.nodeIdPrefix + index.toString();\n }\n else {\n return index.toString();\n }\n };\n ServerSideBlock.prototype.getNodeIdPrefix = function () {\n return this.nodeIdPrefix;\n };\n ServerSideBlock.prototype.getRow = function (displayRowIndex) {\n // do binary search of tree\n // http://oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/\n var bottomPointer = this.getStartRow();\n // the end row depends on whether all this block is used or not. if the virtual row count\n // is before the end, then not all the row is used\n var virtualRowCount = this.parentCache.getVirtualRowCount();\n var endRow = this.getEndRow();\n var actualEnd = (virtualRowCount < endRow) ? virtualRowCount : endRow;\n var topPointer = actualEnd - 1;\n if (ag_grid_1._.missing(topPointer) || ag_grid_1._.missing(bottomPointer)) {\n console.warn(\"ag-grid: error: topPointer = \" + topPointer + \", bottomPointer = \" + bottomPointer);\n return null;\n }\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = _super.prototype.getRowUsingLocalIndex.call(this, midPointer);\n if (currentRowNode.rowIndex === displayRowIndex) {\n return currentRowNode;\n }\n var childrenCache = currentRowNode.childrenCache;\n if (currentRowNode.rowIndex === displayRowIndex) {\n return currentRowNode;\n }\n else if (currentRowNode.expanded && childrenCache && childrenCache.isDisplayIndexInCache(displayRowIndex)) {\n return childrenCache.getRow(displayRowIndex);\n }\n else if (currentRowNode.rowIndex < displayRowIndex) {\n bottomPointer = midPointer + 1;\n }\n else if (currentRowNode.rowIndex > displayRowIndex) {\n topPointer = midPointer - 1;\n }\n }\n };\n ServerSideBlock.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideBlock');\n };\n ServerSideBlock.prototype.init = function () {\n if (this.groupLevel) {\n var groupColVo = this.params.rowGroupCols[this.level];\n this.groupField = groupColVo.field;\n this.rowGroupColumn = this.columnController.getRowGroupColumns()[this.level];\n }\n this.createNodeIdPrefix();\n _super.prototype.init.call(this, {\n context: this.context,\n rowRenderer: this.rowRenderer\n });\n };\n ServerSideBlock.prototype.setDataAndId = function (rowNode, data, index) {\n var _this = this;\n rowNode.stub = false;\n if (ag_grid_1._.exists(data)) {\n // if the user is not providing id's, then we build an id based on the index.\n // for infinite scrolling, the index is used on it's own. for Server Side Row Model,\n // we combine the index with the level and group key, so that the id is\n // unique across the set.\n //\n // unique id is needed for selection (so selection can be maintained when\n // doing server side sorting / filtering) - if user is not providing id's\n // (and we use the indexes) then selection will not work between sorting &\n // filtering.\n //\n // id's are also used by the row renderer for updating the dom as it identifies\n // rowNodes by id\n var idToUse = this.createIdForIndex(index);\n rowNode.setDataAndId(data, idToUse);\n rowNode.setRowHeight(this.gridOptionsWrapper.getRowHeightForNode(rowNode));\n if (rowNode.group) {\n rowNode.key = this.valueService.getValue(this.rowGroupColumn, rowNode);\n if (rowNode.key === null || rowNode.key === undefined) {\n ag_grid_1._.doOnce(function () {\n console.warn(\"null and undefined values are not allowed for server side row model keys\");\n if (_this.rowGroupColumn) {\n console.warn(\"column = \" + _this.rowGroupColumn.getId());\n }\n console.warn(\"data is \", rowNode.data);\n }, 'ServerSideBlock-CannotHaveNullOrUndefinedForKey');\n }\n }\n }\n else {\n rowNode.setDataAndId(undefined, undefined);\n rowNode.key = null;\n }\n if (this.groupLevel) {\n this.setGroupDataIntoRowNode(rowNode);\n this.setChildCountIntoRowNode(rowNode);\n }\n };\n ServerSideBlock.prototype.setChildCountIntoRowNode = function (rowNode) {\n var getChildCount = this.gridOptionsWrapper.getChildCountFunc();\n if (getChildCount) {\n rowNode.allChildrenCount = getChildCount(rowNode.data);\n }\n };\n ServerSideBlock.prototype.setGroupDataIntoRowNode = function (rowNode) {\n var _this = this;\n var groupDisplayCols = this.columnController.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (col) {\n if (col.isRowGroupDisplayed(_this.rowGroupColumn.getId())) {\n var groupValue = _this.valueService.getValue(_this.rowGroupColumn, rowNode);\n if (ag_grid_1._.missing(rowNode.groupData)) {\n rowNode.groupData = {};\n }\n rowNode.groupData[col.getColId()] = groupValue;\n }\n });\n };\n ServerSideBlock.prototype.loadFromDatasource = function () {\n var _this = this;\n var params = this.createLoadParams();\n setTimeout(function () {\n _this.params.datasource.getRows(params);\n }, 0);\n };\n ServerSideBlock.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = _super.prototype.createBlankRowNode.call(this, rowIndex);\n rowNode.group = this.groupLevel;\n rowNode.leafGroup = this.leafGroup;\n rowNode.level = this.level;\n rowNode.uiLevel = this.level;\n rowNode.parent = this.parentRowNode;\n // stub gets set to true here, and then false when this rowNode gets it's data\n rowNode.stub = true;\n if (rowNode.group) {\n rowNode.expanded = false;\n rowNode.field = this.groupField;\n rowNode.rowGroupColumn = this.rowGroupColumn;\n }\n return rowNode;\n };\n ServerSideBlock.prototype.createGroupKeys = function (groupNode) {\n var keys = [];\n var pointer = groupNode;\n while (pointer.level >= 0) {\n keys.push(pointer.key);\n pointer = pointer.parent;\n }\n keys.reverse();\n return keys;\n };\n ServerSideBlock.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.blockTop && pixel < (this.blockTop + this.blockHeight);\n };\n ServerSideBlock.prototype.getRowBounds = function (index, virtualRowCount) {\n var start = this.getStartRow();\n var end = this.getEndRow();\n for (var i = start; i <= end; i++) {\n // the blocks can have extra rows in them, if they are the last block\n // in the cache and the virtual row count doesn't divide evenly by the\n if (i >= virtualRowCount) {\n continue;\n }\n var rowNode = this.getRowUsingLocalIndex(i);\n if (rowNode) {\n if (rowNode.rowIndex === index) {\n return {\n rowHeight: rowNode.rowHeight,\n rowTop: rowNode.rowTop\n };\n }\n if (rowNode.group && rowNode.expanded && ag_grid_1._.exists(rowNode.childrenCache)) {\n var serverSideCache = rowNode.childrenCache;\n if (serverSideCache.isDisplayIndexInCache(index)) {\n return serverSideCache.getRowBounds(index);\n }\n }\n }\n }\n console.error(\"ag-Grid: looking for invalid row index in Server Side Row Model, index=\" + index);\n return null;\n };\n ServerSideBlock.prototype.getRowIndexAtPixel = function (pixel, virtualRowCount) {\n var start = this.getStartRow();\n var end = this.getEndRow();\n for (var i = start; i <= end; i++) {\n // the blocks can have extra rows in them, if they are the last block\n // in the cache and the virtual row count doesn't divide evenly by the\n if (i >= virtualRowCount) {\n continue;\n }\n var rowNode = this.getRowUsingLocalIndex(i);\n if (rowNode) {\n if (rowNode.isPixelInRange(pixel)) {\n return rowNode.rowIndex;\n }\n if (rowNode.group && rowNode.expanded && ag_grid_1._.exists(rowNode.childrenCache)) {\n var serverSideCache = rowNode.childrenCache;\n if (serverSideCache.isPixelInRange(pixel)) {\n return serverSideCache.getRowIndexAtPixel(pixel);\n }\n }\n }\n }\n console.warn(\"ag-Grid: invalid pixel range for server side block \" + pixel);\n return 0;\n };\n ServerSideBlock.prototype.clearRowTops = function (virtualRowCount) {\n this.forEachRowNode(virtualRowCount, function (rowNode) {\n rowNode.clearRowTop();\n var hasChildCache = rowNode.group && ag_grid_1._.exists(rowNode.childrenCache);\n if (hasChildCache) {\n var serverSideCache = rowNode.childrenCache;\n serverSideCache.clearRowTops();\n }\n });\n };\n ServerSideBlock.prototype.setDisplayIndexes = function (displayIndexSeq, virtualRowCount, nextRowTop) {\n this.displayIndexStart = displayIndexSeq.peek();\n this.blockTop = nextRowTop.value;\n this.forEachRowNode(virtualRowCount, function (rowNode) {\n var rowIndex = displayIndexSeq.next();\n rowNode.setRowIndex(rowIndex);\n rowNode.setRowTop(nextRowTop.value);\n nextRowTop.value += rowNode.rowHeight;\n var hasChildCache = rowNode.group && ag_grid_1._.exists(rowNode.childrenCache);\n if (hasChildCache) {\n var serverSideCache = rowNode.childrenCache;\n if (rowNode.expanded) {\n serverSideCache.setDisplayIndexes(displayIndexSeq, nextRowTop);\n }\n else {\n // we need to clear the row tops, as the row renderer depends on\n // this to know if the row should be faded out\n serverSideCache.clearRowTops();\n }\n }\n });\n this.displayIndexEnd = displayIndexSeq.peek();\n this.blockHeight = nextRowTop.value - this.blockTop;\n };\n ServerSideBlock.prototype.forEachRowNode = function (virtualRowCount, callback) {\n var start = this.getStartRow();\n var end = this.getEndRow();\n for (var i = start; i <= end; i++) {\n // the blocks can have extra rows in them, if they are the last block\n // in the cache and the virtual row count doesn't divide evenly by the\n if (i >= virtualRowCount) {\n continue;\n }\n var rowNode = this.getRowUsingLocalIndex(i);\n if (rowNode) {\n callback(rowNode);\n }\n }\n };\n ServerSideBlock.prototype.createLoadParams = function () {\n var groupKeys = this.createGroupKeys(this.parentRowNode);\n var request = {\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n rowGroupCols: this.params.rowGroupCols,\n valueCols: this.params.valueCols,\n pivotCols: this.params.pivotCols,\n pivotMode: this.params.pivotMode,\n groupKeys: groupKeys,\n filterModel: this.params.filterModel,\n sortModel: this.params.sortModel\n };\n var params = {\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this),\n request: request,\n parentNode: this.parentRowNode\n };\n return params;\n };\n ServerSideBlock.prototype.isDisplayIndexInBlock = function (displayIndex) {\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n ServerSideBlock.prototype.isBlockBefore = function (displayIndex) {\n return displayIndex >= this.displayIndexEnd;\n };\n ServerSideBlock.prototype.getDisplayIndexStart = function () {\n return this.displayIndexStart;\n };\n ServerSideBlock.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n ServerSideBlock.prototype.getBlockHeight = function () {\n return this.blockHeight;\n };\n ServerSideBlock.prototype.getBlockTop = function () {\n return this.blockTop;\n };\n ServerSideBlock.prototype.isGroupLevel = function () {\n return this.groupLevel;\n };\n ServerSideBlock.prototype.getGroupField = function () {\n return this.groupField;\n };\n __decorate([\n ag_grid_1.Autowired('context'),\n __metadata(\"design:type\", ag_grid_1.Context)\n ], ServerSideBlock.prototype, \"context\", void 0);\n __decorate([\n ag_grid_1.Autowired('rowRenderer'),\n __metadata(\"design:type\", ag_grid_1.RowRenderer)\n ], ServerSideBlock.prototype, \"rowRenderer\", void 0);\n __decorate([\n ag_grid_1.Autowired('columnController'),\n __metadata(\"design:type\", ag_grid_1.ColumnController)\n ], ServerSideBlock.prototype, \"columnController\", void 0);\n __decorate([\n ag_grid_1.Autowired('valueService'),\n __metadata(\"design:type\", ag_grid_1.ValueService)\n ], ServerSideBlock.prototype, \"valueService\", void 0);\n __decorate([\n ag_grid_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", ag_grid_1.GridOptionsWrapper)\n ], ServerSideBlock.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n __param(0, ag_grid_1.Qualifier('loggerFactory')),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [ag_grid_1.LoggerFactory]),\n __metadata(\"design:returntype\", void 0)\n ], ServerSideBlock.prototype, \"setBeans\", null);\n __decorate([\n ag_grid_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], ServerSideBlock.prototype, \"init\", null);\n return ServerSideBlock;\n}(ag_grid_1.RowNodeBlock));\nexports.ServerSideBlock = ServerSideBlock;\n","// ag-grid-enterprise v18.1.1\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ag_grid_1 = require(\"ag-grid\");\nvar HorizontalResizeComp = (function (_super) {\n __extends(HorizontalResizeComp, _super);\n function HorizontalResizeComp() {\n return _super.call(this, \"
\") || this;\n }\n HorizontalResizeComp.prototype.postConstruct = function () {\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.getGui(),\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this),\n onResizeEnd: this.onResizing.bind(this)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n };\n HorizontalResizeComp.prototype.onResizeStart = function () {\n this.startingWidth = this.props.componentToResize.getGui().clientWidth;\n };\n HorizontalResizeComp.prototype.onResizing = function (delta) {\n var newWidth = this.startingWidth - delta;\n if (newWidth < 100) {\n newWidth = 100;\n }\n this.props.componentToResize.getGui().style.width = newWidth + 'px';\n };\n __decorate([\n ag_grid_1.Autowired('horizontalResizeService'),\n __metadata(\"design:type\", ag_grid_1.HorizontalResizeService)\n ], HorizontalResizeComp.prototype, \"horizontalResizeService\", void 0);\n __decorate([\n ag_grid_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", ag_grid_1.GridOptionsWrapper)\n ], HorizontalResizeComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n ag_grid_1.Autowired('eventService'),\n __metadata(\"design:type\", ag_grid_1.EventService)\n ], HorizontalResizeComp.prototype, \"eventService\", void 0);\n __decorate([\n ag_grid_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], HorizontalResizeComp.prototype, \"postConstruct\", null);\n return HorizontalResizeComp;\n}(ag_grid_1.Component));\nexports.HorizontalResizeComp = HorizontalResizeComp;\n","// ag-grid-enterprise v18.1.1\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ag_grid_1 = require(\"ag-grid\");\nvar HeaderColumnDropComp = (function (_super) {\n __extends(HeaderColumnDropComp, _super);\n function HeaderColumnDropComp() {\n return _super.call(this) || this;\n }\n HeaderColumnDropComp.prototype.postConstruct = function () {\n this.setGui(this.createNorthPanel());\n this.eventService.addEventListener(ag_grid_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n this.eventService.addEventListener(ag_grid_1.Events.EVENT_COLUMN_EVERYTHING_CHANGED, this.onRowGroupChanged.bind(this));\n this.onRowGroupChanged();\n };\n HeaderColumnDropComp.prototype.createNorthPanel = function () {\n var _this = this;\n var topPanelGui = document.createElement('div');\n var dropPanelVisibleListener = this.onDropPanelVisible.bind(this);\n this.rowGroupComp = this.rowGroupCompFactory.create();\n this.pivotComp = this.pivotCompFactory.create();\n topPanelGui.appendChild(this.rowGroupComp.getGui());\n topPanelGui.appendChild(this.pivotComp.getGui());\n this.rowGroupComp.addEventListener(ag_grid_1.Component.EVENT_VISIBLE_CHANGED, dropPanelVisibleListener);\n this.pivotComp.addEventListener(ag_grid_1.Component.EVENT_VISIBLE_CHANGED, dropPanelVisibleListener);\n this.addDestroyFunc(function () {\n _this.rowGroupComp.removeEventListener(ag_grid_1.Component.EVENT_VISIBLE_CHANGED, dropPanelVisibleListener);\n _this.pivotComp.removeEventListener(ag_grid_1.Component.EVENT_VISIBLE_CHANGED, dropPanelVisibleListener);\n });\n this.onDropPanelVisible();\n return topPanelGui;\n };\n HeaderColumnDropComp.prototype.onDropPanelVisible = function () {\n var bothVisible = this.rowGroupComp.isVisible() && this.pivotComp.isVisible();\n this.rowGroupComp.addOrRemoveCssClass('ag-width-half', bothVisible);\n this.pivotComp.addOrRemoveCssClass('ag-width-half', bothVisible);\n };\n HeaderColumnDropComp.prototype.onRowGroupChanged = function () {\n if (!this.rowGroupComp) {\n return;\n }\n var rowGroupPanelShow = this.gridOptionsWrapper.getRowGroupPanelShow();\n if (rowGroupPanelShow === ag_grid_1.Constants.ALWAYS) {\n this.rowGroupComp.setVisible(true);\n }\n else if (rowGroupPanelShow === ag_grid_1.Constants.ONLY_WHEN_GROUPING) {\n var grouping = !this.columnController.isRowGroupEmpty();\n this.rowGroupComp.setVisible(grouping);\n }\n else {\n this.rowGroupComp.setVisible(false);\n }\n };\n __decorate([\n ag_grid_1.Autowired('gridOptionsWrapper'),\n __metadata(\"design:type\", ag_grid_1.GridOptionsWrapper)\n ], HeaderColumnDropComp.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n ag_grid_1.Autowired('columnController'),\n __metadata(\"design:type\", ag_grid_1.ColumnController)\n ], HeaderColumnDropComp.prototype, \"columnController\", void 0);\n __decorate([\n ag_grid_1.Autowired('eventService'),\n __metadata(\"design:type\", ag_grid_1.EventService)\n ], HeaderColumnDropComp.prototype, \"eventService\", void 0);\n __decorate([\n ag_grid_1.Optional('rowGroupCompFactory'),\n __metadata(\"design:type\", Object)\n ], HeaderColumnDropComp.prototype, \"rowGroupCompFactory\", void 0);\n __decorate([\n ag_grid_1.Optional('pivotCompFactory'),\n __metadata(\"design:type\", Object)\n ], HeaderColumnDropComp.prototype, \"pivotCompFactory\", void 0);\n __decorate([\n ag_grid_1.PostConstruct,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n ], HeaderColumnDropComp.prototype, \"postConstruct\", null);\n return HeaderColumnDropComp;\n}(ag_grid_1.Component));\nexports.HeaderColumnDropComp = HeaderColumnDropComp;\n","var PLATFORM = require('aurelia-pal').PLATFORM;\r\n\r\nexports.AgGridAurelia = require('./lib/agGridAurelia').AgGridAurelia;\r\nexports.AgGridColumn = require('./lib/agGridColumn').AgGridColumn;\r\nexports.AgCellTemplate = require('./lib/agTemplate').AgCellTemplate;\r\nexports.AgEditorTemplate = require('./lib/agTemplate').AgEditorTemplate;\r\nexports.AgFullWidthRowTemplate = require('./lib/agTemplate').AgFullWidthRowTemplate;\r\nexports.AgFilterTemplate = require('./lib/agTemplate').AgFilterTemplate;\r\nexports.AureliaCellRendererComponent = require('./lib/aureliaCellRendererComponent').AureliaCellRendererComponent;\r\nexports.AureliaComponentFactory = require('./lib/aureliaComponentFactory').AureliaComponentFactory;\r\nexports.AureliaFrameworkFactory = require('./lib/aureliaFrameworkFactory').AureliaFrameworkFactory;\r\nexports.BaseAureliaEditor = require('./lib/editorViewModels').BaseAureliaEditor;\r\n\r\nfunction configure(config) {\r\n config.globalResources(\r\n PLATFORM.moduleName('./lib/agGridAurelia'),\r\n PLATFORM.moduleName('./lib/agGridColumn'),\r\n PLATFORM.moduleName('./lib/agTemplate')\r\n );\r\n}\r\n\r\nexports.configure = configure;\r\n","// ag-grid-aurelia v18.0.0\r\n\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar aurelia_framework_1 = require(\"aurelia-framework\");\r\nvar ag_grid_1 = require(\"ag-grid\");\r\nvar AureliaFrameworkComponentWrapper = /** @class */ (function (_super) {\r\n __extends(AureliaFrameworkComponentWrapper, _super);\r\n function AureliaFrameworkComponentWrapper(taskQueue, _viewCompiler) {\r\n var _this = _super.call(this) || this;\r\n _this.taskQueue = taskQueue;\r\n _this._viewCompiler = _viewCompiler;\r\n return _this;\r\n }\r\n AureliaFrameworkComponentWrapper.prototype.createWrapper = function (template) {\r\n var that = this;\r\n var DynamicComponent = /** @class */ (function (_super) {\r\n __extends(DynamicComponent, _super);\r\n function DynamicComponent() {\r\n return _super.call(this, that.taskQueue, that._viewCompiler) || this;\r\n }\r\n DynamicComponent.prototype.init = function (params) {\r\n _super.prototype.init.call(this, params, template.template, that._viewResources, that._container);\r\n };\r\n DynamicComponent.prototype.hasMethod = function (name) {\r\n return wrapper.getFrameworkComponentInstance()[name] != null;\r\n };\r\n DynamicComponent.prototype.callMethod = function (name, args) {\r\n var componentRef = this.getFrameworkComponentInstance();\r\n return wrapper.getFrameworkComponentInstance()[name].apply(componentRef, args);\r\n };\r\n DynamicComponent.prototype.addMethod = function (name, callback) {\r\n wrapper[name] = callback;\r\n };\r\n return DynamicComponent;\r\n }(BaseGuiComponent));\r\n var wrapper = new DynamicComponent();\r\n return wrapper;\r\n };\r\n AureliaFrameworkComponentWrapper.prototype.setContainer = function (container) {\r\n this._container = container;\r\n };\r\n AureliaFrameworkComponentWrapper.prototype.setViewResources = function (viewResources) {\r\n this._viewResources = viewResources;\r\n };\r\n AureliaFrameworkComponentWrapper = __decorate([\r\n aurelia_framework_1.autoinject(),\r\n aurelia_framework_1.transient(),\r\n ag_grid_1.Bean(\"frameworkComponentWrapper\"),\r\n __metadata(\"design:paramtypes\", [aurelia_framework_1.TaskQueue, aurelia_framework_1.ViewCompiler])\r\n ], AureliaFrameworkComponentWrapper);\r\n return AureliaFrameworkComponentWrapper;\r\n}(ag_grid_1.BaseComponentWrapper));\r\nexports.AureliaFrameworkComponentWrapper = AureliaFrameworkComponentWrapper;\r\nvar BaseGuiComponent = /** @class */ (function () {\r\n function BaseGuiComponent(taskQueue, viewCompiler) {\r\n this._taskQueue = taskQueue;\r\n this._viewCompiler = viewCompiler;\r\n }\r\n BaseGuiComponent.prototype.init = function (params, template, viewResources, container) {\r\n var _this = this;\r\n this._params = params;\r\n var bindingContext = { params: params };\r\n var viewFactory = this._viewCompiler.compile(template, viewResources);\r\n this._view = viewFactory.create(container);\r\n var controllers = this._view.controllers;\r\n //initialize each controller\r\n if (controllers && controllers.length) {\r\n controllers.forEach(function (c) {\r\n c.viewModel.params = params;\r\n });\r\n this._view.bind(bindingContext);\r\n //ICellRenderer doesn't have a guiAttached method so\r\n //we call attach on the queue;\r\n this._taskQueue.queueMicroTask(function () { return _this._view.attached(); });\r\n }\r\n else {\r\n this._view.bind(bindingContext);\r\n }\r\n };\r\n BaseGuiComponent.prototype.getGui = function () {\r\n return this._view.fragment;\r\n };\r\n BaseGuiComponent.prototype.destroy = function () {\r\n this._view.returnToCache();\r\n };\r\n BaseGuiComponent.prototype.refresh = function (params) {\r\n return false;\r\n };\r\n BaseGuiComponent.prototype.getFrameworkComponentInstance = function () {\r\n var controllers = this._view.controllers;\r\n //only one controller is allowed in editor template\r\n // ML: Removed the constraint on controllers.length to allow more than one item inside editors. This allows the use of slots inside custom editor components.\r\n if (controllers &&\r\n //controllers.length == 1 &&\r\n controllers[0].viewModel) {\r\n var editorVm = controllers[0].viewModel;\r\n //this is a 'hack' because we don't have params.bind=\"\" in the template\r\n //must reset params or it will be nothing\r\n editorVm.params = this._params;\r\n return editorVm;\r\n }\r\n return null;\r\n };\r\n return BaseGuiComponent;\r\n}());\r\n","// ag-grid-aurelia v13.0.2\r\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AureliaCellRendererComponent = (function () {\r\n function AureliaCellRendererComponent() {\r\n }\r\n AureliaCellRendererComponent.prototype.init = function (params) {\r\n var bindingContext = { params: params };\r\n this.view = params.viewFactory.create(params.container);\r\n this.view.bind(bindingContext);\r\n };\r\n AureliaCellRendererComponent.prototype.getGui = function () {\r\n return this.view.fragment;\r\n };\r\n AureliaCellRendererComponent.prototype.destroy = function () {\r\n this.view.returnToCache();\r\n };\r\n AureliaCellRendererComponent.prototype.refresh = function (params) {\r\n return false;\r\n };\r\n return AureliaCellRendererComponent;\r\n}());\r\nexports.AureliaCellRendererComponent = AureliaCellRendererComponent;\r\n","// ag-grid-aurelia v13.3.0\r\n\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar aurelia_framework_1 = require(\"aurelia-framework\");\r\nvar AureliaComponentFactory = /** @class */ (function () {\r\n function AureliaComponentFactory(taskQueue) {\r\n this.taskQueue = taskQueue;\r\n }\r\n AureliaComponentFactory.prototype.createRendererFromTemplate = function (container, viewFactory) {\r\n var componentFactory = this;\r\n var CellRendererComponent = /** @class */ (function () {\r\n function CellRendererComponent() {\r\n }\r\n CellRendererComponent.prototype.init = function (params) {\r\n var _this = this;\r\n var bindingContext = { params: params };\r\n this.view = viewFactory.create(container);\r\n var controllers = this.view.controllers;\r\n //initialize each controller\r\n if (controllers && controllers.length) {\r\n controllers.forEach(function (c) {\r\n c.viewModel.params = params;\r\n });\r\n this.view.bind(bindingContext);\r\n //ICellRenderer doesn't have a guiAttached method so\r\n //we call attach on the queue;\r\n componentFactory.taskQueue.queueMicroTask(function () { return _this.view.attached(); });\r\n }\r\n else {\r\n this.view.bind(bindingContext);\r\n }\r\n };\r\n CellRendererComponent.prototype.getGui = function () {\r\n return this.view.fragment;\r\n };\r\n CellRendererComponent.prototype.destroy = function () {\r\n this.view.returnToCache();\r\n };\r\n CellRendererComponent.prototype.refresh = function (params) {\r\n return false;\r\n };\r\n return CellRendererComponent;\r\n }());\r\n return CellRendererComponent;\r\n };\r\n AureliaComponentFactory.prototype.createEditorFromTemplate = function (container, viewFactory) {\r\n var CellEditor = /** @class */ (function () {\r\n function CellEditor() {\r\n }\r\n CellEditor.prototype.init = function (params) {\r\n var bindingContext = { params: params };\r\n this.view = viewFactory.create(container);\r\n var controllers = this.view.controllers;\r\n //only one controller is allowed in editor template\r\n if (controllers &&\r\n controllers.length == 1 &&\r\n controllers[0].viewModel) {\r\n this.editorVm = controllers[0].viewModel;\r\n //this is a 'hack' because we don't have params.bind=\"\" in the template\r\n //must reset params or it will be nothing\r\n this.editorVm.params = params;\r\n }\r\n else {\r\n console.error('The editor template component is missing an IEditorViewModel or it contains more than one component');\r\n }\r\n this.view.bind(bindingContext);\r\n };\r\n CellEditor.prototype.afterGuiAttached = function () {\r\n if (this.editorVm.afterGuiAttached) {\r\n this.editorVm.afterGuiAttached();\r\n }\r\n this.view.attached();\r\n };\r\n CellEditor.prototype.getGui = function () {\r\n return this.view.fragment;\r\n };\r\n CellEditor.prototype.destroy = function () {\r\n if (this.editorVm.destroy) {\r\n this.editorVm.destroy();\r\n }\r\n this.view.returnToCache();\r\n };\r\n CellEditor.prototype.getValue = function () {\r\n return this.editorVm.getValue();\r\n };\r\n CellEditor.prototype.isPopup = function () {\r\n return this.editorVm.isPopup ?\r\n this.editorVm.isPopup() : false;\r\n };\r\n CellEditor.prototype.isCancelBeforeStart = function () {\r\n return this.editorVm.isCancelBeforeStart ?\r\n this.editorVm.isCancelBeforeStart() : false;\r\n };\r\n CellEditor.prototype.isCancelAfterEnd = function () {\r\n return this.editorVm.isCancelAfterEnd ?\r\n this.editorVm.isCancelAfterEnd() : false;\r\n };\r\n CellEditor.prototype.focusIn = function () {\r\n if (this.editorVm.focusIn) {\r\n this.editorVm.focusIn();\r\n }\r\n };\r\n CellEditor.prototype.focusOut = function () {\r\n if (this.editorVm.focusOut) {\r\n this.editorVm.focusOut();\r\n }\r\n };\r\n return CellEditor;\r\n }());\r\n return CellEditor;\r\n };\r\n AureliaComponentFactory = __decorate([\r\n aurelia_framework_1.autoinject(),\r\n aurelia_framework_1.transient(),\r\n __metadata(\"design:paramtypes\", [aurelia_framework_1.TaskQueue])\r\n ], AureliaComponentFactory);\r\n return AureliaComponentFactory;\r\n}());\r\nexports.AureliaComponentFactory = AureliaComponentFactory;\r\n","/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global global, exports, module, require:false, process:false, Buffer:false, ArrayBuffer:false */\nvar XLSX = {};\n(function make_xlsx(XLSX){\nXLSX.version = '0.12.13';\nvar current_codepage = 1200, current_ansi = 1252;\n/*global cptable:true, window */\nif(typeof module !== \"undefined\" && typeof require !== 'undefined') {\n\tif(typeof cptable === 'undefined') {\n\t\tif(typeof global !== 'undefined') global.cptable = require('./dist/cpexcel.js');\n\t\telse if(typeof window !== 'undefined') window.cptable = require('./dist/cpexcel.js');\n\t}\n}\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950 ];\nfor(var i = 0; i <= 8; ++i) VALID_ANSI.push(1250 + i);\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n0: 1252, /* ANSI */\n1: 65001, /* DEFAULT */\n2: 65001, /* SYMBOL */\n77: 10000, /* MAC */\n128: 932, /* SHIFTJIS */\n129: 949, /* HANGUL */\n130: 1361, /* JOHAB */\n134: 936, /* GB2312 */\n136: 950, /* CHINESEBIG5 */\n161: 1253, /* GREEK */\n162: 1254, /* TURKISH */\n163: 1258, /* VIETNAMESE */\n177: 1255, /* HEBREW */\n178: 1256, /* ARABIC */\n186: 1257, /* BALTIC */\n204: 1251, /* RUSSIAN */\n222: 874, /* THAI */\n238: 1250, /* EASTEUROPE */\n255: 1252, /* OEM */\n69: 6969 /* MISC */\n});\n\nvar set_ansi = function(cp) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data) { var o = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data) {\n\tvar o = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data) {\n\tvar o = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data) {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x) { return String.fromCharCode(x); };\nif(typeof cptable !== 'undefined') {\n\tset_cp = function(cp) { current_codepage = cp; };\n\tdebom = function(data) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x) {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n}\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64 = (function make_b64(){\n\tvar map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\treturn {\n\t\tencode: function(input) {\n\t\t\tvar o = \"\";\n\t\t\tvar c1=0, c2=0, c3=0, e1=0, e2=0, e3=0, e4=0;\n\t\t\tfor(var i = 0; i < input.length; ) {\n\t\t\t\tc1 = input.charCodeAt(i++);\n\t\t\t\te1 = (c1 >> 2);\n\n\t\t\t\tc2 = input.charCodeAt(i++);\n\t\t\t\te2 = ((c1 & 3) << 4) | (c2 >> 4);\n\n\t\t\t\tc3 = input.charCodeAt(i++);\n\t\t\t\te3 = ((c2 & 15) << 2) | (c3 >> 6);\n\t\t\t\te4 = (c3 & 63);\n\t\t\t\tif (isNaN(c2)) { e3 = e4 = 64; }\n\t\t\t\telse if (isNaN(c3)) { e4 = 64; }\n\t\t\t\to += map.charAt(e1) + map.charAt(e2) + map.charAt(e3) + map.charAt(e4);\n\t\t\t}\n\t\t\treturn o;\n\t\t},\n\t\tdecode: function b64_decode(input) {\n\t\t\tvar o = \"\";\n\t\t\tvar c1=0, c2=0, c3=0, e1=0, e2=0, e3=0, e4=0;\n\t\t\tinput = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n\t\t\tfor(var i = 0; i < input.length;) {\n\t\t\t\te1 = map.indexOf(input.charAt(i++));\n\t\t\t\te2 = map.indexOf(input.charAt(i++));\n\t\t\t\tc1 = (e1 << 2) | (e2 >> 4);\n\t\t\t\to += String.fromCharCode(c1);\n\n\t\t\t\te3 = map.indexOf(input.charAt(i++));\n\t\t\t\tc2 = ((e2 & 15) << 4) | (e3 >> 2);\n\t\t\t\tif (e3 !== 64) { o += String.fromCharCode(c2); }\n\n\t\t\t\te4 = map.indexOf(input.charAt(i++));\n\t\t\t\tc3 = ((e3 & 3) << 6) | e4;\n\t\t\t\tif (e4 !== 64) { o += String.fromCharCode(c3); }\n\t\t\t}\n\t\t\treturn o;\n\t\t}\n\t};\n})();\nvar has_buf = (typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && process.versions.node);\n\nif(typeof Buffer !== 'undefined') {\n\t// $FlowIgnore\n\tif(!Buffer.from) Buffer.from = function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); };\n\t// $FlowIgnore\n\tif(!Buffer.alloc) Buffer.alloc = function(n) { return new Buffer(n); };\n}\n\nfunction new_raw_buf(len) {\n\t/* jshint -W056 */\n\treturn has_buf ? Buffer.alloc(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s) {\n\tif(has_buf) return Buffer.from(s, \"binary\");\n\treturn s.split(\"\").map(function(x){ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s) {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data) {\n\tif(Array.isArray(data)) return data.map(_chr).join(\"\");\n\tvar o = []; for(var i = 0; i < data.length; ++i) o[i] = _chr(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data) {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data) {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\nvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = function(bufs) { return [].concat.apply([], bufs); };\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nvar SSF = ({});\nvar make_ssf = function make_ssf(SSF){\nSSF.version = '0.10.2';\nfunction _strrev(x) { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction fill(c,l) { var o = \"\"; while(o.length < l) o+=c; return o; }\nfunction pad0(v,d){var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v,d){var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v,d){var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v,d){var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v,d){var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = Math.pow(2,32);\nfunction pad0r(v,d){if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\nfunction isgeneral(s, i) { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction init_table(t) {\n\tt[0]= 'General';\n\tt[1]= '0';\n\tt[2]= '0.00';\n\tt[3]= '#,##0';\n\tt[4]= '#,##0.00';\n\tt[9]= '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\tt[65535]= 'General';\n}\n\nvar table_fmt = {};\ninit_table(table_fmt);\nfunction frac(x, D, mixed) {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction parse_date_code(v,opts,b2) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nSSF.parse_date_code = parse_date_code;\nvar basedate = new Date(1899, 11, 31, 0, 0, 0);\nvar dnthresh = basedate.getTime();\nvar base1904 = new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v, date1904) {\n\tvar epoch = v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= base1904) epoch += 24*60*60*1000;\n\treturn (epoch - (dnthresh + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\nfunction general_fmt_int(v) { return v.toString(10); }\nSSF._general_int = general_fmt_int;\nvar general_fmt_num = (function make_general_fmt_num() {\nvar gnr1 = /\\.(\\d*[1-9])0+$/, gnr2 = /\\.0*$/, gnr4 = /\\.(\\d*[1-9])0+/, gnr5 = /\\.0*[Ee]/, gnr6 = /(E[+-])(\\d)$/;\nfunction gfn2(v) {\n\tvar w = (v<0?12:11);\n\tvar o = gfn5(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\nfunction gfn3(v) {\n\tvar o = v.toFixed(11).replace(gnr1,\".$1\");\n\tif(o.length > (v<0?12:11)) o = v.toPrecision(6);\n\treturn o;\n}\nfunction gfn4(o) {\n\tfor(var i = 0; i != o.length; ++i) if((o.charCodeAt(i) | 0x20) === 101) return o.replace(gnr4,\".$1\").replace(gnr5,\"E\").replace(\"e\",\"E\").replace(gnr6,\"$10$2\");\n\treturn o;\n}\nfunction gfn5(o) {\n\treturn o.indexOf(\".\") > -1 ? o.replace(gnr2,\"\").replace(gnr1,\".$1\") : o;\n}\nreturn function general_fmt_num(v) {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = gfn2(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = gfn3(v);\n\treturn gfn5(gfn4(o));\n};})();\nSSF._general_num = general_fmt_num;\nfunction general_fmt(v, opts) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? general_fmt_int(v) : general_fmt_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\nSSF._general = general_fmt;\nfunction fix_hijri() { return 0; }\n/*jshint -W086 */\nfunction write_date(type, fmt, val, ss0) {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\nif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1;\n\t}\n\tif(outl > 0) return pad0(out, outl); else return \"\";\n}\n/*jshint +W086 */\nfunction commaify(s) {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar write_num = (function make_write_num(){\nvar pct1 = /%/g;\nfunction write_num_pct(type, fmt, val){\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\nfunction write_num_cm(type, fmt, val){\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\nfunction write_num_exp(fmt, val){\n\tvar o;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r, aval, sign) {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r, aval, sign) {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str) {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val, d) { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val, d) {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 0;\n\t}\n\treturn Math.round((val-Math.floor(val))*Math.pow(10,d));\n}\nfunction carry(val, d) {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val) { if(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0)); return \"\"+Math.floor(val); }\nfunction write_num_flt(type, fmt, val) {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\no = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\nreturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\nSSF.is_date = fmt_is_date;\nfunction eval_fmt(fmt, v, opts, flen) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? \"P\" : \"A\"; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(abstime)) {\n\t\t\t\t\tif(dt==null) { dt=parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while((++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && i < fmt.length - 2 && \"0#\".indexOf(fmt.charAt(i+2))>-1)) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\nif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >= 60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\nif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\nout[i].v = write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '(': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = general_fmt(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('(', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?('.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?('.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\nSSF._eval = eval_fmt;\nvar cfregex = /\\[[=<>]/;\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\": if(v == thresh) return true; break;\n\t\tcase \">\": if(v > thresh) return true; break;\n\t\tcase \"<\": if(v < thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f, v) {\n\tvar fmt = split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(cfregex) != null || fmt[1].match(cfregex) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction format(fmt,v,o) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table) : table_fmt)[fmt];\n\t\t\tbreak;\n\t}\n\tif(isgeneral(sfmt,0)) return general_fmt(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(isgeneral(f[1])) return general_fmt(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction load_entry(fmt, idx) {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\nfor(var i = 0; i < 0x0188; ++i) {\nif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\nif(idx < 0) idx = 0x187;\n\t}\ntable_fmt[idx] = fmt;\n\treturn idx;\n}\nSSF.load = load_entry;\nSSF._table = table_fmt;\nSSF.get_table = function get_table() { return table_fmt; };\nSSF.load_table = function load_table(tbl) {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) load_entry(tbl[i], i);\n};\nSSF.init_table = init_table;\nSSF.format = format;\n};\nmake_ssf(SSF);\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*{[string]:string}*/ = ({\n\t\"General Number\": \"General\",\n\t\"General Date\": SSF._table[22],\n\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\"Medium Date\": SSF._table[15],\n\t\"Short Date\": SSF._table[14],\n\t\"Long Time\": SSF._table[19],\n\t\"Medium Time\": SSF._table[18],\n\t\"Short Time\": SSF._table[20],\n\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"Fixed\": SSF._table[2],\n\t\"Standard\": SSF._table[4],\n\t\"Percent\": SSF._table[10],\n\t\"Scientific\": SSF._table[11],\n\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n});\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n});\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF) {\n\tvar fmt = typeof dateNF == \"number\" ? SSF._table[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str, dateNF, match) {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\nvar DO_NOT_EXPORT_CFB = true;\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global module, require:false, process:false, Buffer:false, Uint8Array:false */\n\n/* [MS-CFB] v20171201 */\nvar CFB = (function _CFB(){\nvar exports = {};\nexports.version = '1.0.7';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l, r) {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p) {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p) {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\nvar fs;\nfunction get_fs() { return fs || (fs = require('fs')); }\nfunction parse(file, options) {\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob = file.slice(0,512);\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = file.slice(0,ssz); prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files = {}, Paths = [], FileIndex = [], FullPaths = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob) {\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\tblob.chk(HEADER_CLSID, 'CLSID: ');\n\n\t// minor version 2\n\tvar mver = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob, mver) {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file, ssz) {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI, FP, Paths) {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad = [], q = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = dad[i];\n\t\tif(j === 0) FP[i] = FP[0] + \"/\" + FP[i];\n\t\telse while(j !== 0 && j !== dad[j]) {\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t\tj = dad[j];\n\t\t}\n\t\tdad[i] = 0;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry, payload, mini) {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size));\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0));\n\treturn (bconcat(o).slice(0, entry.size));\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx, cnt, sectors, ssz, fat_addrs) {\n\tvar q = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tsleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors, start, fat_addrs, ssz, chkd) {\n\tvar buf = [], buf_chain = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors, dir_start, fat_addrs, ssz) {\n\tvar sl = sectors.length, sector_list = ([]);\n\tvar chkd = [], buf = [], buf_chain = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])});\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob = sector.slice(i, i+128);\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o = ({\n\t\t\tname: name,\n\t\t\ttype: blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL: blob.read_shift(4, 'i'),\n\t\t\tR: blob.read_shift(4, 'i'),\n\t\t\tC: blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size));\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob, offset) {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename, options) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob, options) {\n\tswitch(options && options.type || \"base64\") {\n\t\tcase \"file\": return read_file(blob, options);\n\t\tcase \"base64\": return parse(s2a(Base64.decode(blob)), options);\n\t\tcase \"binary\": return parse(s2a(blob), options);\n\t}\n\treturn parse(blob, options);\n}\n\nfunction init_cfb(cfb, opts) {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 });\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb) {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb, f) {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\tvar data = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = false;\n\t\tfor(j = 0; j < data.length; ++j) if(data[j][0] === dad) s = true;\n\t\tif(!s) data.push([dad, ({\n\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\ttype: 1,\n\t\t\tclsid: HEADER_CLSID,\n\t\t\tct: now, mt: now,\n\t\t\tcontent: null\n\t\t})]);\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name = filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb, options) {\n\tvar _opts = options || {};\n\trebuild_cfb(cfb);\n\tvar L = (function(cfb){\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\nvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w) {\n\t\tfor(T += w; i> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\nflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm = (i === 0 && _opts.root) || file.name;\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\nif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\nif(file.size > 0 && file.size < 0x1000) {\n\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t}\n\t}\n\twhile(o.l < o.length) o.write_shift(1, 0);\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb, path) {\n\tvar UCFullPaths = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath = path.toUpperCase();\n\tvar w = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb, filename, options) {\n\tget_fs();\n\tvar o = _write(cfb, options);\nfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o) {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb, options) {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type) {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o)); return o;\n\t\tcase \"binary\": return a2s(o);\n\t\tcase \"base64\": return Base64.encode(a2s(o));\n\t}\n\treturn o;\n}\nfunction cfb_new(opts) {\n\tvar o = ({});\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb, name, content, opts) {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2});\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\nfile.content = (content);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb, name) {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb, old_name, new_name) {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb) { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nif(typeof require !== 'undefined' && typeof module !== 'undefined' && typeof DO_NOT_EXPORT_CFB === 'undefined') { module.exports = CFB; }\nvar _fs;\nif(typeof require !== 'undefined') try { _fs = require('fs'); } catch(e) {}\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname, payload, enc) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, URL, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\nif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\nif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\nif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\nif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\na.download = fname; a.href = url; document.body.appendChild(a); a.click();\ndocument.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o) {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(o.hasOwnProperty(ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj, key) {\n\tvar o = ([]), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj) {\n\tvar o = ([]), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj) {\n\tvar o = ([]), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj) {\n\tvar o = ([]), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nvar dnthresh = basedate.getTime() + (new Date().getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000;\nfunction datenum(v, date1904) {\n\tvar epoch = v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nfunction numdate(v) {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date = new Date('2017-02-19T19:06:09.000Z');\nif(isNaN(good_pd_date.getFullYear())) good_pd_date = new Date('2/19/17');\nvar good_pd = good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str, fixdate) {\n\tvar d = new Date(str);\n\tif(good_pd) {\nif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr) {\n\tvar o = \"\";\n\tfor(var i = 0; i != arr.length; ++i) o += String.fromCharCode(arr[i]);\n\treturn o;\n}\n\nfunction dup(o) {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(o.hasOwnProperty(k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c,l) { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s) {\n\tvar v = Number(s);\n\tif(!isNaN(v)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\nfunction fuzzydate(s) {\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tif(y < 0 || y > 8099) return n;\n\tif((m > 0 || d > 1) && y != 101) return o;\n\tif(s.toLowerCase().match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) return o;\n\tif(s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\nfunction split_regex(str, re, def) {\n\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\tvar p = str.split(re), o = [p[0]];\n\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\treturn o;\n}\nfunction getdatastr(data) {\n\tif(!data) return null;\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file) {\n\tvar k = keys(zip.files);\n\tvar f = file.toLowerCase(), g = f.replace(/\\//g,'\\\\');\n\tfor(var i=0; i\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex=/<[\\/\\?]?[a-zA-Z0-9:]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s?[\\/\\?]?>/g;\nif(!(XML_HEADER.match(tagregex))) tagregex = /<[^>]*>/g;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag, skip_root) {\n\tvar z = ({});\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x) { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'"': '\"',\n\t''': \"'\",\n\t'>': '>',\n\t'<': '<',\n\t'&': '&'\n};\nvar rencoding = evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml = (function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/g, coderegex = /_x([\\da-fA-F]{4})_/g;\n\treturn function unescapexml(text) {\n\t\tvar s = text + '', i = s.indexOf(\"-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3));\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f]/g;\nfunction escapexml(text){\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text){ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text){\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text){\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr = (function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$,$1) { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str) { return str.replace(entregex,entrepl); };\n})();\nvar xlml_unfixstr = (function() {\n\treturn function xlml_unfixstr(str) { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\ \"); };\n})();\n\nfunction parsexmlbool(value) {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': case 'TRUE': return true;\n\t\t/* case '0': case 'false': case 'FALSE':*/\n\t\tdefault: return false;\n\t}\n}\n\nvar utf8read = function utf8reada(orig) {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n};\n\nvar utf8write = function(orig) {\n\tvar out = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\nif(has_buf) {\n\tvar utf8readb = function utf8readb(data) {\n\t\tvar out = Buffer.alloc(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\t\tfor(i = 0; i < data.length; i+=j) {\n\t\t\tj = 1;\n\t\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\t\telse { j = 4;\n\t\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t\t}\n\t\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t\t}\n\t\treturn out.slice(0,k).toString('ucs2');\n\t};\n\tvar corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\n\tif(utf8read(corpus) == utf8readb(corpus)) utf8read = utf8readb;\n\tvar utf8readc = function utf8readc(data) { return Buffer.from(data, 'binary').toString('utf8'); };\n\tif(utf8read(corpus) == utf8readc(corpus)) utf8read = utf8readc;\n\n\tutf8write = function(data) { return Buffer.from(data, 'utf8').toString(\"binary\"); };\n}\n\n// matches ... extracts content\nvar matchtag = (function() {\n\tvar mtcache = ({});\n\treturn function matchtag(f,g) {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)',((g||\"\"))));\n\t};\n})();\n\nvar htmldecode = (function() {\n\tvar entities = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt', '>'], ['lt', '<'], ['amp', '&']\n\t].map(function(x) { return [new RegExp('&' + x[0] + ';', \"g\"), x[1]]; });\n\treturn function htmldecode(str) {\n\t\tvar o = str.trim().replace(/\\s+/g, \" \").replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\").replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = (function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)' + g + ''; }\n\nfunction wxt_helper(h) { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f,g,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '';}\n\nfunction write_w3cdtf(d, t) { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s) {\n\tswitch(typeof s) {\n\t\tcase 'string': return writextag('vt:lpwstr', s);\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', String(s));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nvar XMLNS = ({\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n});\n\nXMLNS.main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o': 'urn:schemas-microsoft-com:office:office',\n\t'x': 'urn:schemas-microsoft-com:office:excel',\n\t'ss': 'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv': 'http://macVmlSchemaUri',\n\t'v': 'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n});\nfunction read_double_le(b, idx) {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b, v, idx) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar __toBuffer = function(bufs) { var x=[],w=10240; for(var i=0;i 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar ___lpstr = __lpstr;\nvar __cpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar ___cpstr = __cpstr;\nvar __lpwstr = function(b,i) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar ___lpwstr = __lpwstr;\nvar __lpp4, ___lpp4;\n__lpp4 = ___lpp4 = function lpp4_(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar ___8lpp4 = __8lpp4;\nvar __double, ___double;\n__double = ___double = function(b, idx) { return read_double_le(b, idx);};\nvar is_buf = function is_buf_a(a) { return Array.isArray(a); };\n\nif(has_buf) {\n\t__utf16le = function(b,s,e) { if(!Buffer.isBuffer(b)) return ___utf16le(b,s,e); return b.toString('utf16le',s,e).replace(chr0,'')/*.replace(chr1,'!')*/; };\n\t__hexlify = function(b,s,l) { return Buffer.isBuffer(b) ? b.toString('hex',s,s+l) : ___hexlify(b,s,l); };\n\t__lpstr = function lpstr_b(b, i) { if(!Buffer.isBuffer(b)) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b, i) { if(!Buffer.isBuffer(b)) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b, i) { if(!Buffer.isBuffer(b)) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b, i) { if(!Buffer.isBuffer(b)) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b, i) { if(!Buffer.isBuffer(b)) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__utf8 = function utf8_b(b, s, e) { return (Buffer.isBuffer(b)) ? b.toString('utf8',s,e) : ___utf8(b,s,e); };\n\t__toBuffer = function(bufs) { return (bufs[0].length > 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0]) : ___toBuffer(bufs);};\n\tbconcat = function(bufs) { return Buffer.isBuffer(bufs[0]) ? Buffer.concat(bufs) : [].concat.apply([], bufs); };\n\t__double = function double_(b, i) { if(Buffer.isBuffer(b)) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a); };\n}\n\n/* from js-xls */\nif(typeof cptable !== 'undefined') {\n\t__utf16le = function(b,s,e) { return cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b,s,e) { return cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b,i) { var len = 2*__readUInt32LE(b,i); return len > 0 ? cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\n\nvar __readUInt8 = function(b, idx) { return b[idx]; };\nvar __readUInt16LE = function(b, idx) { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b, idx) { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b, idx) { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b, idx) { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b, idx) { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size, t) {\n\tvar o=\"\", oI, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof cptable !== 'undefined') o = cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof cptable !== 'undefined') {\n\t\t\t\to = cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t, val, f) {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\nfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs') {\n\t\t/* TODO: codepage */\nval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\nfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\tsize = val.length;\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\nthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\nvar end = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else switch(t) {\n\t\tcase 1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase 4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr, fld) {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos) {\n\tblob.l = pos;\n\tblob.read_shift = ReadShift;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length) { blob.l += length; }\n\nfunction new_buf(sz) {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb, opts) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = (R.f||parsenoop)(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R.n, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array() {\n\tvar bufs = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz) {\n\t\tvar o = (new_buf(sz));\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz) {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn __toBuffer([bufs]);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs });\n}\n\nfunction write_record(ba, type, payload, length) {\n\tvar t = +XLSBRE[type], l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell, tgt, opts) {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c, biff) {\n\tif(c.cRel && c.c < 0) { c = dup(c); c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(c.cRel === 0) s = fix_col(s);\n\tif(c.rRel === 0) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts) {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0xFFFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nvar OFFCRYPTO = {};\n\nvar make_offcrypto = function(O, _crypto) {\n\tvar crypto;\n\tif(typeof _crypto !== 'undefined') crypto = _crypto;\n\telse if(typeof require !== 'undefined') {\n\t\ttry { crypto = require('crypto'); }\n\t\tcatch(e) { crypto = null; }\n\t}\n\n\tO.rc4 = function(key, data) {\n\t\tvar S = new Array(256);\n\t\tvar c = 0, i = 0, j = 0, t = 0;\n\t\tfor(i = 0; i != 256; ++i) S[i] = i;\n\t\tfor(i = 0; i != 256; ++i) {\n\t\t\tj = (j + S[i] + (key[i%key.length]).charCodeAt(0))&255;\n\t\t\tt = S[i]; S[i] = S[j]; S[j] = t;\n\t\t}\n\t\t// $FlowIgnore\n\t\ti = j = 0; var out = Buffer(data.length);\n\t\tfor(c = 0; c != data.length; ++c) {\n\t\t\ti = (i + 1)&255;\n\t\t\tj = (j + S[i])%256;\n\t\t\tt = S[i]; S[i] = S[j]; S[j] = t;\n\t\t\tout[c] = (data[c] ^ S[(S[i]+S[j])&255]);\n\t\t}\n\t\treturn out;\n\t};\n\n\tO.md5 = function(hex) {\n\t\tif(!crypto) throw new Error(\"Unsupported crypto\");\n\t\treturn crypto.createHash('md5').update(hex).digest('hex');\n\t};\n};\n/*global crypto:true */\nmake_offcrypto(OFFCRYPTO, typeof crypto !== \"undefined\" ? crypto : undefined);\n\nfunction decode_row(rowstr) { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row) { return \"\" + (row + 1); }\nfunction fix_row(cstr) { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr) { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr) { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col) { var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr) { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr) { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr) { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\nfunction decode_cell(cstr) { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\nfunction encode_cell(cell) { return encode_col(cell.c) + encode_row(cell.r); }\nfunction decode_range(range) { var x =range.split(\":\").map(decode_cell); return {s:x[0],e:x[x.length-1]}; }\nfunction encode_range(cs,ce) {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\nreturn encode_range(cs.s, cs.e);\n\t}\nif(typeof cs !== 'string') cs = encode_cell((cs));\n\tif(typeof ce !== 'string') ce = encode_cell((ce));\nreturn cs == ce ? cs : cs + \":\" + ce;\n}\n\nfunction safe_decode_range(range) {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || range.charCodeAt(++i) === 58) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell, v) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF.format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF.format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell, v, o) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet, opts) {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws, data, opts) {\n\tvar o = opts || {};\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws = _ws || (dense ? ([]) : ({}));\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar range = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}});\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell = ({v: data[R][C] });\n\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\tvar __R = _R + R, __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(cell.v === null) { if(cell.f) cell.t = 'n'; else if(!o.cellStubs) continue; else cell.t = 'z'; }\n\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\tcell.z = o.dateNF || SSF._table[14];\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF.format(cell.z, datenum(cell.v)); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF.format(cell.z, cell.v); }\n\t\t\t}\n\t\t\telse cell.t = 's';\n\t\t\tif(dense) {\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\n\t\t\t\tws[__R][__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}));\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data, opts) { return sheet_add_aoa(null, data, opts); }\n\nfunction write_UInt32LE(x, o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data) {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data, o) {\n\tvar _null = false; if(o == null) { _null = true; o = new_buf(4+2*data.length); }\n\to.write_shift(4, data.length);\n\tif(data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length) {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str });\n\tif((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor(var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ich:0, ifnt:0}];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str, o) {\n\t/* TODO: formatted string */\n\tvar _null = false; if(o == null) { _null = true; o = new_buf(15+4*str.t.length); }\n\to.write_shift(1,0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str, o) {\n\t/* TODO: formatted string */\n\tvar _null = false; if(o == null) { _null = true; o = new_buf(23+4*str.t.length); }\n\to.write_shift(1,1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4,1);\n\twrite_StrRun({ich:0,ifnt:0}, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data) {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell, o) {\n\tif(o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data) {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data, o) {\n\tvar _null = false; if(o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif(data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data) {\n\tvar b = data.slice(data.l, data.l+4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l+=4;\n\tb[0] &= 0xFC; // b[0] &= ~3;\n\tvar RK = fInt === 0 ? __double([0,0,0,0,b[0],b[1],b[2],b[3]],0) : __readInt32LE(b,0)>>2;\n\treturn fX100 ? (RK/100) : RK;\n}\nfunction write_RkNumber(data, o) {\n\tif(o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif((data == (data | 0)) && (data >= -(1<<29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if((d100 == (d100 | 0)) && (d100 >= -(1<<29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif(fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data ) {\n\tvar cell = ({s: {}, e: {}});\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data) { return data.read_shift(8, 'f'); }\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n0x00: \"#NULL!\",\n0x07: \"#DIV/0!\",\n0x0F: \"#VALUE!\",\n0x17: \"#REF!\",\n0x1D: \"#NAME?\",\n0x24: \"#NUM!\",\n0x2A: \"#N/A\",\n0x2B: \"#GETTING_DATA\",\n0xFF: \"#WTF?\"\n};\nvar RBErr = evert_num(BErr);\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch(xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif(icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif(nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif(!o) o = new_buf(8);\n\tif(!color||color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif(color.index) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if(color.theme) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif(nTS > 0) nTS *= 32767;\n\telse if(nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif(!color.rgb) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\to.write_shift(1, parseInt(rgb.slice(0,2),16));\n\t\to.write_shift(1, parseInt(rgb.slice(2,4),16));\n\t\to.write_shift(1, parseInt(rgb.slice(4,6),16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\t/* fBold: d & 0x01 */\n\t\tfItalic: d & 0x02,\n\t\t/* fUnderline: d & 0x04 */\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif(!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w) {\n\t// $FlowIgnore\n\tvar ClipFmt = {2:\"BITMAP\",3:\"METAFILEPICT\",8:\"DIB\",14:\"ENHMETAFILE\"};\n\tvar m = o.read_shift(4);\n\tswitch(m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)]||\"\";\n\t}\n\tif(m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n//var VT_EMPTY = 0x0000;\n//var VT_NULL = 0x0001;\nvar VT_I2 = 0x0002;\nvar VT_I4 = 0x0003;\n//var VT_R4 = 0x0004;\n//var VT_R8 = 0x0005;\n//var VT_CY = 0x0006;\n//var VT_DATE = 0x0007;\n//var VT_BSTR = 0x0008;\n//var VT_ERROR = 0x000A;\nvar VT_BOOL = 0x000B;\nvar VT_VARIANT = 0x000C;\n//var VT_DECIMAL = 0x000E;\n//var VT_I1 = 0x0010;\n//var VT_UI1 = 0x0011;\n//var VT_UI2 = 0x0012;\nvar VT_UI4 = 0x0013;\n//var VT_I8 = 0x0014;\n//var VT_UI8 = 0x0015;\n//var VT_INT = 0x0016;\n//var VT_UINT = 0x0017;\nvar VT_LPSTR = 0x001E;\n//var VT_LPWSTR = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB = 0x0041;\n//var VT_STREAM = 0x0042;\n//var VT_STORAGE = 0x0043;\n//var VT_STREAMED_Object = 0x0044;\n//var VT_STORED_Object = 0x0045;\n//var VT_BLOB_Object = 0x0046;\nvar VT_CF = 0x0047;\n//var VT_CLSID = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\nvar VT_VECTOR = 0x1000;\n//var VT_ARRAY = 0x2000;\n\nvar VT_STRING = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n0x01: { n: 'CodePage', t: VT_I2 },\n0x02: { n: 'Category', t: VT_STRING },\n0x03: { n: 'PresentationFormat', t: VT_STRING },\n0x04: { n: 'ByteCount', t: VT_I4 },\n0x05: { n: 'LineCount', t: VT_I4 },\n0x06: { n: 'ParagraphCount', t: VT_I4 },\n0x07: { n: 'SlideCount', t: VT_I4 },\n0x08: { n: 'NoteCount', t: VT_I4 },\n0x09: { n: 'HiddenCount', t: VT_I4 },\n0x0a: { n: 'MultimediaClipCount', t: VT_I4 },\n0x0b: { n: 'ScaleCrop', t: VT_BOOL },\n0x0c: { n: 'HeadingPairs', t: VT_VECTOR | VT_VARIANT },\n0x0d: { n: 'TitlesOfParts', t: VT_VECTOR | VT_LPSTR },\n0x0e: { n: 'Manager', t: VT_STRING },\n0x0f: { n: 'Company', t: VT_STRING },\n0x10: { n: 'LinksUpToDate', t: VT_BOOL },\n0x11: { n: 'CharacterCount', t: VT_I4 },\n0x13: { n: 'SharedDoc', t: VT_BOOL },\n0x16: { n: 'HyperlinksChanged', t: VT_BOOL },\n0x17: { n: 'AppVersion', t: VT_I4, p: 'version' },\n0x18: { n: 'DigSig', t: VT_BLOB },\n0x1A: { n: 'ContentType', t: VT_STRING },\n0x1B: { n: 'ContentStatus', t: VT_STRING },\n0x1C: { n: 'Language', t: VT_STRING },\n0x1D: { n: 'Version', t: VT_STRING },\n0xFF: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n0x01: { n: 'CodePage', t: VT_I2 },\n0x02: { n: 'Title', t: VT_STRING },\n0x03: { n: 'Subject', t: VT_STRING },\n0x04: { n: 'Author', t: VT_STRING },\n0x05: { n: 'Keywords', t: VT_STRING },\n0x06: { n: 'Comments', t: VT_STRING },\n0x07: { n: 'Template', t: VT_STRING },\n0x08: { n: 'LastAuthor', t: VT_STRING },\n0x09: { n: 'RevNumber', t: VT_STRING },\n0x0A: { n: 'EditTime', t: VT_FILETIME },\n0x0B: { n: 'LastPrinted', t: VT_FILETIME },\n0x0C: { n: 'CreatedDate', t: VT_FILETIME },\n0x0D: { n: 'ModifiedDate', t: VT_FILETIME },\n0x0E: { n: 'PageCount', t: VT_I4 },\n0x0F: { n: 'WordCount', t: VT_I4 },\n0x10: { n: 'CharCount', t: VT_I4 },\n0x11: { n: 'Thumbnail', t: VT_CF },\n0x12: { n: 'Application', t: VT_STRING },\n0x13: { n: 'DocSecurity', t: VT_I4 },\n0xFF: {}\n};\n\n/* [MS-OLEPS] 2.18 */\nvar SpecialProperties = {\n0x80000000: { n: 'Locale', t: VT_UI4 },\n0x80000003: { n: 'Behavior', t: VT_UI4 },\n0x72627262: {}\n};\n\n(function() {\n\tfor(var y in SpecialProperties) if(SpecialProperties.hasOwnProperty(y))\n\tDocSummaryPIDDSI[y] = SummaryPIDSI[y] = SpecialProperties[y];\n})();\n\nvar DocSummaryRE = evert_key(DocSummaryPIDDSI, \"n\");\nvar SummaryRE = evert_key(SummaryPIDSI, \"n\");\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n0x0001: \"US\", // United States\n0x0002: \"CA\", // Canada\n0x0003: \"\", // Latin America (except Brazil)\n0x0007: \"RU\", // Russia\n0x0014: \"EG\", // Egypt\n0x001E: \"GR\", // Greece\n0x001F: \"NL\", // Netherlands\n0x0020: \"BE\", // Belgium\n0x0021: \"FR\", // France\n0x0022: \"ES\", // Spain\n0x0024: \"HU\", // Hungary\n0x0027: \"IT\", // Italy\n0x0029: \"CH\", // Switzerland\n0x002B: \"AT\", // Austria\n0x002C: \"GB\", // United Kingdom\n0x002D: \"DK\", // Denmark\n0x002E: \"SE\", // Sweden\n0x002F: \"NO\", // Norway\n0x0030: \"PL\", // Poland\n0x0031: \"DE\", // Germany\n0x0034: \"MX\", // Mexico\n0x0037: \"BR\", // Brazil\n0x003d: \"AU\", // Australia\n0x0040: \"NZ\", // New Zealand\n0x0042: \"TH\", // Thailand\n0x0051: \"JP\", // Japan\n0x0052: \"KR\", // Korea\n0x0054: \"VN\", // Viet Nam\n0x0056: \"CN\", // China\n0x005A: \"TR\", // Turkey\n0x0069: \"JS\", // Ramastan\n0x00D5: \"DZ\", // Algeria\n0x00D8: \"MA\", // Morocco\n0x00DA: \"LY\", // Libya\n0x015F: \"PT\", // Portugal\n0x0162: \"IS\", // Iceland\n0x0166: \"FI\", // Finland\n0x01A4: \"CZ\", // Czech Republic\n0x0376: \"TW\", // Taiwan\n0x03C1: \"LB\", // Lebanon\n0x03C2: \"JO\", // Jordan\n0x03C3: \"SY\", // Syria\n0x03C4: \"IQ\", // Iraq\n0x03C5: \"KW\", // Kuwait\n0x03C6: \"SA\", // Saudi Arabia\n0x03CB: \"AE\", // United Arab Emirates\n0x03CC: \"IL\", // Israel\n0x03CE: \"QA\", // Qatar\n0x03D5: \"IR\", // Iran\n0xFFFF: \"US\" // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr) { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar XLSIcv = rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0xFFFFFF, /* 0x40 icvForeground ?? */\n\t0x000000, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary */\n/* 14.2 Part Summary */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* Metadata */\n\t\"application/vnd.ms-excel.sheetMetadata\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"TODO\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"vba\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n});\n\nvar CT_LIST = (function(){\n\tvar o = {\n\t\tworkbooks: {\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t\t},\n\t\tstrs: { /* Shared Strings */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t\t},\n\t\tcomments: { /* Comments */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t\t},\n\t\tsheets: { /* Worksheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t\t},\n\t\tcharts: { /* Chartsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t\t},\n\t\tdialogs: { /* Dialogsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t\t},\n\t\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t\t},\n\t\tstyles: { /* Styles */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t\t}\n\t};\n\tkeys(o).forEach(function(k) { [\"xlsm\", \"xlam\"].forEach(function(v) { if(!o[k][v]) o[k][v] = o[k].xlsx; }); });\n\tkeys(o).forEach(function(k){ keys(o[k]).forEach(function(v) { ct2type[o[k][v]] = k; }); });\n\treturn o;\n})();\n\nvar type2ct/*{[string]:Array}*/ = evert_arr(ct2type);\n\nXMLNS.CT = 'http://schemas.openxmlformats.org/package/2006/content-types';\n\nfunction new_ct() {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [],\n\t\tTODO:[], xmlns: \"\" });\n}\n\nfunction parse_ct(data) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase ' 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nvar CTYPE_XML_ROOT = writextag('Types', null, {\n\t'xmlns': XMLNS.CT,\n\t'xmlns:xsd': XMLNS.xsd,\n\t'xmlns:xsi': XMLNS.xsi\n});\n\nvar CTYPE_DEFAULTS = [\n\t['xml', 'application/xml'],\n\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t/* from test files */\n\t['bmp', 'image/bmp'],\n\t['png', 'image/png'],\n\t['gif', 'image/gif'],\n\t['emf', 'image/x-emf'],\n\t['wmf', 'image/x-wmf'],\n\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t['pdf', 'application/pdf'],\n\t['rels', type2ct.rels[0]]\n].map(function(x) {\n\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n});\n\nfunction write_ct(ct, opts) {\n\tvar o = [], v;\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (CTYPE_XML_ROOT);\n\to = o.concat(CTYPE_DEFAULTS);\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType || 'xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType || 'xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('drawings');\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n});\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file) {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data, currentFilePath) {\n\tif (!data) return data;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar rels = {};\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId, f, type, relobj) {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(rId < 0) for(rId = 1; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(relobj.Type == RELS.HLINK) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 \n\t\tcase 'file-entry': // 4.3 \n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 \n\t\tcase 'algorithm': // 4.5 \n\t\tcase 'start-key-generation': // 4.6 \n\t\tcase 'key-derivation': // 4.7 \n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest) {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\to.push(' \\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push(' \\n');\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file, res, tag) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base, file) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nvar write_meta_ods = (function() {\n\tvar payload = 'Sheet' + 'JS ' + XLSX.version + '';\n\treturn function wmo() {\n\t\treturn payload;\n\t};\n})();\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nXMLNS.CORE_PROPS = \"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\";\nRELS.CORE_PROPS = 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties';\n\nvar CORE_PROPS_REGEX = (function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = cur[1];\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nvar CORE_PROPS_XML_ROOT = writextag('cp:coreProperties', null, {\n\t//'xmlns': XMLNS.CORE_PROPS,\n\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t'xmlns:dc': XMLNS.dc,\n\t'xmlns:dcterms': XMLNS.dcterms,\n\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t'xmlns:xsi': XMLNS.xsi\n});\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, CORE_PROPS_XML_ROOT], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nXMLNS.EXT_PROPS = \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\";\nRELS.EXT_PROPS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties';\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\", \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": p[f[1]] = (data.match(matchtag(f[0]))||[])[1]; break;\n\t\t\tcase \"bool\": p[f[1]] = (data.match(matchtag(f[0]))||[])[1] === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nvar EXT_PROPS_XML_ROOT = writextag('Properties', null, {\n\t'xmlns': XMLNS.EXT_PROPS,\n\t'xmlns:vt': XMLNS.vt\n});\n\nfunction write_ext_props(cp) {\n\tvar o = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (EXT_PROPS_XML_ROOT);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = String(cp[f[1]]); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"\" + escapexml(s) + \"\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nXMLNS.CUST_PROPS = \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\";\nRELS.CUST_PROPS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties';\n\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': name = null; break;\n\t\t\tdefault: if (x.indexOf('');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM = evert(XLMLDocPropsMap);\n\nfunction xlml_set_prop(Props, tag, val) {\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o = [];\n\tif(Props) keys(Props).forEach(function(k) {\nif(!Props.hasOwnProperty(k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\nif(!Custprops.hasOwnProperty(k)) return;\n\t\tif(Props && Props.hasOwnProperty(k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t, pad) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob) {\n\tvar length = blob.read_shift(4);\n\tvar ret = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.10 VtVecUnalignedLpstr */\nfunction parse_VtVecUnalignedLpstr(blob) {\n\treturn parse_VtVecUnalignedLpstrValue(blob);\n}\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i != cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OSHARED] 2.3.3.1.15 VtVecHeadingPair */\nfunction parse_VtVecHeadingPair(blob) {\n\t// NOTE: When invoked, wType & padding were already consumed\n\treturn parse_VtVecHeadingPairValue(blob);\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict = ({});\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type, _opts) {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPair(blob);\n\t\tcase 0x101E /*VT_LPSTR*/: return parse_VtVecUnalignedLpstr(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\np = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj = ({});\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2));\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ].concat(PseudoPropsPairs);\nfunction guess_property_type(val) {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI)[idx];\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\nvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({});\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier });\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI, entries2, clsid2) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"\" + z.t + \"\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob) {\n\tblob.l += 2; //var cAnti = blob.read_shift(2);\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length) {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tvar out = ({Target:target});\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tvar F = Target.indexOf(\"#\") > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\tout.write_shift(4, Target.length + 1);\n\t\tfor(i = 0; i < Target.length; ++i) out.write_shift(2, Target.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tout.write_shift(4, 2*(Target.length + 1));\n\t\tfor(i = 0; i < Target.length; ++i) out.write_shift(2, Target.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length + 1);\n\t\tfor(i = 0; i < Target.length; ++i) out.write_shift(1, Target.charCodeAt(i) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob) {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe});\n}\nfunction write_XLSCell(R, C, ixfe, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n0x00: parse_FtSkip, /* FtEnd */\n0x04: parse_FtSkip, /* FtMacro */\n0x05: parse_FtSkip, /* FtButton */\n0x06: parse_FtSkip, /* FtGmo */\n0x07: parse_FtCf, /* FtCf */\n0x08: parse_FtSkip, /* FtPioGrbit */\n0x09: parse_FtSkip, /* FtPictFmla */\n0x0A: parse_FtSkip, /* FtCbls */\n0x0B: parse_FtSkip, /* FtRbo */\n0x0C: parse_FtSkip, /* FtSbs */\n0x0D: parse_FtNts, /* FtNts */\n0x0E: parse_FtSkip, /* FtSbsFmla */\n0x0F: parse_FtSkip, /* FtGboData */\n0x10: parse_FtSkip, /* FtEdoData */\n0x11: parse_FtSkip, /* FtRboData */\n0x12: parse_FtSkip, /* FtCblsData */\n0x13: parse_FtSkip, /* FtLbsData */\n0x14: parse_FtSkip, /* FtCblsFmla */\n0x15: parse_FtCmo\n};\nfunction parse_FtArray(blob, length) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb, t, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length) {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs = ([]);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({});\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1() {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 8) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R, C, v, os, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i, f, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R, C, v, os, opts, t) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R, C, v, os) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t});\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\tvar rgce = target == blob.l || cce === 0 ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length) {\n\tvar merges = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = [];\nparse_BIFF5OT[0x08] = function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts);\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob) {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\treturn {s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags};\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r, c, val) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r, c, val) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n/* from js-harb (C) 2014-present SheetJS */\nvar DBF = (function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n0x01: 437, 0x02: 850,\n0x03: 1252, 0x04: 10000,\n0x64: 852, 0x65: 866,\n0x66: 865, 0x67: 861,\n0x68: 895, 0x69: 620,\n0x6A: 737, 0x6B: 857,\n0x78: 950, 0x79: 949,\n0x7A: 936, 0x7B: 932,\n0x7C: 874, 0x7D: 1255,\n0x7E: 1256, 0x96: 10007,\n0x97: 10029, 0x98: 10006,\n0xC8: 1250, 0xC9: 1251,\n0xCA: 1254, 0xCB: 1253,\n\n\t/* shapefile DBF extension */\n0x00: 20127, 0x08: 865,\n0x09: 437, 0x0A: 850,\n0x0B: 437, 0x0D: 437,\n0x0E: 850, 0x0F: 437,\n0x10: 850, 0x11: 437,\n0x12: 850, 0x13: 932,\n0x14: 850, 0x15: 437,\n0x16: 850, 0x17: 865,\n0x18: 437, 0x19: 437,\n0x1A: 850, 0x1B: 437,\n0x1C: 863, 0x1D: 850,\n0x1F: 852, 0x22: 852,\n0x23: 852, 0x24: 860,\n0x25: 850, 0x26: 866,\n0x37: 850, 0x40: 852,\n0x4D: 936, 0x4E: 949,\n0x4F: 950, 0x50: 874,\n0x57: 1252, 0x58: 1252,\n0x59: 1252,\n\n0xFF: 16969\n};\n\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts) {\n\tvar out = [];\n\t/* TODO: browser based */\n\tvar d = (new_raw_buf(1));\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64.decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = false;\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: case 0x03: break;\n\t\tcase 0x30: vfp = true; memo = true; break;\n\t\tcase 0x31: vfp = true; break;\n\t\tcase 0x83: memo = true; break;\n\t\tcase 0x8B: memo = true; break;\n\t\tcase 0x8C: memo = true; l7 = true; break;\n\t\tcase 0xF5: memo = true; break;\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\tvar /*filedate = new Date(),*/ nrow = 0, fpos = 0;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\t/*filedate = new Date(d.read_shift(1) + 1900, d.read_shift(1) - 1, d.read_shift(1));*/d.l += 3;\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(ft != 0x02) fpos = d.read_shift(2);\n\tvar rlen = d.read_shift(2);\n\n\tvar /*flags = 0,*/ current_cp = 1252;\n\tif(ft != 0x02) {\n\td.l+=16;\n\t/*flags = */d.read_shift(1);\n\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t/* codepage present in FoxPro */\n\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\td.l+=1;\n\n\td.l+=2;\n\t}\n\tif(l7) d.l += 36;\nvar fields = [], field = ({});\n\tvar hend = fpos - 10 - (vfp ? 264 : 0), ww = l7 ? 32 : 11;\n\twhile(ft == 0x02 ? d.l < d.length && d[d.l] != 0x0d: d.l < hend) {\n\t\tfield = ({});\n\t\tfield.name = cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // VFP Double\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General\n\t\t\tcase 'P': // Picture\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'C': // character\n\t\t\tcase 'D': // date\n\t\t\tcase 'F': // floating point\n\t\t\tcase 'I': // long\n\t\t\tcase 'L': // boolean\n\t\t\tcase 'M': // memo\n\t\t\tcase 'N': // number\n\t\t\tcase 'O': // double\n\t\t\tcase 'T': // datetime\n\t\t\tcase 'Y': // currency\n\t\t\tcase '0': // VFP _NullFlags\n\t\t\tcase '@': // timestamp\n\t\t\tcase '+': // autoincrement\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\telse if(ft == 0x02) d.l = 0x209;\n\tif(ft != 0x02) {\n\t\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\t\td.l = fpos;\n\t}\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) { d.l+=rlen; continue; }\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = cptable.utils.decode(current_cp, dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\tout[R][C] = cptable.utils.decode(current_cp, dd);\n\t\t\t\t\tout[R][C] = out[R][C].trim();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase ' ': case '?': out[R][C] = false; break; /* NOTE: technically uninitialized */\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N': out[R][C] = +s.replace(/\\u0000/g,\"\").trim(); break;\n\t\t\t\tcase '@': out[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400); break;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4; break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts) {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\treturn aoa_to_sheet(dbf_to_aoa(buf, o), o);\n}\n\nfunction dbf_to_workbook(buf, opts) {\n\ttry { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); }\n\tcatch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws, opts) {\n\tvar o = opts || {};\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1);\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(i == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar col = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tvar guess = '', _guess = '';\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\tif(guess == 'C') break;\n\t\t}\n\t\trlen += _RLEN[guess] || 0;\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\th.write_shift(4, 0x00000300); // TODO: CP\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += _RLEN[coltypes[i]] || 0;\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': break; /* options? */\n\t\t\tcase 'P':\n\t\t\t\tif(record[1].charAt(0) == 'P')\n\t\t\t\t\tformats.push(rstr.slice(3).replace(/;;/g, \";\"));\n\t\t\t\tbreak;\n\t\t\tcase 'C':\n\t\t\tvar C_seen_K = false, C_seen_X = false;\n\t\t\tfor(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht];\n\t}\n\n\tfunction sylk_to_sheet(d, opts) {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1];\n\t\tvar o = aoa_to_sheet(aoa, opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\treturn o;\n\t}\n\n\tfunction sylk_to_workbook(d, opts) { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); }\n\n\tfunction write_ws_cell_sylk(cell, ws, R, C) {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number') col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number') col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out, rows) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws, opts) {\n\t\tvar preamble = [\"ID;PWXL;N;E\"], o = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell;\n\t\tvar dense = Array.isArray(ws);\n\t\tvar RS = \"\\r\\n\";\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\to.push(write_ws_cell_sylk(cell, ws, R, C, opts));\n\t\t\t}\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tto_sheet: sylk_to_sheet,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = (function() {\n\tfunction dif_to_aoa(d, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64.decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(d.toString('binary'), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str, opts) {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri].trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str, opts) { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str, opts) { return sheet_to_workbook(dif_to_sheet(str, opts), opts); }\n\n\tvar sheet_to_dif = (function() {\n\t\tvar push_field = function pf(o, topic, v, n, s) {\n\t\t\to.push(topic);\n\t\t\to.push(v + \",\" + n);\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\n\t\t};\n\t\tvar push_value = function po(o, type, v, s) {\n\t\t\to.push(type + \",\" + v);\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\n\t\t};\n\t\treturn function sheet_to_dif(ws) {\n\t\t\tvar o = [];\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell;\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\n\t\t\t\t\tswitch(cell.t) {\n\t\t\t\t\t\tcase 'n':\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\n\t\t\t\t\t\t\tif(val == null) {\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF.format(cell.z || SSF._table[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpush_value(o, -1, 0, \"EOD\");\n\t\t\tvar RS = \"\\r\\n\";\n\t\t\tvar oo = o.join(RS);\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\n\t\t\treturn oo;\n\t\t};\n\t})();\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = (function() {\n\tfunction decode(s) { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s) { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str, opts) {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d, opts) { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d, opts) { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws) {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o = [], oo = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF.format(cell.z || SSF._table[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws) {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = (function() {\n\tfunction set_text_arr(data, arr, R, C, o) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f, opts) {\n\t\tvar o = opts || {};\n\t\tvar arr = ([]);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n0x2C: ',',\n0x09: \"\\t\",\n0x3B: ';'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n0x2C: 3,\n0x09: 2,\n0x3B: 1\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( cnt.hasOwnProperty(end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( cnt.hasOwnProperty(end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]];\n\t}\n\n\tfunction dsv_to_sheet_str(str, opts) {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws = o.dense ? ([]) : ({});\n\t\tvar range = ({s: {c:0, r:0}, e: {c:0, r:0}});\n\n\t\tif(str.slice(0,4) == \"sep=\" && str.charCodeAt(5) == 10) { sep = str.charAt(4); str = str.slice(6); }\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0;\n\t\tstr = str.replace(/\\r\\n/mg, \"\\n\");\n\t\tvar _re = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end);\n\t\t\tvar cell = ({});\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || SSF._table[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF.format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1;\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: instr = !instr; break;\n\t\t\tcase sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str, opts) {\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d, opts) {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64.decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer': str = d.toString('binary'); break;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if((opts.type == 'binary' || opts.type == 'buffer') && typeof cptable !== 'undefined' && opts.codepage) str = cptable.utils.decode(opts.codepage, cptable.utils.encode(1252,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d, opts) { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws) {\n\t\tvar o = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\" \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = (function() {\n\tfunction lotushopper(data, cb, opts) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = (R.f||parsenoop)(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R.n, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64.decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts) {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s = ((o.dense ? [] : {})), n = \"Sheet1\", sidx = 0;\n\t\tvar sheets = {}, snames = [n];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[2] == 0x02) o.Enum = WK1Enum;\n\t\telse if(d[2] == 0x1a) o.Enum = WK3Enum;\n\t\telse if(d[2] == 0x0e) { o.Enum = WK3Enum; o.qpro = true; d.l = 0; }\n\t\telse throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\tlotushopper(d, function(val, Rn, RT) {\n\t\t\tif(d[2] == 0x02) switch(RT) {\n\t\t\t\tcase 0x00:\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\t\tif(!o.qpro) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || SSF._table[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t} else switch(RT) {\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tval[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: break;\n\t\t\t}\n\t\t}, o);\n\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[n] = s;\n\t\treturn { SheetNames: snames, Sheets:sheets };\n\t}\n\n\tfunction parse_RANGE(blob) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_cell_3(blob) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\t/* TODO: figure out all of the corner cases */\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t\tdefault: throw \"unknown NUMBER_18 encoding \" + (v & 0x07);\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) { o[1].v = 0; return o; }\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (s*2 - 1) * ((e > 0 ? (v2 << e) : (v2 >>> -e)) + (e > -32 ? (v1 << (e + 32)) : (v1 >>> -(e + 32))));\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 14);\n\t\tblob.l += length - 10; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tvar WK1Enum = {\n0x0000: { n:\"BOF\", f:parseuint16 },\n0x0001: { n:\"EOF\" },\n0x0002: { n:\"CALCMODE\" },\n0x0003: { n:\"CALCORDER\" },\n0x0004: { n:\"SPLIT\" },\n0x0005: { n:\"SYNC\" },\n0x0006: { n:\"RANGE\", f:parse_RANGE },\n0x0007: { n:\"WINDOW1\" },\n0x0008: { n:\"COLW1\" },\n0x0009: { n:\"WINTWO\" },\n0x000A: { n:\"COLW2\" },\n0x000B: { n:\"NAME\" },\n0x000C: { n:\"BLANK\" },\n0x000D: { n:\"INTEGER\", f:parse_INTEGER },\n0x000E: { n:\"NUMBER\", f:parse_NUMBER },\n0x000F: { n:\"LABEL\", f:parse_LABEL },\n0x0010: { n:\"FORMULA\", f:parse_FORMULA },\n0x0018: { n:\"TABLE\" },\n0x0019: { n:\"ORANGE\" },\n0x001A: { n:\"PRANGE\" },\n0x001B: { n:\"SRANGE\" },\n0x001C: { n:\"FRANGE\" },\n0x001D: { n:\"KRANGE1\" },\n0x0020: { n:\"HRANGE\" },\n0x0023: { n:\"KRANGE2\" },\n0x0024: { n:\"PROTEC\" },\n0x0025: { n:\"FOOTER\" },\n0x0026: { n:\"HEADER\" },\n0x0027: { n:\"SETUP\" },\n0x0028: { n:\"MARGINS\" },\n0x0029: { n:\"LABELFMT\" },\n0x002A: { n:\"TITLES\" },\n0x002B: { n:\"SHEETJS\" },\n0x002D: { n:\"GRAPH\" },\n0x002E: { n:\"NGRAPH\" },\n0x002F: { n:\"CALCCOUNT\" },\n0x0030: { n:\"UNFORMATTED\" },\n0x0031: { n:\"CURSORW12\" },\n0x0032: { n:\"WINDOW\" },\n0x0033: { n:\"STRING\", f:parse_LABEL },\n0x0037: { n:\"PASSWORD\" },\n0x0038: { n:\"LOCKED\" },\n0x003C: { n:\"QUERY\" },\n0x003D: { n:\"QUERYNAME\" },\n0x003E: { n:\"PRINT\" },\n0x003F: { n:\"PRINTNAME\" },\n0x0040: { n:\"GRAPH2\" },\n0x0041: { n:\"GRAPHNAME\" },\n0x0042: { n:\"ZOOM\" },\n0x0043: { n:\"SYMSPLIT\" },\n0x0044: { n:\"NSROWS\" },\n0x0045: { n:\"NSCOLS\" },\n0x0046: { n:\"RULER\" },\n0x0047: { n:\"NNAME\" },\n0x0048: { n:\"ACOMM\" },\n0x0049: { n:\"AMACRO\" },\n0x004A: { n:\"PARSE\" },\n0x00FF: { n:\"\", f:parsenoop }\n\t};\n\n\tvar WK3Enum = {\n0x0000: { n:\"BOF\" },\n0x0001: { n:\"EOF\" },\n0x0003: { n:\"??\" },\n0x0004: { n:\"??\" },\n0x0005: { n:\"??\" },\n0x0006: { n:\"??\" },\n0x0007: { n:\"??\" },\n0x0009: { n:\"??\" },\n0x000a: { n:\"??\" },\n0x000b: { n:\"??\" },\n0x000c: { n:\"??\" },\n0x000e: { n:\"??\" },\n0x000f: { n:\"??\" },\n0x0010: { n:\"??\" },\n0x0011: { n:\"??\" },\n0x0012: { n:\"??\" },\n0x0013: { n:\"??\" },\n0x0015: { n:\"??\" },\n0x0016: { n:\"LABEL16\", f:parse_LABEL_16},\n0x0017: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n0x0018: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n0x0019: { n:\"FORMULA19\", f:parse_FORMULA_19},\n0x001a: { n:\"??\" },\n0x001b: { n:\"??\" },\n0x001c: { n:\"??\" },\n0x001d: { n:\"??\" },\n0x001e: { n:\"??\" },\n0x001f: { n:\"??\" },\n0x0021: { n:\"??\" },\n0x0025: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n0x0027: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n0x0028: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n0x00FF: { n:\"\", f:parsenoop }\n\t};\n\treturn {\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* Parse a list of tags */\nvar parse_rs = (function parse_rs_factory() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\"), rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/, nlregex = /\\r\\n/g;\n\t/* 18.4.7 rPr CT_RPrElt */\n\tvar parse_rpr = function parse_rpr(rpr, intro, outro) {\n\t\tvar font = {}, cp = 65001, align = \"\";\n\t\tvar pass = false;\n\t\tvar m = rpr.match(tagregex), i = 0;\n\t\tif(m) for(;i!=m.length; ++i) {\n\t\t\tvar y = parsexmltag(m[i]);\n\t\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t\t/* ** not required . */\n\t\t\t\tcase '':\n\t\t\t\tcase '': font.shadow = 1; break;\n\t\t\t\tcase '': break;\n\n\t\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\t\tcase '':\n\t\t\t\tcase '': font.outline = 1; break;\n\t\t\t\tcase '': break;\n\n\t\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\t\tcase '':\n\t\t\t\tcase '': font.strike = 1; break;\n\t\t\t\tcase '': break;\n\n\t\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\t\tcase '':\n\t\t\t\tcase '': font.u = 1; break;\n\t\t\t\tcase '': break;\n\n\t\t\t\t/* 18.8.2 b */\n\t\t\t\tcase '':\n\t\t\t\tcase '': font.b = 1; break;\n\t\t\t\tcase '': break;\n\n\t\t\t\t/* 18.8.26 i */\n\t\t\t\tcase '':\n\t\t\t\tcase '': font.i = 1; break;\n\t\t\t\tcase '': break;\n\n\t\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\t\tcase '': case '': break;\n\t\t\t\tcase '': pass = false; break;\n\t\t\t\tdefault:\n\t\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t\t}\n\t\t}\n\t\tvar style = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('');\n\n\t\tif(font.b) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.i) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.strike) { intro.push(\"\"); outro.push(\"\"); }\n\n\t\tif(align == \"superscript\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"\"); }\n\n\t\toutro.push(\"\");\n\t\treturn cp;\n\t};\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\tvar terms = [[],\"\",[]];\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return \"\";\n\t\tterms[1] = t[1];\n\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) /*cp = */parse_rpr(rpr[1], terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'
') + terms[2].join(\"\");\n\t}\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return null;\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"));\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")));\n\t\tif(html) z.h = parse_rs(z.r);\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data, opts) {\n\tvar s = ([]), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nRELS.SST = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\";\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst, opts) {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS.main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s = sst[i];\n\t\tvar sitag = \"\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"\" + escapexml(s.t) + \"\";\n\t\t}\n\t\tsitag += \"\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts) {\n\tvar s = ([]);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R_n, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* 'BrtBeginSst' */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* 'BrtSSTItem' */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* 'BrtEndSst' */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R_n.indexOf(\"Begin\") > 0){/* empty */}\n\t\t\t\telse if(R_n.indexOf(\"End\") > 0){/* empty */}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst) {\n\tvar ba = buf_array();\n\twrite_record(ba, \"BrtBeginSst\", write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, \"BrtSSTItem\", write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, \"BrtEndSst\");\n\treturn ba.end();\n}\nfunction _JS2ANSI(str) {\n\tif(typeof cptable !== 'undefined') return cptable.utils.encode(current_ansi, str);\n\tvar o = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length) {\n\tvar o = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\nif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt() { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\tcase '': break;\n\t\t\tcase ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = (function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) });\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nvar RTF = (function() {\n\tfunction rtf_to_sheet(d, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return rtf_to_sheet_str(Base64.decode(d), opts);\n\t\t\tcase 'binary': return rtf_to_sheet_str(d, opts);\n\t\t\tcase 'buffer': return rtf_to_sheet_str(d.toString('binary'), opts);\n\t\t\tcase 'array': return rtf_to_sheet_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\n\tfunction rtf_to_sheet_str(str, opts) {\n\t\tvar o = opts || {};\n\t\tvar ws = o.dense ? ([]) : ({});\n\t\tvar range = ({s: {c:0, r:0}, e: {c:0, r:0}});\n\n\t\t// TODO: parse\n\t\tif(!str.match(/\\\\trowd/)) throw new Error(\"RTF missing table\");\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction rtf_to_workbook(d, opts) { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); }\n\n\t/* TODO: this is a stub */\n\tfunction sheet_to_rtf(ws) {\n\t\tvar o = [\"{\\\\rtf1\\\\ansi\"];\n\t\tvar r = safe_decode_range(ws['!ref']), cell;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\to.push(\"\\\\trowd\\\\trautofit1\");\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) o.push(\"\\\\cellx\" + (C+1));\n\t\t\to.push(\"\\\\pard\\\\intbl\");\n\t\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || cell.v == null && (!cell.f || cell.F)) continue;\n\t\t\t\to.push(\" \" + (cell.w || (format_cell(cell), cell.w)));\n\t\t\t\to.push(\"\\\\cell\");\n\t\t\t}\n\t\t\to.push(\"\\\\pard\\\\intbl\\\\row\");\n\t\t}\n\t\treturn o.join(\"\") + \"}\";\n\t}\n\n\treturn {\n\t\tto_workbook: rtf_to_workbook,\n\t\tto_sheet: rtf_to_sheet,\n\t\tfrom_sheet: sheet_to_rtf\n\t};\n})();\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {}/*, sub_border = {}*/;\n\tvar pass = false;\n\tt[0].match(tagregex).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch (y[0]) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '': case '':\n\t\t\t\tborder = {};\n\t\t\t\tif (y.diagonalUp) { border.diagonalUp = y.diagonalUp; }\n\t\t\t\tif (y.diagonalDown) { border.diagonalDown = y.diagonalDown; }\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\tt[0].match(tagregex).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '': case '':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '': break;\n\t\t\tcase '': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\tt[0].match(tagregex).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch (y[0]) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '': break;\n\t\t\tcase '': case '':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\n\t\t\tcase '': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '': font.strike = 1; break;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\n\t\t\tcase '': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array*/ = (keys(SSF._table));\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = SSF._table[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': case '': break;\n\t\t\tcase '0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF.load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF) {\n\tvar o = [\"\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\tt[0].match(tagregex).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = y.wrapText;\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs) {\n\tvar o = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) { o[o.length] = (writextag('xf', null, c)); });\n\to[o.length] = (\"\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= (function make_pstyx() {\nvar numFmtRegex = /]*)>[\\S\\s]*?<\\/numFmts>/;\nvar cellXfRegex = /]*)>[\\S\\s]*?<\\/cellXfs>/;\nvar fillsRegex = /]*)>[\\S\\s]*?<\\/fills>/;\nvar fontsRegex = /]*)>[\\S\\s]*?<\\/fonts>/;\nvar bordersRegex = /]*)>[\\S\\s]*?<\\/borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(//mg,\"\").replace(//gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5 borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.8 cellStyles CT_CellStyles ? */\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nvar STYLES_XML_ROOT = writextag('styleSheet', null, {\n\t'xmlns': XMLNS.main[0],\n\t'xmlns:vt': XMLNS.vt\n});\n\nRELS.STY = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\";\n\nfunction write_sty_xml(wb, opts) {\n\tvar o = [XML_HEADER, STYLES_XML_ROOT], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i, f, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length, opts) {\n\tvar out = ({});\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\tif(grbit.fItalic) out.italic = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames = (evert(XLSBFillPTNames));\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tvar fls = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]);\n\tfor(var y in SSF._table) styles.NumberFmt[y] = SSF._table[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R_n, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* 'BrtFmt' */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF.load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* 'BrtFont' */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* 'BrtKnownFonts' */ break;\n\t\t\tcase 0x002D: /* 'BrtFill' */ break;\n\t\t\tcase 0x002E: /* 'BrtBorder' */ break;\n\t\t\tcase 0x002F: /* 'BrtXF' */\n\t\t\t\tif(state[state.length - 1] == \"BrtBeginCellXFs\") {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* 'BrtStyle' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x023C: /* 'BrtMRUColor' */\n\t\t\tcase 0x01DB: /* 'BrtIndexedColor': */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* 'BrtDXF14' */\n\t\t\tcase 0x0836: /* 'BrtDXF15' */\n\t\t\tcase 0x046A: /* 'BrtSlicerStyleElement' */\n\t\t\tcase 0x0200: /* 'BrtTableStyleElement' */\n\t\t\tcase 0x082F: /* 'BrtTimelineStyleElement' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(R_n); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif((R_n||\"\").indexOf(\"Begin\") > 0) state.push(R_n);\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\nfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, \"BrtBeginFmts\", write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\nfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, \"BrtFmt\", write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, \"BrtEndFmts\");\n}\n\nfunction write_FONTS_bin(ba) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, \"BrtBeginFonts\", write_UInt32LE(cnt));\n\twrite_record(ba, \"BrtFont\", write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, \"BrtEndFonts\");\n}\n\nfunction write_FILLS_bin(ba) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, \"BrtBeginFills\", write_UInt32LE(cnt));\n\twrite_record(ba, \"BrtFill\", write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, \"BrtFill\", write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, \"BrtEndFills\");\n}\n\nfunction write_BORDERS_bin(ba) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, \"BrtBeginBorders\", write_UInt32LE(cnt));\n\twrite_record(ba, \"BrtBorder\", write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, \"BrtEndBorders\");\n}\n\nfunction write_CELLSTYLEXFS_bin(ba) {\n\tvar cnt = 1;\n\twrite_record(ba, \"BrtBeginCellStyleXFs\", write_UInt32LE(cnt));\n\twrite_record(ba, \"BrtXF\", write_BrtXF({\n\t\tnumFmtId:0,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, \"BrtEndCellStyleXFs\");\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, \"BrtBeginCellXFs\", write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, \"BrtXF\", write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, \"BrtEndCellXFs\");\n}\n\nfunction write_STYLES_bin(ba) {\n\tvar cnt = 1;\n\n\twrite_record(ba, \"BrtBeginStyles\", write_UInt32LE(cnt));\n\twrite_record(ba, \"BrtStyle\", write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, \"BrtEndStyles\");\n}\n\nfunction write_DXFS_bin(ba) {\n\tvar cnt = 0;\n\n\twrite_record(ba, \"BrtBeginDXFs\", write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, \"BrtEndDXFs\");\n}\n\nfunction write_TABLESTYLES_bin(ba) {\n\tvar cnt = 0;\n\n\twrite_record(ba, \"BrtBeginTableStyles\", write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, \"BrtEndTableStyles\");\n}\n\nfunction write_COLORPALETTE_bin() {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, \"BrtBeginStyleSheet\");\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, \"BrtEndStyleSheet\");\n\treturn ba.end();\n}\nRELS.THEME = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\";\n\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme.push(color);\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme() { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme() { }\n\nvar clrsregex = /]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) return parse_theme_xml(write_theme());\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts) {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tvar o = [XML_HEADER];\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles || !jszip) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = new jszip(data); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob) {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: break; /* text color */\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data) {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\n\t\t\tcase ' 0){/* empty */}\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t});\n\treturn out;\n}\n\n//function write_cc_bin(data, opts) { }\n/* 18.14 Supplementary Workbook Data */\nfunction parse_xlink_xml() {\n\t//var opts = _opts || {};\n\t//if(opts.WTF) throw \"XLSX External Link\";\n}\n\n/* [MS-XLSB] 2.1.7.25 External Link */\nfunction parse_xlink_bin(data, name, _opts) {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\n\tvar pass = false, end = false;\n\n\trecordhopper(data, function xlink_parse(val, R_n, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0167: /* 'BrtSupTabs' */\n\t\t\tcase 0x016B: /* 'BrtExternTableStart' */\n\t\t\tcase 0x016C: /* 'BrtExternTableEnd' */\n\t\t\tcase 0x016E: /* 'BrtExternRowHdr' */\n\t\t\tcase 0x016F: /* 'BrtExternCellBlank' */\n\t\t\tcase 0x0170: /* 'BrtExternCellReal' */\n\t\t\tcase 0x0171: /* 'BrtExternCellBool' */\n\t\t\tcase 0x0172: /* 'BrtExternCellError' */\n\t\t\tcase 0x0173: /* 'BrtExternCellString' */\n\t\t\tcase 0x01D8: /* 'BrtExternValueMeta' */\n\t\t\tcase 0x0241: /* 'BrtSupNameStart' */\n\t\t\tcase 0x0242: /* 'BrtSupNameValueStart' */\n\t\t\tcase 0x0243: /* 'BrtSupNameValueEnd' */\n\t\t\tcase 0x0244: /* 'BrtSupNameNum' */\n\t\t\tcase 0x0245: /* 'BrtSupNameErr' */\n\t\t\tcase 0x0246: /* 'BrtSupNameSt' */\n\t\t\tcase 0x0247: /* 'BrtSupNameNil' */\n\t\t\tcase 0x0248: /* 'BrtSupNameBool' */\n\t\t\tcase 0x0249: /* 'BrtSupNameFmla' */\n\t\t\tcase 0x024A: /* 'BrtSupNameBits' */\n\t\t\tcase 0x024B: /* 'BrtSupNameEnd' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif((R_n||\"\").indexOf(\"Begin\") > 0){/* empty */}\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT.toString(16) + \" \" + R_n);\n\t\t}\n\t}, opts);\n}\nRELS.IMG = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\";\nRELS.DRAW = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\";\n/* 20.5 DrawingML - SpreadsheetML Drawing */\nfunction parse_drawing(data, rels) {\n\tif(!data) return \"??\";\n\t/*\n\t Chartsheet Drawing:\n\t - 20.5.2.35 wsDr CT_Drawing\n\t - 20.5.2.1 absoluteAnchor CT_AbsoluteAnchor\n\t - 20.5.2.16 graphicFrame CT_GraphicalObjectFrame\n\t - 20.1.2.2.16 graphic CT_GraphicalObject\n\t - 20.1.2.2.17 graphicData CT_GraphicalObjectData\n - chart reference\n\t the actual type is based on the URI of the graphicData\n\t\tTODO: handle embedded charts and other types of graphics\n\t*/\n\tvar id = (data.match(/]*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nvar _shapeid = 1024;\nfunction write_comments_vml(rId, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"}),\n\t\twritextag(\"v:shapetype\", [\n\t\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t\t].join(\"\"), {id:\"_x0000_t202\", 'o:spt':202, coordsize:csize.join(\",\"),path:bbox})\n\t];\n\twhile(_shapeid < rId * 1000) _shapeid += 1000;\n\n\tcomments.forEach(function(x) { var c = decode_cell(x[0]);\n\to = o.concat([\n\t'',\n\t\twritextag('v:fill', writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}), {'color2':\"#BEFF82\", 'angle':\"-180\", 'type':\"gradient\"}),\n\t\twritextag(\"v:shadow\", null, {on:\"t\", 'obscured':\"t\"}),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'
',\n\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c, 0, c.r, 0, c.c+3, 100, c.r+5, 100].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\t'',\n\t\t'',\n\t''\n\t]); });\n\to.push('');\n\treturn o.join(\"\");\n}\n\nRELS.CMNT = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\";\n\nfunction parse_comments(zip, dirComments, sheets, sheetRels, opts) {\n\tfor(var i = 0; i != dirComments.length; ++i) {\n\t\tvar canonicalpath=dirComments[i];\n\t\tvar comments=parse_cmnt(getzipdata(zip, canonicalpath.replace(/^\\//,''), true), canonicalpath, opts);\n\t\tif(!comments || !comments.length) continue;\n\t\t// find the sheets targeted by these comments\n\t\tvar sheetNames = keys(sheets);\n\t\tfor(var j = 0; j != sheetNames.length; ++j) {\n\t\t\tvar sheetName = sheetNames[j];\n\t\t\tvar rels = sheetRels[sheetName];\n\t\t\tif(rels) {\n\t\t\t\tvar rel = rels[canonicalpath];\n\t\t\t\tif(rel) insertCommentsIntoSheet(sheetName, sheets[sheetName], comments);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction insertCommentsIntoSheet(sheetName, sheet, comments) {\n\tvar dense = Array.isArray(sheet);\n\tvar cell, r;\n\tcomments.forEach(function(comment) {\n\t\tif(dense) {\n\t\t\tr = decode_cell(comment.ref);\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\n\t\t\tcell = sheet[r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = {};\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tvar thisCell = decode_cell(comment.ref);\n\t\t\tif(range.s.r > thisCell.r) range.s.r = thisCell.r;\n\t\t\tif(range.e.r < thisCell.r) range.e.r = thisCell.r;\n\t\t\tif(range.s.c > thisCell.c) range.s.c = thisCell.c;\n\t\t\tif(range.e.c < thisCell.c) range.e.c = thisCell.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o = ({a: comment.author, t: comment.t, r: comment.r});\n\t\tif(comment.h) o.h = comment.h;\n\t\tcell.c.push(o);\n\t});\n}\n\n/* 18.7 Comments */\nfunction parse_comments_xml(data, opts) {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors = [];\n\tvar commentList = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid });\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"\") rt.t = rt.h = \"\";\n\t\tcomment.t = rt.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nvar CMNT_XML_ROOT = writextag('comments', null, { 'xmlns': XMLNS.main[0] });\nfunction write_comments_xml(data) {\n\tvar o = [XML_HEADER, CMNT_XML_ROOT];\n\n\tvar iauthor = [];\n\to.push(\"\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) > -1) return;\n\t\tiauthor.push(a);\n\t\to.push(\"\" + a + \"\");\n\t}); });\n\to.push(\"\");\n\to.push(\"\");\n\tdata.forEach(function(d) {\n\t\td[1].forEach(function(c) {\n\t\t\t/* 18.7.3 CT_Comment */\n\t\t\to.push('');\n\t\t\to.push(writetag(\"t\", c.t == null ? \"\" : c.t));\n\t\t\to.push('');\n\t\t});\n\t});\n\to.push(\"\");\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts) {\n\tvar out = [];\n\tvar authors = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R_n, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete c.iauthor;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif((R_n||\"\").indexOf(\"Begin\") > 0){/* empty */}\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data) {\n\tvar ba = buf_array();\n\tvar iauthor = [];\n\twrite_record(ba, \"BrtBeginComments\");\n\n\twrite_record(ba, \"BrtBeginCommentAuthors\");\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, \"BrtCommentAuthor\", write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, \"BrtEndCommentAuthors\");\n\n\twrite_record(ba, \"BrtBeginCommentList\");\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, \"BrtBeginComment\", write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, \"BrtCommentText\", write_BrtCommentText(c));\n\t\t\twrite_record(ba, \"BrtEndComment\");\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, \"BrtEndCommentList\");\n\n\twrite_record(ba, \"BrtEndComments\");\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n\tvar newcfb = CFB.utils.cfb_new({root:\"R\"});\n\tcfb.FullPaths.forEach(function(p, i) {\n\t\tif(p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/)) return;\n\t\tvar newpath = p.replace(/^[^\\/]*/,\"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n\t\tCFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n\t});\n\treturn CFB.write(newcfb);\n}\n\nfunction fill_vba_xls(cfb, vba) {\n\tvba.FullPaths.forEach(function(p, i) {\n\t\tif(i == 0) return;\n\t\tvar newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n\t\tif(newpath.slice(-1) !== \"/\") CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n\t});\n}\n\nvar VBAFMTS = [ \"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\" ];\n\nRELS.DS = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\";\nRELS.MS = \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\";\n\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin() { return {'!type':'dialog'}; }\nfunction parse_ds_xml() { return {'!type':'dialog'}; }\nfunction parse_ms_bin() { return {'!type':'macro'}; }\nfunction parse_ms_xml() { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = (function(){\n\tvar rcregex = /(^|[^A-Za-z])R(\\[?)(-?\\d+|)\\]?C(\\[?)(-?\\d+|)\\]?/g;\n\tvar rcbase = ({r:0,c:0});\n\tfunction rcfunc($$,$1,$2,$3,$4,$5) {\n\t\tvar R = $3.length>0?parseInt($3,10)|0:0, C = $5.length>0?parseInt($5,10)|0:0;\n\t\tif(C<0 && $4.length === 0) C=0;\n\t\tvar cRel = false, rRel = false;\n\t\tif($4.length > 0 || $5.length == 0) cRel = true; if(cRel) C += rcbase.c; else --C;\n\t\tif($2.length > 0 || $3.length == 0) rRel = true; if(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr, base) {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)([1-9]\\d{0,5}|10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6])(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc =(function(){\n\treturn function a1_to_rc(fstr, base) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = (r == 0 ? \"\" : !$4 ? \"[\" + r + \"]\" : (r+1));\n\t\t\tvar C = (c == 0 ? \"\" : !$2 ? \"[\" + c + \"]\" : (c+1));\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f, delta) {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f, range, cell) {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f) {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f) {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts) {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n0x01: { n:'PtgExp', f:parse_PtgExp },\n0x02: { n:'PtgTbl', f:parse_PtgTbl },\n0x03: { n:'PtgAdd', f:parseread1 },\n0x04: { n:'PtgSub', f:parseread1 },\n0x05: { n:'PtgMul', f:parseread1 },\n0x06: { n:'PtgDiv', f:parseread1 },\n0x07: { n:'PtgPower', f:parseread1 },\n0x08: { n:'PtgConcat', f:parseread1 },\n0x09: { n:'PtgLt', f:parseread1 },\n0x0A: { n:'PtgLe', f:parseread1 },\n0x0B: { n:'PtgEq', f:parseread1 },\n0x0C: { n:'PtgGe', f:parseread1 },\n0x0D: { n:'PtgGt', f:parseread1 },\n0x0E: { n:'PtgNe', f:parseread1 },\n0x0F: { n:'PtgIsect', f:parseread1 },\n0x10: { n:'PtgUnion', f:parseread1 },\n0x11: { n:'PtgRange', f:parseread1 },\n0x12: { n:'PtgUplus', f:parseread1 },\n0x13: { n:'PtgUminus', f:parseread1 },\n0x14: { n:'PtgPercent', f:parseread1 },\n0x15: { n:'PtgParen', f:parseread1 },\n0x16: { n:'PtgMissArg', f:parseread1 },\n0x17: { n:'PtgStr', f:parse_PtgStr },\n0x1A: { n:'PtgSheet', f:parse_PtgSheet },\n0x1B: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n0x1C: { n:'PtgErr', f:parse_PtgErr },\n0x1D: { n:'PtgBool', f:parse_PtgBool },\n0x1E: { n:'PtgInt', f:parse_PtgInt },\n0x1F: { n:'PtgNum', f:parse_PtgNum },\n0x20: { n:'PtgArray', f:parse_PtgArray },\n0x21: { n:'PtgFunc', f:parse_PtgFunc },\n0x22: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n0x23: { n:'PtgName', f:parse_PtgName },\n0x24: { n:'PtgRef', f:parse_PtgRef },\n0x25: { n:'PtgArea', f:parse_PtgArea },\n0x26: { n:'PtgMemArea', f:parse_PtgMemArea },\n0x27: { n:'PtgMemErr', f:parse_PtgMemErr },\n0x28: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n0x29: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n0x2A: { n:'PtgRefErr', f:parse_PtgRefErr },\n0x2B: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n0x2C: { n:'PtgRefN', f:parse_PtgRefN },\n0x2D: { n:'PtgAreaN', f:parse_PtgAreaN },\n0x2E: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n0x2F: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n0x39: { n:'PtgNameX', f:parse_PtgNameX },\n0x3A: { n:'PtgRef3d', f:parse_PtgRef3d },\n0x3B: { n:'PtgArea3d', f:parse_PtgArea3d },\n0x3C: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n0x3D: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n0xFF: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n0x40: 0x20, 0x60: 0x20,\n0x41: 0x21, 0x61: 0x21,\n0x42: 0x22, 0x62: 0x22,\n0x43: 0x23, 0x63: 0x23,\n0x44: 0x24, 0x64: 0x24,\n0x45: 0x25, 0x65: 0x25,\n0x46: 0x26, 0x66: 0x26,\n0x47: 0x27, 0x67: 0x27,\n0x48: 0x28, 0x68: 0x28,\n0x49: 0x29, 0x69: 0x29,\n0x4A: 0x2A, 0x6A: 0x2A,\n0x4B: 0x2B, 0x6B: 0x2B,\n0x4C: 0x2C, 0x6C: 0x2C,\n0x4D: 0x2D, 0x6D: 0x2D,\n0x4E: 0x2E, 0x6E: 0x2E,\n0x4F: 0x2F, 0x6F: 0x2F,\n0x58: 0x22, 0x78: 0x22,\n0x59: 0x39, 0x79: 0x39,\n0x5A: 0x3A, 0x7A: 0x3A,\n0x5B: 0x3B, 0x7B: 0x3B,\n0x5C: 0x3C, 0x7C: 0x3C,\n0x5D: 0x3D, 0x7D: 0x3D\n};\n(function(){for(var y in PtgDupes) PtgTypes[y] = PtgTypes[PtgDupes[y]];})();\n\nvar Ptg18 = {\n0x01: { n:'PtgElfLel', f:parse_PtgElfLel },\n0x02: { n:'PtgElfRw', f:parse_PtgElfRw },\n0x03: { n:'PtgElfCol', f:parse_PtgElfCol },\n0x06: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n0x07: { n:'PtgElfColV', f:parse_PtgElfColV },\n0x0A: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n0x0B: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n0x0D: { n:'PtgElfColS', f:parse_PtgElfColS },\n0x0F: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n0x10: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n0x19: { n:'PtgList', f:parse_PtgList },\n0x1D: { n:'PtgSxName', f:parse_PtgSxName },\n0xFF: {}\n};\nvar Ptg19 = {\n0x00: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n0x01: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n0x02: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n0x04: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n0x08: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n0x10: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n0x20: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n0x40: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n0x41: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n0x80: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n0xFF: {}\n};\nPtg19[0x21] = Ptg19[0x20];\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f) {\n\tvar o = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\nr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\nfunction formula_quote_sheet_name(sname, opts) {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif(sname.indexOf(\" \") > -1) return \"'\" + sname + \"'\";\n\treturn sname;\n}\nfunction get_ixti_raw(supbooks, ixti, opts) {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff > 8 && !supbooks.XTI[ixti]) return supbooks.SheetNames[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti, opts) {\n\treturn formula_quote_sheet_name(get_ixti_raw(supbooks, ixti, opts), opts);\n}\nfunction stringify_formula(formula/*Array*/, range, cell, supbooks, opts) {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack = [], e1, e2, c, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd': /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv': /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq': /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe': /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt': /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe': /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt': /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul': /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe': /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower': /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub': /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\":\"+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\nc = shift_cell_xls((f[1][1]), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\nc = cell ? shift_cell_xls((f[1][1]), cell, opts) : (f[1][1]);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\nixti = f[1][1]; c = shift_cell_xls((f[1][2]), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc = (f[1][0]), func = (f[1][1]);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(f[1]); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1] + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(f[1]); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\nr = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\nr = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\nixti = f[1][1]; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\tif(name in XLSXFutureFunctions) name = XLSXFutureFunctions[name];\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx = (f[1][1]); nameidx = (f[1][2]); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]),r:(f[1][0])};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r});\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(f[1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(f[1]) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLS] 2.5.198.4 */\nvar Cetab = {\n0x0000: 'BEEP',\n0x0001: 'OPEN',\n0x0002: 'OPEN.LINKS',\n0x0003: 'CLOSE.ALL',\n0x0004: 'SAVE',\n0x0005: 'SAVE.AS',\n0x0006: 'FILE.DELETE',\n0x0007: 'PAGE.SETUP',\n0x0008: 'PRINT',\n0x0009: 'PRINTER.SETUP',\n0x000A: 'QUIT',\n0x000B: 'NEW.WINDOW',\n0x000C: 'ARRANGE.ALL',\n0x000D: 'WINDOW.SIZE',\n0x000E: 'WINDOW.MOVE',\n0x000F: 'FULL',\n0x0010: 'CLOSE',\n0x0011: 'RUN',\n0x0016: 'SET.PRINT.AREA',\n0x0017: 'SET.PRINT.TITLES',\n0x0018: 'SET.PAGE.BREAK',\n0x0019: 'REMOVE.PAGE.BREAK',\n0x001A: 'FONT',\n0x001B: 'DISPLAY',\n0x001C: 'PROTECT.DOCUMENT',\n0x001D: 'PRECISION',\n0x001E: 'A1.R1C1',\n0x001F: 'CALCULATE.NOW',\n0x0020: 'CALCULATION',\n0x0022: 'DATA.FIND',\n0x0023: 'EXTRACT',\n0x0024: 'DATA.DELETE',\n0x0025: 'SET.DATABASE',\n0x0026: 'SET.CRITERIA',\n0x0027: 'SORT',\n0x0028: 'DATA.SERIES',\n0x0029: 'TABLE',\n0x002A: 'FORMAT.NUMBER',\n0x002B: 'ALIGNMENT',\n0x002C: 'STYLE',\n0x002D: 'BORDER',\n0x002E: 'CELL.PROTECTION',\n0x002F: 'COLUMN.WIDTH',\n0x0030: 'UNDO',\n0x0031: 'CUT',\n0x0032: 'COPY',\n0x0033: 'PASTE',\n0x0034: 'CLEAR',\n0x0035: 'PASTE.SPECIAL',\n0x0036: 'EDIT.DELETE',\n0x0037: 'INSERT',\n0x0038: 'FILL.RIGHT',\n0x0039: 'FILL.DOWN',\n0x003D: 'DEFINE.NAME',\n0x003E: 'CREATE.NAMES',\n0x003F: 'FORMULA.GOTO',\n0x0040: 'FORMULA.FIND',\n0x0041: 'SELECT.LAST.CELL',\n0x0042: 'SHOW.ACTIVE.CELL',\n0x0043: 'GALLERY.AREA',\n0x0044: 'GALLERY.BAR',\n0x0045: 'GALLERY.COLUMN',\n0x0046: 'GALLERY.LINE',\n0x0047: 'GALLERY.PIE',\n0x0048: 'GALLERY.SCATTER',\n0x0049: 'COMBINATION',\n0x004A: 'PREFERRED',\n0x004B: 'ADD.OVERLAY',\n0x004C: 'GRIDLINES',\n0x004D: 'SET.PREFERRED',\n0x004E: 'AXES',\n0x004F: 'LEGEND',\n0x0050: 'ATTACH.TEXT',\n0x0051: 'ADD.ARROW',\n0x0052: 'SELECT.CHART',\n0x0053: 'SELECT.PLOT.AREA',\n0x0054: 'PATTERNS',\n0x0055: 'MAIN.CHART',\n0x0056: 'OVERLAY',\n0x0057: 'SCALE',\n0x0058: 'FORMAT.LEGEND',\n0x0059: 'FORMAT.TEXT',\n0x005A: 'EDIT.REPEAT',\n0x005B: 'PARSE',\n0x005C: 'JUSTIFY',\n0x005D: 'HIDE',\n0x005E: 'UNHIDE',\n0x005F: 'WORKSPACE',\n0x0060: 'FORMULA',\n0x0061: 'FORMULA.FILL',\n0x0062: 'FORMULA.ARRAY',\n0x0063: 'DATA.FIND.NEXT',\n0x0064: 'DATA.FIND.PREV',\n0x0065: 'FORMULA.FIND.NEXT',\n0x0066: 'FORMULA.FIND.PREV',\n0x0067: 'ACTIVATE',\n0x0068: 'ACTIVATE.NEXT',\n0x0069: 'ACTIVATE.PREV',\n0x006A: 'UNLOCKED.NEXT',\n0x006B: 'UNLOCKED.PREV',\n0x006C: 'COPY.PICTURE',\n0x006D: 'SELECT',\n0x006E: 'DELETE.NAME',\n0x006F: 'DELETE.FORMAT',\n0x0070: 'VLINE',\n0x0071: 'HLINE',\n0x0072: 'VPAGE',\n0x0073: 'HPAGE',\n0x0074: 'VSCROLL',\n0x0075: 'HSCROLL',\n0x0076: 'ALERT',\n0x0077: 'NEW',\n0x0078: 'CANCEL.COPY',\n0x0079: 'SHOW.CLIPBOARD',\n0x007A: 'MESSAGE',\n0x007C: 'PASTE.LINK',\n0x007D: 'APP.ACTIVATE',\n0x007E: 'DELETE.ARROW',\n0x007F: 'ROW.HEIGHT',\n0x0080: 'FORMAT.MOVE',\n0x0081: 'FORMAT.SIZE',\n0x0082: 'FORMULA.REPLACE',\n0x0083: 'SEND.KEYS',\n0x0084: 'SELECT.SPECIAL',\n0x0085: 'APPLY.NAMES',\n0x0086: 'REPLACE.FONT',\n0x0087: 'FREEZE.PANES',\n0x0088: 'SHOW.INFO',\n0x0089: 'SPLIT',\n0x008A: 'ON.WINDOW',\n0x008B: 'ON.DATA',\n0x008C: 'DISABLE.INPUT',\n0x008E: 'OUTLINE',\n0x008F: 'LIST.NAMES',\n0x0090: 'FILE.CLOSE',\n0x0091: 'SAVE.WORKBOOK',\n0x0092: 'DATA.FORM',\n0x0093: 'COPY.CHART',\n0x0094: 'ON.TIME',\n0x0095: 'WAIT',\n0x0096: 'FORMAT.FONT',\n0x0097: 'FILL.UP',\n0x0098: 'FILL.LEFT',\n0x0099: 'DELETE.OVERLAY',\n0x009B: 'SHORT.MENUS',\n0x009F: 'SET.UPDATE.STATUS',\n0x00A1: 'COLOR.PALETTE',\n0x00A2: 'DELETE.STYLE',\n0x00A3: 'WINDOW.RESTORE',\n0x00A4: 'WINDOW.MAXIMIZE',\n0x00A6: 'CHANGE.LINK',\n0x00A7: 'CALCULATE.DOCUMENT',\n0x00A8: 'ON.KEY',\n0x00A9: 'APP.RESTORE',\n0x00AA: 'APP.MOVE',\n0x00AB: 'APP.SIZE',\n0x00AC: 'APP.MINIMIZE',\n0x00AD: 'APP.MAXIMIZE',\n0x00AE: 'BRING.TO.FRONT',\n0x00AF: 'SEND.TO.BACK',\n0x00B9: 'MAIN.CHART.TYPE',\n0x00BA: 'OVERLAY.CHART.TYPE',\n0x00BB: 'SELECT.END',\n0x00BC: 'OPEN.MAIL',\n0x00BD: 'SEND.MAIL',\n0x00BE: 'STANDARD.FONT',\n0x00BF: 'CONSOLIDATE',\n0x00C0: 'SORT.SPECIAL',\n0x00C1: 'GALLERY.3D.AREA',\n0x00C2: 'GALLERY.3D.COLUMN',\n0x00C3: 'GALLERY.3D.LINE',\n0x00C4: 'GALLERY.3D.PIE',\n0x00C5: 'VIEW.3D',\n0x00C6: 'GOAL.SEEK',\n0x00C7: 'WORKGROUP',\n0x00C8: 'FILL.GROUP',\n0x00C9: 'UPDATE.LINK',\n0x00CA: 'PROMOTE',\n0x00CB: 'DEMOTE',\n0x00CC: 'SHOW.DETAIL',\n0x00CE: 'UNGROUP',\n0x00CF: 'OBJECT.PROPERTIES',\n0x00D0: 'SAVE.NEW.OBJECT',\n0x00D1: 'SHARE',\n0x00D2: 'SHARE.NAME',\n0x00D3: 'DUPLICATE',\n0x00D4: 'APPLY.STYLE',\n0x00D5: 'ASSIGN.TO.OBJECT',\n0x00D6: 'OBJECT.PROTECTION',\n0x00D7: 'HIDE.OBJECT',\n0x00D8: 'SET.EXTRACT',\n0x00D9: 'CREATE.PUBLISHER',\n0x00DA: 'SUBSCRIBE.TO',\n0x00DB: 'ATTRIBUTES',\n0x00DC: 'SHOW.TOOLBAR',\n0x00DE: 'PRINT.PREVIEW',\n0x00DF: 'EDIT.COLOR',\n0x00E0: 'SHOW.LEVELS',\n0x00E1: 'FORMAT.MAIN',\n0x00E2: 'FORMAT.OVERLAY',\n0x00E3: 'ON.RECALC',\n0x00E4: 'EDIT.SERIES',\n0x00E5: 'DEFINE.STYLE',\n0x00F0: 'LINE.PRINT',\n0x00F3: 'ENTER.DATA',\n0x00F9: 'GALLERY.RADAR',\n0x00FA: 'MERGE.STYLES',\n0x00FB: 'EDITION.OPTIONS',\n0x00FC: 'PASTE.PICTURE',\n0x00FD: 'PASTE.PICTURE.LINK',\n0x00FE: 'SPELLING',\n0x0100: 'ZOOM',\n0x0103: 'INSERT.OBJECT',\n0x0104: 'WINDOW.MINIMIZE',\n0x0109: 'SOUND.NOTE',\n0x010A: 'SOUND.PLAY',\n0x010B: 'FORMAT.SHAPE',\n0x010C: 'EXTEND.POLYGON',\n0x010D: 'FORMAT.AUTO',\n0x0110: 'GALLERY.3D.BAR',\n0x0111: 'GALLERY.3D.SURFACE',\n0x0112: 'FILL.AUTO',\n0x0114: 'CUSTOMIZE.TOOLBAR',\n0x0115: 'ADD.TOOL',\n0x0116: 'EDIT.OBJECT',\n0x0117: 'ON.DOUBLECLICK',\n0x0118: 'ON.ENTRY',\n0x0119: 'WORKBOOK.ADD',\n0x011A: 'WORKBOOK.MOVE',\n0x011B: 'WORKBOOK.COPY',\n0x011C: 'WORKBOOK.OPTIONS',\n0x011D: 'SAVE.WORKSPACE',\n0x0120: 'CHART.WIZARD',\n0x0121: 'DELETE.TOOL',\n0x0122: 'MOVE.TOOL',\n0x0123: 'WORKBOOK.SELECT',\n0x0124: 'WORKBOOK.ACTIVATE',\n0x0125: 'ASSIGN.TO.TOOL',\n0x0127: 'COPY.TOOL',\n0x0128: 'RESET.TOOL',\n0x0129: 'CONSTRAIN.NUMERIC',\n0x012A: 'PASTE.TOOL',\n0x012E: 'WORKBOOK.NEW',\n0x0131: 'SCENARIO.CELLS',\n0x0132: 'SCENARIO.DELETE',\n0x0133: 'SCENARIO.ADD',\n0x0134: 'SCENARIO.EDIT',\n0x0135: 'SCENARIO.SHOW',\n0x0136: 'SCENARIO.SHOW.NEXT',\n0x0137: 'SCENARIO.SUMMARY',\n0x0138: 'PIVOT.TABLE.WIZARD',\n0x0139: 'PIVOT.FIELD.PROPERTIES',\n0x013A: 'PIVOT.FIELD',\n0x013B: 'PIVOT.ITEM',\n0x013C: 'PIVOT.ADD.FIELDS',\n0x013E: 'OPTIONS.CALCULATION',\n0x013F: 'OPTIONS.EDIT',\n0x0140: 'OPTIONS.VIEW',\n0x0141: 'ADDIN.MANAGER',\n0x0142: 'MENU.EDITOR',\n0x0143: 'ATTACH.TOOLBARS',\n0x0144: 'VBAActivate',\n0x0145: 'OPTIONS.CHART',\n0x0148: 'VBA.INSERT.FILE',\n0x014A: 'VBA.PROCEDURE.DEFINITION',\n0x0150: 'ROUTING.SLIP',\n0x0152: 'ROUTE.DOCUMENT',\n0x0153: 'MAIL.LOGON',\n0x0156: 'INSERT.PICTURE',\n0x0157: 'EDIT.TOOL',\n0x0158: 'GALLERY.DOUGHNUT',\n0x015E: 'CHART.TREND',\n0x0160: 'PIVOT.ITEM.PROPERTIES',\n0x0162: 'WORKBOOK.INSERT',\n0x0163: 'OPTIONS.TRANSITION',\n0x0164: 'OPTIONS.GENERAL',\n0x0172: 'FILTER.ADVANCED',\n0x0175: 'MAIL.ADD.MAILER',\n0x0176: 'MAIL.DELETE.MAILER',\n0x0177: 'MAIL.REPLY',\n0x0178: 'MAIL.REPLY.ALL',\n0x0179: 'MAIL.FORWARD',\n0x017A: 'MAIL.NEXT.LETTER',\n0x017B: 'DATA.LABEL',\n0x017C: 'INSERT.TITLE',\n0x017D: 'FONT.PROPERTIES',\n0x017E: 'MACRO.OPTIONS',\n0x017F: 'WORKBOOK.HIDE',\n0x0180: 'WORKBOOK.UNHIDE',\n0x0181: 'WORKBOOK.DELETE',\n0x0182: 'WORKBOOK.NAME',\n0x0184: 'GALLERY.CUSTOM',\n0x0186: 'ADD.CHART.AUTOFORMAT',\n0x0187: 'DELETE.CHART.AUTOFORMAT',\n0x0188: 'CHART.ADD.DATA',\n0x0189: 'AUTO.OUTLINE',\n0x018A: 'TAB.ORDER',\n0x018B: 'SHOW.DIALOG',\n0x018C: 'SELECT.ALL',\n0x018D: 'UNGROUP.SHEETS',\n0x018E: 'SUBTOTAL.CREATE',\n0x018F: 'SUBTOTAL.REMOVE',\n0x0190: 'RENAME.OBJECT',\n0x019C: 'WORKBOOK.SCROLL',\n0x019D: 'WORKBOOK.NEXT',\n0x019E: 'WORKBOOK.PREV',\n0x019F: 'WORKBOOK.TAB.SPLIT',\n0x01A0: 'FULL.SCREEN',\n0x01A1: 'WORKBOOK.PROTECT',\n0x01A4: 'SCROLLBAR.PROPERTIES',\n0x01A5: 'PIVOT.SHOW.PAGES',\n0x01A6: 'TEXT.TO.COLUMNS',\n0x01A7: 'FORMAT.CHARTTYPE',\n0x01A8: 'LINK.FORMAT',\n0x01A9: 'TRACER.DISPLAY',\n0x01AE: 'TRACER.NAVIGATE',\n0x01AF: 'TRACER.CLEAR',\n0x01B0: 'TRACER.ERROR',\n0x01B1: 'PIVOT.FIELD.GROUP',\n0x01B2: 'PIVOT.FIELD.UNGROUP',\n0x01B3: 'CHECKBOX.PROPERTIES',\n0x01B4: 'LABEL.PROPERTIES',\n0x01B5: 'LISTBOX.PROPERTIES',\n0x01B6: 'EDITBOX.PROPERTIES',\n0x01B7: 'PIVOT.REFRESH',\n0x01B8: 'LINK.COMBO',\n0x01B9: 'OPEN.TEXT',\n0x01BA: 'HIDE.DIALOG',\n0x01BB: 'SET.DIALOG.FOCUS',\n0x01BC: 'ENABLE.OBJECT',\n0x01BD: 'PUSHBUTTON.PROPERTIES',\n0x01BE: 'SET.DIALOG.DEFAULT',\n0x01BF: 'FILTER',\n0x01C0: 'FILTER.SHOW.ALL',\n0x01C1: 'CLEAR.OUTLINE',\n0x01C2: 'FUNCTION.WIZARD',\n0x01C3: 'ADD.LIST.ITEM',\n0x01C4: 'SET.LIST.ITEM',\n0x01C5: 'REMOVE.LIST.ITEM',\n0x01C6: 'SELECT.LIST.ITEM',\n0x01C7: 'SET.CONTROL.VALUE',\n0x01C8: 'SAVE.COPY.AS',\n0x01CA: 'OPTIONS.LISTS.ADD',\n0x01CB: 'OPTIONS.LISTS.DELETE',\n0x01CC: 'SERIES.AXES',\n0x01CD: 'SERIES.X',\n0x01CE: 'SERIES.Y',\n0x01CF: 'ERRORBAR.X',\n0x01D0: 'ERRORBAR.Y',\n0x01D1: 'FORMAT.CHART',\n0x01D2: 'SERIES.ORDER',\n0x01D3: 'MAIL.LOGOFF',\n0x01D4: 'CLEAR.ROUTING.SLIP',\n0x01D5: 'APP.ACTIVATE.MICROSOFT',\n0x01D6: 'MAIL.EDIT.MAILER',\n0x01D7: 'ON.SHEET',\n0x01D8: 'STANDARD.WIDTH',\n0x01D9: 'SCENARIO.MERGE',\n0x01DA: 'SUMMARY.INFO',\n0x01DB: 'FIND.FILE',\n0x01DC: 'ACTIVE.CELL.FONT',\n0x01DD: 'ENABLE.TIPWIZARD',\n0x01DE: 'VBA.MAKE.ADDIN',\n0x01E0: 'INSERTDATATABLE',\n0x01E1: 'WORKGROUP.OPTIONS',\n0x01E2: 'MAIL.SEND.MAILER',\n0x01E5: 'AUTOCORRECT',\n0x01E9: 'POST.DOCUMENT',\n0x01EB: 'PICKLIST',\n0x01ED: 'VIEW.SHOW',\n0x01EE: 'VIEW.DEFINE',\n0x01EF: 'VIEW.DELETE',\n0x01FD: 'SHEET.BACKGROUND',\n0x01FE: 'INSERT.MAP.OBJECT',\n0x01FF: 'OPTIONS.MENONO',\n0x0205: 'MSOCHECKS',\n0x0206: 'NORMAL',\n0x0207: 'LAYOUT',\n0x0208: 'RM.PRINT.AREA',\n0x0209: 'CLEAR.PRINT.AREA',\n0x020A: 'ADD.PRINT.AREA',\n0x020B: 'MOVE.BRK',\n0x0221: 'HIDECURR.NOTE',\n0x0222: 'HIDEALL.NOTES',\n0x0223: 'DELETE.NOTE',\n0x0224: 'TRAVERSE.NOTES',\n0x0225: 'ACTIVATE.NOTES',\n0x026C: 'PROTECT.REVISIONS',\n0x026D: 'UNPROTECT.REVISIONS',\n0x0287: 'OPTIONS.ME',\n0x028D: 'WEB.PUBLISH',\n0x029B: 'NEWWEBQUERY',\n0x02A1: 'PIVOT.TABLE.CHART',\n0x02F1: 'OPTIONS.SAVE',\n0x02F3: 'OPTIONS.SPELL',\n0x0328: 'HIDEALL.INKANNOTS'\n};\n\n/* [MS-XLS] 2.5.198.17 */\n/* [MS-XLSB] 2.5.97.10 */\nvar Ftab = {\n0x0000: 'COUNT',\n0x0001: 'IF',\n0x0002: 'ISNA',\n0x0003: 'ISERROR',\n0x0004: 'SUM',\n0x0005: 'AVERAGE',\n0x0006: 'MIN',\n0x0007: 'MAX',\n0x0008: 'ROW',\n0x0009: 'COLUMN',\n0x000A: 'NA',\n0x000B: 'NPV',\n0x000C: 'STDEV',\n0x000D: 'DOLLAR',\n0x000E: 'FIXED',\n0x000F: 'SIN',\n0x0010: 'COS',\n0x0011: 'TAN',\n0x0012: 'ATAN',\n0x0013: 'PI',\n0x0014: 'SQRT',\n0x0015: 'EXP',\n0x0016: 'LN',\n0x0017: 'LOG10',\n0x0018: 'ABS',\n0x0019: 'INT',\n0x001A: 'SIGN',\n0x001B: 'ROUND',\n0x001C: 'LOOKUP',\n0x001D: 'INDEX',\n0x001E: 'REPT',\n0x001F: 'MID',\n0x0020: 'LEN',\n0x0021: 'VALUE',\n0x0022: 'TRUE',\n0x0023: 'FALSE',\n0x0024: 'AND',\n0x0025: 'OR',\n0x0026: 'NOT',\n0x0027: 'MOD',\n0x0028: 'DCOUNT',\n0x0029: 'DSUM',\n0x002A: 'DAVERAGE',\n0x002B: 'DMIN',\n0x002C: 'DMAX',\n0x002D: 'DSTDEV',\n0x002E: 'VAR',\n0x002F: 'DVAR',\n0x0030: 'TEXT',\n0x0031: 'LINEST',\n0x0032: 'TREND',\n0x0033: 'LOGEST',\n0x0034: 'GROWTH',\n0x0035: 'GOTO',\n0x0036: 'HALT',\n0x0037: 'RETURN',\n0x0038: 'PV',\n0x0039: 'FV',\n0x003A: 'NPER',\n0x003B: 'PMT',\n0x003C: 'RATE',\n0x003D: 'MIRR',\n0x003E: 'IRR',\n0x003F: 'RAND',\n0x0040: 'MATCH',\n0x0041: 'DATE',\n0x0042: 'TIME',\n0x0043: 'DAY',\n0x0044: 'MONTH',\n0x0045: 'YEAR',\n0x0046: 'WEEKDAY',\n0x0047: 'HOUR',\n0x0048: 'MINUTE',\n0x0049: 'SECOND',\n0x004A: 'NOW',\n0x004B: 'AREAS',\n0x004C: 'ROWS',\n0x004D: 'COLUMNS',\n0x004E: 'OFFSET',\n0x004F: 'ABSREF',\n0x0050: 'RELREF',\n0x0051: 'ARGUMENT',\n0x0052: 'SEARCH',\n0x0053: 'TRANSPOSE',\n0x0054: 'ERROR',\n0x0055: 'STEP',\n0x0056: 'TYPE',\n0x0057: 'ECHO',\n0x0058: 'SET.NAME',\n0x0059: 'CALLER',\n0x005A: 'DEREF',\n0x005B: 'WINDOWS',\n0x005C: 'SERIES',\n0x005D: 'DOCUMENTS',\n0x005E: 'ACTIVE.CELL',\n0x005F: 'SELECTION',\n0x0060: 'RESULT',\n0x0061: 'ATAN2',\n0x0062: 'ASIN',\n0x0063: 'ACOS',\n0x0064: 'CHOOSE',\n0x0065: 'HLOOKUP',\n0x0066: 'VLOOKUP',\n0x0067: 'LINKS',\n0x0068: 'INPUT',\n0x0069: 'ISREF',\n0x006A: 'GET.FORMULA',\n0x006B: 'GET.NAME',\n0x006C: 'SET.VALUE',\n0x006D: 'LOG',\n0x006E: 'EXEC',\n0x006F: 'CHAR',\n0x0070: 'LOWER',\n0x0071: 'UPPER',\n0x0072: 'PROPER',\n0x0073: 'LEFT',\n0x0074: 'RIGHT',\n0x0075: 'EXACT',\n0x0076: 'TRIM',\n0x0077: 'REPLACE',\n0x0078: 'SUBSTITUTE',\n0x0079: 'CODE',\n0x007A: 'NAMES',\n0x007B: 'DIRECTORY',\n0x007C: 'FIND',\n0x007D: 'CELL',\n0x007E: 'ISERR',\n0x007F: 'ISTEXT',\n0x0080: 'ISNUMBER',\n0x0081: 'ISBLANK',\n0x0082: 'T',\n0x0083: 'N',\n0x0084: 'FOPEN',\n0x0085: 'FCLOSE',\n0x0086: 'FSIZE',\n0x0087: 'FREADLN',\n0x0088: 'FREAD',\n0x0089: 'FWRITELN',\n0x008A: 'FWRITE',\n0x008B: 'FPOS',\n0x008C: 'DATEVALUE',\n0x008D: 'TIMEVALUE',\n0x008E: 'SLN',\n0x008F: 'SYD',\n0x0090: 'DDB',\n0x0091: 'GET.DEF',\n0x0092: 'REFTEXT',\n0x0093: 'TEXTREF',\n0x0094: 'INDIRECT',\n0x0095: 'REGISTER',\n0x0096: 'CALL',\n0x0097: 'ADD.BAR',\n0x0098: 'ADD.MENU',\n0x0099: 'ADD.COMMAND',\n0x009A: 'ENABLE.COMMAND',\n0x009B: 'CHECK.COMMAND',\n0x009C: 'RENAME.COMMAND',\n0x009D: 'SHOW.BAR',\n0x009E: 'DELETE.MENU',\n0x009F: 'DELETE.COMMAND',\n0x00A0: 'GET.CHART.ITEM',\n0x00A1: 'DIALOG.BOX',\n0x00A2: 'CLEAN',\n0x00A3: 'MDETERM',\n0x00A4: 'MINVERSE',\n0x00A5: 'MMULT',\n0x00A6: 'FILES',\n0x00A7: 'IPMT',\n0x00A8: 'PPMT',\n0x00A9: 'COUNTA',\n0x00AA: 'CANCEL.KEY',\n0x00AB: 'FOR',\n0x00AC: 'WHILE',\n0x00AD: 'BREAK',\n0x00AE: 'NEXT',\n0x00AF: 'INITIATE',\n0x00B0: 'REQUEST',\n0x00B1: 'POKE',\n0x00B2: 'EXECUTE',\n0x00B3: 'TERMINATE',\n0x00B4: 'RESTART',\n0x00B5: 'HELP',\n0x00B6: 'GET.BAR',\n0x00B7: 'PRODUCT',\n0x00B8: 'FACT',\n0x00B9: 'GET.CELL',\n0x00BA: 'GET.WORKSPACE',\n0x00BB: 'GET.WINDOW',\n0x00BC: 'GET.DOCUMENT',\n0x00BD: 'DPRODUCT',\n0x00BE: 'ISNONTEXT',\n0x00BF: 'GET.NOTE',\n0x00C0: 'NOTE',\n0x00C1: 'STDEVP',\n0x00C2: 'VARP',\n0x00C3: 'DSTDEVP',\n0x00C4: 'DVARP',\n0x00C5: 'TRUNC',\n0x00C6: 'ISLOGICAL',\n0x00C7: 'DCOUNTA',\n0x00C8: 'DELETE.BAR',\n0x00C9: 'UNREGISTER',\n0x00CC: 'USDOLLAR',\n0x00CD: 'FINDB',\n0x00CE: 'SEARCHB',\n0x00CF: 'REPLACEB',\n0x00D0: 'LEFTB',\n0x00D1: 'RIGHTB',\n0x00D2: 'MIDB',\n0x00D3: 'LENB',\n0x00D4: 'ROUNDUP',\n0x00D5: 'ROUNDDOWN',\n0x00D6: 'ASC',\n0x00D7: 'DBCS',\n0x00D8: 'RANK',\n0x00DB: 'ADDRESS',\n0x00DC: 'DAYS360',\n0x00DD: 'TODAY',\n0x00DE: 'VDB',\n0x00DF: 'ELSE',\n0x00E0: 'ELSE.IF',\n0x00E1: 'END.IF',\n0x00E2: 'FOR.CELL',\n0x00E3: 'MEDIAN',\n0x00E4: 'SUMPRODUCT',\n0x00E5: 'SINH',\n0x00E6: 'COSH',\n0x00E7: 'TANH',\n0x00E8: 'ASINH',\n0x00E9: 'ACOSH',\n0x00EA: 'ATANH',\n0x00EB: 'DGET',\n0x00EC: 'CREATE.OBJECT',\n0x00ED: 'VOLATILE',\n0x00EE: 'LAST.ERROR',\n0x00EF: 'CUSTOM.UNDO',\n0x00F0: 'CUSTOM.REPEAT',\n0x00F1: 'FORMULA.CONVERT',\n0x00F2: 'GET.LINK.INFO',\n0x00F3: 'TEXT.BOX',\n0x00F4: 'INFO',\n0x00F5: 'GROUP',\n0x00F6: 'GET.OBJECT',\n0x00F7: 'DB',\n0x00F8: 'PAUSE',\n0x00FB: 'RESUME',\n0x00FC: 'FREQUENCY',\n0x00FD: 'ADD.TOOLBAR',\n0x00FE: 'DELETE.TOOLBAR',\n0x00FF: 'User',\n0x0100: 'RESET.TOOLBAR',\n0x0101: 'EVALUATE',\n0x0102: 'GET.TOOLBAR',\n0x0103: 'GET.TOOL',\n0x0104: 'SPELLING.CHECK',\n0x0105: 'ERROR.TYPE',\n0x0106: 'APP.TITLE',\n0x0107: 'WINDOW.TITLE',\n0x0108: 'SAVE.TOOLBAR',\n0x0109: 'ENABLE.TOOL',\n0x010A: 'PRESS.TOOL',\n0x010B: 'REGISTER.ID',\n0x010C: 'GET.WORKBOOK',\n0x010D: 'AVEDEV',\n0x010E: 'BETADIST',\n0x010F: 'GAMMALN',\n0x0110: 'BETAINV',\n0x0111: 'BINOMDIST',\n0x0112: 'CHIDIST',\n0x0113: 'CHIINV',\n0x0114: 'COMBIN',\n0x0115: 'CONFIDENCE',\n0x0116: 'CRITBINOM',\n0x0117: 'EVEN',\n0x0118: 'EXPONDIST',\n0x0119: 'FDIST',\n0x011A: 'FINV',\n0x011B: 'FISHER',\n0x011C: 'FISHERINV',\n0x011D: 'FLOOR',\n0x011E: 'GAMMADIST',\n0x011F: 'GAMMAINV',\n0x0120: 'CEILING',\n0x0121: 'HYPGEOMDIST',\n0x0122: 'LOGNORMDIST',\n0x0123: 'LOGINV',\n0x0124: 'NEGBINOMDIST',\n0x0125: 'NORMDIST',\n0x0126: 'NORMSDIST',\n0x0127: 'NORMINV',\n0x0128: 'NORMSINV',\n0x0129: 'STANDARDIZE',\n0x012A: 'ODD',\n0x012B: 'PERMUT',\n0x012C: 'POISSON',\n0x012D: 'TDIST',\n0x012E: 'WEIBULL',\n0x012F: 'SUMXMY2',\n0x0130: 'SUMX2MY2',\n0x0131: 'SUMX2PY2',\n0x0132: 'CHITEST',\n0x0133: 'CORREL',\n0x0134: 'COVAR',\n0x0135: 'FORECAST',\n0x0136: 'FTEST',\n0x0137: 'INTERCEPT',\n0x0138: 'PEARSON',\n0x0139: 'RSQ',\n0x013A: 'STEYX',\n0x013B: 'SLOPE',\n0x013C: 'TTEST',\n0x013D: 'PROB',\n0x013E: 'DEVSQ',\n0x013F: 'GEOMEAN',\n0x0140: 'HARMEAN',\n0x0141: 'SUMSQ',\n0x0142: 'KURT',\n0x0143: 'SKEW',\n0x0144: 'ZTEST',\n0x0145: 'LARGE',\n0x0146: 'SMALL',\n0x0147: 'QUARTILE',\n0x0148: 'PERCENTILE',\n0x0149: 'PERCENTRANK',\n0x014A: 'MODE',\n0x014B: 'TRIMMEAN',\n0x014C: 'TINV',\n0x014E: 'MOVIE.COMMAND',\n0x014F: 'GET.MOVIE',\n0x0150: 'CONCATENATE',\n0x0151: 'POWER',\n0x0152: 'PIVOT.ADD.DATA',\n0x0153: 'GET.PIVOT.TABLE',\n0x0154: 'GET.PIVOT.FIELD',\n0x0155: 'GET.PIVOT.ITEM',\n0x0156: 'RADIANS',\n0x0157: 'DEGREES',\n0x0158: 'SUBTOTAL',\n0x0159: 'SUMIF',\n0x015A: 'COUNTIF',\n0x015B: 'COUNTBLANK',\n0x015C: 'SCENARIO.GET',\n0x015D: 'OPTIONS.LISTS.GET',\n0x015E: 'ISPMT',\n0x015F: 'DATEDIF',\n0x0160: 'DATESTRING',\n0x0161: 'NUMBERSTRING',\n0x0162: 'ROMAN',\n0x0163: 'OPEN.DIALOG',\n0x0164: 'SAVE.DIALOG',\n0x0165: 'VIEW.GET',\n0x0166: 'GETPIVOTDATA',\n0x0167: 'HYPERLINK',\n0x0168: 'PHONETIC',\n0x0169: 'AVERAGEA',\n0x016A: 'MAXA',\n0x016B: 'MINA',\n0x016C: 'STDEVPA',\n0x016D: 'VARPA',\n0x016E: 'STDEVA',\n0x016F: 'VARA',\n0x0170: 'BAHTTEXT',\n0x0171: 'THAIDAYOFWEEK',\n0x0172: 'THAIDIGIT',\n0x0173: 'THAIMONTHOFYEAR',\n0x0174: 'THAINUMSOUND',\n0x0175: 'THAINUMSTRING',\n0x0176: 'THAISTRINGLENGTH',\n0x0177: 'ISTHAIDIGIT',\n0x0178: 'ROUNDBAHTDOWN',\n0x0179: 'ROUNDBAHTUP',\n0x017A: 'THAIYEAR',\n0x017B: 'RTD',\n\n0x017C: 'CUBEVALUE',\n0x017D: 'CUBEMEMBER',\n0x017E: 'CUBEMEMBERPROPERTY',\n0x017F: 'CUBERANKEDMEMBER',\n0x0180: 'HEX2BIN',\n0x0181: 'HEX2DEC',\n0x0182: 'HEX2OCT',\n0x0183: 'DEC2BIN',\n0x0184: 'DEC2HEX',\n0x0185: 'DEC2OCT',\n0x0186: 'OCT2BIN',\n0x0187: 'OCT2HEX',\n0x0188: 'OCT2DEC',\n0x0189: 'BIN2DEC',\n0x018A: 'BIN2OCT',\n0x018B: 'BIN2HEX',\n0x018C: 'IMSUB',\n0x018D: 'IMDIV',\n0x018E: 'IMPOWER',\n0x018F: 'IMABS',\n0x0190: 'IMSQRT',\n0x0191: 'IMLN',\n0x0192: 'IMLOG2',\n0x0193: 'IMLOG10',\n0x0194: 'IMSIN',\n0x0195: 'IMCOS',\n0x0196: 'IMEXP',\n0x0197: 'IMARGUMENT',\n0x0198: 'IMCONJUGATE',\n0x0199: 'IMAGINARY',\n0x019A: 'IMREAL',\n0x019B: 'COMPLEX',\n0x019C: 'IMSUM',\n0x019D: 'IMPRODUCT',\n0x019E: 'SERIESSUM',\n0x019F: 'FACTDOUBLE',\n0x01A0: 'SQRTPI',\n0x01A1: 'QUOTIENT',\n0x01A2: 'DELTA',\n0x01A3: 'GESTEP',\n0x01A4: 'ISEVEN',\n0x01A5: 'ISODD',\n0x01A6: 'MROUND',\n0x01A7: 'ERF',\n0x01A8: 'ERFC',\n0x01A9: 'BESSELJ',\n0x01AA: 'BESSELK',\n0x01AB: 'BESSELY',\n0x01AC: 'BESSELI',\n0x01AD: 'XIRR',\n0x01AE: 'XNPV',\n0x01AF: 'PRICEMAT',\n0x01B0: 'YIELDMAT',\n0x01B1: 'INTRATE',\n0x01B2: 'RECEIVED',\n0x01B3: 'DISC',\n0x01B4: 'PRICEDISC',\n0x01B5: 'YIELDDISC',\n0x01B6: 'TBILLEQ',\n0x01B7: 'TBILLPRICE',\n0x01B8: 'TBILLYIELD',\n0x01B9: 'PRICE',\n0x01BA: 'YIELD',\n0x01BB: 'DOLLARDE',\n0x01BC: 'DOLLARFR',\n0x01BD: 'NOMINAL',\n0x01BE: 'EFFECT',\n0x01BF: 'CUMPRINC',\n0x01C0: 'CUMIPMT',\n0x01C1: 'EDATE',\n0x01C2: 'EOMONTH',\n0x01C3: 'YEARFRAC',\n0x01C4: 'COUPDAYBS',\n0x01C5: 'COUPDAYS',\n0x01C6: 'COUPDAYSNC',\n0x01C7: 'COUPNCD',\n0x01C8: 'COUPNUM',\n0x01C9: 'COUPPCD',\n0x01CA: 'DURATION',\n0x01CB: 'MDURATION',\n0x01CC: 'ODDLPRICE',\n0x01CD: 'ODDLYIELD',\n0x01CE: 'ODDFPRICE',\n0x01CF: 'ODDFYIELD',\n0x01D0: 'RANDBETWEEN',\n0x01D1: 'WEEKNUM',\n0x01D2: 'AMORDEGRC',\n0x01D3: 'AMORLINC',\n0x01D4: 'CONVERT',\n0x02D4: 'SHEETJS',\n0x01D5: 'ACCRINT',\n0x01D6: 'ACCRINTM',\n0x01D7: 'WORKDAY',\n0x01D8: 'NETWORKDAYS',\n0x01D9: 'GCD',\n0x01DA: 'MULTINOMIAL',\n0x01DB: 'LCM',\n0x01DC: 'FVSCHEDULE',\n0x01DD: 'CUBEKPIMEMBER',\n0x01DE: 'CUBESET',\n0x01DF: 'CUBESETCOUNT',\n0x01E0: 'IFERROR',\n0x01E1: 'COUNTIFS',\n0x01E2: 'SUMIFS',\n0x01E3: 'AVERAGEIF',\n0x01E4: 'AVERAGEIFS'\n};\nvar FtabArgc = {\n0x0002: 1, /* ISNA */\n0x0003: 1, /* ISERROR */\n0x000A: 0, /* NA */\n0x000F: 1, /* SIN */\n0x0010: 1, /* COS */\n0x0011: 1, /* TAN */\n0x0012: 1, /* ATAN */\n0x0013: 0, /* PI */\n0x0014: 1, /* SQRT */\n0x0015: 1, /* EXP */\n0x0016: 1, /* LN */\n0x0017: 1, /* LOG10 */\n0x0018: 1, /* ABS */\n0x0019: 1, /* INT */\n0x001A: 1, /* SIGN */\n0x001B: 2, /* ROUND */\n0x001E: 2, /* REPT */\n0x001F: 3, /* MID */\n0x0020: 1, /* LEN */\n0x0021: 1, /* VALUE */\n0x0022: 0, /* TRUE */\n0x0023: 0, /* FALSE */\n0x0026: 1, /* NOT */\n0x0027: 2, /* MOD */\n0x0028: 3, /* DCOUNT */\n0x0029: 3, /* DSUM */\n0x002A: 3, /* DAVERAGE */\n0x002B: 3, /* DMIN */\n0x002C: 3, /* DMAX */\n0x002D: 3, /* DSTDEV */\n0x002F: 3, /* DVAR */\n0x0030: 2, /* TEXT */\n0x0035: 1, /* GOTO */\n0x003D: 3, /* MIRR */\n0x003F: 0, /* RAND */\n0x0041: 3, /* DATE */\n0x0042: 3, /* TIME */\n0x0043: 1, /* DAY */\n0x0044: 1, /* MONTH */\n0x0045: 1, /* YEAR */\n0x0046: 1, /* WEEKDAY */\n0x0047: 1, /* HOUR */\n0x0048: 1, /* MINUTE */\n0x0049: 1, /* SECOND */\n0x004A: 0, /* NOW */\n0x004B: 1, /* AREAS */\n0x004C: 1, /* ROWS */\n0x004D: 1, /* COLUMNS */\n0x004F: 2, /* ABSREF */\n0x0050: 2, /* RELREF */\n0x0053: 1, /* TRANSPOSE */\n0x0055: 0, /* STEP */\n0x0056: 1, /* TYPE */\n0x0059: 0, /* CALLER */\n0x005A: 1, /* DEREF */\n0x005E: 0, /* ACTIVE.CELL */\n0x005F: 0, /* SELECTION */\n0x0061: 2, /* ATAN2 */\n0x0062: 1, /* ASIN */\n0x0063: 1, /* ACOS */\n0x0065: 3, /* HLOOKUP */\n0x0066: 3, /* VLOOKUP */\n0x0069: 1, /* ISREF */\n0x006A: 1, /* GET.FORMULA */\n0x006C: 2, /* SET.VALUE */\n0x006F: 1, /* CHAR */\n0x0070: 1, /* LOWER */\n0x0071: 1, /* UPPER */\n0x0072: 1, /* PROPER */\n0x0075: 2, /* EXACT */\n0x0076: 1, /* TRIM */\n0x0077: 4, /* REPLACE */\n0x0079: 1, /* CODE */\n0x007E: 1, /* ISERR */\n0x007F: 1, /* ISTEXT */\n0x0080: 1, /* ISNUMBER */\n0x0081: 1, /* ISBLANK */\n0x0082: 1, /* T */\n0x0083: 1, /* N */\n0x0085: 1, /* FCLOSE */\n0x0086: 1, /* FSIZE */\n0x0087: 1, /* FREADLN */\n0x0088: 2, /* FREAD */\n0x0089: 2, /* FWRITELN */\n0x008A: 2, /* FWRITE */\n0x008C: 1, /* DATEVALUE */\n0x008D: 1, /* TIMEVALUE */\n0x008E: 3, /* SLN */\n0x008F: 4, /* SYD */\n0x0090: 4, /* DDB */\n0x00A1: 1, /* DIALOG.BOX */\n0x00A2: 1, /* CLEAN */\n0x00A3: 1, /* MDETERM */\n0x00A4: 1, /* MINVERSE */\n0x00A5: 2, /* MMULT */\n0x00AC: 1, /* WHILE */\n0x00AF: 2, /* INITIATE */\n0x00B0: 2, /* REQUEST */\n0x00B1: 3, /* POKE */\n0x00B2: 2, /* EXECUTE */\n0x00B3: 1, /* TERMINATE */\n0x00B8: 1, /* FACT */\n0x00BA: 1, /* GET.WORKSPACE */\n0x00BD: 3, /* DPRODUCT */\n0x00BE: 1, /* ISNONTEXT */\n0x00C3: 3, /* DSTDEVP */\n0x00C4: 3, /* DVARP */\n0x00C5: 1, /* TRUNC */\n0x00C6: 1, /* ISLOGICAL */\n0x00C7: 3, /* DCOUNTA */\n0x00C9: 1, /* UNREGISTER */\n0x00CF: 4, /* REPLACEB */\n0x00D2: 3, /* MIDB */\n0x00D3: 1, /* LENB */\n0x00D4: 2, /* ROUNDUP */\n0x00D5: 2, /* ROUNDDOWN */\n0x00D6: 1, /* ASC */\n0x00D7: 1, /* DBCS */\n0x00E1: 0, /* END.IF */\n0x00E5: 1, /* SINH */\n0x00E6: 1, /* COSH */\n0x00E7: 1, /* TANH */\n0x00E8: 1, /* ASINH */\n0x00E9: 1, /* ACOSH */\n0x00EA: 1, /* ATANH */\n0x00EB: 3, /* DGET */\n0x00F4: 1, /* INFO */\n0x00F7: 4, /* DB */\n0x00FC: 2, /* FREQUENCY */\n0x0101: 1, /* EVALUATE */\n0x0105: 1, /* ERROR.TYPE */\n0x010F: 1, /* GAMMALN */\n0x0111: 4, /* BINOMDIST */\n0x0112: 2, /* CHIDIST */\n0x0113: 2, /* CHIINV */\n0x0114: 2, /* COMBIN */\n0x0115: 3, /* CONFIDENCE */\n0x0116: 3, /* CRITBINOM */\n0x0117: 1, /* EVEN */\n0x0118: 3, /* EXPONDIST */\n0x0119: 3, /* FDIST */\n0x011A: 3, /* FINV */\n0x011B: 1, /* FISHER */\n0x011C: 1, /* FISHERINV */\n0x011D: 2, /* FLOOR */\n0x011E: 4, /* GAMMADIST */\n0x011F: 3, /* GAMMAINV */\n0x0120: 2, /* CEILING */\n0x0121: 4, /* HYPGEOMDIST */\n0x0122: 3, /* LOGNORMDIST */\n0x0123: 3, /* LOGINV */\n0x0124: 3, /* NEGBINOMDIST */\n0x0125: 4, /* NORMDIST */\n0x0126: 1, /* NORMSDIST */\n0x0127: 3, /* NORMINV */\n0x0128: 1, /* NORMSINV */\n0x0129: 3, /* STANDARDIZE */\n0x012A: 1, /* ODD */\n0x012B: 2, /* PERMUT */\n0x012C: 3, /* POISSON */\n0x012D: 3, /* TDIST */\n0x012E: 4, /* WEIBULL */\n0x012F: 2, /* SUMXMY2 */\n0x0130: 2, /* SUMX2MY2 */\n0x0131: 2, /* SUMX2PY2 */\n0x0132: 2, /* CHITEST */\n0x0133: 2, /* CORREL */\n0x0134: 2, /* COVAR */\n0x0135: 3, /* FORECAST */\n0x0136: 2, /* FTEST */\n0x0137: 2, /* INTERCEPT */\n0x0138: 2, /* PEARSON */\n0x0139: 2, /* RSQ */\n0x013A: 2, /* STEYX */\n0x013B: 2, /* SLOPE */\n0x013C: 4, /* TTEST */\n0x0145: 2, /* LARGE */\n0x0146: 2, /* SMALL */\n0x0147: 2, /* QUARTILE */\n0x0148: 2, /* PERCENTILE */\n0x014B: 2, /* TRIMMEAN */\n0x014C: 2, /* TINV */\n0x0151: 2, /* POWER */\n0x0156: 1, /* RADIANS */\n0x0157: 1, /* DEGREES */\n0x015A: 2, /* COUNTIF */\n0x015B: 1, /* COUNTBLANK */\n0x015E: 4, /* ISPMT */\n0x015F: 3, /* DATEDIF */\n0x0160: 1, /* DATESTRING */\n0x0161: 2, /* NUMBERSTRING */\n0x0168: 1, /* PHONETIC */\n0x0170: 1, /* BAHTTEXT */\n0x0171: 1, /* THAIDAYOFWEEK */\n0x0172: 1, /* THAIDIGIT */\n0x0173: 1, /* THAIMONTHOFYEAR */\n0x0174: 1, /* THAINUMSOUND */\n0x0175: 1, /* THAINUMSTRING */\n0x0176: 1, /* THAISTRINGLENGTH */\n0x0177: 1, /* ISTHAIDIGIT */\n0x0178: 1, /* ROUNDBAHTDOWN */\n0x0179: 1, /* ROUNDBAHTUP */\n0x017A: 1, /* THAIYEAR */\n0x017E: 3, /* CUBEMEMBERPROPERTY */\n0x0181: 1, /* HEX2DEC */\n0x0188: 1, /* OCT2DEC */\n0x0189: 1, /* BIN2DEC */\n0x018C: 2, /* IMSUB */\n0x018D: 2, /* IMDIV */\n0x018E: 2, /* IMPOWER */\n0x018F: 1, /* IMABS */\n0x0190: 1, /* IMSQRT */\n0x0191: 1, /* IMLN */\n0x0192: 1, /* IMLOG2 */\n0x0193: 1, /* IMLOG10 */\n0x0194: 1, /* IMSIN */\n0x0195: 1, /* IMCOS */\n0x0196: 1, /* IMEXP */\n0x0197: 1, /* IMARGUMENT */\n0x0198: 1, /* IMCONJUGATE */\n0x0199: 1, /* IMAGINARY */\n0x019A: 1, /* IMREAL */\n0x019E: 4, /* SERIESSUM */\n0x019F: 1, /* FACTDOUBLE */\n0x01A0: 1, /* SQRTPI */\n0x01A1: 2, /* QUOTIENT */\n0x01A4: 1, /* ISEVEN */\n0x01A5: 1, /* ISODD */\n0x01A6: 2, /* MROUND */\n0x01A8: 1, /* ERFC */\n0x01A9: 2, /* BESSELJ */\n0x01AA: 2, /* BESSELK */\n0x01AB: 2, /* BESSELY */\n0x01AC: 2, /* BESSELI */\n0x01AE: 3, /* XNPV */\n0x01B6: 3, /* TBILLEQ */\n0x01B7: 3, /* TBILLPRICE */\n0x01B8: 3, /* TBILLYIELD */\n0x01BB: 2, /* DOLLARDE */\n0x01BC: 2, /* DOLLARFR */\n0x01BD: 2, /* NOMINAL */\n0x01BE: 2, /* EFFECT */\n0x01BF: 6, /* CUMPRINC */\n0x01C0: 6, /* CUMIPMT */\n0x01C1: 2, /* EDATE */\n0x01C2: 2, /* EOMONTH */\n0x01D0: 2, /* RANDBETWEEN */\n0x01D4: 3, /* CONVERT */\n0x01DC: 2, /* FVSCHEDULE */\n0x01DF: 1, /* CUBESETCOUNT */\n0x01E0: 2, /* IFERROR */\n0xFFFF: 0\n};\n/* [MS-XLSX] 2.2.3 Functions */\n/* [MS-XLSB] 2.5.97.10 Ftab */\nvar XLSXFutureFunctions = {\n\t\"_xlfn.ACOT\": \"ACOT\",\n\t\"_xlfn.ACOTH\": \"ACOTH\",\n\t\"_xlfn.AGGREGATE\": \"AGGREGATE\",\n\t\"_xlfn.ARABIC\": \"ARABIC\",\n\t\"_xlfn.AVERAGEIF\": \"AVERAGEIF\",\n\t\"_xlfn.AVERAGEIFS\": \"AVERAGEIFS\",\n\t\"_xlfn.BASE\": \"BASE\",\n\t\"_xlfn.BETA.DIST\": \"BETA.DIST\",\n\t\"_xlfn.BETA.INV\": \"BETA.INV\",\n\t\"_xlfn.BINOM.DIST\": \"BINOM.DIST\",\n\t\"_xlfn.BINOM.DIST.RANGE\": \"BINOM.DIST.RANGE\",\n\t\"_xlfn.BINOM.INV\": \"BINOM.INV\",\n\t\"_xlfn.BITAND\": \"BITAND\",\n\t\"_xlfn.BITLSHIFT\": \"BITLSHIFT\",\n\t\"_xlfn.BITOR\": \"BITOR\",\n\t\"_xlfn.BITRSHIFT\": \"BITRSHIFT\",\n\t\"_xlfn.BITXOR\": \"BITXOR\",\n\t\"_xlfn.CEILING.MATH\": \"CEILING.MATH\",\n\t\"_xlfn.CEILING.PRECISE\": \"CEILING.PRECISE\",\n\t\"_xlfn.CHISQ.DIST\": \"CHISQ.DIST\",\n\t\"_xlfn.CHISQ.DIST.RT\": \"CHISQ.DIST.RT\",\n\t\"_xlfn.CHISQ.INV\": \"CHISQ.INV\",\n\t\"_xlfn.CHISQ.INV.RT\": \"CHISQ.INV.RT\",\n\t\"_xlfn.CHISQ.TEST\": \"CHISQ.TEST\",\n\t\"_xlfn.COMBINA\": \"COMBINA\",\n\t\"_xlfn.CONCAT\": \"CONCAT\",\n\t\"_xlfn.CONFIDENCE.NORM\": \"CONFIDENCE.NORM\",\n\t\"_xlfn.CONFIDENCE.T\": \"CONFIDENCE.T\",\n\t\"_xlfn.COT\": \"COT\",\n\t\"_xlfn.COTH\": \"COTH\",\n\t\"_xlfn.COUNTIFS\": \"COUNTIFS\",\n\t\"_xlfn.COVARIANCE.P\": \"COVARIANCE.P\",\n\t\"_xlfn.COVARIANCE.S\": \"COVARIANCE.S\",\n\t\"_xlfn.CSC\": \"CSC\",\n\t\"_xlfn.CSCH\": \"CSCH\",\n\t\"_xlfn.DAYS\": \"DAYS\",\n\t\"_xlfn.DECIMAL\": \"DECIMAL\",\n\t\"_xlfn.ECMA.CEILING\": \"ECMA.CEILING\",\n\t\"_xlfn.ERF.PRECISE\": \"ERF.PRECISE\",\n\t\"_xlfn.ERFC.PRECISE\": \"ERFC.PRECISE\",\n\t\"_xlfn.EXPON.DIST\": \"EXPON.DIST\",\n\t\"_xlfn.F.DIST\": \"F.DIST\",\n\t\"_xlfn.F.DIST.RT\": \"F.DIST.RT\",\n\t\"_xlfn.F.INV\": \"F.INV\",\n\t\"_xlfn.F.INV.RT\": \"F.INV.RT\",\n\t\"_xlfn.F.TEST\": \"F.TEST\",\n\t\"_xlfn.FILTERXML\": \"FILTERXML\",\n\t\"_xlfn.FLOOR.MATH\": \"FLOOR.MATH\",\n\t\"_xlfn.FLOOR.PRECISE\": \"FLOOR.PRECISE\",\n\t\"_xlfn.FORECAST.ETS\": \"FORECAST.ETS\",\n\t\"_xlfn.FORECAST.ETS.CONFINT\": \"FORECAST.ETS.CONFINT\",\n\t\"_xlfn.FORECAST.ETS.SEASONALITY\": \"FORECAST.ETS.SEASONALITY\",\n\t\"_xlfn.FORECAST.ETS.STAT\": \"FORECAST.ETS.STAT\",\n\t\"_xlfn.FORECAST.LINEAR\": \"FORECAST.LINEAR\",\n\t\"_xlfn.FORMULATEXT\": \"FORMULATEXT\",\n\t\"_xlfn.GAMMA\": \"GAMMA\",\n\t\"_xlfn.GAMMA.DIST\": \"GAMMA.DIST\",\n\t\"_xlfn.GAMMA.INV\": \"GAMMA.INV\",\n\t\"_xlfn.GAMMALN.PRECISE\": \"GAMMALN.PRECISE\",\n\t\"_xlfn.GAUSS\": \"GAUSS\",\n\t\"_xlfn.HYPGEOM.DIST\": \"HYPGEOM.DIST\",\n\t\"_xlfn.IFERROR\": \"IFERROR\",\n\t\"_xlfn.IFNA\": \"IFNA\",\n\t\"_xlfn.IFS\": \"IFS\",\n\t\"_xlfn.IMCOSH\": \"IMCOSH\",\n\t\"_xlfn.IMCOT\": \"IMCOT\",\n\t\"_xlfn.IMCSC\": \"IMCSC\",\n\t\"_xlfn.IMCSCH\": \"IMCSCH\",\n\t\"_xlfn.IMSEC\": \"IMSEC\",\n\t\"_xlfn.IMSECH\": \"IMSECH\",\n\t\"_xlfn.IMSINH\": \"IMSINH\",\n\t\"_xlfn.IMTAN\": \"IMTAN\",\n\t\"_xlfn.ISFORMULA\": \"ISFORMULA\",\n\t\"_xlfn.ISO.CEILING\": \"ISO.CEILING\",\n\t\"_xlfn.ISOWEEKNUM\": \"ISOWEEKNUM\",\n\t\"_xlfn.LOGNORM.DIST\": \"LOGNORM.DIST\",\n\t\"_xlfn.LOGNORM.INV\": \"LOGNORM.INV\",\n\t\"_xlfn.MAXIFS\": \"MAXIFS\",\n\t\"_xlfn.MINIFS\": \"MINIFS\",\n\t\"_xlfn.MODE.MULT\": \"MODE.MULT\",\n\t\"_xlfn.MODE.SNGL\": \"MODE.SNGL\",\n\t\"_xlfn.MUNIT\": \"MUNIT\",\n\t\"_xlfn.NEGBINOM.DIST\": \"NEGBINOM.DIST\",\n\t\"_xlfn.NETWORKDAYS.INTL\": \"NETWORKDAYS.INTL\",\n\t\"_xlfn.NIGBINOM\": \"NIGBINOM\",\n\t\"_xlfn.NORM.DIST\": \"NORM.DIST\",\n\t\"_xlfn.NORM.INV\": \"NORM.INV\",\n\t\"_xlfn.NORM.S.DIST\": \"NORM.S.DIST\",\n\t\"_xlfn.NORM.S.INV\": \"NORM.S.INV\",\n\t\"_xlfn.NUMBERVALUE\": \"NUMBERVALUE\",\n\t\"_xlfn.PDURATION\": \"PDURATION\",\n\t\"_xlfn.PERCENTILE.EXC\": \"PERCENTILE.EXC\",\n\t\"_xlfn.PERCENTILE.INC\": \"PERCENTILE.INC\",\n\t\"_xlfn.PERCENTRANK.EXC\": \"PERCENTRANK.EXC\",\n\t\"_xlfn.PERCENTRANK.INC\": \"PERCENTRANK.INC\",\n\t\"_xlfn.PERMUTATIONA\": \"PERMUTATIONA\",\n\t\"_xlfn.PHI\": \"PHI\",\n\t\"_xlfn.POISSON.DIST\": \"POISSON.DIST\",\n\t\"_xlfn.QUARTILE.EXC\": \"QUARTILE.EXC\",\n\t\"_xlfn.QUARTILE.INC\": \"QUARTILE.INC\",\n\t\"_xlfn.QUERYSTRING\": \"QUERYSTRING\",\n\t\"_xlfn.RANK.AVG\": \"RANK.AVG\",\n\t\"_xlfn.RANK.EQ\": \"RANK.EQ\",\n\t\"_xlfn.RRI\": \"RRI\",\n\t\"_xlfn.SEC\": \"SEC\",\n\t\"_xlfn.SECH\": \"SECH\",\n\t\"_xlfn.SHEET\": \"SHEET\",\n\t\"_xlfn.SHEETS\": \"SHEETS\",\n\t\"_xlfn.SKEW.P\": \"SKEW.P\",\n\t\"_xlfn.STDEV.P\": \"STDEV.P\",\n\t\"_xlfn.STDEV.S\": \"STDEV.S\",\n\t\"_xlfn.SUMIFS\": \"SUMIFS\",\n\t\"_xlfn.SWITCH\": \"SWITCH\",\n\t\"_xlfn.T.DIST\": \"T.DIST\",\n\t\"_xlfn.T.DIST.2T\": \"T.DIST.2T\",\n\t\"_xlfn.T.DIST.RT\": \"T.DIST.RT\",\n\t\"_xlfn.T.INV\": \"T.INV\",\n\t\"_xlfn.T.INV.2T\": \"T.INV.2T\",\n\t\"_xlfn.T.TEST\": \"T.TEST\",\n\t\"_xlfn.TEXTJOIN\": \"TEXTJOIN\",\n\t\"_xlfn.UNICHAR\": \"UNICHAR\",\n\t\"_xlfn.UNICODE\": \"UNICODE\",\n\t\"_xlfn.VAR.P\": \"VAR.P\",\n\t\"_xlfn.VAR.S\": \"VAR.S\",\n\t\"_xlfn.WEBSERVICE\": \"WEBSERVICE\",\n\t\"_xlfn.WEIBULL.DIST\": \"WEIBULL.DIST\",\n\t\"_xlfn.WORKDAY.INTL\": \"WORKDAY.INTL\",\n\t\"_xlfn.XOR\": \"XOR\",\n\t\"_xlfn.Z.TEST\": \"Z.TEST\"\n};\n\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f) {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f) {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r) {\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r) {\n\treturn r.replace(/\\./,\"!\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\nRELS.WS = [\n\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n];\n\nfunction get_sst_id(sst, str) {\n\tfor(var i = 0, len = sst.length; i < len; ++i) if(sst[i].t === str) { sst.Count ++; return i; }\n\tsst[len] = {t:str}; sst.Count ++; sst.Unique ++; return len;\n}\n\nfunction col_obj_w(C, col) {\n\tvar p = ({min:C+1,max:C+1});\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\treturn p;\n}\n\nfunction default_margins(margins, mode) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left == null) margins.left = defs[0];\n\tif(margins.right == null) margins.right = defs[1];\n\tif(margins.top == null) margins.top = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles, cell, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF.load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p, fmtid, fillid, opts, themes, styles) {\n\tif(p.t === 'z') return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\ttry {\n\t\tif(opts.cellNF) p.z = SSF._table[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(SSF._table[fmtid] == null) SSF.load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = SSF._general_int(p.v);\n\t\t\t\telse p.w = SSF._general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = SSF._general_int(dd);\n\t\t\t\telse p.w = SSF._general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF._general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF.format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF.format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws, sname, i) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws, s) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr(?:[^>a-z][^>]*)?\\/>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data, opts, idx, rels, wb, themes, styles) {\n\tif(!data) return data;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = opts.dense ? ([]) : ({});\n\tvar refguess = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} });\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\t// $FlowIgnore\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2 autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges) {\n\tif(merges.length === 0) return \"\";\n\tvar o = '';\n\tfor(var i = 0; i != merges.length; ++i) o += '';\n\treturn o + '';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr, s, wb, idx) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = data.codeName;\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nfunction write_ws_xml_protection(sp) {\n\t// algorithmName, hashValue, saltValue, spinCountpassword\n\tvar o = ({sheet:1});\n\tvar deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\n\tvar deftrue = [\n\t\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\t\"deleteColumns\", \"deleteRows\",\n\t\t\"sort\", \"autoFilter\", \"pivotTables\"\n\t];\n\tdeffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tdeftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data, rels) {\n\tvar dense = Array.isArray(s);\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+val.location;\n\t\t} else {\n\t\t\tval.Target = \"#\" + val.location;\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_cell({c:C,r:R});\n\t\t\tif(dense) {\n\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin) {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\n\nfunction write_ws_xml_cols(ws, cols) {\n\tvar o = [\"\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data) {\n\treturn writextag(\"autoFilter\", null, {ref:data.ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/>/;\nfunction parse_ws_xml_sheetviews(data, wb) {\n\t(data.match(sviewregex)||[]).forEach(function(r) {\n\t\tvar tag = parsexmltag(r);\n\t\tif(parsexmlbool(tag.rightToLeft)) {\n\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\twb.Views[0].RTL = true;\n\t\t}\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb) {\n\tvar sview = {workbookViewId:\"0\"};\n\t// $FlowIgnore\n\tif( (((wb||{}).Workbook||{}).Views||[])[0] ) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell, ref, ws, opts) {\n\tif(cell.v === undefined && cell.f === undefined || cell.t === 'z') return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = SSF._table[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = writetag('v', escapexml(vv)), o = ({r:ref});\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\to.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = (function() {\n\tvar cellregex = /<(?:\\w+:)?c[ >]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata, s, opts, guess, themes, styles) {\n\tvar ri = 0, x = \"\", cells = [], cref = [], idx=0, i=0, cc=0, d=\"\", p;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf = [];\n\tvar sharedf = [];\n\tvar dense = Array.isArray(s);\n\tvar rows = [], rowobj = {}, rowrite = false;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tfor(ri = 0; ri < xlen; ++ri) if(x.charCodeAt(ri) === 62) break; ++ri;\n\t\ttag = parsexmltag(x.slice(0,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"});\n\n\t\t\tif((cref=d.match(match_v))!= null && cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=_xlfn(unescapexml(utf8read(cref[1])));\n\t\t\t\t\tif(cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, _xlfn(unescapexml(utf8read(cref[1])))];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][0].ref, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!opts.sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > idx) guess.s.c = idx;\n\t\t\tif(guess.e.c < idx) guess.e.c = idx;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!opts.sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!opts.sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? utf8read(p.v) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) p.v = sstr.t; else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && SSF.is_date(SSF._table[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(dense) {\n\t\t\t\tvar _r = decode_cell(tag.r);\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\n\t\t\t\ts[_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws, opts, idx, wb) {\n\tvar o = [], r = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = Array.isArray(ws);\n\tvar params = ({r:rr}), row, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr});\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1});\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nvar WS_XML_ROOT = writextag('worksheet', null, {\n\t'xmlns': XMLNS.main[0],\n\t'xmlns:r': XMLNS.r\n});\n\nfunction write_ws_xml(idx, opts, wb, rels) {\n\tvar o = [XML_HEADER, WS_XML_ROOT];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tws['!drawing'] = [];\n\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\to[o.length] = (writextag('sheetPr', null, {'codeName': escapexml(cname)}));\n\t}\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect'] != null) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter']);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(ws['!links'].length > 0) {\n\t\to[o.length] = \"\";\n\t\tws['!links'].forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]});\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\tif (ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);\n\t/* pageSetup */\n\n\t//var hfidx = o.length;\n\to[o.length] = \"\";\n\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\to[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(ws['!drawing'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t}\n\telse delete ws['!drawing'];\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* drawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extList */\n\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({});\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 'BrtRowHdr', o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo() {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\t/* TODO: pull flags */\n\tdata.l += 19;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tfor(var i = 0; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\n\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display});\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\to.write_shift(1, flags); // bit flag\n\to.write_shift(1, 0); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data) {\n\tvar margins = ({});\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\", false], // fObjects\n\t\t[\"scenarios\", false], // fScenarios\n\t\t[\"formatCells\", true], // fFormatCells\n\t\t[\"formatColumns\", true], // fFormatColumns\n\t\t[\"formatRows\", true], // fFormatRows\n\t\t[\"insertColumns\", true], // fInsertColumns\n\t\t[\"insertRows\", true], // fInsertRows\n\t\t[\"insertHyperlinks\", true], // fInsertHyperlinks\n\t\t[\"deleteColumns\", true], // fDeleteColumns\n\t\t[\"deleteRows\", true], // fDeleteRows\n\t\t[\"selectLockedCells\", false], // fSelLockedCells\n\t\t[\"sort\", true], // fSort\n\t\t[\"autoFilter\", true], // fAutoFilter\n\t\t[\"pivotTables\", true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false] // fSelUnlockedCells\n\t].forEach(function(n) {\nif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb, themes, styles) {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s = (opts.dense ? [] : {});\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell;\n\tvar merges = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || ([[]]);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo = [], rowinfo = [];\n\tvar seencol = false;\n\n\trecordhopper(data, function ws_parse(val, R_n, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\t\tp = ({t:val[2]});\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && SSF.is_date(SSF._table[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF.parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:undefined});\n\t\t\t\tC = val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr]));\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01) };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x0031: /* 'BrtCellMeta' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif((R_n||\"\").indexOf(\"Begin\") > 0){/* empty */}\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba, cell, R, C, opts, ws) {\n\tif(cell.v === undefined) return \"\";\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || SSF._table[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar o = ({r:R, c:C});\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v));\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\twrite_record(ba, \"BrtCellIsst\", write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\twrite_record(ba, \"BrtCellSt\", write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) write_record(ba, \"BrtCellRk\", write_BrtCellRk(cell, o));\n\t\t\telse write_record(ba, \"BrtCellReal\", write_BrtCellReal(cell, o));\n\t\t\treturn;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\twrite_record(ba, \"BrtCellBool\", write_BrtCellBool(cell, o));\n\t\t\treturn;\n\t\tcase 'e': /* TODO: error */ o.t = \"e\"; break;\n\t}\n\twrite_record(ba, \"BrtCellBlank\", write_BrtCellBlank(cell, o));\n}\n\nfunction write_CELLTABLE(ba, ws, idx, opts) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols = [];\n\twrite_record(ba, 'BrtBeginSheetData');\n\tvar dense = Array.isArray(ws);\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_bin_cell(ba, cell, R, C, opts, ws);\n\t\t}\n\t}\n\twrite_record(ba, 'BrtEndSheetData');\n}\n\nfunction write_MERGECELLS(ba, ws) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 'BrtBeginMergeCells', write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 'BrtMergeCell', write_BrtMergeCell(m)); });\n\twrite_record(ba, 'BrtEndMergeCells');\n}\n\nfunction write_COLINFOS(ba, ws) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 'BrtBeginColInfos');\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 'BrtColInfo', write_BrtColInfo(i, m)); });\n\twrite_record(ba, 'BrtEndColInfos');\n}\n\nfunction write_IGNOREECS(ba, ws) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 'BrtBeginCellIgnoreECs');\n\twrite_record(ba, 'BrtCellIgnoreEC', write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 'BrtEndCellIgnoreECs');\n}\n\nfunction write_HLINKS(ba, ws, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, \"BrtHLink\", write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws, idx, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, \"BrtLegacyDrawing\", write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws) {\n\tif(!ws['!autofilter']) return;\n\twrite_record(ba, \"BrtBeginAFilter\", write_UncheckedRfX(safe_decode_range(ws['!autofilter'].ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, \"BrtEndAFilter\");\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, \"BrtBeginWsViews\");\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, \"BrtBeginWsView\", write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, \"BrtEndWsView\");\n\t}\n\t/* *FRT */\n\twrite_record(ba, \"BrtEndWsViews\");\n}\n\nfunction write_WSFMTINFO() {\n\t/* [ACWSFMTINFO] */\n\t//write_record(ba, \"BrtWsFmtInfo\", write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, \"BrtSheetProtection\", write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx, opts, wb, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, \"BrtBeginSheet\");\n\tif(wb.vbaraw) write_record(ba, \"BrtWsProp\", write_BrtWsProp(c));\n\twrite_record(ba, \"BrtWsDim\", write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, \"BrtMargins\", write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\twrite_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, \"BrtEndSheet\");\n\treturn ba.end();\n}\nfunction parse_numCache(data) {\n\tvar col = [];\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = +q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\treturn [col, nf];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data, name, opts, rels, wb, csheet) {\n\tvar cs = ((csheet || {\"!type\":\"chart\"}));\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_numCache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\nRELS.CS = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\";\n\nvar CS_XML_ROOT = writextag('chartsheet', null, {\n\t'xmlns': XMLNS.main[0],\n\t'xmlns:r': XMLNS.r\n});\n\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data, opts, idx, rels, wb) {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!chart':null, '!rel':\"\"};\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!chart'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_xml(idx, opts, wb, rels) {\n\tvar o = [XML_HEADER, CS_XML_ROOT];\n\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx, rels, wb) {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!chart':null, '!rel':\"\"};\n\tvar state = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R_n, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(R_n); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif((R_n||\"\").indexOf(\"Begin\") > 0) state.push(R_n);\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!chart'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_bin() {\n\tvar ba = buf_array();\n\twrite_record(ba, \"BrtBeginSheet\");\n\t/* [BrtCsProp] */\n\t/* CSVIEWS */\n\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n\t/* [USERCSVIEWS] */\n\t/* [BrtMargins] */\n\t/* [BrtCsPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* BrtDrawing */\n\t/* [BrtLegacyDrawing] */\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [WEBPUBITEMS] */\n\t/* FRTCHARTSHEET */\n\twrite_record(ba, \"BrtEndSheet\");\n\treturn ba.end();\n}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery', false, \"bool\"],\n\t['autoCompressPictures', true, \"bool\"],\n\t['backupFile', false, \"bool\"],\n\t['checkCompatibility', false, \"bool\"],\n\t['CodeName', ''],\n\t['date1904', false, \"bool\"],\n\t['defaultThemeVersion', 0, \"int\"],\n\t['filterPrivacy', false, \"bool\"],\n\t['hidePivotFieldList', false, \"bool\"],\n\t['promptedSolutions', false, \"bool\"],\n\t['publishItems', false, \"bool\"],\n\t['refreshAllConnections', false, \"bool\"],\n\t['saveExternalLinkValues', true, \"bool\"],\n\t['showBorderUnselectedTables', true, \"bool\"],\n\t['showInkAnnotation', true, \"bool\"],\n\t['showObjects', 'all'],\n\t['showPivotChartFilter', false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab', 0, \"int\"],\n\t['autoFilterDateGrouping', true, \"bool\"],\n\t['firstSheet', 0, \"int\"],\n\t['minimized', false, \"bool\"],\n\t['showHorizontalScroll', true, \"bool\"],\n\t['showSheetTabs', true, \"bool\"],\n\t['showVerticalScroll', true, \"bool\"],\n\t['tabRatio', 600, \"int\"],\n\t['visibility', 'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2 (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb) {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = \"][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n, safe) {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts) {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" };\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = y.codeName;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\n\t\t\tcase '': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '': case '': break; // aggregate sheet\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '': break;\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': pass=false; break;\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\n\t\t\tcase '': {\n\t\t\t\tdname.Ref = data.slice(dnstart, idx);\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\n\t\t\tcase '': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '': pass=true; break;\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase ' 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr = ({codeName:\"ThisWorkbook\"});\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\nif((wb.Workbook.WBProps[x[0]]) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]);\n\t\t});\nif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\t/* bookViews */\n\n\to[o.length] = \"\";\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tfor(var i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))});\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', String(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length) {\n\tvar o = ({});\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tdata.l += 4; //var flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula});\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts) {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\trecordhopper(data, function hopper_wb(val, R_n, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif((R_n||\"\").indexOf(\"Begin\") > 0){/* empty */}\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb) {\n\twrite_record(ba, \"BrtBeginBundleShs\");\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, \"BrtBundleSh\", write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, \"BrtEndBundleShs\");\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\to.length = o.l;\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4, 28800);\n\to.write_shift(4, 17600);\n\to.write_shift(4, 500);\n\to.write_shift(4, idx);\n\to.write_shift(4, idx);\n\tvar flags = 0x78;\n\to.write_shift(1, flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, \"BrtBeginBookViews\");\n\twrite_record(ba, \"BrtBookView\", write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, \"BrtEndBookViews\");\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, \"BrtBeginBook\");\n\twrite_record(ba, \"BrtFileVersion\", write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, \"BrtWbProp\", write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\t/* [EXTERNALS] */\n\t/* *BrtName */\n\t/* write_record(ba, \"BrtCalcProp\", write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, \"BrtFileRecover\", write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, \"BrtEndBook\");\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data), opts);\n\treturn parse_wb_xml((data), opts);\n}\n\nfunction parse_ws(data, name, idx, opts, rels, wb, themes, styles) {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name, idx, opts, rels, wb, themes, styles) {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name, idx, opts, rels, wb, themes, styles) {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name, idx, opts, rels, wb, themes, styles) {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data), themes, opts);\n\treturn parse_sty_xml((data), themes, opts);\n}\n\nfunction parse_theme(data, name, opts) {\n\treturn parse_theme_xml(data, opts);\n}\n\nfunction parse_sst(data, name, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data), opts);\n\treturn parse_sst_xml((data), opts);\n}\n\nfunction parse_cmnt(data, name, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data), opts);\n\treturn parse_comments_xml((data), opts);\n}\n\nfunction parse_cc(data, name, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data), name, opts);\n\treturn parse_cc_xml((data), name, opts);\n}\n\nfunction parse_xlink(data, name, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data), name, opts);\n\treturn parse_xlink_xml((data), name, opts);\n}\n\nfunction write_wb(wb, name, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_wb_bin : write_wb_xml)(wb, opts);\n}\n\nfunction write_ws(data, name, opts, wb, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction write_cs(data, name, opts, wb, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels);\n}\n\nfunction write_sty(data, name, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sty_bin : write_sty_xml)(data, opts);\n}\n\nfunction write_sst(data, name, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sst_bin : write_sst_xml)(data, opts);\n}\n\nfunction write_cmnt(data, name, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_comments_bin : write_comments_xml)(data, opts);\n}\n/*\nfunction write_cc(data, name:string, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_cc_bin : write_cc_xml)(data, opts);\n}\n*/\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nvar _chr = function(c) { return String.fromCharCode(c); };\nfunction xlml_parsexmltag(tag, skip_root) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = ([]); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\nif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\nif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\nfunction xlml_format(format, value) {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF._general(value);\n\treturn SSF.format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val) {\n\tvar oval = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = SSF._general_int(cell.v);\n\t\t\t\telse cell.w = SSF._general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF._general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && SSF.is_date(z)) {\n\t\t\tvar _d = SSF.parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = xml.indexOf(\"<\") > -1 ? unescapexml(ss) : cell.r;\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault: cell.t = 's'; cell.v = xlml_fixstr(ss||xml); break;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_clean_comment(comment) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\nfunction xlml_normalize(d) {\n\tif(has_buf && Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n\n/* TODO: Everything */\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?>!\\/:]*:|)([^\\s?>:\\/]+)[^>]*>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\nfunction parse_xlml_xml(d, _opts) {\n\tvar opts = _opts || {};\n\tmake_ssf(SSF);\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof cptable !== 'undefined') str = cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\tif(opening.indexOf(\"= 0) ishtml = true; });\n\tif(ishtml) return HTML_.to_workbook(str, opts);\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames = [], cursheet = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar table = {}, cell = ({}), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag(''), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments = [], comment = ({});\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf = [];\n\tvar rowinfo = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook = ({ Sheets:[], WBProps:{date1904:false} }), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\");\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'Data':\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==\"Comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'Cell':\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\n\t\t\t\t\t\tcursheet[r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:cell.HRef});\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tmerges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\nfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'Row':\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'Worksheet': /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = (opts.dense ? [] : {});\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'Table':\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\ttable = xlml_parsexmltag(Rn[0]);\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'Style':\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'NumberFormat':\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(SSF._table[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(SSF._table[ssfidx] == null) { SSF.load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'Column':\n\t\t\tif(state[state.length-1][0] !== 'Table') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'NamedRange':\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName = ({\n\t\t\t\tName: _NamedRange.Name,\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t});\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\nWorkbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'NamedCell': break;\n\t\tcase 'B': break;\n\t\tcase 'I': break;\n\t\tcase 'U': break;\n\t\tcase 'S': break;\n\t\tcase 'Sub': break;\n\t\tcase 'Sup': break;\n\t\tcase 'Span': break;\n\t\tcase 'Border': break;\n\t\tcase 'Alignment': break;\n\t\tcase 'Borders': break;\n\t\tcase 'Font':\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'Interior':\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'Protection': break;\n\n\t\tcase 'Author':\n\t\tcase 'Title':\n\t\tcase 'Description':\n\t\tcase 'Created':\n\t\tcase 'Keywords':\n\t\tcase 'Subject':\n\t\tcase 'Category':\n\t\tcase 'Company':\n\t\tcase 'LastAuthor':\n\t\tcase 'LastSaved':\n\t\tcase 'LastPrinted':\n\t\tcase 'Version':\n\t\tcase 'Revision':\n\t\tcase 'TotalTime':\n\t\tcase 'HyperlinkBase':\n\t\tcase 'Manager':\n\t\tcase 'ContentStatus':\n\t\tcase 'Identifier':\n\t\tcase 'Language':\n\t\tcase 'AppName':\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, Rn[3], str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'Paragraphs': break;\n\n\t\tcase 'Styles':\n\t\tcase 'Workbook':\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'Comment':\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author});\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'AutoFilter':\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'Name': break;\n\n\t\tcase 'ComponentOptions':\n\t\tcase 'DocumentProperties':\n\t\tcase 'CustomDocumentProperties':\n\t\tcase 'OfficeDocumentSettings':\n\t\tcase 'PivotTable':\n\t\tcase 'PivotCache':\n\t\tcase 'Names':\n\t\tcase 'MapInfo':\n\t\tcase 'PageBreaks':\n\t\tcase 'QueryTable':\n\t\tcase 'DataValidation':\n\t\tcase 'Sorting':\n\t\tcase 'Schema':\n\t\tcase 'data':\n\t\tcase 'ConditionalFormatting':\n\t\tcase 'SmartTagType':\n\t\tcase 'SmartTags':\n\t\tcase 'ExcelWorkbook':\n\t\tcase 'WorkbookOptions':\n\t\tcase 'WorksheetOptions':\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\t/* FODS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"UOF\") return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'OfficeDocumentSettings': switch(Rn[3]) {\n\t\t\t\t\tcase 'AllowPNG': break;\n\t\t\t\t\tcase 'RemovePersonalInformation': break;\n\t\t\t\t\tcase 'DownloadComponents': break;\n\t\t\t\t\tcase 'LocationOfComponents': break;\n\t\t\t\t\tcase 'Colors': break;\n\t\t\t\t\tcase 'Color': break;\n\t\t\t\t\tcase 'Index': break;\n\t\t\t\t\tcase 'RGB': break;\n\t\t\t\t\tcase 'PixelsPerInch': break; // TODO: set PPI\n\t\t\t\t\tcase 'TargetScreenSize': break;\n\t\t\t\t\tcase 'ReadOnlyRecommended': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'ComponentOptions': switch(Rn[3]) {\n\t\t\t\t\tcase 'Toolbar': break;\n\t\t\t\t\tcase 'HideOfficeLogo': break;\n\t\t\t\t\tcase 'SpreadsheetAutoFit': break;\n\t\t\t\t\tcase 'Label': break;\n\t\t\t\t\tcase 'Caption': break;\n\t\t\t\t\tcase 'MaxHeight': break;\n\t\t\t\t\tcase 'MaxWidth': break;\n\t\t\t\t\tcase 'NextSheetNumber': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'ExcelWorkbook': switch(Rn[3]) {\n\t\t\t\t\tcase 'Date1904':\nWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'WindowHeight': break;\n\t\t\t\t\tcase 'WindowWidth': break;\n\t\t\t\t\tcase 'WindowTopX': break;\n\t\t\t\t\tcase 'WindowTopY': break;\n\t\t\t\t\tcase 'TabRatio': break;\n\t\t\t\t\tcase 'ProtectStructure': break;\n\t\t\t\t\tcase 'ProtectWindows': break;\n\t\t\t\t\tcase 'ActiveSheet': break;\n\t\t\t\t\tcase 'DisplayInkNotes': break;\n\t\t\t\t\tcase 'FirstVisibleSheet': break;\n\t\t\t\t\tcase 'SupBook': break;\n\t\t\t\t\tcase 'SheetName': break;\n\t\t\t\t\tcase 'SheetIndex': break;\n\t\t\t\t\tcase 'SheetIndexFirst': break;\n\t\t\t\t\tcase 'SheetIndexLast': break;\n\t\t\t\t\tcase 'Dll': break;\n\t\t\t\t\tcase 'AcceptLabelsInFormulas': break;\n\t\t\t\t\tcase 'DoNotSaveLinkValues': break;\n\t\t\t\t\tcase 'Iteration': break;\n\t\t\t\t\tcase 'MaxIterations': break;\n\t\t\t\t\tcase 'MaxChange': break;\n\t\t\t\t\tcase 'Path': break;\n\t\t\t\t\tcase 'Xct': break;\n\t\t\t\t\tcase 'Count': break;\n\t\t\t\t\tcase 'SelectedSheets': break;\n\t\t\t\t\tcase 'Calculation': break;\n\t\t\t\t\tcase 'Uncalced': break;\n\t\t\t\t\tcase 'StartupPrompt': break;\n\t\t\t\t\tcase 'Crn': break;\n\t\t\t\t\tcase 'ExternName': break;\n\t\t\t\t\tcase 'Formula': break;\n\t\t\t\t\tcase 'ColFirst': break;\n\t\t\t\t\tcase 'ColLast': break;\n\t\t\t\t\tcase 'WantAdvise': break;\n\t\t\t\t\tcase 'Boolean': break;\n\t\t\t\t\tcase 'Error': break;\n\t\t\t\t\tcase 'Text': break;\n\t\t\t\t\tcase 'OLE': break;\n\t\t\t\t\tcase 'NoAutoRecover': break;\n\t\t\t\t\tcase 'PublishObjects': break;\n\t\t\t\t\tcase 'DoNotCalculateBeforeSave': break;\n\t\t\t\t\tcase 'Number': break;\n\t\t\t\t\tcase 'RefModeR1C1': break;\n\t\t\t\t\tcase 'EmbedSaveSmartTags': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'WorkbookOptions': switch(Rn[3]) {\n\t\t\t\t\tcase 'OWCVersion': break;\n\t\t\t\t\tcase 'Height': break;\n\t\t\t\t\tcase 'Width': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'WorksheetOptions': switch(Rn[3]) {\n\t\t\t\t\tcase 'Visible':\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Header':\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tcursheet['!margins'].header = parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Footer':\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tcursheet['!margins'].footer = parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'PageMargins':\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(pagemargins.Top) cursheet['!margins'].top = pagemargins.Top;\n\t\t\t\t\t\tif(pagemargins.Left) cursheet['!margins'].left = pagemargins.Left;\n\t\t\t\t\t\tif(pagemargins.Right) cursheet['!margins'].right = pagemargins.Right;\n\t\t\t\t\t\tif(pagemargins.Bottom) cursheet['!margins'].bottom = pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DisplayRightToLeft':\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Unsynced': break;\n\t\t\t\t\tcase 'Print': break;\n\t\t\t\t\tcase 'Panes': break;\n\t\t\t\t\tcase 'Scale': break;\n\t\t\t\t\tcase 'Pane': break;\n\t\t\t\t\tcase 'Number': break;\n\t\t\t\t\tcase 'Layout': break;\n\t\t\t\t\tcase 'PageSetup': break;\n\t\t\t\t\tcase 'Selected': break;\n\t\t\t\t\tcase 'ProtectObjects': break;\n\t\t\t\t\tcase 'EnableSelection': break;\n\t\t\t\t\tcase 'ProtectScenarios': break;\n\t\t\t\t\tcase 'ValidPrinterInfo': break;\n\t\t\t\t\tcase 'HorizontalResolution': break;\n\t\t\t\t\tcase 'VerticalResolution': break;\n\t\t\t\t\tcase 'NumberofCopies': break;\n\t\t\t\t\tcase 'ActiveRow': break;\n\t\t\t\t\tcase 'ActiveCol': break;\n\t\t\t\t\tcase 'ActivePane': break;\n\t\t\t\t\tcase 'TopRowVisible': break;\n\t\t\t\t\tcase 'TopRowBottomPane': break;\n\t\t\t\t\tcase 'LeftColumnVisible': break;\n\t\t\t\t\tcase 'LeftColumnRightPane': break;\n\t\t\t\t\tcase 'FitToPage': break;\n\t\t\t\t\tcase 'RangeSelection': break;\n\t\t\t\t\tcase 'PaperSizeIndex': break;\n\t\t\t\t\tcase 'PageLayoutZoom': break;\n\t\t\t\t\tcase 'PageBreakZoom': break;\n\t\t\t\t\tcase 'FilterOn': break;\n\t\t\t\t\tcase 'DoNotDisplayGridlines': break;\n\t\t\t\t\tcase 'SplitHorizontal': break;\n\t\t\t\t\tcase 'SplitVertical': break;\n\t\t\t\t\tcase 'FreezePanes': break;\n\t\t\t\t\tcase 'FrozenNoSplit': break;\n\t\t\t\t\tcase 'FitWidth': break;\n\t\t\t\t\tcase 'FitHeight': break;\n\t\t\t\t\tcase 'CommentsLayout': break;\n\t\t\t\t\tcase 'Zoom': break;\n\t\t\t\t\tcase 'LeftToRight': break;\n\t\t\t\t\tcase 'Gridlines': break;\n\t\t\t\t\tcase 'AllowSort': break;\n\t\t\t\t\tcase 'AllowFilter': break;\n\t\t\t\t\tcase 'AllowInsertRows': break;\n\t\t\t\t\tcase 'AllowDeleteRows': break;\n\t\t\t\t\tcase 'AllowInsertCols': break;\n\t\t\t\t\tcase 'AllowDeleteCols': break;\n\t\t\t\t\tcase 'AllowInsertHyperlinks': break;\n\t\t\t\t\tcase 'AllowFormatCells': break;\n\t\t\t\t\tcase 'AllowSizeCols': break;\n\t\t\t\t\tcase 'AllowSizeRows': break;\n\t\t\t\t\tcase 'NoSummaryRowsBelowDetail': break;\n\t\t\t\t\tcase 'TabColorIndex': break;\n\t\t\t\t\tcase 'DoNotDisplayHeadings': break;\n\t\t\t\t\tcase 'ShowPageLayoutZoom': break;\n\t\t\t\t\tcase 'NoSummaryColumnsRightDetail': break;\n\t\t\t\t\tcase 'BlackAndWhite': break;\n\t\t\t\t\tcase 'DoNotDisplayZeros': break;\n\t\t\t\t\tcase 'DisplayPageBreak': break;\n\t\t\t\t\tcase 'RowColHeadings': break;\n\t\t\t\t\tcase 'DoNotDisplayOutline': break;\n\t\t\t\t\tcase 'NoOrientation': break;\n\t\t\t\t\tcase 'AllowUsePivotTables': break;\n\t\t\t\t\tcase 'ZeroHeight': break;\n\t\t\t\t\tcase 'ViewableRange': break;\n\t\t\t\t\tcase 'Selection': break;\n\t\t\t\t\tcase 'ProtectContents': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'PivotTable': case 'PivotCache': switch(Rn[3]) {\n\t\t\t\t\tcase 'ImmediateItemsOnDrop': break;\n\t\t\t\t\tcase 'ShowPageMultipleItemLabel': break;\n\t\t\t\t\tcase 'CompactRowIndent': break;\n\t\t\t\t\tcase 'Location': break;\n\t\t\t\t\tcase 'PivotField': break;\n\t\t\t\t\tcase 'Orientation': break;\n\t\t\t\t\tcase 'LayoutForm': break;\n\t\t\t\t\tcase 'LayoutSubtotalLocation': break;\n\t\t\t\t\tcase 'LayoutCompactRow': break;\n\t\t\t\t\tcase 'Position': break;\n\t\t\t\t\tcase 'PivotItem': break;\n\t\t\t\t\tcase 'DataType': break;\n\t\t\t\t\tcase 'DataField': break;\n\t\t\t\t\tcase 'SourceName': break;\n\t\t\t\t\tcase 'ParentField': break;\n\t\t\t\t\tcase 'PTLineItems': break;\n\t\t\t\t\tcase 'PTLineItem': break;\n\t\t\t\t\tcase 'CountOfSameItems': break;\n\t\t\t\t\tcase 'Item': break;\n\t\t\t\t\tcase 'ItemType': break;\n\t\t\t\t\tcase 'PTSource': break;\n\t\t\t\t\tcase 'CacheIndex': break;\n\t\t\t\t\tcase 'ConsolidationReference': break;\n\t\t\t\t\tcase 'FileName': break;\n\t\t\t\t\tcase 'Reference': break;\n\t\t\t\t\tcase 'NoColumnGrand': break;\n\t\t\t\t\tcase 'NoRowGrand': break;\n\t\t\t\t\tcase 'BlankLineAfterItems': break;\n\t\t\t\t\tcase 'Hidden': break;\n\t\t\t\t\tcase 'Subtotal': break;\n\t\t\t\t\tcase 'BaseField': break;\n\t\t\t\t\tcase 'MapChildItems': break;\n\t\t\t\t\tcase 'Function': break;\n\t\t\t\t\tcase 'RefreshOnFileOpen': break;\n\t\t\t\t\tcase 'PrintSetTitles': break;\n\t\t\t\t\tcase 'MergeLabels': break;\n\t\t\t\t\tcase 'DefaultVersion': break;\n\t\t\t\t\tcase 'RefreshName': break;\n\t\t\t\t\tcase 'RefreshDate': break;\n\t\t\t\t\tcase 'RefreshDateCopy': break;\n\t\t\t\t\tcase 'VersionLastRefresh': break;\n\t\t\t\t\tcase 'VersionLastUpdate': break;\n\t\t\t\t\tcase 'VersionUpdateableMin': break;\n\t\t\t\t\tcase 'VersionRefreshableMin': break;\n\t\t\t\t\tcase 'Calculation': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'PageBreaks': switch(Rn[3]) {\n\t\t\t\t\tcase 'ColBreaks': break;\n\t\t\t\t\tcase 'ColBreak': break;\n\t\t\t\t\tcase 'RowBreaks': break;\n\t\t\t\t\tcase 'RowBreak': break;\n\t\t\t\t\tcase 'ColStart': break;\n\t\t\t\t\tcase 'ColEnd': break;\n\t\t\t\t\tcase 'RowEnd': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'AutoFilter': switch(Rn[3]) {\n\t\t\t\t\tcase 'AutoFilterColumn': break;\n\t\t\t\t\tcase 'AutoFilterCondition': break;\n\t\t\t\t\tcase 'AutoFilterAnd': break;\n\t\t\t\t\tcase 'AutoFilterOr': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'QueryTable': switch(Rn[3]) {\n\t\t\t\t\tcase 'Id': break;\n\t\t\t\t\tcase 'AutoFormatFont': break;\n\t\t\t\t\tcase 'AutoFormatPattern': break;\n\t\t\t\t\tcase 'QuerySource': break;\n\t\t\t\t\tcase 'QueryType': break;\n\t\t\t\t\tcase 'EnableRedirections': break;\n\t\t\t\t\tcase 'RefreshedInXl9': break;\n\t\t\t\t\tcase 'URLString': break;\n\t\t\t\t\tcase 'HTMLTables': break;\n\t\t\t\t\tcase 'Connection': break;\n\t\t\t\t\tcase 'CommandText': break;\n\t\t\t\t\tcase 'RefreshInfo': break;\n\t\t\t\t\tcase 'NoTitles': break;\n\t\t\t\t\tcase 'NextId': break;\n\t\t\t\t\tcase 'ColumnInfo': break;\n\t\t\t\t\tcase 'OverwriteCells': break;\n\t\t\t\t\tcase 'DoNotPromptForFile': break;\n\t\t\t\t\tcase 'TextWizardSettings': break;\n\t\t\t\t\tcase 'Source': break;\n\t\t\t\t\tcase 'Number': break;\n\t\t\t\t\tcase 'Decimal': break;\n\t\t\t\t\tcase 'ThousandSeparator': break;\n\t\t\t\t\tcase 'TrailingMinusNumbers': break;\n\t\t\t\t\tcase 'FormatSettings': break;\n\t\t\t\t\tcase 'FieldType': break;\n\t\t\t\t\tcase 'Delimiters': break;\n\t\t\t\t\tcase 'Tab': break;\n\t\t\t\t\tcase 'Comma': break;\n\t\t\t\t\tcase 'AutoFormatName': break;\n\t\t\t\t\tcase 'VersionLastEdit': break;\n\t\t\t\t\tcase 'VersionLastRefresh': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'Sorting':\n\t\t\t\tcase 'ConditionalFormatting':\n\t\t\t\tcase 'DataValidation':\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'Range': break;\n\t\t\t\t\tcase 'Type': break;\n\t\t\t\t\tcase 'Min': break;\n\t\t\t\t\tcase 'Max': break;\n\t\t\t\t\tcase 'Sort': break;\n\t\t\t\t\tcase 'Descending': break;\n\t\t\t\t\tcase 'Order': break;\n\t\t\t\t\tcase 'CaseSensitive': break;\n\t\t\t\t\tcase 'Value': break;\n\t\t\t\t\tcase 'ErrorStyle': break;\n\t\t\t\t\tcase 'ErrorMessage': break;\n\t\t\t\t\tcase 'ErrorTitle': break;\n\t\t\t\t\tcase 'CellRangeList': break;\n\t\t\t\t\tcase 'InputMessage': break;\n\t\t\t\t\tcase 'InputTitle': break;\n\t\t\t\t\tcase 'ComboHide': break;\n\t\t\t\t\tcase 'InputHide': break;\n\t\t\t\t\tcase 'Condition': break;\n\t\t\t\t\tcase 'Qualifier': break;\n\t\t\t\t\tcase 'UseBlank': break;\n\t\t\t\t\tcase 'Value1': break;\n\t\t\t\t\tcase 'Value2': break;\n\t\t\t\t\tcase 'Format': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'MapInfo': case 'Schema': case 'data': switch(Rn[3]) {\n\t\t\t\t\tcase 'Map': break;\n\t\t\t\t\tcase 'Entry': break;\n\t\t\t\t\tcase 'Range': break;\n\t\t\t\t\tcase 'XPath': break;\n\t\t\t\t\tcase 'Field': break;\n\t\t\t\t\tcase 'XSDType': break;\n\t\t\t\t\tcase 'FilterOn': break;\n\t\t\t\t\tcase 'Aggregate': break;\n\t\t\t\t\tcase 'ElementType': break;\n\t\t\t\t\tcase 'AttributeType': break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema':\n\t\t\t\t\tcase 'element':\n\t\t\t\t\tcase 'complexType':\n\t\t\t\t\tcase 'datatype':\n\t\t\t\t\tcase 'all':\n\t\t\t\t\tcase 'attribute':\n\t\t\t\t\tcase 'extends': break;\n\n\t\t\t\t\tcase 'row': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'SmartTags': break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]==='CustomDocumentProperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, Rn[3], cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({});\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = SSF.get_table();\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\treturn out;\n}\n\nfunction parse_xlml(data, opts) {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64.decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n}\n\n/* TODO */\nfunction write_props_xlml(wb, opts) {\n\tvar o = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml() {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts) {\n\t/* Styles */\n\tvar styles = [''];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(SSF._table[xf.numFmtId])}));\n\t\tstyles.push(writextag('Style', payload.join(\"\"), {\"ss:ID\": \"s\" + (21+id)}));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb) {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\nvar names = wb.Workbook.Names;\n\tvar out = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws, opts, idx, wb) {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\nvar names = wb.Workbook.Names;\n\tvar out = [];\n\touter: for(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws, opts, idx, wb) {\n\tif(!ws) return \"\";\n\tvar o = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments) {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr){\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': return \"\";\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || SSF._table[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = '' + _v + '';\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R, row) {\n\tvar o = '';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws, opts, idx, wb) {\n\tif(!ws['!ref']) return \"\";\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar marr = ws['!merges'] || [], mi = 0;\n\tvar o = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx, opts, wb) {\n\tvar o = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"
\");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts) {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = SSF.get_table();\n\tif(wb.SSF) {\n\t\tmake_ssf(SSF); SSF.load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns': XLMLNS.ss,\n\t\t'xmlns:o': XLMLNS.o,\n\t\t'xmlns:x': XLMLNS.x,\n\t\t'xmlns:ss': XLMLNS.ss,\n\t\t'xmlns:dt': XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj) {\n\tvar v = {};\n\tvar o = obj.content;\n/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue\n\t- 2.4.59 ContinueBigName\n\t- 2.4.60 ContinueFrt\n\t- 2.4.61 ContinueFrt11\n\t- 2.4.62 ContinueFrt12\n*/\nfunction slurp(R, blob, length, opts) {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu) switch(R.n) {\n\tcase 'BOF': case 'FilePass': case 'FileLock': case 'InterfaceHdr': case 'RRDInfo': case 'RRDHead': case 'UsrExcl': break;\n\tdefault:\n\t\tif(d.length === 0) break;\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar next = (XLSRecordEnum[__readUInt16LE(blob,blob.l)]);\n\tvar start = 0;\n\twhile(next != null && next.n.slice(0,8) === 'Continue') {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(next.n == 'ContinueFrt') start += 4;\n\t\telse if(next.n.slice(0,11) == 'ContinueFrt') start += 12;\n\t\tbufs.push(blob.slice(start,blob.l+4+l));\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[__readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs));\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p, opts, date1904) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = SSF._table[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = SSF._general_int(p.v);\n\t\t\t\telse p.w = SSF._general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF._general(p.v);\n\t\t}\n\t\telse p.w = SSF.format(fmtid,p.v, {date1904:!!date1904});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && SSF.is_date(SSF._table[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF.parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t) {\n\treturn ({v:val, ixfe:ixfe, t:t});\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options) {\n\tvar wb = ({opts:{}});\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out = ((options.dense ? [] : {}));\n\tvar Directory = {};\n\tvar range = ({});\n\tvar last_formula = null;\n\tvar sst = ([]);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf = [];\n\tvar temp_val;\n\tvar country;\n\tvar cell_valid = true;\n\tvar XFs = []; /* XF records */\n\tvar palette = [];\n\tvar Workbook = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }), wsprops = {};\n\tvar get_rgb = function getrgb(icv) {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({});\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell, line, options) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) cell_valid = false;\n\t\tif(!cell_valid) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(range.s) {\n\t\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\t}\n\t\tif(range.e) {\n\t\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\t}\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t});\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges = [];\n\tvar objects = [];\n\tvar colinfo = [], rowinfo = [];\n\t// eslint-disable-next-line no-unused-vars\n\tvar defwidth = 0, defheight = 0; // twips / MDW respectively\n\tvar seencol = false;\n\tvar supbooks = ([]); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_Rn = '';\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_Rn === 'EOF') break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_Rn === 'BoundSheet8' && R.n !== 'BoundSheet8') break;\n\t\t\t}\n\t\t\tlast_Rn = R.n;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){ blob.l += 10; length -= 10; } // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val;\n\t\t\tif(R.n === 'EOF') val = R.f(blob, length, opts);\n\t\t\telse val = slurp(R, blob, length, opts);\n\t\t\tvar Rn = R.n;\n\t\t\tif(file_depth == 0 && Rn != 'BOF') continue;\n\t\t\t/* nested switch statements to workaround V8 128 limit */\n\t\t\tswitch(Rn) {\n\t\t\t\t/* Workbook Options */\n\t\t\t\tcase 'Date1904':\nwb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 'WriteProtect': wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 'FilePass':\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'WriteAccess': opts.lastuser = val; break;\n\t\t\t\tcase 'FileSharing': break; //TODO\n\t\t\t\tcase 'CodePage':\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(val) {\n\t\t\t\t\t\tcase 0x5212: val = 1200; break;\n\t\t\t\t\t\tcase 0x8000: val = 10000; break;\n\t\t\t\t\t\tcase 0x8001: val = 1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = val);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'RRTabId': opts.rrtabid = val; break;\n\t\t\t\tcase 'WinProtect': opts.winlocked = val; break;\n\t\t\t\tcase 'Template': break; // TODO\n\t\t\t\tcase 'BookBool': break; // TODO\n\t\t\t\tcase 'UsesELFs': break;\n\t\t\t\tcase 'MTRSettings': break;\n\t\t\t\tcase 'RefreshAll':\n\t\t\t\tcase 'CalcCount':\n\t\t\t\tcase 'CalcDelta':\n\t\t\t\tcase 'CalcIter':\n\t\t\t\tcase 'CalcMode':\n\t\t\t\tcase 'CalcPrecision':\n\t\t\t\tcase 'CalcSaveRecalc':\n\t\t\t\t\twb.opts[Rn] = val; break;\n\t\t\t\tcase 'CalcRefMode': opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 'Uncalced': break;\n\t\t\t\tcase 'ForceFullCalculation': wb.opts.FullCalc = val; break;\n\t\t\t\tcase 'WsBool':\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 'XF': XFs.push(val); break;\n\t\t\t\tcase 'ExtSST': break; // TODO\n\t\t\t\tcase 'BookExt': break; // TODO\n\t\t\t\tcase 'RichTextStream': break;\n\t\t\t\tcase 'BkHim': break;\n\n\t\t\t\tcase 'SupBook':\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ExternName':\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Index': break; // TODO\n\t\t\t\tcase 'Lbl':\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t});\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ExternCount': opts.ExternCount = val; break;\n\t\t\t\tcase 'ExternSheet':\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 'NameCmt':\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Protect': out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 'Password': if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 'Prot4Rev': case 'Prot4RevPass': break; /*TODO: Revision Control*/\n\n\t\t\t\tcase 'BoundSheet8': {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 'EOF': {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ((options.dense ? [] : {}));\n\t\t\t\t} break;\n\t\t\t\tcase 'BOF': {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n0x0009:2,\n0x0209:3,\n0x0409:4\n\t\t\t\t\t}[RecordType] || {\n0x0200:2,\n0x0300:3,\n0x0400:4,\n0x0500:5,\n0x0600:8,\n0x0002:2,\n0x0007:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tcell_valid = true;\n\t\t\t\t\tout = ((options.dense ? [] : {}));\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\t\t\t\t\tif(opts.biff < 5) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tdefwidth = defheight = 0;\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\n\t\t\t\tcase 'Number': case 'BIFF2NUM': case 'BIFF2INT': {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'});\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 'BoolErr': {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t});\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 'RK': {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'});\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 'MulRk': {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'});\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 'Formula': {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 'String': {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 'Array': {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 'ShrFmla': {\n\t\t\t\t\tif(!cell_valid) break;\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 'LabelSst':\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Blank': if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'});\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 'MulBlank': if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'});\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 'RString':\n\t\t\t\tcase 'Label': case 'BIFF2STR':\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Dimensions': {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 'SST': {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 'Format': { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(SSF._table[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF.load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF.load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 'BIFF2FORMAT': {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(SSF._table[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF.load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 'MergeCells': merges = merges.concat(val); break;\n\n\t\t\t\tcase 'Obj': objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 'TxO': opts.lastobj.TxO = val; break;\n\t\t\t\tcase 'ImData': opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 'HLink': {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 'HLinkTooltip': {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\t/* Comments */\n\t\t\t\tcase 'Note': {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) break;\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\n\t\t\t\tdefault: switch(R.n) { /* nested */\n\t\t\t\tcase 'ClrtClient': break;\n\t\t\t\tcase 'XFExt': update_xfext(XFs[val.ixfe], val.ext); break;\n\n\t\t\t\tcase 'DefColWidth': defwidth = val; break;\n\t\t\t\tcase 'DefaultRowHeight': defheight = val[1]; break; // TODO: flags\n\n\t\t\t\tcase 'ColInfo': {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256 };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 'Row': {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\tcase 'LeftMargin':\n\t\t\t\tcase 'RightMargin':\n\t\t\t\tcase 'TopMargin':\n\t\t\t\tcase 'BottomMargin':\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][Rn.slice(0,-6).toLowerCase()] = val;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Setup': // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Window2': // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Header': break; // TODO\n\t\t\t\tcase 'Footer': break; // TODO\n\t\t\t\tcase 'HCenter': break; // TODO\n\t\t\t\tcase 'VCenter': break; // TODO\n\t\t\t\tcase 'Pls': break; // TODO\n\t\t\t\tcase 'GCW': break;\n\t\t\t\tcase 'LHRecord': break;\n\t\t\t\tcase 'DBCell': break; // TODO\n\t\t\t\tcase 'EntExU2': break; // TODO\n\t\t\t\tcase 'SxView': break; // TODO\n\t\t\t\tcase 'Sxvd': break; // TODO\n\t\t\t\tcase 'SXVI': break; // TODO\n\t\t\t\tcase 'SXVDEx': break; // TODO\n\t\t\t\tcase 'SxIvd': break; // TODO\n\t\t\t\tcase 'SXString': break; // TODO\n\t\t\t\tcase 'Sync': break;\n\t\t\t\tcase 'Addin': break;\n\t\t\t\tcase 'SXDI': break; // TODO\n\t\t\t\tcase 'SXLI': break; // TODO\n\t\t\t\tcase 'SXEx': break; // TODO\n\t\t\t\tcase 'QsiSXTag': break; // TODO\n\t\t\t\tcase 'Selection': break;\n\t\t\t\tcase 'Feat': break;\n\t\t\t\tcase 'FeatHdr': case 'FeatHdr11': break;\n\t\t\t\tcase 'Feature11': case 'Feature12': case 'List12': break;\n\t\t\t\tcase 'Country': country = val; break;\n\t\t\t\tcase 'RecalcId': break;\n\t\t\t\tcase 'DxGCol': break; // TODO: htmlify\n\t\t\t\tcase 'Fbi': case 'Fbi2': case 'GelFrame': break;\n\t\t\t\tcase 'Font': break; // TODO\n\t\t\t\tcase 'XFCRC': break; // TODO\n\t\t\t\tcase 'Style': break; // TODO\n\t\t\t\tcase 'StyleExt': break; // TODO\n\t\t\t\tcase 'Palette': palette = val; break;\n\t\t\t\tcase 'Theme': themes = val; break;\n\t\t\t\t/* Protection */\n\t\t\t\tcase 'ScenarioProtect': break;\n\t\t\t\tcase 'ObjProtect': break;\n\n\t\t\t\t/* Conditional Formatting */\n\t\t\t\tcase 'CondFmt12': break;\n\n\t\t\t\t/* Table */\n\t\t\t\tcase 'Table': break; // TODO\n\t\t\t\tcase 'TableStyles': break; // TODO\n\t\t\t\tcase 'TableStyle': break; // TODO\n\t\t\t\tcase 'TableStyleElement': break; // TODO\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'SXStreamID': break; // TODO\n\t\t\t\tcase 'SXVS': break; // TODO\n\t\t\t\tcase 'DConRef': break; // TODO\n\t\t\t\tcase 'SXAddl': break; // TODO\n\t\t\t\tcase 'DConBin': break; // TODO\n\t\t\t\tcase 'DConName': break; // TODO\n\t\t\t\tcase 'SXPI': break; // TODO\n\t\t\t\tcase 'SxFormat': break; // TODO\n\t\t\t\tcase 'SxSelect': break; // TODO\n\t\t\t\tcase 'SxRule': break; // TODO\n\t\t\t\tcase 'SxFilt': break; // TODO\n\t\t\t\tcase 'SxItm': break; // TODO\n\t\t\t\tcase 'SxDXF': break; // TODO\n\n\t\t\t\t/* Scenario Manager */\n\t\t\t\tcase 'ScenMan': break;\n\n\t\t\t\t/* Data Consolidation */\n\t\t\t\tcase 'DCon': break;\n\n\t\t\t\t/* Watched Cell */\n\t\t\t\tcase 'CellWatch': break;\n\n\t\t\t\t/* Print Settings */\n\t\t\t\tcase 'PrintRowCol': break;\n\t\t\t\tcase 'PrintGrid': break;\n\t\t\t\tcase 'PrintSize': break;\n\n\t\t\t\tcase 'XCT': break;\n\t\t\t\tcase 'CRN': break;\n\n\t\t\t\tcase 'Scl': {\n\t\t\t\t\t//console.log(\"Zoom Level:\", val[0]/val[1],val);\n\t\t\t\t} break;\n\t\t\t\tcase 'SheetExt': {\n\t\t\t\t\t/* empty */\n\t\t\t\t} break;\n\t\t\t\tcase 'SheetExtOptional': {\n\t\t\t\t\t/* empty */\n\t\t\t\t} break;\n\n\t\t\t\t/* VBA */\n\t\t\t\tcase 'ObNoMacros': {\n\t\t\t\t\t/* empty */\n\t\t\t\t} break;\n\t\t\t\tcase 'ObProj': {\n\t\t\t\t\t/* empty */\n\t\t\t\t} break;\n\t\t\t\tcase 'CodeName': {\nif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t\tcase 'GUIDTypeLib': {\n\t\t\t\t\t/* empty */\n\t\t\t\t} break;\n\n\t\t\t\tcase 'WOpt': break; // TODO: WTF?\n\t\t\t\tcase 'PhoneticInfo': break;\n\n\t\t\t\tcase 'OleObjectSize': break;\n\n\t\t\t\t/* Differential Formatting */\n\t\t\t\tcase 'DXF': case 'DXFN': case 'DXFN12': case 'DXFN12List': case 'DXFN12NoCB': break;\n\n\t\t\t\t/* Data Validation */\n\t\t\t\tcase 'Dv': case 'DVal': break;\n\n\t\t\t\t/* Data Series */\n\t\t\t\tcase 'BRAI': case 'Series': case 'SeriesText': break;\n\n\t\t\t\t/* Data Connection */\n\t\t\t\tcase 'DConn': break;\n\t\t\t\tcase 'DbOrParamQry': break;\n\t\t\t\tcase 'DBQueryExt': break;\n\n\t\t\t\tcase 'OleDbConn': break;\n\t\t\t\tcase 'ExtString': break;\n\n\t\t\t\t/* Formatting */\n\t\t\t\tcase 'IFmtRecord': break;\n\t\t\t\tcase 'CondFmt': case 'CF': case 'CF12': case 'CFEx': break;\n\n\t\t\t\t/* Explicitly Ignored */\n\t\t\t\tcase 'Excel9File': break;\n\t\t\t\tcase 'Units': break;\n\t\t\t\tcase 'InterfaceHdr': case 'Mms': case 'InterfaceEnd': case 'DSF': break;\n\t\t\t\tcase 'BuiltInFnGroupCount': /* 2.4.30 0x0E or 0x10 but excel 2011 generates 0x11? */ break;\n\t\t\t\t/* View Stuff */\n\t\t\t\tcase 'Window1': case 'HideObj': case 'GridSet': case 'Guts':\n\t\t\t\tcase 'UserBView': case 'UserSViewBegin': case 'UserSViewEnd':\n\t\t\t\tcase 'Pane': break;\n\t\t\t\tdefault: switch(R.n) { /* nested */\n\t\t\t\t/* Chart */\n\t\t\t\tcase 'Dat':\n\t\t\t\tcase 'Begin': case 'End':\n\t\t\t\tcase 'StartBlock': case 'EndBlock':\n\t\t\t\tcase 'Frame': case 'Area':\n\t\t\t\tcase 'Axis': case 'AxisLine': case 'Tick': break;\n\t\t\t\tcase 'AxesUsed':\n\t\t\t\tcase 'CrtLayout12': case 'CrtLayout12A': case 'CrtLink': case 'CrtLine': case 'CrtMlFrt': case 'CrtMlFrtContinue': break;\n\t\t\t\tcase 'LineFormat': case 'AreaFormat':\n\t\t\t\tcase 'Chart': case 'Chart3d': case 'Chart3DBarShape': case 'ChartFormat': case 'ChartFrtInfo': break;\n\t\t\t\tcase 'PlotArea': case 'PlotGrowth': break;\n\t\t\t\tcase 'SeriesList': case 'SerParent': case 'SerAuxTrend': break;\n\t\t\t\tcase 'DataFormat': case 'SerToCrt': case 'FontX': break;\n\t\t\t\tcase 'CatSerRange': case 'AxcExt': case 'SerFmt': break;\n\t\t\t\tcase 'ShtProps': break;\n\t\t\t\tcase 'DefaultText': case 'Text': case 'CatLab': break;\n\t\t\t\tcase 'DataLabExtContents': break;\n\t\t\t\tcase 'Legend': case 'LegendException': break;\n\t\t\t\tcase 'Pie': case 'Scatter': break;\n\t\t\t\tcase 'PieFormat': case 'MarkerFormat': break;\n\t\t\t\tcase 'StartObject': case 'EndObject': break;\n\t\t\t\tcase 'AlRuns': case 'ObjectLink': break;\n\t\t\t\tcase 'SIIndex': break;\n\t\t\t\tcase 'AttachedLabel': case 'YMult': break;\n\n\t\t\t\t/* Chart Group */\n\t\t\t\tcase 'Line': case 'Bar': break;\n\t\t\t\tcase 'Surf': break;\n\n\t\t\t\t/* Axis Group */\n\t\t\t\tcase 'AxisParent': break;\n\t\t\t\tcase 'Pos': break;\n\t\t\t\tcase 'ValueRange': break;\n\n\t\t\t\t/* Pivot Chart */\n\t\t\t\tcase 'SXViewEx9': break; // TODO\n\t\t\t\tcase 'SXViewLink': break;\n\t\t\t\tcase 'PivotChartBits': break;\n\t\t\t\tcase 'SBaseRef': break;\n\t\t\t\tcase 'TextPropsStream': break;\n\n\t\t\t\t/* Chart Misc */\n\t\t\t\tcase 'LnExt': break;\n\t\t\t\tcase 'MkrExt': break;\n\t\t\t\tcase 'CrtCoopt': break;\n\n\t\t\t\t/* Query Table */\n\t\t\t\tcase 'Qsi': case 'Qsif': case 'Qsir': case 'QsiSXTag': break;\n\t\t\t\tcase 'TxtQry': break;\n\n\t\t\t\t/* Filter */\n\t\t\t\tcase 'FilterMode': break;\n\t\t\t\tcase 'AutoFilter': case 'AutoFilterInfo': break;\n\t\t\t\tcase 'AutoFilter12': break;\n\t\t\t\tcase 'DropDownObjIds': break;\n\t\t\t\tcase 'Sort': break;\n\t\t\t\tcase 'SortData': break;\n\n\t\t\t\t/* Drawing */\n\t\t\t\tcase 'ShapePropsStream': break;\n\t\t\t\tcase 'MsoDrawing': case 'MsoDrawingGroup': case 'MsoDrawingSelection': break;\n\t\t\t\t/* Pub Stuff */\n\t\t\t\tcase 'WebPub': case 'AutoWebPub': break;\n\n\t\t\t\t/* Print Stuff */\n\t\t\t\tcase 'HeaderFooter': case 'HFPicture': case 'PLV':\n\t\t\t\tcase 'HorizontalPageBreaks': case 'VerticalPageBreaks': break;\n\t\t\t\t/* Behavioral */\n\t\t\t\tcase 'Backup': case 'CompressPictures': case 'Compat12': break;\n\n\t\t\t\t/* Should not Happen */\n\t\t\t\tcase 'Continue': case 'ContinueFrt12': break;\n\n\t\t\t\t/* Future Records */\n\t\t\t\tcase 'FrtFontList': case 'FrtWrapper': break;\n\n\t\t\t\tdefault: switch(R.n) { /* nested */\n\t\t\t\t/* BIFF5 records */\n\t\t\t\tcase 'TabIdConf': case 'Radar': case 'RadarArea': case 'DropBar': case 'Intl': case 'CoordList': case 'SerAuxErrBar': break;\n\n\t\t\t\t/* BIFF2-4 records */\n\t\t\t\tcase 'BIFF2FONTCLR': case 'BIFF2FMTCNT': case 'BIFF2FONTXTRA': break;\n\t\t\t\tcase 'BIFF2XF': case 'BIFF3XF': case 'BIFF4XF': break;\n\t\t\t\tcase 'BIFF4FMTCNT': case 'BIFF2ROW': case 'BIFF2WINDOW2': break;\n\n\t\t\t\t/* Miscellaneous */\n\t\t\t\tcase 'SCENARIO': case 'DConBin': case 'PicF': case 'DataLabExt':\n\t\t\t\tcase 'Lel': case 'BopPop': case 'BopPopCustom': case 'RealTimeData':\n\t\t\t\tcase 'Name': break;\n\t\t\t\tcase 'LHNGraph': case 'FnGroupName': case 'AddMenu': case 'LPr': break;\n\t\t\t\tcase 'ListObj': case 'ListField': break;\n\t\t\t\tcase 'RRSort': break;\n\t\t\t\tcase 'BigName': break;\n\t\t\t\tcase 'ToolbarHdr': case 'ToolbarEnd': break;\n\t\t\t\tcase 'DDEObjName': break;\n\t\t\t\tcase 'FRTArchId$': break;\n\t\t\t\tdefault: if(options.WTF) throw 'Unrecognized Record ' + R.n;\n\t\t\t}}}}\n\t\t} else blob.l += length;\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Preamble=Preamble;\n\twb.Strings = sst;\n\twb.SSF = SSF.get_table();\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb, cfb) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (DocSummaryRE.hasOwnProperty(Keys[i]) ? DSEntries : SummaryRE.hasOwnProperty(Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!(wb.Props||{}).hasOwnProperty(Keys[i])) (DocSummaryRE.hasOwnProperty(Keys[i]) ? DSEntries : SummaryRE.hasOwnProperty(Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb, options) {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj, WB;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64.decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb});\n}\nvar WorkbookP;\n\nvar _data;\nif(CompObj) parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({});\nelse {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(cfb, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb, opts) {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n0x0000: { n:\"BrtRowHdr\", f:parse_BrtRowHdr },\n0x0001: { n:\"BrtCellBlank\", f:parse_BrtCellBlank },\n0x0002: { n:\"BrtCellRk\", f:parse_BrtCellRk },\n0x0003: { n:\"BrtCellError\", f:parse_BrtCellError },\n0x0004: { n:\"BrtCellBool\", f:parse_BrtCellBool },\n0x0005: { n:\"BrtCellReal\", f:parse_BrtCellReal },\n0x0006: { n:\"BrtCellSt\", f:parse_BrtCellSt },\n0x0007: { n:\"BrtCellIsst\", f:parse_BrtCellIsst },\n0x0008: { n:\"BrtFmlaString\", f:parse_BrtFmlaString },\n0x0009: { n:\"BrtFmlaNum\", f:parse_BrtFmlaNum },\n0x000A: { n:\"BrtFmlaBool\", f:parse_BrtFmlaBool },\n0x000B: { n:\"BrtFmlaError\", f:parse_BrtFmlaError },\n0x0010: { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ },\n0x0013: { n:\"BrtSSTItem\", f:parse_RichStr },\n0x0014: { n:\"BrtPCDIMissing\" },\n0x0015: { n:\"BrtPCDINumber\" },\n0x0016: { n:\"BrtPCDIBoolean\" },\n0x0017: { n:\"BrtPCDIError\" },\n0x0018: { n:\"BrtPCDIString\" },\n0x0019: { n:\"BrtPCDIDatetime\" },\n0x001A: { n:\"BrtPCDIIndex\" },\n0x001B: { n:\"BrtPCDIAMissing\" },\n0x001C: { n:\"BrtPCDIANumber\" },\n0x001D: { n:\"BrtPCDIABoolean\" },\n0x001E: { n:\"BrtPCDIAError\" },\n0x001F: { n:\"BrtPCDIAString\" },\n0x0020: { n:\"BrtPCDIADatetime\" },\n0x0021: { n:\"BrtPCRRecord\" },\n0x0022: { n:\"BrtPCRRecordDt\" },\n0x0023: { n:\"BrtFRTBegin\" },\n0x0024: { n:\"BrtFRTEnd\" },\n0x0025: { n:\"BrtACBegin\" },\n0x0026: { n:\"BrtACEnd\" },\n0x0027: { n:\"BrtName\", f:parse_BrtName },\n0x0028: { n:\"BrtIndexRowBlock\" },\n0x002A: { n:\"BrtIndexBlock\" },\n0x002B: { n:\"BrtFont\", f:parse_BrtFont },\n0x002C: { n:\"BrtFmt\", f:parse_BrtFmt },\n0x002D: { n:\"BrtFill\", f:parse_BrtFill },\n0x002E: { n:\"BrtBorder\", f:parse_BrtBorder },\n0x002F: { n:\"BrtXF\", f:parse_BrtXF },\n0x0030: { n:\"BrtStyle\" },\n0x0031: { n:\"BrtCellMeta\" },\n0x0032: { n:\"BrtValueMeta\" },\n0x0033: { n:\"BrtMdb\" },\n0x0034: { n:\"BrtBeginFmd\" },\n0x0035: { n:\"BrtEndFmd\" },\n0x0036: { n:\"BrtBeginMdx\" },\n0x0037: { n:\"BrtEndMdx\" },\n0x0038: { n:\"BrtBeginMdxTuple\" },\n0x0039: { n:\"BrtEndMdxTuple\" },\n0x003A: { n:\"BrtMdxMbrIstr\" },\n0x003B: { n:\"BrtStr\" },\n0x003C: { n:\"BrtColInfo\", f:parse_ColInfo },\n0x003E: { n:\"BrtCellRString\" },\n0x003F: { n:\"BrtCalcChainItem$\", f:parse_BrtCalcChainItem$ },\n0x0040: { n:\"BrtDVal\" },\n0x0041: { n:\"BrtSxvcellNum\" },\n0x0042: { n:\"BrtSxvcellStr\" },\n0x0043: { n:\"BrtSxvcellBool\" },\n0x0044: { n:\"BrtSxvcellErr\" },\n0x0045: { n:\"BrtSxvcellDate\" },\n0x0046: { n:\"BrtSxvcellNil\" },\n0x0080: { n:\"BrtFileVersion\" },\n0x0081: { n:\"BrtBeginSheet\" },\n0x0082: { n:\"BrtEndSheet\" },\n0x0083: { n:\"BrtBeginBook\", f:parsenoop, p:0 },\n0x0084: { n:\"BrtEndBook\" },\n0x0085: { n:\"BrtBeginWsViews\" },\n0x0086: { n:\"BrtEndWsViews\" },\n0x0087: { n:\"BrtBeginBookViews\" },\n0x0088: { n:\"BrtEndBookViews\" },\n0x0089: { n:\"BrtBeginWsView\", f:parse_BrtBeginWsView },\n0x008A: { n:\"BrtEndWsView\" },\n0x008B: { n:\"BrtBeginCsViews\" },\n0x008C: { n:\"BrtEndCsViews\" },\n0x008D: { n:\"BrtBeginCsView\" },\n0x008E: { n:\"BrtEndCsView\" },\n0x008F: { n:\"BrtBeginBundleShs\" },\n0x0090: { n:\"BrtEndBundleShs\" },\n0x0091: { n:\"BrtBeginSheetData\" },\n0x0092: { n:\"BrtEndSheetData\" },\n0x0093: { n:\"BrtWsProp\", f:parse_BrtWsProp },\n0x0094: { n:\"BrtWsDim\", f:parse_BrtWsDim, p:16 },\n0x0097: { n:\"BrtPane\" },\n0x0098: { n:\"BrtSel\" },\n0x0099: { n:\"BrtWbProp\", f:parse_BrtWbProp },\n0x009A: { n:\"BrtWbFactoid\" },\n0x009B: { n:\"BrtFileRecover\" },\n0x009C: { n:\"BrtBundleSh\", f:parse_BrtBundleSh },\n0x009D: { n:\"BrtCalcProp\" },\n0x009E: { n:\"BrtBookView\" },\n0x009F: { n:\"BrtBeginSst\", f:parse_BrtBeginSst },\n0x00A0: { n:\"BrtEndSst\" },\n0x00A1: { n:\"BrtBeginAFilter\", f:parse_UncheckedRfX },\n0x00A2: { n:\"BrtEndAFilter\" },\n0x00A3: { n:\"BrtBeginFilterColumn\" },\n0x00A4: { n:\"BrtEndFilterColumn\" },\n0x00A5: { n:\"BrtBeginFilters\" },\n0x00A6: { n:\"BrtEndFilters\" },\n0x00A7: { n:\"BrtFilter\" },\n0x00A8: { n:\"BrtColorFilter\" },\n0x00A9: { n:\"BrtIconFilter\" },\n0x00AA: { n:\"BrtTop10Filter\" },\n0x00AB: { n:\"BrtDynamicFilter\" },\n0x00AC: { n:\"BrtBeginCustomFilters\" },\n0x00AD: { n:\"BrtEndCustomFilters\" },\n0x00AE: { n:\"BrtCustomFilter\" },\n0x00AF: { n:\"BrtAFilterDateGroupItem\" },\n0x00B0: { n:\"BrtMergeCell\", f:parse_BrtMergeCell },\n0x00B1: { n:\"BrtBeginMergeCells\" },\n0x00B2: { n:\"BrtEndMergeCells\" },\n0x00B3: { n:\"BrtBeginPivotCacheDef\" },\n0x00B4: { n:\"BrtEndPivotCacheDef\" },\n0x00B5: { n:\"BrtBeginPCDFields\" },\n0x00B6: { n:\"BrtEndPCDFields\" },\n0x00B7: { n:\"BrtBeginPCDField\" },\n0x00B8: { n:\"BrtEndPCDField\" },\n0x00B9: { n:\"BrtBeginPCDSource\" },\n0x00BA: { n:\"BrtEndPCDSource\" },\n0x00BB: { n:\"BrtBeginPCDSRange\" },\n0x00BC: { n:\"BrtEndPCDSRange\" },\n0x00BD: { n:\"BrtBeginPCDFAtbl\" },\n0x00BE: { n:\"BrtEndPCDFAtbl\" },\n0x00BF: { n:\"BrtBeginPCDIRun\" },\n0x00C0: { n:\"BrtEndPCDIRun\" },\n0x00C1: { n:\"BrtBeginPivotCacheRecords\" },\n0x00C2: { n:\"BrtEndPivotCacheRecords\" },\n0x00C3: { n:\"BrtBeginPCDHierarchies\" },\n0x00C4: { n:\"BrtEndPCDHierarchies\" },\n0x00C5: { n:\"BrtBeginPCDHierarchy\" },\n0x00C6: { n:\"BrtEndPCDHierarchy\" },\n0x00C7: { n:\"BrtBeginPCDHFieldsUsage\" },\n0x00C8: { n:\"BrtEndPCDHFieldsUsage\" },\n0x00C9: { n:\"BrtBeginExtConnection\" },\n0x00CA: { n:\"BrtEndExtConnection\" },\n0x00CB: { n:\"BrtBeginECDbProps\" },\n0x00CC: { n:\"BrtEndECDbProps\" },\n0x00CD: { n:\"BrtBeginECOlapProps\" },\n0x00CE: { n:\"BrtEndECOlapProps\" },\n0x00CF: { n:\"BrtBeginPCDSConsol\" },\n0x00D0: { n:\"BrtEndPCDSConsol\" },\n0x00D1: { n:\"BrtBeginPCDSCPages\" },\n0x00D2: { n:\"BrtEndPCDSCPages\" },\n0x00D3: { n:\"BrtBeginPCDSCPage\" },\n0x00D4: { n:\"BrtEndPCDSCPage\" },\n0x00D5: { n:\"BrtBeginPCDSCPItem\" },\n0x00D6: { n:\"BrtEndPCDSCPItem\" },\n0x00D7: { n:\"BrtBeginPCDSCSets\" },\n0x00D8: { n:\"BrtEndPCDSCSets\" },\n0x00D9: { n:\"BrtBeginPCDSCSet\" },\n0x00DA: { n:\"BrtEndPCDSCSet\" },\n0x00DB: { n:\"BrtBeginPCDFGroup\" },\n0x00DC: { n:\"BrtEndPCDFGroup\" },\n0x00DD: { n:\"BrtBeginPCDFGItems\" },\n0x00DE: { n:\"BrtEndPCDFGItems\" },\n0x00DF: { n:\"BrtBeginPCDFGRange\" },\n0x00E0: { n:\"BrtEndPCDFGRange\" },\n0x00E1: { n:\"BrtBeginPCDFGDiscrete\" },\n0x00E2: { n:\"BrtEndPCDFGDiscrete\" },\n0x00E3: { n:\"BrtBeginPCDSDTupleCache\" },\n0x00E4: { n:\"BrtEndPCDSDTupleCache\" },\n0x00E5: { n:\"BrtBeginPCDSDTCEntries\" },\n0x00E6: { n:\"BrtEndPCDSDTCEntries\" },\n0x00E7: { n:\"BrtBeginPCDSDTCEMembers\" },\n0x00E8: { n:\"BrtEndPCDSDTCEMembers\" },\n0x00E9: { n:\"BrtBeginPCDSDTCEMember\" },\n0x00EA: { n:\"BrtEndPCDSDTCEMember\" },\n0x00EB: { n:\"BrtBeginPCDSDTCQueries\" },\n0x00EC: { n:\"BrtEndPCDSDTCQueries\" },\n0x00ED: { n:\"BrtBeginPCDSDTCQuery\" },\n0x00EE: { n:\"BrtEndPCDSDTCQuery\" },\n0x00EF: { n:\"BrtBeginPCDSDTCSets\" },\n0x00F0: { n:\"BrtEndPCDSDTCSets\" },\n0x00F1: { n:\"BrtBeginPCDSDTCSet\" },\n0x00F2: { n:\"BrtEndPCDSDTCSet\" },\n0x00F3: { n:\"BrtBeginPCDCalcItems\" },\n0x00F4: { n:\"BrtEndPCDCalcItems\" },\n0x00F5: { n:\"BrtBeginPCDCalcItem\" },\n0x00F6: { n:\"BrtEndPCDCalcItem\" },\n0x00F7: { n:\"BrtBeginPRule\" },\n0x00F8: { n:\"BrtEndPRule\" },\n0x00F9: { n:\"BrtBeginPRFilters\" },\n0x00FA: { n:\"BrtEndPRFilters\" },\n0x00FB: { n:\"BrtBeginPRFilter\" },\n0x00FC: { n:\"BrtEndPRFilter\" },\n0x00FD: { n:\"BrtBeginPNames\" },\n0x00FE: { n:\"BrtEndPNames\" },\n0x00FF: { n:\"BrtBeginPName\" },\n0x0100: { n:\"BrtEndPName\" },\n0x0101: { n:\"BrtBeginPNPairs\" },\n0x0102: { n:\"BrtEndPNPairs\" },\n0x0103: { n:\"BrtBeginPNPair\" },\n0x0104: { n:\"BrtEndPNPair\" },\n0x0105: { n:\"BrtBeginECWebProps\" },\n0x0106: { n:\"BrtEndECWebProps\" },\n0x0107: { n:\"BrtBeginEcWpTables\" },\n0x0108: { n:\"BrtEndECWPTables\" },\n0x0109: { n:\"BrtBeginECParams\" },\n0x010A: { n:\"BrtEndECParams\" },\n0x010B: { n:\"BrtBeginECParam\" },\n0x010C: { n:\"BrtEndECParam\" },\n0x010D: { n:\"BrtBeginPCDKPIs\" },\n0x010E: { n:\"BrtEndPCDKPIs\" },\n0x010F: { n:\"BrtBeginPCDKPI\" },\n0x0110: { n:\"BrtEndPCDKPI\" },\n0x0111: { n:\"BrtBeginDims\" },\n0x0112: { n:\"BrtEndDims\" },\n0x0113: { n:\"BrtBeginDim\" },\n0x0114: { n:\"BrtEndDim\" },\n0x0115: { n:\"BrtIndexPartEnd\" },\n0x0116: { n:\"BrtBeginStyleSheet\" },\n0x0117: { n:\"BrtEndStyleSheet\" },\n0x0118: { n:\"BrtBeginSXView\" },\n0x0119: { n:\"BrtEndSXVI\" },\n0x011A: { n:\"BrtBeginSXVI\" },\n0x011B: { n:\"BrtBeginSXVIs\" },\n0x011C: { n:\"BrtEndSXVIs\" },\n0x011D: { n:\"BrtBeginSXVD\" },\n0x011E: { n:\"BrtEndSXVD\" },\n0x011F: { n:\"BrtBeginSXVDs\" },\n0x0120: { n:\"BrtEndSXVDs\" },\n0x0121: { n:\"BrtBeginSXPI\" },\n0x0122: { n:\"BrtEndSXPI\" },\n0x0123: { n:\"BrtBeginSXPIs\" },\n0x0124: { n:\"BrtEndSXPIs\" },\n0x0125: { n:\"BrtBeginSXDI\" },\n0x0126: { n:\"BrtEndSXDI\" },\n0x0127: { n:\"BrtBeginSXDIs\" },\n0x0128: { n:\"BrtEndSXDIs\" },\n0x0129: { n:\"BrtBeginSXLI\" },\n0x012A: { n:\"BrtEndSXLI\" },\n0x012B: { n:\"BrtBeginSXLIRws\" },\n0x012C: { n:\"BrtEndSXLIRws\" },\n0x012D: { n:\"BrtBeginSXLICols\" },\n0x012E: { n:\"BrtEndSXLICols\" },\n0x012F: { n:\"BrtBeginSXFormat\" },\n0x0130: { n:\"BrtEndSXFormat\" },\n0x0131: { n:\"BrtBeginSXFormats\" },\n0x0132: { n:\"BrtEndSxFormats\" },\n0x0133: { n:\"BrtBeginSxSelect\" },\n0x0134: { n:\"BrtEndSxSelect\" },\n0x0135: { n:\"BrtBeginISXVDRws\" },\n0x0136: { n:\"BrtEndISXVDRws\" },\n0x0137: { n:\"BrtBeginISXVDCols\" },\n0x0138: { n:\"BrtEndISXVDCols\" },\n0x0139: { n:\"BrtEndSXLocation\" },\n0x013A: { n:\"BrtBeginSXLocation\" },\n0x013B: { n:\"BrtEndSXView\" },\n0x013C: { n:\"BrtBeginSXTHs\" },\n0x013D: { n:\"BrtEndSXTHs\" },\n0x013E: { n:\"BrtBeginSXTH\" },\n0x013F: { n:\"BrtEndSXTH\" },\n0x0140: { n:\"BrtBeginISXTHRws\" },\n0x0141: { n:\"BrtEndISXTHRws\" },\n0x0142: { n:\"BrtBeginISXTHCols\" },\n0x0143: { n:\"BrtEndISXTHCols\" },\n0x0144: { n:\"BrtBeginSXTDMPS\" },\n0x0145: { n:\"BrtEndSXTDMPs\" },\n0x0146: { n:\"BrtBeginSXTDMP\" },\n0x0147: { n:\"BrtEndSXTDMP\" },\n0x0148: { n:\"BrtBeginSXTHItems\" },\n0x0149: { n:\"BrtEndSXTHItems\" },\n0x014A: { n:\"BrtBeginSXTHItem\" },\n0x014B: { n:\"BrtEndSXTHItem\" },\n0x014C: { n:\"BrtBeginMetadata\" },\n0x014D: { n:\"BrtEndMetadata\" },\n0x014E: { n:\"BrtBeginEsmdtinfo\" },\n0x014F: { n:\"BrtMdtinfo\" },\n0x0150: { n:\"BrtEndEsmdtinfo\" },\n0x0151: { n:\"BrtBeginEsmdb\" },\n0x0152: { n:\"BrtEndEsmdb\" },\n0x0153: { n:\"BrtBeginEsfmd\" },\n0x0154: { n:\"BrtEndEsfmd\" },\n0x0155: { n:\"BrtBeginSingleCells\" },\n0x0156: { n:\"BrtEndSingleCells\" },\n0x0157: { n:\"BrtBeginList\" },\n0x0158: { n:\"BrtEndList\" },\n0x0159: { n:\"BrtBeginListCols\" },\n0x015A: { n:\"BrtEndListCols\" },\n0x015B: { n:\"BrtBeginListCol\" },\n0x015C: { n:\"BrtEndListCol\" },\n0x015D: { n:\"BrtBeginListXmlCPr\" },\n0x015E: { n:\"BrtEndListXmlCPr\" },\n0x015F: { n:\"BrtListCCFmla\" },\n0x0160: { n:\"BrtListTrFmla\" },\n0x0161: { n:\"BrtBeginExternals\" },\n0x0162: { n:\"BrtEndExternals\" },\n0x0163: { n:\"BrtSupBookSrc\", f:parse_RelID},\n0x0165: { n:\"BrtSupSelf\" },\n0x0166: { n:\"BrtSupSame\" },\n0x0167: { n:\"BrtSupTabs\" },\n0x0168: { n:\"BrtBeginSupBook\" },\n0x0169: { n:\"BrtPlaceholderName\" },\n0x016A: { n:\"BrtExternSheet\", f:parse_ExternSheet },\n0x016B: { n:\"BrtExternTableStart\" },\n0x016C: { n:\"BrtExternTableEnd\" },\n0x016E: { n:\"BrtExternRowHdr\" },\n0x016F: { n:\"BrtExternCellBlank\" },\n0x0170: { n:\"BrtExternCellReal\" },\n0x0171: { n:\"BrtExternCellBool\" },\n0x0172: { n:\"BrtExternCellError\" },\n0x0173: { n:\"BrtExternCellString\" },\n0x0174: { n:\"BrtBeginEsmdx\" },\n0x0175: { n:\"BrtEndEsmdx\" },\n0x0176: { n:\"BrtBeginMdxSet\" },\n0x0177: { n:\"BrtEndMdxSet\" },\n0x0178: { n:\"BrtBeginMdxMbrProp\" },\n0x0179: { n:\"BrtEndMdxMbrProp\" },\n0x017A: { n:\"BrtBeginMdxKPI\" },\n0x017B: { n:\"BrtEndMdxKPI\" },\n0x017C: { n:\"BrtBeginEsstr\" },\n0x017D: { n:\"BrtEndEsstr\" },\n0x017E: { n:\"BrtBeginPRFItem\" },\n0x017F: { n:\"BrtEndPRFItem\" },\n0x0180: { n:\"BrtBeginPivotCacheIDs\" },\n0x0181: { n:\"BrtEndPivotCacheIDs\" },\n0x0182: { n:\"BrtBeginPivotCacheID\" },\n0x0183: { n:\"BrtEndPivotCacheID\" },\n0x0184: { n:\"BrtBeginISXVIs\" },\n0x0185: { n:\"BrtEndISXVIs\" },\n0x0186: { n:\"BrtBeginColInfos\" },\n0x0187: { n:\"BrtEndColInfos\" },\n0x0188: { n:\"BrtBeginRwBrk\" },\n0x0189: { n:\"BrtEndRwBrk\" },\n0x018A: { n:\"BrtBeginColBrk\" },\n0x018B: { n:\"BrtEndColBrk\" },\n0x018C: { n:\"BrtBrk\" },\n0x018D: { n:\"BrtUserBookView\" },\n0x018E: { n:\"BrtInfo\" },\n0x018F: { n:\"BrtCUsr\" },\n0x0190: { n:\"BrtUsr\" },\n0x0191: { n:\"BrtBeginUsers\" },\n0x0193: { n:\"BrtEOF\" },\n0x0194: { n:\"BrtUCR\" },\n0x0195: { n:\"BrtRRInsDel\" },\n0x0196: { n:\"BrtRREndInsDel\" },\n0x0197: { n:\"BrtRRMove\" },\n0x0198: { n:\"BrtRREndMove\" },\n0x0199: { n:\"BrtRRChgCell\" },\n0x019A: { n:\"BrtRREndChgCell\" },\n0x019B: { n:\"BrtRRHeader\" },\n0x019C: { n:\"BrtRRUserView\" },\n0x019D: { n:\"BrtRRRenSheet\" },\n0x019E: { n:\"BrtRRInsertSh\" },\n0x019F: { n:\"BrtRRDefName\" },\n0x01A0: { n:\"BrtRRNote\" },\n0x01A1: { n:\"BrtRRConflict\" },\n0x01A2: { n:\"BrtRRTQSIF\" },\n0x01A3: { n:\"BrtRRFormat\" },\n0x01A4: { n:\"BrtRREndFormat\" },\n0x01A5: { n:\"BrtRRAutoFmt\" },\n0x01A6: { n:\"BrtBeginUserShViews\" },\n0x01A7: { n:\"BrtBeginUserShView\" },\n0x01A8: { n:\"BrtEndUserShView\" },\n0x01A9: { n:\"BrtEndUserShViews\" },\n0x01AA: { n:\"BrtArrFmla\", f:parse_BrtArrFmla },\n0x01AB: { n:\"BrtShrFmla\", f:parse_BrtShrFmla },\n0x01AC: { n:\"BrtTable\" },\n0x01AD: { n:\"BrtBeginExtConnections\" },\n0x01AE: { n:\"BrtEndExtConnections\" },\n0x01AF: { n:\"BrtBeginPCDCalcMems\" },\n0x01B0: { n:\"BrtEndPCDCalcMems\" },\n0x01B1: { n:\"BrtBeginPCDCalcMem\" },\n0x01B2: { n:\"BrtEndPCDCalcMem\" },\n0x01B3: { n:\"BrtBeginPCDHGLevels\" },\n0x01B4: { n:\"BrtEndPCDHGLevels\" },\n0x01B5: { n:\"BrtBeginPCDHGLevel\" },\n0x01B6: { n:\"BrtEndPCDHGLevel\" },\n0x01B7: { n:\"BrtBeginPCDHGLGroups\" },\n0x01B8: { n:\"BrtEndPCDHGLGroups\" },\n0x01B9: { n:\"BrtBeginPCDHGLGroup\" },\n0x01BA: { n:\"BrtEndPCDHGLGroup\" },\n0x01BB: { n:\"BrtBeginPCDHGLGMembers\" },\n0x01BC: { n:\"BrtEndPCDHGLGMembers\" },\n0x01BD: { n:\"BrtBeginPCDHGLGMember\" },\n0x01BE: { n:\"BrtEndPCDHGLGMember\" },\n0x01BF: { n:\"BrtBeginQSI\" },\n0x01C0: { n:\"BrtEndQSI\" },\n0x01C1: { n:\"BrtBeginQSIR\" },\n0x01C2: { n:\"BrtEndQSIR\" },\n0x01C3: { n:\"BrtBeginDeletedNames\" },\n0x01C4: { n:\"BrtEndDeletedNames\" },\n0x01C5: { n:\"BrtBeginDeletedName\" },\n0x01C6: { n:\"BrtEndDeletedName\" },\n0x01C7: { n:\"BrtBeginQSIFs\" },\n0x01C8: { n:\"BrtEndQSIFs\" },\n0x01C9: { n:\"BrtBeginQSIF\" },\n0x01CA: { n:\"BrtEndQSIF\" },\n0x01CB: { n:\"BrtBeginAutoSortScope\" },\n0x01CC: { n:\"BrtEndAutoSortScope\" },\n0x01CD: { n:\"BrtBeginConditionalFormatting\" },\n0x01CE: { n:\"BrtEndConditionalFormatting\" },\n0x01CF: { n:\"BrtBeginCFRule\" },\n0x01D0: { n:\"BrtEndCFRule\" },\n0x01D1: { n:\"BrtBeginIconSet\" },\n0x01D2: { n:\"BrtEndIconSet\" },\n0x01D3: { n:\"BrtBeginDatabar\" },\n0x01D4: { n:\"BrtEndDatabar\" },\n0x01D5: { n:\"BrtBeginColorScale\" },\n0x01D6: { n:\"BrtEndColorScale\" },\n0x01D7: { n:\"BrtCFVO\" },\n0x01D8: { n:\"BrtExternValueMeta\" },\n0x01D9: { n:\"BrtBeginColorPalette\" },\n0x01DA: { n:\"BrtEndColorPalette\" },\n0x01DB: { n:\"BrtIndexedColor\" },\n0x01DC: { n:\"BrtMargins\", f:parse_BrtMargins },\n0x01DD: { n:\"BrtPrintOptions\" },\n0x01DE: { n:\"BrtPageSetup\" },\n0x01DF: { n:\"BrtBeginHeaderFooter\" },\n0x01E0: { n:\"BrtEndHeaderFooter\" },\n0x01E1: { n:\"BrtBeginSXCrtFormat\" },\n0x01E2: { n:\"BrtEndSXCrtFormat\" },\n0x01E3: { n:\"BrtBeginSXCrtFormats\" },\n0x01E4: { n:\"BrtEndSXCrtFormats\" },\n0x01E5: { n:\"BrtWsFmtInfo\", f:parse_BrtWsFmtInfo },\n0x01E6: { n:\"BrtBeginMgs\" },\n0x01E7: { n:\"BrtEndMGs\" },\n0x01E8: { n:\"BrtBeginMGMaps\" },\n0x01E9: { n:\"BrtEndMGMaps\" },\n0x01EA: { n:\"BrtBeginMG\" },\n0x01EB: { n:\"BrtEndMG\" },\n0x01EC: { n:\"BrtBeginMap\" },\n0x01ED: { n:\"BrtEndMap\" },\n0x01EE: { n:\"BrtHLink\", f:parse_BrtHLink },\n0x01EF: { n:\"BrtBeginDCon\" },\n0x01F0: { n:\"BrtEndDCon\" },\n0x01F1: { n:\"BrtBeginDRefs\" },\n0x01F2: { n:\"BrtEndDRefs\" },\n0x01F3: { n:\"BrtDRef\" },\n0x01F4: { n:\"BrtBeginScenMan\" },\n0x01F5: { n:\"BrtEndScenMan\" },\n0x01F6: { n:\"BrtBeginSct\" },\n0x01F7: { n:\"BrtEndSct\" },\n0x01F8: { n:\"BrtSlc\" },\n0x01F9: { n:\"BrtBeginDXFs\" },\n0x01FA: { n:\"BrtEndDXFs\" },\n0x01FB: { n:\"BrtDXF\" },\n0x01FC: { n:\"BrtBeginTableStyles\" },\n0x01FD: { n:\"BrtEndTableStyles\" },\n0x01FE: { n:\"BrtBeginTableStyle\" },\n0x01FF: { n:\"BrtEndTableStyle\" },\n0x0200: { n:\"BrtTableStyleElement\" },\n0x0201: { n:\"BrtTableStyleClient\" },\n0x0202: { n:\"BrtBeginVolDeps\" },\n0x0203: { n:\"BrtEndVolDeps\" },\n0x0204: { n:\"BrtBeginVolType\" },\n0x0205: { n:\"BrtEndVolType\" },\n0x0206: { n:\"BrtBeginVolMain\" },\n0x0207: { n:\"BrtEndVolMain\" },\n0x0208: { n:\"BrtBeginVolTopic\" },\n0x0209: { n:\"BrtEndVolTopic\" },\n0x020A: { n:\"BrtVolSubtopic\" },\n0x020B: { n:\"BrtVolRef\" },\n0x020C: { n:\"BrtVolNum\" },\n0x020D: { n:\"BrtVolErr\" },\n0x020E: { n:\"BrtVolStr\" },\n0x020F: { n:\"BrtVolBool\" },\n0x0210: { n:\"BrtBeginCalcChain$\" },\n0x0211: { n:\"BrtEndCalcChain$\" },\n0x0212: { n:\"BrtBeginSortState\" },\n0x0213: { n:\"BrtEndSortState\" },\n0x0214: { n:\"BrtBeginSortCond\" },\n0x0215: { n:\"BrtEndSortCond\" },\n0x0216: { n:\"BrtBookProtection\" },\n0x0217: { n:\"BrtSheetProtection\" },\n0x0218: { n:\"BrtRangeProtection\" },\n0x0219: { n:\"BrtPhoneticInfo\" },\n0x021A: { n:\"BrtBeginECTxtWiz\" },\n0x021B: { n:\"BrtEndECTxtWiz\" },\n0x021C: { n:\"BrtBeginECTWFldInfoLst\" },\n0x021D: { n:\"BrtEndECTWFldInfoLst\" },\n0x021E: { n:\"BrtBeginECTwFldInfo\" },\n0x0224: { n:\"BrtFileSharing\" },\n0x0225: { n:\"BrtOleSize\" },\n0x0226: { n:\"BrtDrawing\", f:parse_RelID },\n0x0227: { n:\"BrtLegacyDrawing\" },\n0x0228: { n:\"BrtLegacyDrawingHF\" },\n0x0229: { n:\"BrtWebOpt\" },\n0x022A: { n:\"BrtBeginWebPubItems\" },\n0x022B: { n:\"BrtEndWebPubItems\" },\n0x022C: { n:\"BrtBeginWebPubItem\" },\n0x022D: { n:\"BrtEndWebPubItem\" },\n0x022E: { n:\"BrtBeginSXCondFmt\" },\n0x022F: { n:\"BrtEndSXCondFmt\" },\n0x0230: { n:\"BrtBeginSXCondFmts\" },\n0x0231: { n:\"BrtEndSXCondFmts\" },\n0x0232: { n:\"BrtBkHim\" },\n0x0234: { n:\"BrtColor\" },\n0x0235: { n:\"BrtBeginIndexedColors\" },\n0x0236: { n:\"BrtEndIndexedColors\" },\n0x0239: { n:\"BrtBeginMRUColors\" },\n0x023A: { n:\"BrtEndMRUColors\" },\n0x023C: { n:\"BrtMRUColor\" },\n0x023D: { n:\"BrtBeginDVals\" },\n0x023E: { n:\"BrtEndDVals\" },\n0x0241: { n:\"BrtSupNameStart\" },\n0x0242: { n:\"BrtSupNameValueStart\" },\n0x0243: { n:\"BrtSupNameValueEnd\" },\n0x0244: { n:\"BrtSupNameNum\" },\n0x0245: { n:\"BrtSupNameErr\" },\n0x0246: { n:\"BrtSupNameSt\" },\n0x0247: { n:\"BrtSupNameNil\" },\n0x0248: { n:\"BrtSupNameBool\" },\n0x0249: { n:\"BrtSupNameFmla\" },\n0x024A: { n:\"BrtSupNameBits\" },\n0x024B: { n:\"BrtSupNameEnd\" },\n0x024C: { n:\"BrtEndSupBook\" },\n0x024D: { n:\"BrtCellSmartTagProperty\" },\n0x024E: { n:\"BrtBeginCellSmartTag\" },\n0x024F: { n:\"BrtEndCellSmartTag\" },\n0x0250: { n:\"BrtBeginCellSmartTags\" },\n0x0251: { n:\"BrtEndCellSmartTags\" },\n0x0252: { n:\"BrtBeginSmartTags\" },\n0x0253: { n:\"BrtEndSmartTags\" },\n0x0254: { n:\"BrtSmartTagType\" },\n0x0255: { n:\"BrtBeginSmartTagTypes\" },\n0x0256: { n:\"BrtEndSmartTagTypes\" },\n0x0257: { n:\"BrtBeginSXFilters\" },\n0x0258: { n:\"BrtEndSXFilters\" },\n0x0259: { n:\"BrtBeginSXFILTER\" },\n0x025A: { n:\"BrtEndSXFilter\" },\n0x025B: { n:\"BrtBeginFills\" },\n0x025C: { n:\"BrtEndFills\" },\n0x025D: { n:\"BrtBeginCellWatches\" },\n0x025E: { n:\"BrtEndCellWatches\" },\n0x025F: { n:\"BrtCellWatch\" },\n0x0260: { n:\"BrtBeginCRErrs\" },\n0x0261: { n:\"BrtEndCRErrs\" },\n0x0262: { n:\"BrtCrashRecErr\" },\n0x0263: { n:\"BrtBeginFonts\" },\n0x0264: { n:\"BrtEndFonts\" },\n0x0265: { n:\"BrtBeginBorders\" },\n0x0266: { n:\"BrtEndBorders\" },\n0x0267: { n:\"BrtBeginFmts\" },\n0x0268: { n:\"BrtEndFmts\" },\n0x0269: { n:\"BrtBeginCellXFs\" },\n0x026A: { n:\"BrtEndCellXFs\" },\n0x026B: { n:\"BrtBeginStyles\" },\n0x026C: { n:\"BrtEndStyles\" },\n0x0271: { n:\"BrtBigName\" },\n0x0272: { n:\"BrtBeginCellStyleXFs\" },\n0x0273: { n:\"BrtEndCellStyleXFs\" },\n0x0274: { n:\"BrtBeginComments\" },\n0x0275: { n:\"BrtEndComments\" },\n0x0276: { n:\"BrtBeginCommentAuthors\" },\n0x0277: { n:\"BrtEndCommentAuthors\" },\n0x0278: { n:\"BrtCommentAuthor\", f:parse_BrtCommentAuthor },\n0x0279: { n:\"BrtBeginCommentList\" },\n0x027A: { n:\"BrtEndCommentList\" },\n0x027B: { n:\"BrtBeginComment\", f:parse_BrtBeginComment},\n0x027C: { n:\"BrtEndComment\" },\n0x027D: { n:\"BrtCommentText\", f:parse_BrtCommentText },\n0x027E: { n:\"BrtBeginOleObjects\" },\n0x027F: { n:\"BrtOleObject\" },\n0x0280: { n:\"BrtEndOleObjects\" },\n0x0281: { n:\"BrtBeginSxrules\" },\n0x0282: { n:\"BrtEndSxRules\" },\n0x0283: { n:\"BrtBeginActiveXControls\" },\n0x0284: { n:\"BrtActiveX\" },\n0x0285: { n:\"BrtEndActiveXControls\" },\n0x0286: { n:\"BrtBeginPCDSDTCEMembersSortBy\" },\n0x0288: { n:\"BrtBeginCellIgnoreECs\" },\n0x0289: { n:\"BrtCellIgnoreEC\" },\n0x028A: { n:\"BrtEndCellIgnoreECs\" },\n0x028B: { n:\"BrtCsProp\", f:parse_BrtCsProp },\n0x028C: { n:\"BrtCsPageSetup\" },\n0x028D: { n:\"BrtBeginUserCsViews\" },\n0x028E: { n:\"BrtEndUserCsViews\" },\n0x028F: { n:\"BrtBeginUserCsView\" },\n0x0290: { n:\"BrtEndUserCsView\" },\n0x0291: { n:\"BrtBeginPcdSFCIEntries\" },\n0x0292: { n:\"BrtEndPCDSFCIEntries\" },\n0x0293: { n:\"BrtPCDSFCIEntry\" },\n0x0294: { n:\"BrtBeginListParts\" },\n0x0295: { n:\"BrtListPart\" },\n0x0296: { n:\"BrtEndListParts\" },\n0x0297: { n:\"BrtSheetCalcProp\" },\n0x0298: { n:\"BrtBeginFnGroup\" },\n0x0299: { n:\"BrtFnGroup\" },\n0x029A: { n:\"BrtEndFnGroup\" },\n0x029B: { n:\"BrtSupAddin\" },\n0x029C: { n:\"BrtSXTDMPOrder\" },\n0x029D: { n:\"BrtCsProtection\" },\n0x029F: { n:\"BrtBeginWsSortMap\" },\n0x02A0: { n:\"BrtEndWsSortMap\" },\n0x02A1: { n:\"BrtBeginRRSort\" },\n0x02A2: { n:\"BrtEndRRSort\" },\n0x02A3: { n:\"BrtRRSortItem\" },\n0x02A4: { n:\"BrtFileSharingIso\" },\n0x02A5: { n:\"BrtBookProtectionIso\" },\n0x02A6: { n:\"BrtSheetProtectionIso\" },\n0x02A7: { n:\"BrtCsProtectionIso\" },\n0x02A8: { n:\"BrtRangeProtectionIso\" },\n0x0400: { n:\"BrtRwDescent\" },\n0x0401: { n:\"BrtKnownFonts\" },\n0x0402: { n:\"BrtBeginSXTupleSet\" },\n0x0403: { n:\"BrtEndSXTupleSet\" },\n0x0404: { n:\"BrtBeginSXTupleSetHeader\" },\n0x0405: { n:\"BrtEndSXTupleSetHeader\" },\n0x0406: { n:\"BrtSXTupleSetHeaderItem\" },\n0x0407: { n:\"BrtBeginSXTupleSetData\" },\n0x0408: { n:\"BrtEndSXTupleSetData\" },\n0x0409: { n:\"BrtBeginSXTupleSetRow\" },\n0x040A: { n:\"BrtEndSXTupleSetRow\" },\n0x040B: { n:\"BrtSXTupleSetRowItem\" },\n0x040C: { n:\"BrtNameExt\" },\n0x040D: { n:\"BrtPCDH14\" },\n0x040E: { n:\"BrtBeginPCDCalcMem14\" },\n0x040F: { n:\"BrtEndPCDCalcMem14\" },\n0x0410: { n:\"BrtSXTH14\" },\n0x0411: { n:\"BrtBeginSparklineGroup\" },\n0x0412: { n:\"BrtEndSparklineGroup\" },\n0x0413: { n:\"BrtSparkline\" },\n0x0414: { n:\"BrtSXDI14\" },\n0x0415: { n:\"BrtWsFmtInfoEx14\" },\n0x0416: { n:\"BrtBeginConditionalFormatting14\" },\n0x0417: { n:\"BrtEndConditionalFormatting14\" },\n0x0418: { n:\"BrtBeginCFRule14\" },\n0x0419: { n:\"BrtEndCFRule14\" },\n0x041A: { n:\"BrtCFVO14\" },\n0x041B: { n:\"BrtBeginDatabar14\" },\n0x041C: { n:\"BrtBeginIconSet14\" },\n0x041D: { n:\"BrtDVal14\" },\n0x041E: { n:\"BrtBeginDVals14\" },\n0x041F: { n:\"BrtColor14\" },\n0x0420: { n:\"BrtBeginSparklines\" },\n0x0421: { n:\"BrtEndSparklines\" },\n0x0422: { n:\"BrtBeginSparklineGroups\" },\n0x0423: { n:\"BrtEndSparklineGroups\" },\n0x0425: { n:\"BrtSXVD14\" },\n0x0426: { n:\"BrtBeginSXView14\" },\n0x0427: { n:\"BrtEndSXView14\" },\n0x0428: { n:\"BrtBeginSXView16\" },\n0x0429: { n:\"BrtEndSXView16\" },\n0x042A: { n:\"BrtBeginPCD14\" },\n0x042B: { n:\"BrtEndPCD14\" },\n0x042C: { n:\"BrtBeginExtConn14\" },\n0x042D: { n:\"BrtEndExtConn14\" },\n0x042E: { n:\"BrtBeginSlicerCacheIDs\" },\n0x042F: { n:\"BrtEndSlicerCacheIDs\" },\n0x0430: { n:\"BrtBeginSlicerCacheID\" },\n0x0431: { n:\"BrtEndSlicerCacheID\" },\n0x0433: { n:\"BrtBeginSlicerCache\" },\n0x0434: { n:\"BrtEndSlicerCache\" },\n0x0435: { n:\"BrtBeginSlicerCacheDef\" },\n0x0436: { n:\"BrtEndSlicerCacheDef\" },\n0x0437: { n:\"BrtBeginSlicersEx\" },\n0x0438: { n:\"BrtEndSlicersEx\" },\n0x0439: { n:\"BrtBeginSlicerEx\" },\n0x043A: { n:\"BrtEndSlicerEx\" },\n0x043B: { n:\"BrtBeginSlicer\" },\n0x043C: { n:\"BrtEndSlicer\" },\n0x043D: { n:\"BrtSlicerCachePivotTables\" },\n0x043E: { n:\"BrtBeginSlicerCacheOlapImpl\" },\n0x043F: { n:\"BrtEndSlicerCacheOlapImpl\" },\n0x0440: { n:\"BrtBeginSlicerCacheLevelsData\" },\n0x0441: { n:\"BrtEndSlicerCacheLevelsData\" },\n0x0442: { n:\"BrtBeginSlicerCacheLevelData\" },\n0x0443: { n:\"BrtEndSlicerCacheLevelData\" },\n0x0444: { n:\"BrtBeginSlicerCacheSiRanges\" },\n0x0445: { n:\"BrtEndSlicerCacheSiRanges\" },\n0x0446: { n:\"BrtBeginSlicerCacheSiRange\" },\n0x0447: { n:\"BrtEndSlicerCacheSiRange\" },\n0x0448: { n:\"BrtSlicerCacheOlapItem\" },\n0x0449: { n:\"BrtBeginSlicerCacheSelections\" },\n0x044A: { n:\"BrtSlicerCacheSelection\" },\n0x044B: { n:\"BrtEndSlicerCacheSelections\" },\n0x044C: { n:\"BrtBeginSlicerCacheNative\" },\n0x044D: { n:\"BrtEndSlicerCacheNative\" },\n0x044E: { n:\"BrtSlicerCacheNativeItem\" },\n0x044F: { n:\"BrtRangeProtection14\" },\n0x0450: { n:\"BrtRangeProtectionIso14\" },\n0x0451: { n:\"BrtCellIgnoreEC14\" },\n0x0457: { n:\"BrtList14\" },\n0x0458: { n:\"BrtCFIcon\" },\n0x0459: { n:\"BrtBeginSlicerCachesPivotCacheIDs\" },\n0x045A: { n:\"BrtEndSlicerCachesPivotCacheIDs\" },\n0x045B: { n:\"BrtBeginSlicers\" },\n0x045C: { n:\"BrtEndSlicers\" },\n0x045D: { n:\"BrtWbProp14\" },\n0x045E: { n:\"BrtBeginSXEdit\" },\n0x045F: { n:\"BrtEndSXEdit\" },\n0x0460: { n:\"BrtBeginSXEdits\" },\n0x0461: { n:\"BrtEndSXEdits\" },\n0x0462: { n:\"BrtBeginSXChange\" },\n0x0463: { n:\"BrtEndSXChange\" },\n0x0464: { n:\"BrtBeginSXChanges\" },\n0x0465: { n:\"BrtEndSXChanges\" },\n0x0466: { n:\"BrtSXTupleItems\" },\n0x0468: { n:\"BrtBeginSlicerStyle\" },\n0x0469: { n:\"BrtEndSlicerStyle\" },\n0x046A: { n:\"BrtSlicerStyleElement\" },\n0x046B: { n:\"BrtBeginStyleSheetExt14\" },\n0x046C: { n:\"BrtEndStyleSheetExt14\" },\n0x046D: { n:\"BrtBeginSlicerCachesPivotCacheID\" },\n0x046E: { n:\"BrtEndSlicerCachesPivotCacheID\" },\n0x046F: { n:\"BrtBeginConditionalFormattings\" },\n0x0470: { n:\"BrtEndConditionalFormattings\" },\n0x0471: { n:\"BrtBeginPCDCalcMemExt\" },\n0x0472: { n:\"BrtEndPCDCalcMemExt\" },\n0x0473: { n:\"BrtBeginPCDCalcMemsExt\" },\n0x0474: { n:\"BrtEndPCDCalcMemsExt\" },\n0x0475: { n:\"BrtPCDField14\" },\n0x0476: { n:\"BrtBeginSlicerStyles\" },\n0x0477: { n:\"BrtEndSlicerStyles\" },\n0x0478: { n:\"BrtBeginSlicerStyleElements\" },\n0x0479: { n:\"BrtEndSlicerStyleElements\" },\n0x047A: { n:\"BrtCFRuleExt\" },\n0x047B: { n:\"BrtBeginSXCondFmt14\" },\n0x047C: { n:\"BrtEndSXCondFmt14\" },\n0x047D: { n:\"BrtBeginSXCondFmts14\" },\n0x047E: { n:\"BrtEndSXCondFmts14\" },\n0x0480: { n:\"BrtBeginSortCond14\" },\n0x0481: { n:\"BrtEndSortCond14\" },\n0x0482: { n:\"BrtEndDVals14\" },\n0x0483: { n:\"BrtEndIconSet14\" },\n0x0484: { n:\"BrtEndDatabar14\" },\n0x0485: { n:\"BrtBeginColorScale14\" },\n0x0486: { n:\"BrtEndColorScale14\" },\n0x0487: { n:\"BrtBeginSxrules14\" },\n0x0488: { n:\"BrtEndSxrules14\" },\n0x0489: { n:\"BrtBeginPRule14\" },\n0x048A: { n:\"BrtEndPRule14\" },\n0x048B: { n:\"BrtBeginPRFilters14\" },\n0x048C: { n:\"BrtEndPRFilters14\" },\n0x048D: { n:\"BrtBeginPRFilter14\" },\n0x048E: { n:\"BrtEndPRFilter14\" },\n0x048F: { n:\"BrtBeginPRFItem14\" },\n0x0490: { n:\"BrtEndPRFItem14\" },\n0x0491: { n:\"BrtBeginCellIgnoreECs14\" },\n0x0492: { n:\"BrtEndCellIgnoreECs14\" },\n0x0493: { n:\"BrtDxf14\" },\n0x0494: { n:\"BrtBeginDxF14s\" },\n0x0495: { n:\"BrtEndDxf14s\" },\n0x0499: { n:\"BrtFilter14\" },\n0x049A: { n:\"BrtBeginCustomFilters14\" },\n0x049C: { n:\"BrtCustomFilter14\" },\n0x049D: { n:\"BrtIconFilter14\" },\n0x049E: { n:\"BrtPivotCacheConnectionName\" },\n0x0800: { n:\"BrtBeginDecoupledPivotCacheIDs\" },\n0x0801: { n:\"BrtEndDecoupledPivotCacheIDs\" },\n0x0802: { n:\"BrtDecoupledPivotCacheID\" },\n0x0803: { n:\"BrtBeginPivotTableRefs\" },\n0x0804: { n:\"BrtEndPivotTableRefs\" },\n0x0805: { n:\"BrtPivotTableRef\" },\n0x0806: { n:\"BrtSlicerCacheBookPivotTables\" },\n0x0807: { n:\"BrtBeginSxvcells\" },\n0x0808: { n:\"BrtEndSxvcells\" },\n0x0809: { n:\"BrtBeginSxRow\" },\n0x080A: { n:\"BrtEndSxRow\" },\n0x080C: { n:\"BrtPcdCalcMem15\" },\n0x0813: { n:\"BrtQsi15\" },\n0x0814: { n:\"BrtBeginWebExtensions\" },\n0x0815: { n:\"BrtEndWebExtensions\" },\n0x0816: { n:\"BrtWebExtension\" },\n0x0817: { n:\"BrtAbsPath15\" },\n0x0818: { n:\"BrtBeginPivotTableUISettings\" },\n0x0819: { n:\"BrtEndPivotTableUISettings\" },\n0x081B: { n:\"BrtTableSlicerCacheIDs\" },\n0x081C: { n:\"BrtTableSlicerCacheID\" },\n0x081D: { n:\"BrtBeginTableSlicerCache\" },\n0x081E: { n:\"BrtEndTableSlicerCache\" },\n0x081F: { n:\"BrtSxFilter15\" },\n0x0820: { n:\"BrtBeginTimelineCachePivotCacheIDs\" },\n0x0821: { n:\"BrtEndTimelineCachePivotCacheIDs\" },\n0x0822: { n:\"BrtTimelineCachePivotCacheID\" },\n0x0823: { n:\"BrtBeginTimelineCacheIDs\" },\n0x0824: { n:\"BrtEndTimelineCacheIDs\" },\n0x0825: { n:\"BrtBeginTimelineCacheID\" },\n0x0826: { n:\"BrtEndTimelineCacheID\" },\n0x0827: { n:\"BrtBeginTimelinesEx\" },\n0x0828: { n:\"BrtEndTimelinesEx\" },\n0x0829: { n:\"BrtBeginTimelineEx\" },\n0x082A: { n:\"BrtEndTimelineEx\" },\n0x082B: { n:\"BrtWorkBookPr15\" },\n0x082C: { n:\"BrtPCDH15\" },\n0x082D: { n:\"BrtBeginTimelineStyle\" },\n0x082E: { n:\"BrtEndTimelineStyle\" },\n0x082F: { n:\"BrtTimelineStyleElement\" },\n0x0830: { n:\"BrtBeginTimelineStylesheetExt15\" },\n0x0831: { n:\"BrtEndTimelineStylesheetExt15\" },\n0x0832: { n:\"BrtBeginTimelineStyles\" },\n0x0833: { n:\"BrtEndTimelineStyles\" },\n0x0834: { n:\"BrtBeginTimelineStyleElements\" },\n0x0835: { n:\"BrtEndTimelineStyleElements\" },\n0x0836: { n:\"BrtDxf15\" },\n0x0837: { n:\"BrtBeginDxfs15\" },\n0x0838: { n:\"brtEndDxfs15\" },\n0x0839: { n:\"BrtSlicerCacheHideItemsWithNoData\" },\n0x083A: { n:\"BrtBeginItemUniqueNames\" },\n0x083B: { n:\"BrtEndItemUniqueNames\" },\n0x083C: { n:\"BrtItemUniqueName\" },\n0x083D: { n:\"BrtBeginExtConn15\" },\n0x083E: { n:\"BrtEndExtConn15\" },\n0x083F: { n:\"BrtBeginOledbPr15\" },\n0x0840: { n:\"BrtEndOledbPr15\" },\n0x0841: { n:\"BrtBeginDataFeedPr15\" },\n0x0842: { n:\"BrtEndDataFeedPr15\" },\n0x0843: { n:\"BrtTextPr15\" },\n0x0844: { n:\"BrtRangePr15\" },\n0x0845: { n:\"BrtDbCommand15\" },\n0x0846: { n:\"BrtBeginDbTables15\" },\n0x0847: { n:\"BrtEndDbTables15\" },\n0x0848: { n:\"BrtDbTable15\" },\n0x0849: { n:\"BrtBeginDataModel\" },\n0x084A: { n:\"BrtEndDataModel\" },\n0x084B: { n:\"BrtBeginModelTables\" },\n0x084C: { n:\"BrtEndModelTables\" },\n0x084D: { n:\"BrtModelTable\" },\n0x084E: { n:\"BrtBeginModelRelationships\" },\n0x084F: { n:\"BrtEndModelRelationships\" },\n0x0850: { n:\"BrtModelRelationship\" },\n0x0851: { n:\"BrtBeginECTxtWiz15\" },\n0x0852: { n:\"BrtEndECTxtWiz15\" },\n0x0853: { n:\"BrtBeginECTWFldInfoLst15\" },\n0x0854: { n:\"BrtEndECTWFldInfoLst15\" },\n0x0855: { n:\"BrtBeginECTWFldInfo15\" },\n0x0856: { n:\"BrtFieldListActiveItem\" },\n0x0857: { n:\"BrtPivotCacheIdVersion\" },\n0x0858: { n:\"BrtSXDI15\" },\n0x0859: { n:\"BrtBeginModelTimeGroupings\" },\n0x085A: { n:\"BrtEndModelTimeGroupings\" },\n0x085B: { n:\"BrtBeginModelTimeGrouping\" },\n0x085C: { n:\"BrtEndModelTimeGrouping\" },\n0x085D: { n:\"BrtModelTimeGroupingCalcCol\" },\n0x0C00: { n:\"BrtUid\" },\n0x0C01: { n:\"BrtRevisionPtr\" },\n0xFFFF: { n:\"\" }\n};\n\nvar XLSBRE = evert_key(XLSBRecordEnum, 'n');\n\n/* [MS-XLS] 2.3 Record Enumeration */\nvar XLSRecordEnum = {\n0x0003: { n:\"BIFF2NUM\", f:parse_BIFF2NUM },\n0x0004: { n:\"BIFF2STR\", f:parse_BIFF2STR },\n0x0006: { n:\"Formula\", f:parse_Formula },\n0x0009: { n:'BOF', f:parse_BOF },\n0x000a: { n:'EOF', f:parsenoop2 },\n0x000c: { n:\"CalcCount\", f:parseuint16 },\n0x000d: { n:\"CalcMode\", f:parseuint16 },\n0x000e: { n:\"CalcPrecision\", f:parsebool },\n0x000f: { n:\"CalcRefMode\", f:parsebool },\n0x0010: { n:\"CalcDelta\", f:parse_Xnum },\n0x0011: { n:\"CalcIter\", f:parsebool },\n0x0012: { n:\"Protect\", f:parsebool },\n0x0013: { n:\"Password\", f:parseuint16 },\n0x0014: { n:\"Header\", f:parse_XLHeaderFooter },\n0x0015: { n:\"Footer\", f:parse_XLHeaderFooter },\n0x0017: { n:\"ExternSheet\", f:parse_ExternSheet },\n0x0018: { n:\"Lbl\", f:parse_Lbl },\n0x0019: { n:\"WinProtect\", f:parsebool },\n0x001a: { n:\"VerticalPageBreaks\" },\n0x001b: { n:\"HorizontalPageBreaks\" },\n0x001c: { n:\"Note\", f:parse_Note },\n0x001d: { n:\"Selection\" },\n0x0022: { n:\"Date1904\", f:parsebool },\n0x0023: { n:\"ExternName\", f:parse_ExternName },\n0x0026: { n:\"LeftMargin\", f:parse_Xnum },\n0x0027: { n:\"RightMargin\", f:parse_Xnum },\n0x0028: { n:\"TopMargin\", f:parse_Xnum },\n0x0029: { n:\"BottomMargin\", f:parse_Xnum },\n0x002a: { n:\"PrintRowCol\", f:parsebool },\n0x002b: { n:\"PrintGrid\", f:parsebool },\n0x002f: { n:\"FilePass\", f:parse_FilePass },\n0x0031: { n:\"Font\", f:parse_Font },\n0x0033: { n:\"PrintSize\", f:parseuint16 },\n0x003c: { n:\"Continue\" },\n0x003d: { n:\"Window1\", f:parse_Window1 },\n0x0040: { n:\"Backup\", f:parsebool },\n0x0041: { n:\"Pane\" },\n0x0042: { n:'CodePage', f:parseuint16 },\n0x004d: { n:\"Pls\" },\n0x0050: { n:\"DCon\" },\n0x0051: { n:\"DConRef\" },\n0x0052: { n:\"DConName\" },\n0x0055: { n:\"DefColWidth\", f:parseuint16 },\n0x0059: { n:\"XCT\" },\n0x005a: { n:\"CRN\" },\n0x005b: { n:\"FileSharing\" },\n0x005c: { n:'WriteAccess', f:parse_WriteAccess },\n0x005d: { n:\"Obj\", f:parse_Obj },\n0x005e: { n:\"Uncalced\" },\n0x005f: { n:\"CalcSaveRecalc\", f:parsebool },\n0x0060: { n:\"Template\" },\n0x0061: { n:\"Intl\" },\n0x0063: { n:\"ObjProtect\", f:parsebool },\n0x007d: { n:\"ColInfo\", f:parse_ColInfo },\n0x0080: { n:\"Guts\", f:parse_Guts },\n0x0081: { n:\"WsBool\", f:parse_WsBool },\n0x0082: { n:\"GridSet\", f:parseuint16 },\n0x0083: { n:\"HCenter\", f:parsebool },\n0x0084: { n:\"VCenter\", f:parsebool },\n0x0085: { n:'BoundSheet8', f:parse_BoundSheet8 },\n0x0086: { n:\"WriteProtect\" },\n0x008c: { n:\"Country\", f:parse_Country },\n0x008d: { n:\"HideObj\", f:parseuint16 },\n0x0090: { n:\"Sort\" },\n0x0092: { n:\"Palette\", f:parse_Palette },\n0x0097: { n:\"Sync\" },\n0x0098: { n:\"LPr\" },\n0x0099: { n:\"DxGCol\" },\n0x009a: { n:\"FnGroupName\" },\n0x009b: { n:\"FilterMode\" },\n0x009c: { n:\"BuiltInFnGroupCount\", f:parseuint16 },\n0x009d: { n:\"AutoFilterInfo\" },\n0x009e: { n:\"AutoFilter\" },\n0x00a0: { n:\"Scl\", f:parse_Scl },\n0x00a1: { n:\"Setup\", f:parse_Setup },\n0x00ae: { n:\"ScenMan\" },\n0x00af: { n:\"SCENARIO\" },\n0x00b0: { n:\"SxView\" },\n0x00b1: { n:\"Sxvd\" },\n0x00b2: { n:\"SXVI\" },\n0x00b4: { n:\"SxIvd\" },\n0x00b5: { n:\"SXLI\" },\n0x00b6: { n:\"SXPI\" },\n0x00b8: { n:\"DocRoute\" },\n0x00b9: { n:\"RecipName\" },\n0x00bd: { n:\"MulRk\", f:parse_MulRk },\n0x00be: { n:\"MulBlank\", f:parse_MulBlank },\n0x00c1: { n:'Mms', f:parsenoop2 },\n0x00c5: { n:\"SXDI\" },\n0x00c6: { n:\"SXDB\" },\n0x00c7: { n:\"SXFDB\" },\n0x00c8: { n:\"SXDBB\" },\n0x00c9: { n:\"SXNum\" },\n0x00ca: { n:\"SxBool\", f:parsebool },\n0x00cb: { n:\"SxErr\" },\n0x00cc: { n:\"SXInt\" },\n0x00cd: { n:\"SXString\" },\n0x00ce: { n:\"SXDtr\" },\n0x00cf: { n:\"SxNil\" },\n0x00d0: { n:\"SXTbl\" },\n0x00d1: { n:\"SXTBRGIITM\" },\n0x00d2: { n:\"SxTbpg\" },\n0x00d3: { n:\"ObProj\" },\n0x00d5: { n:\"SXStreamID\" },\n0x00d7: { n:\"DBCell\" },\n0x00d8: { n:\"SXRng\" },\n0x00d9: { n:\"SxIsxoper\" },\n0x00da: { n:\"BookBool\", f:parseuint16 },\n0x00dc: { n:\"DbOrParamQry\" },\n0x00dd: { n:\"ScenarioProtect\", f:parsebool },\n0x00de: { n:\"OleObjectSize\" },\n0x00e0: { n:\"XF\", f:parse_XF },\n0x00e1: { n:'InterfaceHdr', f:parse_InterfaceHdr },\n0x00e2: { n:'InterfaceEnd', f:parsenoop2 },\n0x00e3: { n:\"SXVS\" },\n0x00e5: { n:\"MergeCells\", f:parse_MergeCells },\n0x00e9: { n:\"BkHim\" },\n0x00eb: { n:\"MsoDrawingGroup\" },\n0x00ec: { n:\"MsoDrawing\" },\n0x00ed: { n:\"MsoDrawingSelection\" },\n0x00ef: { n:\"PhoneticInfo\" },\n0x00f0: { n:\"SxRule\" },\n0x00f1: { n:\"SXEx\" },\n0x00f2: { n:\"SxFilt\" },\n0x00f4: { n:\"SxDXF\" },\n0x00f5: { n:\"SxItm\" },\n0x00f6: { n:\"SxName\" },\n0x00f7: { n:\"SxSelect\" },\n0x00f8: { n:\"SXPair\" },\n0x00f9: { n:\"SxFmla\" },\n0x00fb: { n:\"SxFormat\" },\n0x00fc: { n:\"SST\", f:parse_SST },\n0x00fd: { n:\"LabelSst\", f:parse_LabelSst },\n0x00ff: { n:\"ExtSST\", f:parse_ExtSST },\n0x0100: { n:\"SXVDEx\" },\n0x0103: { n:\"SXFormula\" },\n0x0122: { n:\"SXDBEx\" },\n0x0137: { n:\"RRDInsDel\" },\n0x0138: { n:\"RRDHead\" },\n0x013b: { n:\"RRDChgCell\" },\n0x013d: { n:\"RRTabId\", f:parseuint16a },\n0x013e: { n:\"RRDRenSheet\" },\n0x013f: { n:\"RRSort\" },\n0x0140: { n:\"RRDMove\" },\n0x014a: { n:\"RRFormat\" },\n0x014b: { n:\"RRAutoFmt\" },\n0x014d: { n:\"RRInsertSh\" },\n0x014e: { n:\"RRDMoveBegin\" },\n0x014f: { n:\"RRDMoveEnd\" },\n0x0150: { n:\"RRDInsDelBegin\" },\n0x0151: { n:\"RRDInsDelEnd\" },\n0x0152: { n:\"RRDConflict\" },\n0x0153: { n:\"RRDDefName\" },\n0x0154: { n:\"RRDRstEtxp\" },\n0x015f: { n:\"LRng\" },\n0x0160: { n:\"UsesELFs\", f:parsebool },\n0x0161: { n:\"DSF\", f:parsenoop2 },\n0x0191: { n:\"CUsr\" },\n0x0192: { n:\"CbUsr\" },\n0x0193: { n:\"UsrInfo\" },\n0x0194: { n:\"UsrExcl\" },\n0x0195: { n:\"FileLock\" },\n0x0196: { n:\"RRDInfo\" },\n0x0197: { n:\"BCUsrs\" },\n0x0198: { n:\"UsrChk\" },\n0x01a9: { n:\"UserBView\" },\n0x01aa: { n:\"UserSViewBegin\" },\n0x01ab: { n:\"UserSViewEnd\" },\n0x01ac: { n:\"RRDUserView\" },\n0x01ad: { n:\"Qsi\" },\n0x01ae: { n:\"SupBook\", f:parse_SupBook },\n0x01af: { n:\"Prot4Rev\", f:parsebool },\n0x01b0: { n:\"CondFmt\" },\n0x01b1: { n:\"CF\" },\n0x01b2: { n:\"DVal\" },\n0x01b5: { n:\"DConBin\" },\n0x01b6: { n:\"TxO\", f:parse_TxO },\n0x01b7: { n:\"RefreshAll\", f:parsebool },\n0x01b8: { n:\"HLink\", f:parse_HLink },\n0x01b9: { n:\"Lel\" },\n0x01ba: { n:\"CodeName\", f:parse_XLUnicodeString },\n0x01bb: { n:\"SXFDBType\" },\n0x01bc: { n:\"Prot4RevPass\", f:parseuint16 },\n0x01bd: { n:\"ObNoMacros\" },\n0x01be: { n:\"Dv\" },\n0x01c0: { n:\"Excel9File\", f:parsenoop2 },\n0x01c1: { n:\"RecalcId\", f:parse_RecalcId, r:2},\n0x01c2: { n:\"EntExU2\", f:parsenoop2 },\n0x0200: { n:\"Dimensions\", f:parse_Dimensions },\n0x0201: { n:\"Blank\", f:parse_Blank },\n0x0203: { n:\"Number\", f:parse_Number },\n0x0204: { n:\"Label\", f:parse_Label },\n0x0205: { n:\"BoolErr\", f:parse_BoolErr },\n0x0206: { n:\"Formula\", f:parse_Formula },\n0x0207: { n:\"String\", f:parse_String },\n0x0208: { n:'Row', f:parse_Row },\n0x020b: { n:\"Index\" },\n0x0221: { n:\"Array\", f:parse_Array },\n0x0225: { n:\"DefaultRowHeight\", f:parse_DefaultRowHeight },\n0x0236: { n:\"Table\" },\n0x023e: { n:\"Window2\", f:parse_Window2 },\n0x027e: { n:\"RK\", f:parse_RK },\n0x0293: { n:\"Style\" },\n0x0406: { n:\"Formula\", f:parse_Formula },\n0x0418: { n:\"BigName\" },\n0x041e: { n:\"Format\", f:parse_Format },\n0x043c: { n:\"ContinueBigName\" },\n0x04bc: { n:\"ShrFmla\", f:parse_ShrFmla },\n0x0800: { n:\"HLinkTooltip\", f:parse_HLinkTooltip },\n0x0801: { n:\"WebPub\" },\n0x0802: { n:\"QsiSXTag\" },\n0x0803: { n:\"DBQueryExt\" },\n0x0804: { n:\"ExtString\" },\n0x0805: { n:\"TxtQry\" },\n0x0806: { n:\"Qsir\" },\n0x0807: { n:\"Qsif\" },\n0x0808: { n:\"RRDTQSIF\" },\n0x0809: { n:'BOF', f:parse_BOF },\n0x080a: { n:\"OleDbConn\" },\n0x080b: { n:\"WOpt\" },\n0x080c: { n:\"SXViewEx\" },\n0x080d: { n:\"SXTH\" },\n0x080e: { n:\"SXPIEx\" },\n0x080f: { n:\"SXVDTEx\" },\n0x0810: { n:\"SXViewEx9\" },\n0x0812: { n:\"ContinueFrt\" },\n0x0813: { n:\"RealTimeData\" },\n0x0850: { n:\"ChartFrtInfo\" },\n0x0851: { n:\"FrtWrapper\" },\n0x0852: { n:\"StartBlock\" },\n0x0853: { n:\"EndBlock\" },\n0x0854: { n:\"StartObject\" },\n0x0855: { n:\"EndObject\" },\n0x0856: { n:\"CatLab\" },\n0x0857: { n:\"YMult\" },\n0x0858: { n:\"SXViewLink\" },\n0x0859: { n:\"PivotChartBits\" },\n0x085a: { n:\"FrtFontList\" },\n0x0862: { n:\"SheetExt\" },\n0x0863: { n:\"BookExt\", r:12},\n0x0864: { n:\"SXAddl\" },\n0x0865: { n:\"CrErr\" },\n0x0866: { n:\"HFPicture\" },\n0x0867: { n:'FeatHdr', f:parsenoop2 },\n0x0868: { n:\"Feat\" },\n0x086a: { n:\"DataLabExt\" },\n0x086b: { n:\"DataLabExtContents\" },\n0x086c: { n:\"CellWatch\" },\n0x0871: { n:\"FeatHdr11\" },\n0x0872: { n:\"Feature11\" },\n0x0874: { n:\"DropDownObjIds\" },\n0x0875: { n:\"ContinueFrt11\" },\n0x0876: { n:\"DConn\" },\n0x0877: { n:\"List12\" },\n0x0878: { n:\"Feature12\" },\n0x0879: { n:\"CondFmt12\" },\n0x087a: { n:\"CF12\" },\n0x087b: { n:\"CFEx\" },\n0x087c: { n:\"XFCRC\", f:parse_XFCRC, r:12 },\n0x087d: { n:\"XFExt\", f:parse_XFExt, r:12 },\n0x087e: { n:\"AutoFilter12\" },\n0x087f: { n:\"ContinueFrt12\" },\n0x0884: { n:\"MDTInfo\" },\n0x0885: { n:\"MDXStr\" },\n0x0886: { n:\"MDXTuple\" },\n0x0887: { n:\"MDXSet\" },\n0x0888: { n:\"MDXProp\" },\n0x0889: { n:\"MDXKPI\" },\n0x088a: { n:\"MDB\" },\n0x088b: { n:\"PLV\" },\n0x088c: { n:\"Compat12\", f:parsebool, r:12 },\n0x088d: { n:\"DXF\" },\n0x088e: { n:\"TableStyles\", r:12 },\n0x088f: { n:\"TableStyle\" },\n0x0890: { n:\"TableStyleElement\" },\n0x0892: { n:\"StyleExt\" },\n0x0893: { n:\"NamePublish\" },\n0x0894: { n:\"NameCmt\", f:parse_NameCmt, r:12 },\n0x0895: { n:\"SortData\" },\n0x0896: { n:\"Theme\", f:parse_Theme, r:12 },\n0x0897: { n:\"GUIDTypeLib\" },\n0x0898: { n:\"FnGrp12\" },\n0x0899: { n:\"NameFnGrp12\" },\n0x089a: { n:\"MTRSettings\", f:parse_MTRSettings, r:12 },\n0x089b: { n:\"CompressPictures\", f:parsenoop2 },\n0x089c: { n:\"HeaderFooter\" },\n0x089d: { n:\"CrtLayout12\" },\n0x089e: { n:\"CrtMlFrt\" },\n0x089f: { n:\"CrtMlFrtContinue\" },\n0x08a3: { n:\"ForceFullCalculation\", f:parse_ForceFullCalculation },\n0x08a4: { n:\"ShapePropsStream\" },\n0x08a5: { n:\"TextPropsStream\" },\n0x08a6: { n:\"RichTextStream\" },\n0x08a7: { n:\"CrtLayout12A\" },\n0x1001: { n:\"Units\" },\n0x1002: { n:\"Chart\" },\n0x1003: { n:\"Series\" },\n0x1006: { n:\"DataFormat\" },\n0x1007: { n:\"LineFormat\" },\n0x1009: { n:\"MarkerFormat\" },\n0x100a: { n:\"AreaFormat\" },\n0x100b: { n:\"PieFormat\" },\n0x100c: { n:\"AttachedLabel\" },\n0x100d: { n:\"SeriesText\" },\n0x1014: { n:\"ChartFormat\" },\n0x1015: { n:\"Legend\" },\n0x1016: { n:\"SeriesList\" },\n0x1017: { n:\"Bar\" },\n0x1018: { n:\"Line\" },\n0x1019: { n:\"Pie\" },\n0x101a: { n:\"Area\" },\n0x101b: { n:\"Scatter\" },\n0x101c: { n:\"CrtLine\" },\n0x101d: { n:\"Axis\" },\n0x101e: { n:\"Tick\" },\n0x101f: { n:\"ValueRange\" },\n0x1020: { n:\"CatSerRange\" },\n0x1021: { n:\"AxisLine\" },\n0x1022: { n:\"CrtLink\" },\n0x1024: { n:\"DefaultText\" },\n0x1025: { n:\"Text\" },\n0x1026: { n:\"FontX\", f:parseuint16 },\n0x1027: { n:\"ObjectLink\" },\n0x1032: { n:\"Frame\" },\n0x1033: { n:\"Begin\" },\n0x1034: { n:\"End\" },\n0x1035: { n:\"PlotArea\" },\n0x103a: { n:\"Chart3d\" },\n0x103c: { n:\"PicF\" },\n0x103d: { n:\"DropBar\" },\n0x103e: { n:\"Radar\" },\n0x103f: { n:\"Surf\" },\n0x1040: { n:\"RadarArea\" },\n0x1041: { n:\"AxisParent\" },\n0x1043: { n:\"LegendException\" },\n0x1044: { n:\"ShtProps\", f:parse_ShtProps },\n0x1045: { n:\"SerToCrt\" },\n0x1046: { n:\"AxesUsed\" },\n0x1048: { n:\"SBaseRef\" },\n0x104a: { n:\"SerParent\" },\n0x104b: { n:\"SerAuxTrend\" },\n0x104e: { n:\"IFmtRecord\" },\n0x104f: { n:\"Pos\" },\n0x1050: { n:\"AlRuns\" },\n0x1051: { n:\"BRAI\" },\n0x105b: { n:\"SerAuxErrBar\" },\n0x105c: { n:\"ClrtClient\", f:parse_ClrtClient },\n0x105d: { n:\"SerFmt\" },\n0x105f: { n:\"Chart3DBarShape\" },\n0x1060: { n:\"Fbi\" },\n0x1061: { n:\"BopPop\" },\n0x1062: { n:\"AxcExt\" },\n0x1063: { n:\"Dat\" },\n0x1064: { n:\"PlotGrowth\" },\n0x1065: { n:\"SIIndex\" },\n0x1066: { n:\"GelFrame\" },\n0x1067: { n:\"BopPopCustom\" },\n0x1068: { n:\"Fbi2\" },\n\n0x0000: { n:\"Dimensions\", f:parse_Dimensions },\n0x0002: { n:\"BIFF2INT\", f:parse_BIFF2INT },\n0x0005: { n:\"BoolErr\", f:parse_BoolErr },\n0x0007: { n:\"String\", f:parse_BIFF2STRING },\n0x0008: { n:\"BIFF2ROW\" },\n0x000b: { n:\"Index\" },\n0x0016: { n:\"ExternCount\", f:parseuint16 },\n0x001e: { n:\"BIFF2FORMAT\", f:parse_BIFF2Format },\n0x001f: { n:\"BIFF2FMTCNT\" }, /* 16-bit cnt of BIFF2FORMAT records */\n0x0020: { n:\"BIFF2COLINFO\" },\n0x0021: { n:\"Array\", f:parse_Array },\n0x0025: { n:\"DefaultRowHeight\", f:parse_DefaultRowHeight },\n0x0032: { n:\"BIFF2FONTXTRA\", f:parse_BIFF2FONTXTRA },\n0x0034: { n:\"DDEObjName\" },\n0x003e: { n:\"BIFF2WINDOW2\" },\n0x0043: { n:\"BIFF2XF\" },\n0x0045: { n:\"BIFF2FONTCLR\" },\n0x0056: { n:\"BIFF4FMTCNT\" }, /* 16-bit cnt, similar to BIFF2 */\n0x007e: { n:\"RK\" }, /* Not necessarily same as 0x027e */\n0x007f: { n:\"ImData\", f:parse_ImData },\n0x0087: { n:\"Addin\" },\n0x0088: { n:\"Edg\" },\n0x0089: { n:\"Pub\" },\n0x0091: { n:\"Sub\" },\n0x0094: { n:\"LHRecord\" },\n0x0095: { n:\"LHNGraph\" },\n0x0096: { n:\"Sound\" },\n0x00a9: { n:\"CoordList\" },\n0x00ab: { n:\"GCW\" },\n0x00bc: { n:\"ShrFmla\" }, /* Not necessarily same as 0x04bc */\n0x00bf: { n:\"ToolbarHdr\" },\n0x00c0: { n:\"ToolbarEnd\" },\n0x00c2: { n:\"AddMenu\" },\n0x00c3: { n:\"DelMenu\" },\n0x00d6: { n:\"RString\", f:parse_RString },\n0x00df: { n:\"UDDesc\" },\n0x00ea: { n:\"TabIdConf\" },\n0x0162: { n:\"XL5Modify\" },\n0x01a5: { n:\"FileSharing2\" },\n0x0209: { n:'BOF', f:parse_BOF },\n0x0218: { n:\"Lbl\", f:parse_Lbl },\n0x0223: { n:\"ExternName\", f:parse_ExternName },\n0x0231: { n:\"Font\" },\n0x0243: { n:\"BIFF3XF\" },\n0x0409: { n:'BOF', f:parse_BOF },\n0x0443: { n:\"BIFF4XF\" },\n0x086d: { n:\"FeatInfo\" },\n0x0873: { n:\"FeatInfo11\" },\n0x0881: { n:\"SXAddl12\" },\n0x08c0: { n:\"AutoWebPub\" },\n0x08c1: { n:\"ListObj\" },\n0x08c2: { n:\"ListField\" },\n0x08c3: { n:\"ListDV\" },\n0x08c4: { n:\"ListCondFmt\" },\n0x08c5: { n:\"ListCF\" },\n0x08c6: { n:\"FMQry\" },\n0x08c7: { n:\"FMSQry\" },\n0x08c8: { n:\"PLV\" },\n0x08c9: { n:\"LnExt\" },\n0x08ca: { n:\"MkrExt\" },\n0x08cb: { n:\"CrtCoopt\" },\n0x08d6: { n:\"FRTArchId$\", r:12 },\n\n0x7262: {}\n};\n\nvar XLSRE = evert_key(XLSRecordEnum, 'n');\nfunction write_biff_rec(ba, type, payload, length) {\n\tvar t = +type || +XLSRE[type];\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_BIFF2Cell(out, r, c) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r, c, val, t) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tif(t == 'e') { out.write_shift(1, val); out.write_shift(1, 1); }\n\telse { out.write_shift(1, val?1:0); out.write_shift(1, 0); }\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r, c, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba, cell, R, C) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, cell.v));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba, ws, idx, opts) {\n\tvar dense = Array.isArray(ws);\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t\tref = encode_range(range);\n\t}\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb, opts) {\n\tvar o = opts || {};\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* ... */\n\twrite_biff_rec(ba, \"CalcMode\", writeuint16(1));\n\twrite_biff_rec(ba, \"CalcCount\", writeuint16(100));\n\twrite_biff_rec(ba, \"CalcRefMode\", writebool(true));\n\twrite_biff_rec(ba, \"CalcIter\", writebool(false));\n\twrite_biff_rec(ba, \"CalcDelta\", write_Xnum(0.001));\n\twrite_biff_rec(ba, \"CalcSaveRecalc\", writebool(true));\n\twrite_biff_rec(ba, \"PrintRowCol\", writebool(false));\n\twrite_biff_rec(ba, \"PrintGrid\", writebool(false));\n\twrite_biff_rec(ba, \"GridSet\", writeuint16(1));\n\twrite_biff_rec(ba, \"Guts\", write_Guts([0,0]));\n\t/* ... */\n\twrite_biff_rec(ba, \"HCenter\", writebool(false));\n\twrite_biff_rec(ba, \"VCenter\", writebool(false));\n\t/* ... */\n\twrite_biff_rec(ba, \"Dimensions\", write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8 && _WB.Views) write_biff_rec(ba, \"Window2\", write_Window2(_WB.Views[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, \"MergeCells\", write_MergeCells(ws['!merges']));\n\t/* ... */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* ... */\n\twrite_biff_rec(ba, \"CodeName\", write_XLUnicodeString(cname, opts));\n\t/* ... */\n\tif(b8) write_FEAT(ba, ws);\n\t/* ... */\n\twrite_biff_rec(ba, \"EOF\");\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb, bufs, opts) {\n\tvar A = buf_array();\n\tvar _WB = ((wb||{}).Workbook||{});\n\tvar _sheets = (_WB.Sheets||[]);\n\tvar _wb = _WB.WBProps||{};\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, \"Addin\");\n\twrite_biff_rec(A, \"InterfaceHdr\", b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, \"Mms\", writezeroes(2));\n\tif(b5) write_biff_rec(A, \"ToolbarHdr\");\n\tif(b5) write_biff_rec(A, \"ToolbarEnd\");\n\twrite_biff_rec(A, \"InterfaceEnd\");\n\twrite_biff_rec(A, \"WriteAccess\", write_WriteAccess(\"SheetJS\", opts));\n\twrite_biff_rec(A, \"CodePage\", writeuint16(b8 ? 0x04b0 : 0x04E4));\n\tif(b8) write_biff_rec(A, \"DSF\", writeuint16(0));\n\tif(b8) write_biff_rec(A, \"Excel9File\");\n\twrite_biff_rec(A, \"RRTabId\", write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) {\n\t\twrite_biff_rec(A, \"ObProj\");\n\t\tvar cname = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, \"CodeName\", write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, \"BuiltInFnGroupCount\", writeuint16(0x11));\n\twrite_biff_rec(A, \"WinProtect\", writebool(false));\n\twrite_biff_rec(A, \"Protect\", writebool(false));\n\twrite_biff_rec(A, \"Password\", writeuint16(0));\n\tif(b8) write_biff_rec(A, \"Prot4Rev\", writebool(false));\n\tif(b8) write_biff_rec(A, \"Prot4RevPass\", writeuint16(0));\n\twrite_biff_rec(A, \"Window1\", write_Window1(opts));\n\twrite_biff_rec(A, \"Backup\", writebool(false));\n\twrite_biff_rec(A, \"HideObj\", writeuint16(0));\n\twrite_biff_rec(A, \"Date1904\", writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, \"CalcPrecision\", writebool(true));\n\tif(b8) write_biff_rec(A, \"RefreshAll\", writebool(false));\n\twrite_biff_rec(A, \"BookBool\", writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, \"UsesELFs\", writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\tif(b8) write_biff_rec(C, \"Country\", write_Country());\n\t/* BIFF8: [SST *Continue] ExtSST */\n\twrite_biff_rec(C, \"EOF\");\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet = _sheets[j] || ({});\n\t\twrite_biff_rec(B, \"BoundSheet8\", write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn __toBuffer([out]);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb, opts) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = SSF.get_table();\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(SSF); SSF.load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\to.cellXfs = [];\n\to.Strings = []; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn __toBuffer([bufs]);\n}\n\nfunction write_biff_buf(wb, opts) {\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nvar HTML_ = (function() {\n\tfunction html_to_sheet(str, _opts) {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar ws = opts.dense ? ([]) : ({});\n\t\tvar mtch = str.match(/\");\n\t\tvar mtch2 = str.match(/<\\/table/i);\n\t\tvar i = mtch.index, j = mtch2 && mtch2.index || str.length;\n\t\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, \"\");\n\t\tvar R = -1, C = 0, RS = 0, CS = 0;\n\t\tvar range = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\t\tvar merges = [];\n\t\tfor(i = 0; i < rows.length; ++i) {\n\t\t\tvar row = rows[i].trim();\n\t\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\t\tif(hd == \"/i);\n\t\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\t\tvar cell = cells[j].trim();\n\t\t\t\tif(!cell.match(/\")) > -1) m = m.slice(cc+1);\n\t\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\t\tif((RS = +tag.rowspan)>0 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\t\tvar _t = tag.t || \"\";\n\t\t\t\t/* TODO: generate stub cells */\n\t\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\t\tm = htmldecode(unescapexml(m));\n\t\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\t\tif(!m.length) continue;\n\t\t\t\tvar o = {t:'s', v:m};\n\t\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(m)});\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)});\n\t\t\t\t\to.z = opts.dateNF || SSF._table[14];\n\t\t\t\t}\n\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\t\tC += CS;\n\t\t\t}\n\t\t}\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\tfunction html_to_book(str, opts) {\n\t\treturn sheet_to_workbook(html_to_sheet(str, opts), opts);\n\t}\n\tfunction make_html_row(ws, r, R, o) {\n\t\tvar M = (ws['!merges'] ||[]);\n\t\tvar oo = [];\n\t\tvar nullcell = \"\";\n\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\tvar RS = 0, CS = 0;\n\t\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t\t}\n\t\t\tif(RS < 0) continue;\n\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\tif(!cell || cell.v == null) { oo.push(nullcell); continue; }\n\t\t\t/* TODO: html entities */\n\t\t\tvar w = cell.h || escapexml(cell.w || (format_cell(cell), cell.w) || \"\");\n\t\t\tvar sp = {};\n\t\t\tif(RS > 1) sp.rowspan = RS;\n\t\t\tif(CS > 1) sp.colspan = CS;\n\t\t\tsp.t = cell.t;\n\t\t\tif(o.editable) w = '' + w + '';\n\t\t\tsp.id = \"sjs-\" + coord;\n\t\t\too.push(writextag('td', w, sp));\n\t\t}\n\t\tvar preamble = \"\";\n\t\treturn preamble + oo.join(\"\") + \"\";\n\t}\n\tfunction make_html_preamble(ws, R, o) {\n\t\tvar out = [];\n\t\treturn out.join(\"\") + '';\n\t}\n\tvar _BEGIN = 'SheetJS Table Export';\n\tvar _END = '';\n\tfunction sheet_to_html(ws, opts/*, wb:?Workbook*/) {\n\t\tvar o = opts || {};\n\t\tvar header = o.header != null ? o.header : _BEGIN;\n\t\tvar footer = o.footer != null ? o.footer : _END;\n\t\tvar out = [header];\n\t\tvar r = decode_range(ws['!ref']);\n\t\to.dense = Array.isArray(ws);\n\t\tout.push(make_html_preamble(ws, r, o));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\t\tout.push(\"
\" + (o.editable ? '' : \"\" ) + \"
\" + footer);\n\t\treturn out.join(\"\");\n\t}\n\n\treturn {\n\t\tto_workbook: html_to_book,\n\t\tto_sheet: html_to_sheet,\n\t\t_row: make_html_row,\n\t\tBEGIN: _BEGIN,\n\t\tEND: _END,\n\t\t_preamble: make_html_preamble,\n\t\tfrom_sheet: sheet_to_html\n\t};\n})();\n\nfunction parse_dom_table(table, _opts) {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar ws = opts.dense ? ([]) : ({});\n\tvar rows = table.getElementsByTagName('tr');\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range = {s:{r:0,c:0},e:{r:sheetRows - 1,c:0}};\n\tvar merges = [], midx = 0;\n\tvar R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tfor(; R < sheetRows; ++R) {\n\t\tvar row = rows[R];\n\t\tvar elts = (row.children);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt = elts[_C], v = htmldecode(elts[_C].innerHTML);\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m = merges[midx];\n\t\t\t\tif(m.s.c == C && m.s.r <= R && R <= m.e.r) { C = m.e.c+1; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif((RS = +elt.getAttribute(\"rowspan\"))>0 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar o = {t:'s', v:v};\n\t\t\tvar _t = elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)});\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)});\n\t\t\t\t\to.z = opts.dateNF || SSF._table[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({c:C, r:R})] = o;\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tif(merges.length) ws['!merges'] = merges;\n\tws['!ref'] = encode_range(range);\n\tif(sheetRows < rows.length) ws['!fullref'] = encode_range((range.e.r = rows.length-1,range));\n\treturn ws;\n}\n\nfunction table_to_book(table, opts) {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n/* OpenDocument */\nvar parse_content_xml = (function() {\n\n\t/* 6.1.2 White Space Characters */\n\tvar parse_text_p = function(text) {\n\t\treturn unescapexml(text\n\t\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t\t.replace(//g,\" \")\n\t\t\t.replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t\t.replace(/]*\\/>/g,\"\\t\")\n\t\t\t.replace(//g,\"\\n\")\n\t\t\t.replace(/<[^>]*>/g,\"\")\n\t\t);\n\t};\n\n\tvar number_formats = {\n\t\t/* ods name: [short ssf fmt, long ssf fmt] */\n\t\tday: [\"d\", \"dd\"],\n\t\tmonth: [\"m\", \"mm\"],\n\t\tyear: [\"y\", \"yy\"],\n\t\thours: [\"h\", \"hh\"],\n\t\tminutes: [\"m\", \"mm\"],\n\t\tseconds: [\"s\", \"ss\"],\n\t\t\"am-pm\": [\"A/P\", \"AM/PM\"],\n\t\t\"day-of-week\": [\"ddd\", \"dddd\"],\n\t\tera: [\"e\", \"ee\"],\n\t\t/* there is no native representation of LO \"Q\" format */\n\t\tquarter: [\"\\\\Qm\", \"m\\\\\\\"th quarter\\\"\"]\n\t};\n\n\treturn function pcx(d, _opts) {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state = [], tmp;\n\t\tvar tag;\n\t\tvar NFtag = {name:\"\"}, NF = \"\", pidx = 0;\n\t\tvar sheetag;\n\t\tvar rowtag;\n\t\tvar Sheets = {}, SheetNames = [];\n\t\tvar ws = opts.dense ? ([]) : ({});\n\t\tvar Rn, q;\n\t\tvar ctag = ({value:\"\"});\n\t\tvar textp = \"\", textpidx = 0, textptag;\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = {};\n\t\tvar merges = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf = [];\n\t\tvar WB = {Names:[]};\n\t\tvar atag = ({});\n\t\tvar _Ref = [\"\", \"\"];\n\t\tvar comments = [], comment = ({});\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 \n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = utf8read(sheetag['名称'] || sheetag.name);\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]) : ({}); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 \n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 \n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 \n\t\t\t\t++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null});\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\n\t\t\t\t\t\t\tws[R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({});\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null});\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); }\n\t\t\t\t\t\t\tq.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) textp = unescapexml(ctag['string-value']);\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {};\n\t\t\t\t\ttextp = \"\";\n\t\t\t\t}\n\t\t\t\tatag = ({});\n\t\t\t\tbreak; // 9.1.4 \n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 \n\t\t\tcase 'spreadsheet': case '主体': // 3.7 \n\t\t\tcase 'scripts': // 3.12 \n\t\t\tcase 'styles': // TODO \n\t\t\tcase 'font-face-decls': // 3.14 \n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 \n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: FODS/UOF\n\t\t\tcase 'settings': // TODO: \n\t\t\tcase 'config-item-set': // TODO: \n\t\t\tcase 'config-item-map-indexed': // TODO: \n\t\t\tcase 'config-item-map-entry': // TODO: \n\t\t\tcase 'config-item-map-named': // TODO: \n\t\t\tcase 'shapes': // 9.2.8 \n\t\t\tcase 'frame': // 10.4.2 \n\t\t\tcase 'text-box': // 10.4.3 \n\t\t\tcase 'image': // 10.4.4 \n\t\t\tcase 'data-pilot-tables': // 9.6.2 \n\t\t\tcase 'list-style': // 16.30 \n\t\t\tcase 'form': // 13.13 \n\t\t\tcase 'dde-links': // 9.8 \n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 \n\t\t\tcase 'percentage-style': // 16.27.9 \n\t\t\tcase 'date-style': // 16.27.10 \n\t\t\tcase 'time-style': // 16.27.18 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tNF = \"\";\n\t\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 \n\t\t\tcase 'libraries': break; // TODO: \n\t\t\tcase 'automatic-styles': break; // 3.15.3 \n\t\t\tcase 'master-styles': break; // TODO: \n\n\t\t\tcase 'default-style': // TODO: \n\t\t\tcase 'page-layout': break; // TODO: \n\t\t\tcase 'style': break; // 16.2 \n\t\t\tcase 'map': break; // 16.3 \n\t\t\tcase 'font-face': break; // 16.21 \n\n\t\t\tcase 'paragraph-properties': break; // 17.6 \n\t\t\tcase 'table-properties': break; // 17.15 \n\t\t\tcase 'table-column-properties': break; // 17.16 \n\t\t\tcase 'table-row-properties': break; // 17.17 \n\t\t\tcase 'table-cell-properties': break; // 17.18 \n\n\t\t\tcase 'number': // 16.27.3 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 \n\n\t\t\tcase 'day': // 16.27.11 \n\t\t\tcase 'month': // 16.27.12 \n\t\t\tcase 'year': // 16.27.13 \n\t\t\tcase 'era': // 16.27.14 \n\t\t\tcase 'day-of-week': // 16.27.15 \n\t\t\tcase 'week-of-year': // 16.27.16 \n\t\t\tcase 'quarter': // 16.27.17 \n\t\t\tcase 'hours': // 16.27.19 \n\t\t\tcase 'minutes': // 16.27.20 \n\t\t\tcase 'seconds': // 16.27.21 \n\t\t\tcase 'am-pm': // 16.27.22 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'boolean-style': break; // 16.27.23 \n\t\t\tcase 'boolean': break; // 16.27.24 \n\t\t\tcase 'text-style': break; // 16.27.25 \n\t\t\tcase 'text': // 16.27.26 \n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]});\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 \n\t\t\tcase 'text-properties': break; // 16.27.27 \n\t\t\tcase 'embedded-text': break; // 16.27.4 \n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 \n\t\t\tcase 'table-header-rows': break; // 9.1.7 \n\t\t\tcase 'table-rows': break; // 9.1.12 \n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 \n\t\t\tcase 'table-header-columns': break; // 9.1.11 \n\t\t\tcase 'table-columns': break; // 9.1.12 \n\n\t\t\tcase 'null-date': break; // 9.4.2 TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 \n\t\t\tcase 'calculation-settings': break; // 9.4.1 \n\t\t\tcase 'named-expressions': break; // 9.4.11 \n\t\t\tcase 'label-range': break; // 9.4.9 \n\t\t\tcase 'label-ranges': break; // 9.4.10 \n\t\t\tcase 'named-expression': break; // 9.4.13 \n\t\t\tcase 'sort': break; // 9.4.19 \n\t\t\tcase 'sort-by': break; // 9.4.20 \n\t\t\tcase 'sort-groups': break; // 9.4.22 \n\n\t\t\tcase 'tab': break; // 6.1.4 \n\t\t\tcase 'line-break': break; // 6.1.5 \n\t\t\tcase 'span': break; // 6.1.7 \n\t\t\tcase 'p': case '文本串': // 5.1.3 \n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) textp = (textp.length > 0 ? textp + \"\\n\" : \"\") + parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\telse { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // \n\t\t\tcase 's': break; // \n\n\t\t\tcase 'database-range': // 9.4.15 \n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 \n\t\t\tcase 'title': case '标题': break; // <*:title> OR \n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 \n\t\t\tcase 'content-validations': break; // 9.4.4 \n\t\t\tcase 'filter': break; // 9.5.2 \n\t\t\tcase 'filter-and': break; // 9.5.3 \n\t\t\tcase 'filter-or': break; // 9.5.4 \n\t\t\tcase 'filter-condition': break; // 9.5.5 \n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 \n\t\t\tcase 'page-count': break; // TODO \n\t\t\tcase 'time': break; // TODO \n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 \n\t\t\tcase 'property': break; // 13.8 \n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = atag.href; delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // ';\n\treturn function wso() {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\nvar write_content_ods = (function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text) {\n\t\treturn escapexml(text)\n\t\t\t.replace(/ +/g, function($$){return '';})\n\t\t\t.replace(/\\t/g, \"\")\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/^ /, \"\").replace(/ $/, \"\");\n\t};\n\n\tvar null_cell_xml = ' \\n';\n\tvar covered_cell_xml = ' \\n';\n\tvar write_ws = function(ws, wb, i) {\n\t\t/* Section 9 Tables */\n\t\tvar o = [];\n\t\to.push(' \\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']);\n\t\tvar marr = ws['!merges'] || [], mi = 0;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(R = 0; R < range.s.r; ++R) o.push(' \\n');\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\to.push(' \\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target; _tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt});\n\t\t\t\t}\n\t\t\t\to.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push(' \\n');\n\t\t}\n\t\to.push(' \\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o) {\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta': \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart': \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d': \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math': \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form': \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script': \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo': \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow': \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc': \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom': \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms': \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd': \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi': \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet': \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt': \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml': \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl': \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo': \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo': \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext': \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext': \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field': \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx': \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t': \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version': \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config': \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") o.push('\\n');\n\t\telse o.push('\\n');\n\t\twrite_automatic_styles_ods(o);\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts));\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(opts.bookType == \"fods\") o.push('');\n\t\telse o.push('');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb, opts) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\nvar zip = new jszip();\n\tvar f = \"\";\n\n\tvar manifest = [];\n\tvar rdf = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip.file(f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip.file(f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip.file(f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip.file(f, write_meta_ods());\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip.file(f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip.file(f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\nfunction write_sheet_index(wb, sheet) {\n\tif(!sheet) return 0;\n\tvar idx = wb.SheetNames.indexOf(sheet);\n\tif(idx == -1) throw new Error(\"Sheet not found: \" + sheet);\n\treturn idx;\n}\n\nfunction write_obj_str(factory) {\n\treturn function write_str(wb, o) {\n\t\tvar idx = write_sheet_index(wb, o.sheet);\n\t\treturn factory.from_sheet(wb.Sheets[wb.SheetNames[idx]], o, wb);\n\t};\n}\n\nvar write_htm_str = write_obj_str(HTML_);\nvar write_csv_str = write_obj_str({from_sheet:sheet_to_csv});\nvar write_slk_str = write_obj_str(SYLK);\nvar write_dif_str = write_obj_str(DIF);\nvar write_prn_str = write_obj_str(PRN);\nvar write_rtf_str = write_obj_str(RTF);\nvar write_txt_str = write_obj_str({from_sheet:sheet_to_txt});\nvar write_dbf_buf = write_obj_str(DBF);\nvar write_eth_str = write_obj_str(ETH);\n\nfunction fix_opts_func(defaults) {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nvar fix_read_opts = fix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n]);\n\n\nvar fix_write_opts = fix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n]);\nfunction get_sheet_type(n) {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path, relsPath, sheet, idx, sheetRels, sheets, stype, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tswitch(stype) {\n\t\t\tcase 'sheet': sheets[sheet]=parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart':\n\t\t\t\tvar cs = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tsheets[sheet] = cs;\n\t\t\t\tif(!cs || !cs['!chart']) break;\n\t\t\t\tvar dfile = resolve_path(cs['!chart'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\tcs = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, cs);\n\t\t\t\tbreak;\n\t\t\tcase 'macro': sheets[sheet]=parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': sheets[sheet]=parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t}\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x) { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip, opts) {\n\tmake_ssf(SSF);\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) throw new Error('Unsupported NUMBERS file');\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({});\n\tvar styles = ({});\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), link, opts);\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({});\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({});\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile);\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\tfor(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tif(dir.comments) parse_comments(zip, dir.comments, sheets, sheetRels, opts);\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: SSF.get_table()\n\t});\n\tif(opts.bookFiles) {\n\t\tout.keys = entries;\n\t\tout.files = zip.files;\n\t}\n\tif(opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts) {\n\tvar opts = _opts || {};\n\tvar f = '/!DataSpaces/Version';\n\tvar data = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\nif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\nif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip(wb, opts) {\n\t_shapeid = 1024;\n\tif(opts.bookType == \"ods\") return write_ods(wb, opts);\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = SSF.get_table();\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(SSF); SSF.load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = []; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tvar wbext = opts.bookType == \"xlsb\" ? \"bin\" : \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\nvar zip = new jszip();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip.file(f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\nf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip.file(f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip.file(f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip.file(f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\": /*\n\t\t\tf = \"xl/chartsheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip.file(f, write_cs(rId-1, f, opts, wb, wsrels));\n\t\t\tct.charts.push(f);\n\t\t\tadd_rels(wsrels, -1, \"chartsheets/sheet\" + rId + \".\" + wbext, RELS.CS);\n\t\t\tbreak; */\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip.file(f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar cf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip.file(cf, write_cmnt(comments, cf, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tzip.file(\"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip.file(get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip.file(f, write_sst(opts.Strings, f, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip.file(f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip.file(f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip.file(f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tzip.file(\"[Content_Types].xml\", write_ct(ct, opts));\n\tzip.file('_rels/.rels', write_rels(opts.rels));\n\tzip.file('xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\nfunction firstbyte(f,o) {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3]];\n\t\tcase 'base64': x = Base64.decode(f.slice(0,24)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array': return [f[0], f[1], f[2], f[3]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3)];\n}\n\nfunction read_cfb(cfb, opts) {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data, opts) {\nvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tswitch(o.type) {\n\t\tcase \"base64\": zip = new jszip(d, { base64:true }); break;\n\t\tcase \"binary\": case \"array\": zip = new jszip(d, { base64:false }); break;\n\t\tcase \"buffer\": zip = new jszip(d); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data, o) {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data, o) {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64.decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data, o) {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64.decode(d);\n\td = cptable.utils.decode(1200, d.slice(2), 'str');\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data) {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data, opts) {\n\treset_cp();\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), opts);\n\tvar d = data, n = [0,0,0,0], str = false;\n\tvar o = opts||{};\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: return read_cfb(CFB.read(d, o), o);\n\t\tcase 0x09: return parse_xlscfb(d, o);\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49: if(n[1] === 0x44) return read_wb_ID(d, o); break;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF: if(n[1] === 0xFE) { return read_utf16(d, o); } break;\n\t\tcase 0x00: if(n[1] === 0x00 && n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o); break;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t}\n\tif(n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename, opts) {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_zip_type(wb, opts) {\n\tvar o = opts||{};\n\tvar z = write_zip(wb, o);\n\tvar oopts = {};\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tswitch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = has_buf ? \"nodebuffer\" : \"string\"; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(o.type === \"file\") return write_dl(o.file, z.generate(oopts));\n\tvar out = z.generate(oopts);\n\treturn o.type == \"string\" ? utf8read(out) : out;\n}\n\nfunction write_cfb_type(wb, opts) {\n\tvar o = opts||{};\n\tvar cfb = write_xlscfb(wb, o);\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\nfunction write_string_type(out, opts, bom) {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64.encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer.from(o, 'utf8');\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out, opts) {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64.encode(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer.from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts) {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64.encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSync(wb, opts) {\n\tcheck_wb(wb);\n\tvar o = opts||{};\n\tif(o.type == \"array\") { o.type = \"binary\"; var out = (writeSync(wb, o)); o.type = \"array\"; return s2ab(out); }\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(write_slk_str(wb, o), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(write_htm_str(wb, o), o);\n\t\tcase 'txt': return write_stxt_type(write_txt_str(wb, o), o);\n\t\tcase 'csv': return write_string_type(write_csv_str(wb, o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(write_dif_str(wb, o), o);\n\t\tcase 'dbf': return write_binary_type(write_dbf_buf(wb, o), o);\n\t\tcase 'prn': return write_string_type(write_prn_str(wb, o), o);\n\t\tcase 'rtf': return write_string_type(write_rtf_str(wb, o), o);\n\t\tcase 'eth': return write_string_type(write_eth_str(wb, o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb, filename, opts) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileAsync(filename, wb, opts, cb) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\nfunction sheet_to_json(sheet, opts) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr = [], isempty = true, v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar raw = o.raw;\n\tvar defval = o.defval;\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols = [];\n\tvar out = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0, CC = 0;\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = 0;\n\t\t\t\tfor(CC = 0; CC < hdr.length; ++CC) if(hdr[CC] == vv) vv = v + \"_\" + (++counter);\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tvar row = (header === 1) ? [] : {};\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tisempty = true;\n\t\tif(header === 1) row = [];\n\t\telse {\n\t\t\trow = {};\n\t\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\t\telse row.__rowNum__ = R;\n\t\t}\n\t\tif(!dense || sheet[R]) for (C = r.s.c; C <= r.e.c; ++C) {\n\t\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\t\tif(val === undefined || val.t === undefined) {\n\t\t\t\tif(defval === undefined) continue;\n\t\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tv = val.v;\n\t\t\tswitch(val.t){\n\t\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\t\tcase 'e': v = void 0; break;\n\t\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t\t}\n\t\t\tif(hdr[C] != null) {\n\t\t\t\tif(v == null) {\n\t\t\t\t\tif(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\t\telse continue;\n\t\t\t\t} else {\n\t\t\t\t\trow[hdr[C]] = raw ? v : format_cell(val,v,o);\n\t\t\t\t}\n\t\t\t\tif(v != null) isempty = false;\n\t\t\t}\n\t\t}\n\t\tif((isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet, r, R, cols, fs, rs, FS, o) {\n\tvar isempty = true;\n\tvar row = [], txt = \"\", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+format_cell(val, null, o);\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet, opts) {\n\tvar out = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tout.push(row + RS);\n\t}\n\tdelete o.dense;\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet, opts) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet) {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols = [], C;\n\tvar cmds = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws, js, opts) {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws = _ws || ({});\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell;\n\tvar range = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}});\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t}\n\tvar hdr = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\telse if(v instanceof Date) {\n\t\t\t\tt = 'd';\n\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\tz = o.dateNF || SSF._table[14];\n\t\t\t}\n\t\t\tws[encode_cell({c:_C + C,r:_R + R + offset})] = cell = ({t:t, v:v});\n\t\t\tif(z) cell.z = z;\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js, opts) { return sheet_add_json(null, js, opts); }\n\nvar utils = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tget_formulae: sheet_to_formulae,\n\tmake_csv: sheet_to_csv,\n\tmake_json: sheet_to_json,\n\tmake_formulae: sheet_to_formulae,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: HTML_.from_sheet,\n\tsheet_to_dif: DIF.from_sheet,\n\tsheet_to_slk: SYLK.from_sheet,\n\tsheet_to_eth: ETH.from_sheet,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json\n};\n\n(function(utils) {\nutils.consts = utils.consts || {};\nfunction add_consts(R/*Array*/) { R.forEach(function(a){ utils.consts[a[0]] = a[1]; }); }\n\nfunction get_default(x, y, z) { return x[y] != null ? x[y] : (x[y] = z); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws, R, C) {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") return ws[R] || (ws[R] = {t:'z'});\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb, sh) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nutils.book_new = function() {\n\treturn { SheetNames: [], Sheets: {} };\n};\n\n/* add a worksheet to the end of a given workbook */\nutils.book_append_sheet = function(wb, ws, name) {\n\tif(!name) for(var i = 1; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name) throw new Error(\"Too many worksheets\");\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n};\n\n/* set sheet visibility (visible/hidden/very hidden) */\nutils.book_set_sheet_visibility = function(wb, sh, vis) {\n\tget_default(wb,\"Workbook\",{});\n\tget_default(wb.Workbook,\"Sheets\",[]);\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tget_default(wb.Workbook.Sheets,idx, {});\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n};\nadd_consts([\n\t[\"SHEET_VISIBLE\", 0],\n\t[\"SHEET_HIDDEN\", 1],\n\t[\"SHEET_VERY_HIDDEN\", 2]\n]);\n\n/* set number format */\nutils.cell_set_number_format = function(cell, fmt) {\n\tcell.z = fmt;\n\treturn cell;\n};\n\n/* set cell hyperlink */\nutils.cell_set_hyperlink = function(cell, target, tooltip) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target });\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n};\nutils.cell_set_internal_link = function(cell, range, tooltip) { return utils.cell_set_hyperlink(cell, \"#\" + range, tooltip); };\n\n/* add to cell comments */\nutils.cell_add_comment = function(cell, text, author) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n};\n\n/* set array formula and flush related cells */\nutils.sheet_set_array_formula = function(ws, range, formula) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) cell.f = formula;\n\t}\n\treturn ws;\n};\n\nreturn utils;\n})(utils);\n\nif(has_buf && typeof require != 'undefined') (function() {\n\tvar Readable = require('stream').Readable;\n\n\tvar write_csv_stream = function(sheet, opts) {\n\t\tvar stream = Readable();\n\t\tvar o = opts == null ? {} : opts;\n\t\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\t\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\t\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\t\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\t\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\t\tvar row = \"\", cols = [];\n\t\to.dense = Array.isArray(sheet);\n\t\tvar colinfo = o.skipHidden && sheet[\"!cols\"] || [];\n\t\tvar rowinfo = o.skipHidden && sheet[\"!rows\"] || [];\n\t\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\t\tvar R = r.s.r;\n\t\tvar BOM = false;\n\t\tstream._read = function() {\n\t\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\t\tif(R > r.e.r) return stream.push(null);\n\t\t\twhile(R <= r.e.r) {\n\t\t\t\t++R;\n\t\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\t\tif(row != null) {\n\t\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\t\tstream.push(row + RS);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn stream;\n\t};\n\n\tvar write_html_stream = function(ws, opts) {\n\t\tvar stream = Readable();\n\n\t\tvar o = opts || {};\n\t\tvar header = o.header != null ? o.header : HTML_.BEGIN;\n\t\tvar footer = o.footer != null ? o.footer : HTML_.END;\n\t\tstream.push(header);\n\t\tvar r = decode_range(ws['!ref']);\n\t\to.dense = Array.isArray(ws);\n\t\tstream.push(HTML_._preamble(ws, r, o));\n\t\tvar R = r.s.r;\n\t\tvar end = false;\n\t\tstream._read = function() {\n\t\t\tif(R > r.e.r) {\n\t\t\t\tif(!end) { end = true; stream.push(\"\" + footer); }\n\t\t\t\treturn stream.push(null);\n\t\t\t}\n\t\t\twhile(R <= r.e.r) {\n\t\t\t\tstream.push(HTML_._row(ws, r, R, o));\n\t\t\t\t++R;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\t\treturn stream;\n\t};\n\n\tXLSX.stream = {\n\t\tto_html: write_html_stream,\n\t\tto_csv: write_csv_stream\n\t};\n})();\n\nXLSX.parse_xlscfb = parse_xlscfb;\nXLSX.parse_ods = parse_ods;\nXLSX.parse_fods = parse_fods;\nXLSX.write_ods = write_ods;\nXLSX.parse_zip = parse_zip;\nXLSX.read = readSync; //xlsread\nXLSX.readFile = readFileSync; //readFile\nXLSX.readFileSync = readFileSync;\nXLSX.write = writeSync;\nXLSX.writeFile = writeFileSync;\nXLSX.writeFileSync = writeFileSync;\nXLSX.writeFileAsync = writeFileAsync;\nXLSX.utils = utils;\nXLSX.SSF = SSF;\nXLSX.CFB = CFB;\n})(typeof exports !== 'undefined' ? exports : XLSX);\n/*exported XLS, ODS */\nvar XLS = XLSX, ODS = XLSX;\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","/*!\n\nJSZip - A Javascript class for generating and reading zip files\n\n\n(c) 2009-2014 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/master/LICENSE\n\nNote: since JSZip 3 removed critical functionality, this version assigns to the\n`JSZipSync` variable. Another JSZip version can be loaded in parallel.\n*/\n(function(e){\n\tif(\"object\"==typeof exports&&\"undefined\"!=typeof module&&\"undefined\"==typeof DO_NOT_EXPORT_JSZIP)module.exports=e();\n\telse if(\"function\"==typeof define&&define.amd){JSZipSync=e();define([],e);}\n\telse{\n\t\tvar f;\n\t\t\"undefined\"!=typeof window?f=window:\n\t\t\"undefined\"!=typeof global?f=global:\n\t\t\"undefined\"!=typeof $ && $.global?f=$.global:\n\t\t\"undefined\"!=typeof self&&(f=self),f.JSZipSync=e()\n\t}\n}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error(\"Cannot find module '\"+o+\"'\")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n }\n else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);\n\n }\n\n return output;\n};\n\n// public method for decoding\nexports.decode = function(input, utf8) {\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n while (i < input.length) {\n\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output = output + String.fromCharCode(chr1);\n\n if (enc3 != 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 != 64) {\n output = output + String.fromCharCode(chr3);\n }\n\n }\n\n return output;\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nfunction CompressedObject() {\n this.compressedSize = 0;\n this.uncompressedSize = 0;\n this.crc32 = 0;\n this.compressionMethod = null;\n this.compressedContent = null;\n}\n\nCompressedObject.prototype = {\n /**\n * Return the decompressed content in an unspecified format.\n * The format will depend on the decompressor.\n * @return {Object} the decompressed content.\n */\n getContent: function() {\n return null; // see implementation\n },\n /**\n * Return the compressed content in an unspecified format.\n * The format will depend on the compressed conten source.\n * @return {Object} the compressed content.\n */\n getCompressedContent: function() {\n return null; // see implementation\n }\n};\nmodule.exports = CompressedObject;\n\n},{}],3:[function(_dereq_,module,exports){\n'use strict';\nexports.STORE = {\n magic: \"\\x00\\x00\",\n compress: function(content) {\n return content; // no compression\n },\n uncompress: function(content) {\n return content; // no compression\n },\n compressInputType: null,\n uncompressInputType: null\n};\nexports.DEFLATE = _dereq_('./flate');\n\n},{\"./flate\":8}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar utils = _dereq_('./utils');\n\nvar table = [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,\n 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,\n 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,\n 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,\n 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,\n 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,\n 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,\n 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,\n 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,\n 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,\n 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,\n 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,\n 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,\n 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,\n 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,\n 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,\n 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,\n 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,\n 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,\n 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,\n 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,\n 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,\n 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,\n 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,\n 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,\n 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,\n 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D\n];\n\n/**\n *\n * Javascript crc32\n * http://www.webtoolkit.info/\n *\n */\nmodule.exports = function crc32(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n\n var isArray = utils.getTypeOf(input) !== \"string\";\n\n if (typeof(crc) == \"undefined\") {\n crc = 0;\n }\n var x = 0;\n var y = 0;\n var b = 0;\n\n crc = crc ^ (-1);\n for (var i = 0, iTop = input.length; i < iTop; i++) {\n b = isArray ? input[i] : input.charCodeAt(i);\n y = (crc ^ b) & 0xFF;\n x = table[y];\n crc = (crc >>> 8) ^ x;\n }\n\n return crc ^ (-1);\n};\n// vim: set shiftwidth=4 softtabstop=4:\n\n},{\"./utils\":21}],5:[function(_dereq_,module,exports){\n'use strict';\nvar utils = _dereq_('./utils');\n\nfunction DataReader(data) {\n this.data = null; // type : see implementation\n this.length = 0;\n this.index = 0;\n}\nDataReader.prototype = {\n /**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\n checkOffset: function(offset) {\n this.checkIndex(this.index + offset);\n },\n /**\n * Check that the specifed index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\n checkIndex: function(newIndex) {\n if (this.length < newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n }\n },\n /**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\n setIndex: function(newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n },\n /**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\n skip: function(n) {\n this.setIndex(this.index + n);\n },\n /**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\n byteAt: function(i) {\n // see implementations\n },\n /**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\n readInt: function(size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n },\n /**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\n readString: function(size) {\n return utils.transformTo(\"string\", this.readData(size));\n },\n /**\n * Get raw data without conversion, bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\n readData: function(size) {\n // see implementations\n },\n /**\n * Find the last occurence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurence, -1 if not found.\n */\n lastIndexOfSignature: function(sig) {\n // see implementations\n },\n /**\n * Get the next date.\n * @return {Date} the date.\n */\n readDate: function() {\n var dostime = this.readInt(4);\n return new Date(\n ((dostime >> 25) & 0x7f) + 1980, // year\n ((dostime >> 21) & 0x0f) - 1, // month\n (dostime >> 16) & 0x1f, // day\n (dostime >> 11) & 0x1f, // hour\n (dostime >> 5) & 0x3f, // minute\n (dostime & 0x1f) << 1); // second\n }\n};\nmodule.exports = DataReader;\n\n},{\"./utils\":21}],6:[function(_dereq_,module,exports){\n'use strict';\nexports.base64 = false;\nexports.binary = false;\nexports.dir = false;\nexports.createFolders = false;\nexports.date = null;\nexports.compression = null;\nexports.comment = null;\n\n},{}],7:[function(_dereq_,module,exports){\n'use strict';\nvar utils = _dereq_('./utils');\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.string2binary = function(str) {\n return utils.string2binary(str);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.string2Uint8Array = function(str) {\n return utils.transformTo(\"uint8array\", str);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.uint8Array2String = function(array) {\n return utils.transformTo(\"string\", array);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.string2Blob = function(str) {\n var buffer = utils.transformTo(\"arraybuffer\", str);\n return utils.arrayBuffer2Blob(buffer);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.arrayBuffer2Blob = function(buffer) {\n return utils.arrayBuffer2Blob(buffer);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.transformTo = function(outputType, input) {\n return utils.transformTo(outputType, input);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.getTypeOf = function(input) {\n return utils.getTypeOf(input);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.checkSupport = function(type) {\n return utils.checkSupport(type);\n};\n\n/**\n * @deprecated\n * This value will be removed in a future version without replacement.\n */\nexports.MAX_VALUE_16BITS = utils.MAX_VALUE_16BITS;\n\n/**\n * @deprecated\n * This value will be removed in a future version without replacement.\n */\nexports.MAX_VALUE_32BITS = utils.MAX_VALUE_32BITS;\n\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.pretty = function(str) {\n return utils.pretty(str);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.findCompression = function(compressionMethod) {\n return utils.findCompression(compressionMethod);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.isRegExp = function (object) {\n return utils.isRegExp(object);\n};\n\n\n},{\"./utils\":21}],8:[function(_dereq_,module,exports){\n'use strict';\nvar USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n\nvar pako = _dereq_(\"pako\");\nexports.uncompressInputType = USE_TYPEDARRAY ? \"uint8array\" : \"array\";\nexports.compressInputType = USE_TYPEDARRAY ? \"uint8array\" : \"array\";\n\nexports.magic = \"\\x08\\x00\";\nexports.compress = function(input) {\n return pako.deflateRaw(input);\n};\nexports.uncompress = function(input) {\n return pako.inflateRaw(input);\n};\n\n},{\"pako\":24}],9:[function(_dereq_,module,exports){\n'use strict';\n\nvar base64 = _dereq_('./base64');\n\n/**\nUsage:\n zip = new JSZip();\n zip.file(\"hello.txt\", \"Hello, World!\").file(\"tempfile\", \"nothing\");\n zip.folder(\"images\").file(\"smile.gif\", base64Data, {base64: true});\n zip.file(\"Xmas.txt\", \"Ho ho ho !\", {date : new Date(\"December 25, 2007 00:00:01\")});\n zip.remove(\"tempfile\");\n\n base64zip = zip.generate();\n\n**/\n\n/**\n * Representation a of zip file in js\n * @constructor\n * @param {String=|ArrayBuffer=|Uint8Array=} data the data to load, if any (optional).\n * @param {Object=} options the options for creating this objects (optional).\n */\nfunction JSZipSync(data, options) {\n // if this constructor is used without `new`, it adds `new` before itself:\n if(!(this instanceof JSZipSync)) return new JSZipSync(data, options);\n\n // object containing the files :\n // {\n // \"folder/\" : {...},\n // \"folder/data.txt\" : {...}\n // }\n this.files = {};\n\n this.comment = null;\n\n // Where we are in the hierarchy\n this.root = \"\";\n if (data) {\n this.load(data, options);\n }\n this.clone = function() {\n var newObj = new JSZipSync();\n for (var i in this) {\n if (typeof this[i] !== \"function\") {\n newObj[i] = this[i];\n }\n }\n return newObj;\n };\n}\nJSZipSync.prototype = _dereq_('./object');\nJSZipSync.prototype.load = _dereq_('./load');\nJSZipSync.support = _dereq_('./support');\nJSZipSync.defaults = _dereq_('./defaults');\n\n/**\n * @deprecated\n * This namespace will be removed in a future version without replacement.\n */\nJSZipSync.utils = _dereq_('./deprecatedPublicUtils');\n\nJSZipSync.base64 = {\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n encode : function(input) {\n return base64.encode(input);\n },\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n decode : function(input) {\n return base64.decode(input);\n }\n};\nJSZipSync.compressions = _dereq_('./compressions');\nmodule.exports = JSZipSync;\n\n},{\"./base64\":1,\"./compressions\":3,\"./defaults\":6,\"./deprecatedPublicUtils\":7,\"./load\":10,\"./object\":13,\"./support\":17}],10:[function(_dereq_,module,exports){\n'use strict';\nvar base64 = _dereq_('./base64');\nvar ZipEntries = _dereq_('./zipEntries');\nmodule.exports = function(data, options) {\n var files, zipEntries, i, input;\n options = options || {};\n if (options.base64) {\n data = base64.decode(data);\n }\n\n zipEntries = new ZipEntries(data, options);\n files = zipEntries.files;\n for (i = 0; i < files.length; i++) {\n input = files[i];\n this.file(input.fileName, input.decompressed, {\n binary: true,\n optimizedBinaryString: true,\n date: input.date,\n dir: input.dir,\n comment : input.fileComment.length ? input.fileComment : null,\n createFolders: options.createFolders\n });\n }\n if (zipEntries.zipComment.length) {\n this.comment = zipEntries.zipComment;\n }\n\n return this;\n};\n\n},{\"./base64\":1,\"./zipEntries\":22}],11:[function(_dereq_,module,exports){\n(function (Buffer){\n'use strict';\nif(typeof Buffer !== 'undefined') {\n\t// $FlowIgnore\n\tif(!Buffer.from) Buffer.from = function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); };\n\t// $FlowIgnore\n\tif(!Buffer.alloc) Buffer.alloc = function(n) { return new Buffer(n); };\n}\nmodule.exports = function(data, encoding){\n return typeof data == 'number' ? Buffer.alloc(data) : Buffer.from(data, encoding);\n};\nmodule.exports.test = function(b){\n return Buffer.isBuffer(b);\n};\n}).call(this,(typeof Buffer !== \"undefined\" ? Buffer : undefined))\n},{}],12:[function(_dereq_,module,exports){\n'use strict';\nvar Uint8ArrayReader = _dereq_('./uint8ArrayReader');\n\nfunction NodeBufferReader(data) {\n this.data = data;\n this.length = this.data.length;\n this.index = 0;\n}\nNodeBufferReader.prototype = new Uint8ArrayReader();\n\n/**\n * @see DataReader.readData\n */\nNodeBufferReader.prototype.readData = function(size) {\n this.checkOffset(size);\n var result = this.data.slice(this.index, this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = NodeBufferReader;\n\n},{\"./uint8ArrayReader\":18}],13:[function(_dereq_,module,exports){\n'use strict';\nvar support = _dereq_('./support');\nvar utils = _dereq_('./utils');\nvar crc32 = _dereq_('./crc32');\nvar signature = _dereq_('./signature');\nvar defaults = _dereq_('./defaults');\nvar base64 = _dereq_('./base64');\nvar compressions = _dereq_('./compressions');\nvar CompressedObject = _dereq_('./compressedObject');\nvar nodeBuffer = _dereq_('./nodeBuffer');\nvar utf8 = _dereq_('./utf8');\nvar StringWriter = _dereq_('./stringWriter');\nvar Uint8ArrayWriter = _dereq_('./uint8ArrayWriter');\n\n/**\n * Returns the raw data of a ZipObject, decompress the content if necessary.\n * @param {ZipObject} file the file to use.\n * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.\n */\nvar getRawData = function(file) {\n if (file._data instanceof CompressedObject) {\n file._data = file._data.getContent();\n file.options.binary = true;\n file.options.base64 = false;\n\n if (utils.getTypeOf(file._data) === \"uint8array\") {\n var copy = file._data;\n // when reading an arraybuffer, the CompressedObject mechanism will keep it and subarray() a Uint8Array.\n // if we request a file in the same format, we might get the same Uint8Array or its ArrayBuffer (the original zip file).\n file._data = new Uint8Array(copy.length);\n // with an empty Uint8Array, Opera fails with a \"Offset larger than array size\"\n if (copy.length !== 0) {\n file._data.set(copy, 0);\n }\n }\n }\n return file._data;\n};\n\n/**\n * Returns the data of a ZipObject in a binary form. If the content is an unicode string, encode it.\n * @param {ZipObject} file the file to use.\n * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.\n */\nvar getBinaryData = function(file) {\n var result = getRawData(file),\n type = utils.getTypeOf(result);\n if (type === \"string\") {\n if (!file.options.binary) {\n // unicode text !\n // unicode string => binary string is a painful process, check if we can avoid it.\n if (support.nodebuffer) {\n return nodeBuffer(result, \"utf-8\");\n }\n }\n return file.asBinary();\n }\n return result;\n};\n\n/**\n * Transform this._data into a string.\n * @param {function} filter a function String -> String, applied if not null on the result.\n * @return {String} the string representing this._data.\n */\nvar dataToString = function(asUTF8) {\n var result = getRawData(this);\n if (result === null || typeof result === \"undefined\") {\n return \"\";\n }\n // if the data is a base64 string, we decode it before checking the encoding !\n if (this.options.base64) {\n result = base64.decode(result);\n }\n if (asUTF8 && this.options.binary) {\n // JSZip.prototype.utf8decode supports arrays as input\n // skip to array => string step, utf8decode will do it.\n result = out.utf8decode(result);\n }\n else {\n // no utf8 transformation, do the array => string step.\n result = utils.transformTo(\"string\", result);\n }\n\n if (!asUTF8 && !this.options.binary) {\n result = utils.transformTo(\"string\", out.utf8encode(result));\n }\n return result;\n};\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nvar ZipObject = function(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n\n this._data = data;\n this.options = options;\n\n /*\n * This object contains initial values for dir and date.\n * With them, we can check if the user changed the deprecated metadata in\n * `ZipObject#options` or not.\n */\n this._initialMetadata = {\n dir : options.dir,\n date : options.date\n };\n};\n\nZipObject.prototype = {\n /**\n * Return the content as UTF8 string.\n * @return {string} the UTF8 string.\n */\n asText: function() {\n return dataToString.call(this, true);\n },\n /**\n * Returns the binary content.\n * @return {string} the content as binary.\n */\n asBinary: function() {\n return dataToString.call(this, false);\n },\n /**\n * Returns the content as a nodejs Buffer.\n * @return {Buffer} the content as a Buffer.\n */\n asNodeBuffer: function() {\n var result = getBinaryData(this);\n return utils.transformTo(\"nodebuffer\", result);\n },\n /**\n * Returns the content as an Uint8Array.\n * @return {Uint8Array} the content as an Uint8Array.\n */\n asUint8Array: function() {\n var result = getBinaryData(this);\n return utils.transformTo(\"uint8array\", result);\n },\n /**\n * Returns the content as an ArrayBuffer.\n * @return {ArrayBuffer} the content as an ArrayBufer.\n */\n asArrayBuffer: function() {\n return this.asUint8Array().buffer;\n }\n};\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n var hex = \"\",\n i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nvar extend = function() {\n var result = {}, i, attr;\n for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments[i][attr];\n }\n }\n }\n return result;\n};\n\n/**\n * Transforms the (incomplete) options from the user into the complete\n * set of options to create a file.\n * @private\n * @param {Object} o the options from the user.\n * @return {Object} the complete set of options.\n */\nvar prepareFileAttrs = function(o) {\n o = o || {};\n if (o.base64 === true && (o.binary === null || o.binary === undefined)) {\n o.binary = true;\n }\n o = extend(o, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) o.compression = o.compression.toUpperCase();\n\n return o;\n};\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} o the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, o) {\n // be sure sub folders exist\n var dataType = utils.getTypeOf(data),\n parent;\n\n o = prepareFileAttrs(o);\n\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n\n if (o.dir || data === null || typeof data === \"undefined\") {\n o.base64 = false;\n o.binary = false;\n data = null;\n }\n else if (dataType === \"string\") {\n if (o.binary && !o.base64) {\n // optimizedBinaryString == true means that the file has already been filtered with a 0xFF mask\n if (o.optimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = utils.string2binary(data);\n }\n }\n }\n else { // arraybuffer, uint8array, ...\n o.base64 = false;\n o.binary = true;\n\n if (!dataType && !(data instanceof CompressedObject)) {\n throw new Error(\"The data of '\" + name + \"' is in an unsupported format !\");\n }\n\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = utils.transformTo(\"uint8array\", data);\n }\n }\n\n var object = new ZipObject(name, data, o);\n this.files[name] = object;\n return object;\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) == '/') {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf('/');\n return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders) {\n // Check the name ends with a /\n if (name.slice(-1) != \"/\") {\n name += \"/\"; // IE doesn't like substr(-1)\n }\n\n createFolders = (typeof createFolders !== 'undefined') ? createFolders : false;\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders\n });\n }\n return this.files[name];\n};\n\n/**\n * Generate a JSZip.CompressedObject for a given zipOject.\n * @param {ZipObject} file the object to read.\n * @param {JSZip.compression} compression the compression to use.\n * @return {JSZip.CompressedObject} the compressed result.\n */\nvar generateCompressedObjectFrom = function(file, compression) {\n var result = new CompressedObject(),\n content;\n\n // the data has not been decompressed, we might reuse things !\n if (file._data instanceof CompressedObject) {\n result.uncompressedSize = file._data.uncompressedSize;\n result.crc32 = file._data.crc32;\n\n if (result.uncompressedSize === 0 || file.dir) {\n compression = compressions['STORE'];\n result.compressedContent = \"\";\n result.crc32 = 0;\n }\n else if (file._data.compressionMethod === compression.magic) {\n result.compressedContent = file._data.getCompressedContent();\n }\n else {\n content = file._data.getContent();\n // need to decompress / recompress\n result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content));\n }\n }\n else {\n // have uncompressed data\n content = getBinaryData(file);\n if (!content || content.length === 0 || file.dir) {\n compression = compressions['STORE'];\n content = \"\";\n }\n result.uncompressedSize = content.length;\n result.crc32 = crc32(content);\n result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content));\n }\n\n result.compressedSize = result.compressedContent.length;\n result.compressionMethod = compression.magic;\n\n return result;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {string} name the file name.\n * @param {ZipObject} file the file content.\n * @param {JSZip.CompressedObject} compressedObject the compressed object.\n * @param {number} offset the current offset from the start of the zip file.\n * @return {object} the zip parts.\n */\nvar generateZipParts = function(name, file, compressedObject, offset) {\n var data = compressedObject.compressedContent,\n utfEncodedFileName = utils.transformTo(\"string\", utf8.utf8encode(file.name)),\n comment = file.comment || \"\",\n utfEncodedComment = utils.transformTo(\"string\", utf8.utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n o = file.options,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir, date;\n\n\n // handle the deprecated options.dir\n if (file._initialMetadata.dir !== file.dir) {\n dir = file.dir;\n } else {\n dir = o.dir;\n }\n\n // handle the deprecated options.date\n if(file._initialMetadata.date !== file.date) {\n date = file.date;\n } else {\n date = o.date;\n }\n\n\n dosTime = date.getHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getSeconds() / 2;\n\n dosDate = date.getFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | (date.getMonth() + 1);\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getDate();\n\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32(utfEncodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n\n if(useUTF8ForComment) {\n\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(this.crc32(utfEncodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n // set bit 11 if utf8\n header += (useUTF8ForFileName || useUTF8ForComment) ? \"\\x00\\x08\" : \"\\x00\\x00\";\n // compression method\n header += compressedObject.compressionMethod;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(compressedObject.crc32, 4);\n // compressed size\n header += decToHex(compressedObject.compressedSize, 4);\n // uncompressed size\n header += decToHex(compressedObject.uncompressedSize, 4);\n // file name length\n header += decToHex(utfEncodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n\n\n var fileRecord = signature.LOCAL_FILE_HEADER + header + utfEncodedFileName + extraFields;\n\n var dirRecord = signature.CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n \"\\x14\\x00\" +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(utfEncodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n (dir === true ? \"\\x10\\x00\\x00\\x00\" : \"\\x00\\x00\\x00\\x00\") +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n utfEncodedFileName +\n // extra field\n extraFields +\n // file comment\n utfEncodedComment;\n\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord,\n compressedObject: compressedObject\n };\n};\n\n\n// return the actual prototype of JSZip\nvar out = {\n /**\n * Read an existing zip and merge the data in the current JSZip object.\n * The implementation is in jszip-load.js, don't forget to include it.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} stream The stream to load\n * @param {Object} options Options for loading the stream.\n * options.base64 : is the stream in base64 ? default : false\n * @return {JSZip} the current JSZip object\n */\n load: function(stream, options) {\n throw new Error(\"Load method is not defined. Is the file jszip-load.js included ?\");\n },\n\n /**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\n filter: function(search) {\n var result = [],\n filename, relativePath, file, fileClone;\n for (filename in this.files) {\n if (!this.files.hasOwnProperty(filename)) {\n continue;\n }\n file = this.files[filename];\n // return a new object, don't let the user mess with our internal objects :)\n fileClone = new ZipObject(file.name, file._data, extend(file.options));\n relativePath = filename.slice(this.root.length, filename.length);\n if (filename.slice(0, this.root.length) === this.root && // the file is in the current root\n search(relativePath, fileClone)) { // and the file matches the function\n result.push(fileClone);\n }\n }\n return result;\n },\n\n /**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\n file: function(name, data, o) {\n if (arguments.length === 1) {\n if (utils.isRegExp(name)) {\n var regexp = name;\n return this.filter(function(relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n }\n else { // text\n return this.filter(function(relativePath, file) {\n return !file.dir && relativePath === name;\n })[0] || null;\n }\n }\n else { // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n },\n\n /**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\n folder: function(arg) {\n if (!arg) {\n return this;\n }\n\n if (utils.isRegExp(arg)) {\n return this.filter(function(relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n },\n\n /**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\n remove: function(name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) != \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function(relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n\n return this;\n },\n\n /**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - base64, (deprecated, use type instead) true to generate base64.\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\n generate: function(options) {\n options = extend(options || {}, {\n base64: true,\n compression: \"STORE\",\n type: \"base64\",\n comment: null\n });\n\n utils.checkSupport(options.type);\n\n var zipData = [],\n localDirLength = 0,\n centralDirLength = 0,\n writer, i,\n utfEncodedComment = utils.transformTo(\"string\", this.utf8encode(options.comment || this.comment || \"\"));\n\n // first, generate all the zip parts.\n for (var name in this.files) {\n if (!this.files.hasOwnProperty(name)) {\n continue;\n }\n var file = this.files[name];\n\n var compressionName = file.options.compression || options.compression.toUpperCase();\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n\n var compressedObject = generateCompressedObjectFrom.call(this, file, compression);\n\n var zipPart = generateZipParts.call(this, name, file, compressedObject, localDirLength);\n localDirLength += zipPart.fileRecord.length + compressedObject.compressedSize;\n centralDirLength += zipPart.dirRecord.length;\n zipData.push(zipPart);\n }\n\n var dirEnd = \"\";\n\n // end of central dir signature\n dirEnd = signature.CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(zipData.length, 2) +\n // total number of entries in the central directory\n decToHex(zipData.length, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(utfEncodedComment.length, 2) +\n // .ZIP file comment\n utfEncodedComment;\n\n\n // we have all the parts (and the total length)\n // time to create a writer !\n var typeName = options.type.toLowerCase();\n if(typeName===\"uint8array\"||typeName===\"arraybuffer\"||typeName===\"blob\"||typeName===\"nodebuffer\") {\n writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length);\n }else{\n writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length);\n }\n\n for (i = 0; i < zipData.length; i++) {\n writer.append(zipData[i].fileRecord);\n writer.append(zipData[i].compressedObject.compressedContent);\n }\n for (i = 0; i < zipData.length; i++) {\n writer.append(zipData[i].dirRecord);\n }\n\n writer.append(dirEnd);\n\n var zip = writer.finalize();\n\n\n\n switch(options.type.toLowerCase()) {\n // case \"zip is an Uint8Array\"\n case \"uint8array\" :\n case \"arraybuffer\" :\n case \"nodebuffer\" :\n return utils.transformTo(options.type.toLowerCase(), zip);\n case \"blob\" :\n return utils.arrayBuffer2Blob(utils.transformTo(\"arraybuffer\", zip));\n // case \"zip is a string\"\n case \"base64\" :\n return (options.base64) ? base64.encode(zip) : zip;\n default : // case \"string\" :\n return zip;\n }\n\n },\n\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n crc32: function (input, crc) {\n return crc32(input, crc);\n },\n\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n utf8encode: function (string) {\n return utils.transformTo(\"string\", utf8.utf8encode(string));\n },\n\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n utf8decode: function (input) {\n return utf8.utf8decode(input);\n }\n};\nmodule.exports = out;\n\n},{\"./base64\":1,\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./defaults\":6,\"./nodeBuffer\":11,\"./signature\":14,\"./stringWriter\":16,\"./support\":17,\"./uint8ArrayWriter\":19,\"./utf8\":20,\"./utils\":21}],14:[function(_dereq_,module,exports){\n'use strict';\nexports.LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nexports.CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nexports.CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nexports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nexports.ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nexports.DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n},{}],15:[function(_dereq_,module,exports){\n'use strict';\nvar DataReader = _dereq_('./dataReader');\nvar utils = _dereq_('./utils');\n\nfunction StringReader(data, optimizedBinaryString) {\n this.data = data;\n if (!optimizedBinaryString) {\n this.data = utils.string2binary(this.data);\n }\n this.length = this.data.length;\n this.index = 0;\n}\nStringReader.prototype = new DataReader();\n/**\n * @see DataReader.byteAt\n */\nStringReader.prototype.byteAt = function(i) {\n return this.data.charCodeAt(i);\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nStringReader.prototype.lastIndexOfSignature = function(sig) {\n return this.data.lastIndexOf(sig);\n};\n/**\n * @see DataReader.readData\n */\nStringReader.prototype.readData = function(size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n var result = this.data.slice(this.index, this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = StringReader;\n\n},{\"./dataReader\":5,\"./utils\":21}],16:[function(_dereq_,module,exports){\n'use strict';\n\nvar utils = _dereq_('./utils');\n\n/**\n * An object to write any content to a string.\n * @constructor\n */\nvar StringWriter = function() {\n this.data = [];\n};\nStringWriter.prototype = {\n /**\n * Append any content to the current string.\n * @param {Object} input the content to add.\n */\n append: function(input) {\n input = utils.transformTo(\"string\", input);\n this.data.push(input);\n },\n /**\n * Finalize the construction an return the result.\n * @return {string} the generated string.\n */\n finalize: function() {\n return this.data.join(\"\");\n }\n};\n\nmodule.exports = StringWriter;\n\n},{\"./utils\":21}],17:[function(_dereq_,module,exports){\n(function (Buffer){\n'use strict';\nexports.base64 = true;\nexports.array = true;\nexports.string = true;\nexports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\n// contains true if JSZip can read/generate nodejs Buffer, false otherwise.\n// Browserify will provide a Buffer implementation for browsers, which is\n// an augmented Uint8Array (i.e., can be used as either Buffer or U8).\nexports.nodebuffer = typeof Buffer !== \"undefined\";\n// contains true if JSZip can read/generate Uint8Array, false otherwise.\nexports.uint8array = typeof Uint8Array !== \"undefined\";\n\nif (typeof ArrayBuffer === \"undefined\") {\n exports.blob = false;\n}\nelse {\n var buffer = new ArrayBuffer(0);\n try {\n exports.blob = new Blob([buffer], {\n type: \"application/zip\"\n }).size === 0;\n }\n catch (e) {\n try {\n var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var builder = new Builder();\n builder.append(buffer);\n exports.blob = builder.getBlob('application/zip').size === 0;\n }\n catch (e) {\n exports.blob = false;\n }\n }\n}\n\n}).call(this,(typeof Buffer !== \"undefined\" ? Buffer : undefined))\n},{}],18:[function(_dereq_,module,exports){\n'use strict';\nvar DataReader = _dereq_('./dataReader');\n\nfunction Uint8ArrayReader(data) {\n if (data) {\n this.data = data;\n this.length = this.data.length;\n this.index = 0;\n }\n}\nUint8ArrayReader.prototype = new DataReader();\n/**\n * @see DataReader.byteAt\n */\nUint8ArrayReader.prototype.byteAt = function(i) {\n return this.data[i];\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nUint8ArrayReader.prototype.lastIndexOfSignature = function(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * @see DataReader.readData\n */\nUint8ArrayReader.prototype.readData = function(size) {\n this.checkOffset(size);\n if(size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.index, this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = Uint8ArrayReader;\n\n},{\"./dataReader\":5}],19:[function(_dereq_,module,exports){\n'use strict';\n\nvar utils = _dereq_('./utils');\n\n/**\n * An object to write any content to an Uint8Array.\n * @constructor\n * @param {number} length The length of the array.\n */\nvar Uint8ArrayWriter = function(length) {\n this.data = new Uint8Array(length);\n this.index = 0;\n};\nUint8ArrayWriter.prototype = {\n /**\n * Append any content to the current array.\n * @param {Object} input the content to add.\n */\n append: function(input) {\n if (input.length !== 0) {\n // with an empty Uint8Array, Opera fails with a \"Offset larger than array size\"\n input = utils.transformTo(\"uint8array\", input);\n this.data.set(input, this.index);\n this.index += input.length;\n }\n },\n /**\n * Finalize the construction an return the result.\n * @return {Uint8Array} the generated array.\n */\n finalize: function() {\n return this.data;\n }\n};\n\nmodule.exports = Uint8ArrayWriter;\n\n},{\"./utils\":21}],20:[function(_dereq_,module,exports){\n'use strict';\n\nvar utils = _dereq_('./utils');\nvar support = _dereq_('./support');\nvar nodeBuffer = _dereq_('./nodeBuffer');\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new Array(256);\nfor (var i=0; i<256; i++) {\n _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n}\n_utf8len[254]=_utf8len[254]=1; // Invalid sequence start\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if (((c & 0xfc00) === 0xd800) && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += (c < 0x80) ? 1 : ((c < 0x800) ? 2 : ((c < 0x10000) ? 3 : 4));\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | ((c >>> 6) & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | ((c >>> 12) & 0x3f);\n buf[i++] = 0x80 | ((c >>> 6) & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var str, i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if(utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return utils.applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nexports.utf8encode = function utf8encode(str) {\n if (support.nodebuffer) {\n return nodeBuffer(str, \"utf-8\");\n }\n\n return string2buf(str);\n};\n\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nexports.utf8decode = function utf8decode(buf) {\n if (support.nodebuffer) {\n return utils.transformTo(\"nodebuffer\", buf).toString(\"utf-8\");\n }\n\n buf = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n // return buf2string(buf);\n // Chrome prefers to work with \"small\" chunks of data\n // for the method buf2string.\n // Firefox and Chrome has their own shortcut, IE doesn't seem to really care.\n var result = [], k = 0, len = buf.length, chunk = 65536;\n while (k < len) {\n var nextBoundary = utf8border(buf, Math.min(k + chunk, len));\n if (support.uint8array) {\n result.push(buf2string(buf.subarray(k, nextBoundary)));\n } else {\n result.push(buf2string(buf.slice(k, nextBoundary)));\n }\n k = nextBoundary;\n }\n return result.join(\"\");\n\n};\n// vim: set shiftwidth=4 softtabstop=4:\n\n},{\"./nodeBuffer\":11,\"./support\":17,\"./utils\":21}],21:[function(_dereq_,module,exports){\n'use strict';\nvar support = _dereq_('./support');\nvar compressions = _dereq_('./compressions');\nvar nodeBuffer = _dereq_('./nodeBuffer');\n/**\n * Convert a string to a \"binary string\" : a string containing only char codes between 0 and 255.\n * @param {string} str the string to transform.\n * @return {String} the binary string.\n */\nexports.string2binary = function(str) {\n var result = \"\";\n for (var i = 0; i < str.length; i++) {\n result += String.fromCharCode(str.charCodeAt(i) & 0xff);\n }\n return result;\n};\nexports.arrayBuffer2Blob = function(buffer) {\n exports.checkSupport(\"blob\");\n\n try {\n // Blob constructor\n return new Blob([buffer], {\n type: \"application/zip\"\n });\n }\n catch (e) {\n\n try {\n // deprecated, browser only, old way\n var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var builder = new Builder();\n builder.append(buffer);\n return builder.getBlob('application/zip');\n }\n catch (e) {\n\n // well, fuck ?!\n throw new Error(\"Bug : can't construct the Blob.\");\n }\n }\n\n\n};\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n var chunk = 65536;\n var result = [],\n len = array.length,\n type = exports.getTypeOf(array),\n k = 0,\n canUseApply = true;\n try {\n switch(type) {\n case \"uint8array\":\n String.fromCharCode.apply(null, new Uint8Array(0));\n break;\n case \"nodebuffer\":\n String.fromCharCode.apply(null, nodeBuffer(0));\n break;\n }\n } catch(e) {\n canUseApply = false;\n }\n\n // no apply : slow and painful algorithm\n // default browser on android 4.*\n if (!canUseApply) {\n var resultStr = \"\";\n for(var i = 0; i < array.length;i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n }\n while (k < len && chunk > 1) {\n try {\n if (type === \"array\" || type === \"nodebuffer\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n }\n else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n return result.join(\"\");\n}\n\nexports.applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {};\n\n// string to ?\ntransform[\"string\"] = {\n \"string\": identity,\n \"array\": function(input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": function(input) {\n return stringToArrayLike(input, nodeBuffer(input.length));\n }\n};\n\n// array to ?\ntransform[\"array\"] = {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function(input) {\n return (new Uint8Array(input)).buffer;\n },\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodeBuffer(input);\n }\n};\n\n// arraybuffer to ?\ntransform[\"arraybuffer\"] = {\n \"string\": function(input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function(input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodeBuffer(new Uint8Array(input));\n }\n};\n\n// uint8array to ?\ntransform[\"uint8array\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return input.buffer;\n },\n \"uint8array\": identity,\n \"nodebuffer\": function(input) {\n return nodeBuffer(input);\n }\n};\n\n// nodebuffer to ?\ntransform[\"nodebuffer\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"nodebuffer\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return arrayLikeToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": identity\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nexports.transformTo = function(outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n exports.checkSupport(outputType);\n var inputType = exports.getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nexports.getTypeOf = function(input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.nodebuffer && nodeBuffer.test(input)) {\n return \"nodebuffer\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nexports.checkSupport = function(type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this browser\");\n }\n};\nexports.MAX_VALUE_16BITS = 65535;\nexports.MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nexports.pretty = function(str) {\n var res = '',\n code, i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nexports.findCompression = function(compressionMethod) {\n for (var method in compressions) {\n if (!compressions.hasOwnProperty(method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nexports.isRegExp = function (object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n};\n\n\n},{\"./compressions\":3,\"./nodeBuffer\":11,\"./support\":17}],22:[function(_dereq_,module,exports){\n'use strict';\nvar StringReader = _dereq_('./stringReader');\nvar NodeBufferReader = _dereq_('./nodeBufferReader');\nvar Uint8ArrayReader = _dereq_('./uint8ArrayReader');\nvar utils = _dereq_('./utils');\nvar sig = _dereq_('./signature');\nvar ZipEntry = _dereq_('./zipEntry');\nvar support = _dereq_('./support');\nvar jszipProto = _dereq_('./object');\n// class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {String|ArrayBuffer|Uint8Array} data the binary stream to load.\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntries(data, loadOptions) {\n this.files = [];\n this.loadOptions = loadOptions;\n if (data) {\n this.load(data);\n }\n}\nZipEntries.prototype = {\n /**\n * Check that the reader is on the speficied signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\n checkSignature: function(expectedSignature) {\n var signature = this.reader.readString(4);\n if (signature !== expectedSignature) {\n throw new Error(\"Corrupted zip or bug : unexpected signature \" + \"(\" + utils.pretty(signature) + \", expected \" + utils.pretty(expectedSignature) + \")\");\n }\n },\n /**\n * Read the end of the central directory.\n */\n readBlockEndOfCentral: function() {\n this.diskNumber = this.reader.readInt(2);\n this.diskWithCentralDirStart = this.reader.readInt(2);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n this.centralDirRecords = this.reader.readInt(2);\n this.centralDirSize = this.reader.readInt(4);\n this.centralDirOffset = this.reader.readInt(4);\n\n this.zipCommentLength = this.reader.readInt(2);\n // warning : the encoding depends of the system locale\n // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n // On a windows machine, this field is encoded with the localized windows code page.\n this.zipComment = this.reader.readString(this.zipCommentLength);\n // To get consistent behavior with the generation part, we will assume that\n // this is utf8 encoded.\n this.zipComment = jszipProto.utf8decode(this.zipComment);\n },\n /**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\n readBlockZip64EndOfCentral: function() {\n this.zip64EndOfCentralSize = this.reader.readInt(8);\n this.versionMadeBy = this.reader.readString(2);\n this.versionNeeded = this.reader.readInt(2);\n this.diskNumber = this.reader.readInt(4);\n this.diskWithCentralDirStart = this.reader.readInt(4);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n this.centralDirRecords = this.reader.readInt(8);\n this.centralDirSize = this.reader.readInt(8);\n this.centralDirOffset = this.reader.readInt(8);\n\n this.zip64ExtensibleData = {};\n var extraDataSize = this.zip64EndOfCentralSize - 44,\n index = 0,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n while (index < extraDataSize) {\n extraFieldId = this.reader.readInt(2);\n extraFieldLength = this.reader.readInt(4);\n extraFieldValue = this.reader.readString(extraFieldLength);\n this.zip64ExtensibleData[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n },\n /**\n * Read the end of the Zip 64 central directory locator.\n */\n readBlockZip64EndOfCentralLocator: function() {\n this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n this.disksCount = this.reader.readInt(4);\n if (this.disksCount > 1) {\n throw new Error(\"Multi-volumes zip are not supported\");\n }\n },\n /**\n * Read the local files, based on the offset read in the central part.\n */\n readLocalFiles: function() {\n var i, file;\n for (i = 0; i < this.files.length; i++) {\n file = this.files[i];\n this.reader.setIndex(file.localHeaderOffset);\n this.checkSignature(sig.LOCAL_FILE_HEADER);\n file.readLocalPart(this.reader);\n file.handleUTF8();\n }\n },\n /**\n * Read the central directory.\n */\n readCentralDir: function() {\n var file;\n\n this.reader.setIndex(this.centralDirOffset);\n while (this.reader.readString(4) === sig.CENTRAL_FILE_HEADER) {\n file = new ZipEntry({\n zip64: this.zip64\n }, this.loadOptions);\n file.readCentralPart(this.reader);\n this.files.push(file);\n }\n },\n /**\n * Read the end of central directory.\n */\n readEndOfCentral: function() {\n var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);\n if (offset === -1) {\n throw new Error(\"Corrupted zip : can't find end of central directory\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(sig.CENTRAL_DIRECTORY_END);\n this.readBlockEndOfCentral();\n\n\n /* extract from the zip spec :\n 4) If one of the fields in the end of central directory\n record is too small to hold required data, the field\n should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n ZIP64 format record should be created.\n 5) The end of central directory record and the\n Zip64 end of central directory locator record must\n reside on the same disk when splitting or spanning\n an archive.\n */\n if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {\n this.zip64 = true;\n\n /*\n Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n the zip file can fit into a 32bits integer. This cannot be solved : Javascript represents\n all numbers as 64-bit double precision IEEE 754 floating point numbers.\n So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n */\n\n // should look for a zip64 EOCD locator\n offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n if (offset === -1) {\n throw new Error(\"Corrupted zip : can't find the ZIP64 end of central directory locator\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n this.readBlockZip64EndOfCentralLocator();\n\n // now the zip64 EOCD record\n this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n this.readBlockZip64EndOfCentral();\n }\n },\n prepareReader: function(data) {\n var type = utils.getTypeOf(data);\n if (type === \"string\" && !support.uint8array) {\n this.reader = new StringReader(data, this.loadOptions.optimizedBinaryString);\n }\n else if (type === \"nodebuffer\") {\n this.reader = new NodeBufferReader(data);\n }\n else {\n this.reader = new Uint8ArrayReader(utils.transformTo(\"uint8array\", data));\n }\n },\n /**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\n load: function(data) {\n this.prepareReader(data);\n this.readEndOfCentral();\n this.readCentralDir();\n this.readLocalFiles();\n }\n};\n// }}} end of ZipEntries\nmodule.exports = ZipEntries;\n\n},{\"./nodeBufferReader\":12,\"./object\":13,\"./signature\":14,\"./stringReader\":15,\"./support\":17,\"./uint8ArrayReader\":18,\"./utils\":21,\"./zipEntry\":23}],23:[function(_dereq_,module,exports){\n'use strict';\nvar StringReader = _dereq_('./stringReader');\nvar utils = _dereq_('./utils');\nvar CompressedObject = _dereq_('./compressedObject');\nvar jszipProto = _dereq_('./object');\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntry(options, loadOptions) {\n this.options = options;\n this.loadOptions = loadOptions;\n}\nZipEntry.prototype = {\n /**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\n isEncrypted: function() {\n // bit 1 is set\n return (this.bitFlag & 0x0001) === 0x0001;\n },\n /**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\n useUTF8: function() {\n // bit 11 is set\n return (this.bitFlag & 0x0800) === 0x0800;\n },\n /**\n * Prepare the function used to generate the compressed content from this ZipFile.\n * @param {DataReader} reader the reader to use.\n * @param {number} from the offset from where we should read the data.\n * @param {number} length the length of the data to read.\n * @return {Function} the callback to get the compressed content (the type depends of the DataReader class).\n */\n prepareCompressedContent: function(reader, from, length) {\n return function() {\n var previousIndex = reader.index;\n reader.setIndex(from);\n var compressedFileData = reader.readData(length);\n reader.setIndex(previousIndex);\n\n return compressedFileData;\n };\n },\n /**\n * Prepare the function used to generate the uncompressed content from this ZipFile.\n * @param {DataReader} reader the reader to use.\n * @param {number} from the offset from where we should read the data.\n * @param {number} length the length of the data to read.\n * @param {JSZip.compression} compression the compression used on this file.\n * @param {number} uncompressedSize the uncompressed size to expect.\n * @return {Function} the callback to get the uncompressed content (the type depends of the DataReader class).\n */\n prepareContent: function(reader, from, length, compression, uncompressedSize) {\n return function() {\n\n var compressedFileData = utils.transformTo(compression.uncompressInputType, this.getCompressedContent());\n var uncompressedFileData = compression.uncompress(compressedFileData);\n\n if (uncompressedFileData.length !== uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n\n return uncompressedFileData;\n };\n },\n /**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readLocalPart: function(reader) {\n var compression, localExtraFieldsLength;\n\n // we already know everything from the central dir !\n // If the central dir data are false, we are doomed.\n // On the bright side, the local part is scary : zip64, data descriptors, both, etc.\n // The less data we get here, the more reliable this should be.\n // Let's skip the whole header and dash to the data !\n reader.skip(22);\n // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n // Strangely, the filename here is OK.\n // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n // the internet.\n //\n // I think I see the logic here : the central directory is used to display\n // content and the local directory is used to extract the files. Mixing / and \\\n // may be used to display \\ to windows users and use / when extracting the files.\n // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n this.fileNameLength = reader.readInt(2);\n localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n this.fileName = reader.readString(this.fileNameLength);\n reader.skip(localExtraFieldsLength);\n\n if (this.compressedSize == -1 || this.uncompressedSize == -1) {\n throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory \" + \"(compressedSize == -1 || uncompressedSize == -1)\");\n }\n\n compression = utils.findCompression(this.compressionMethod);\n if (compression === null) { // no compression found\n throw new Error(\"Corrupted zip : compression \" + utils.pretty(this.compressionMethod) + \" unknown (inner file : \" + this.fileName + \")\");\n }\n this.decompressed = new CompressedObject();\n this.decompressed.compressedSize = this.compressedSize;\n this.decompressed.uncompressedSize = this.uncompressedSize;\n this.decompressed.crc32 = this.crc32;\n this.decompressed.compressionMethod = this.compressionMethod;\n this.decompressed.getCompressedContent = this.prepareCompressedContent(reader, reader.index, this.compressedSize, compression);\n this.decompressed.getContent = this.prepareContent(reader, reader.index, this.compressedSize, compression, this.uncompressedSize);\n\n // we need to compute the crc32...\n if (this.loadOptions.checkCRC32) {\n this.decompressed = utils.transformTo(\"string\", this.decompressed.getContent());\n if (jszipProto.crc32(this.decompressed) !== this.crc32) {\n throw new Error(\"Corrupted zip : CRC32 mismatch\");\n }\n }\n },\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readCentralPart: function(reader) {\n this.versionMadeBy = reader.readString(2);\n this.versionNeeded = reader.readInt(2);\n this.bitFlag = reader.readInt(2);\n this.compressionMethod = reader.readString(2);\n this.date = reader.readDate();\n this.crc32 = reader.readInt(4);\n this.compressedSize = reader.readInt(4);\n this.uncompressedSize = reader.readInt(4);\n this.fileNameLength = reader.readInt(2);\n this.extraFieldsLength = reader.readInt(2);\n this.fileCommentLength = reader.readInt(2);\n this.diskNumberStart = reader.readInt(2);\n this.internalFileAttributes = reader.readInt(2);\n this.externalFileAttributes = reader.readInt(4);\n this.localHeaderOffset = reader.readInt(4);\n\n if (this.isEncrypted()) {\n throw new Error(\"Encrypted zip are not supported\");\n }\n\n this.fileName = reader.readString(this.fileNameLength);\n this.readExtraFields(reader);\n this.parseZIP64ExtraField(reader);\n this.fileComment = reader.readString(this.fileCommentLength);\n\n // warning, this is true only for zip with madeBy == DOS (plateform dependent feature)\n this.dir = this.externalFileAttributes & 0x00000010 ? true : false;\n },\n /**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\n parseZIP64ExtraField: function(reader) {\n\n if (!this.extraFields[0x0001]) {\n return;\n }\n\n // should be something, preparing the extra reader\n var extraReader = new StringReader(this.extraFields[0x0001].value);\n\n // I really hope that these 64bits integer can fit in 32 bits integer, because js\n // won't let us have more.\n if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {\n this.uncompressedSize = extraReader.readInt(8);\n }\n if (this.compressedSize === utils.MAX_VALUE_32BITS) {\n this.compressedSize = extraReader.readInt(8);\n }\n if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {\n this.localHeaderOffset = extraReader.readInt(8);\n }\n if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {\n this.diskNumberStart = extraReader.readInt(4);\n }\n },\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readExtraFields: function(reader) {\n var start = reader.index,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n\n this.extraFields = this.extraFields || {};\n\n while (reader.index < start + this.extraFieldsLength) {\n extraFieldId = reader.readInt(2);\n extraFieldLength = reader.readInt(2);\n extraFieldValue = reader.readString(extraFieldLength);\n\n this.extraFields[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n },\n /**\n * Apply an UTF8 transformation if needed.\n */\n handleUTF8: function() {\n if (this.useUTF8()) {\n this.fileName = jszipProto.utf8decode(this.fileName);\n this.fileComment = jszipProto.utf8decode(this.fileComment);\n } else {\n var upath = this.findExtraFieldUnicodePath();\n if (upath !== null) {\n this.fileName = upath;\n }\n var ucomment = this.findExtraFieldUnicodeComment();\n if (ucomment !== null) {\n this.fileComment = ucomment;\n }\n }\n },\n\n /**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\n findExtraFieldUnicodePath: function() {\n var upathField = this.extraFields[0x7075];\n if (upathField) {\n var extraReader = new StringReader(upathField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the filename changed, this field is out of date.\n if (jszipProto.crc32(this.fileName) !== extraReader.readInt(4)) {\n return null;\n }\n\n return jszipProto.utf8decode(extraReader.readString(upathField.length - 5));\n }\n return null;\n },\n\n /**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\n findExtraFieldUnicodeComment: function() {\n var ucommentField = this.extraFields[0x6375];\n if (ucommentField) {\n var extraReader = new StringReader(ucommentField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the comment changed, this field is out of date.\n if (jszipProto.crc32(this.fileComment) !== extraReader.readInt(4)) {\n return null;\n }\n\n return jszipProto.utf8decode(extraReader.readString(ucommentField.length - 5));\n }\n return null;\n }\n};\nmodule.exports = ZipEntry;\n\n},{\"./compressedObject\":2,\"./object\":13,\"./stringReader\":15,\"./utils\":21}],24:[function(_dereq_,module,exports){\n// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign = _dereq_('./lib/utils/common').assign;\n\nvar deflate = _dereq_('./lib/deflate');\nvar inflate = _dereq_('./lib/inflate');\nvar constants = _dereq_('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n},{\"./lib/deflate\":25,\"./lib/inflate\":26,\"./lib/utils/common\":27,\"./lib/zlib/constants\":30}],25:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar zlib_deflate = _dereq_('./zlib/deflate.js');\nvar utils = _dereq_('./utils/common');\nvar strings = _dereq_('./utils/strings');\nvar msg = _dereq_('./zlib/messages');\nvar zstream = _dereq_('./zlib/zstream');\n\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overriden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nvar Deflate = function(options) {\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n};\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|String): input data. Strings will be converted to\n * utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That flush internal pending buffers and call\n * [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function(data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && _mode === Z_FINISH)) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): ouput data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function(chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that input stream complete\n * or error happenned. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function(status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate alrorythm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/deflate.js\":32,\"./zlib/messages\":37,\"./zlib/zstream\":39}],26:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar zlib_inflate = _dereq_('./zlib/inflate.js');\nvar utils = _dereq_('./utils/common');\nvar strings = _dereq_('./utils/strings');\nvar c = _dereq_('./zlib/constants');\nvar msg = _dereq_('./zlib/messages');\nvar zstream = _dereq_('./zlib/zstream');\nvar gzheader = _dereq_('./zlib/gzheader');\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overriden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nvar Inflate = function(options) {\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new gzheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n};\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That flush internal pending buffers and call\n * [[Inflate#onEnd]].\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function(data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && _mode === c.Z_FINISH)) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n } while ((strm.avail_in > 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): ouput data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function(chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell inflate that input stream complete\n * or error happenned. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function(status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 alligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n\n},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/constants\":30,\"./zlib/gzheader\":33,\"./zlib/inflate.js\":35,\"./zlib/messages\":37,\"./zlib/zstream\":39}],27:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof(source) !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (source.hasOwnProperty(p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs+len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for(var i=0; i= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n}\n_utf8len[254]=_utf8len[254]=1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // use fallback for big arrays to avoid stack overflow\n if (len < 65537) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for(var i=0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function(buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function(str) {\n var buf = new utils.Buf8(str.length);\n for(var i=0, len=buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n},{\"./common\":27}],29:[function(_dereq_,module,exports){\n'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It doesn't worth to make additional optimizationa as in original.\n// Small size is preferable.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0\n , s2 = ((adler >>> 16) & 0xffff) |0\n , n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n},{}],30:[function(_dereq_,module,exports){\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n},{}],31:[function(_dereq_,module,exports){\n'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for(var n =0; n < 256; n++){\n c = n;\n for(var k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable\n , end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n},{}],32:[function(_dereq_,module,exports){\n'use strict';\n\nvar utils = _dereq_('../utils/common');\nvar trees = _dereq_('./trees');\nvar adler32 = _dereq_('./adler32');\nvar crc32 = _dereq_('./crc32');\nvar msg = _dereq_('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2*L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only (s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH-1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH-1)) ? s.strstart : MIN_MATCH-1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH-1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size-MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH-1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1- s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length-1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH-1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart-1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart-1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH-1 ? s.strstart : MIN_MATCH-1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nvar Config = function (good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n};\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2*D_CODES+1) * 2);\n this.bl_tree = new utils.Buf16((2*BL_CODES+1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS+1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2*L_CODES+1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2*L_CODES+1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n s.d_buf = s.lit_bufsize >> 1;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg){\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n/* =========================================================================\n * Copy the source state to the destination state\n */\n//function deflateCopy(dest, source) {\n//\n//}\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./messages\":37,\"./trees\":38}],33:[function(_dereq_,module,exports){\n'use strict';\n\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n},{}],34:[function(_dereq_,module,exports){\n'use strict';\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n var window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n},{}],35:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar utils = _dereq_('../utils/common');\nvar adler32 = _dereq_('./adler32');\nvar crc32 = _dereq_('./crc32');\nvar inflate_fast = _dereq_('./inffast');\nvar inflate_table = _dereq_('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction ZSWAP32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, {bits: 9});\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, {bits: 5});\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window,src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window,src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window,src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more conveniend processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0 /*crc32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = ZSWAP32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = {bits: state.lenbits};\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = {bits: state.lenbits};\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = {bits: state.distbits};\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) -1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) -1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' insdead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, ZSWAP32 returns signed too\n if ((state.flags ? hold : ZSWAP32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./inffast\":34,\"./inftrees\":36}],36:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar utils = _dereq_('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS+1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS+1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n var i=0;\n /* process all codes and make table entries */\n for (;;) {\n i++;\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n},{\"../utils/common\":27}],37:[function(_dereq_,module,exports){\n'use strict';\n\nmodule.exports = {\n '2': 'need dictionary', /* Z_NEED_DICT 2 */\n '1': 'stream end', /* Z_STREAM_END 1 */\n '0': '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n},{}],38:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar utils = _dereq_('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2*L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES+2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH-MIN_MATCH+1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nvar StaticTreeDesc = function (static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n};\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nvar TreeDesc = function(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n};\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short (s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c*2]/*.Code*/, tree[c*2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max]*2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max+1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n*2 +1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n*2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n-base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n*2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length-1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits+1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m*2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m*2 + 1]/*.Len*/)*tree[m*2]/*.Freq*/;\n tree[m*2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS+1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits-1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES-1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1< dist code (0..29) */\n dist = 0;\n for (code = 0 ; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */\n for ( ; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n*2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n*2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n*2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n*2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES+1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n*2 + 1]/*.Len*/ = 5;\n static_dtree[n*2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc =new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n*2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n*2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n*2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK*2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n*2;\n var _m2 = m*2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j+1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx*2] << 8) | (s.pending_buf[s.d_buf + lx*2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code+LITERALS+1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n*2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node*2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n*2 + 1]/*.Dad*/ = tree[m*2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0*2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code+1)*2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n+1)*2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6*2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10*2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138*2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0*2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n+1)*2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count-3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count-3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count-11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex]*2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3*(max_blindex+1) + 5+5+4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes-1, 5);\n send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank]*2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes-1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes-1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n*2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK<<1)+(last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES<<1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len+3+7) >>> 3;\n static_lenb = (s.static_len+3+7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len+4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES<<1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES<<1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code+1, s.d_desc.max_code+1, max_blindex+1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc*2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc]+LITERALS+1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize-1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n},{\"../utils/common\":27}],39:[function(_dereq_,module,exports){\n'use strict';\n\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n},{}]},{},[9])\n(9)\n}));\n","!function(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],r):\"object\"==typeof exports?r(require(\"moment\"),require(\"fullcalendar\")):r(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,\"a\",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p=\"\",r(r.s=135)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},135:function(e,r,n){Object.defineProperty(r,\"__esModule\",{value:!0}),n(136);var t=n(1);t.datepickerLocale(\"fr\",\"fr\",{closeText:\"Fermer\",prevText:\"Précédent\",nextText:\"Suivant\",currentText:\"Aujourd'hui\",monthNames:[\"janvier\",\"février\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"août\",\"septembre\",\"octobre\",\"novembre\",\"décembre\"],monthNamesShort:[\"janv.\",\"févr.\",\"mars\",\"avr.\",\"mai\",\"juin\",\"juil.\",\"août\",\"sept.\",\"oct.\",\"nov.\",\"déc.\"],dayNames:[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"],dayNamesShort:[\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"],dayNamesMin:[\"D\",\"L\",\"M\",\"M\",\"J\",\"V\",\"S\"],weekHeader:\"Sem.\",dateFormat:\"dd/mm/yy\",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),t.locale(\"fr\",{buttonText:{year:\"Année\",month:\"Mois\",week:\"Semaine\",day:\"Jour\",list:\"Mon planning\"},allDayHtml:\"Toute la
journée\",eventLimitText:\"en plus\",noEventsMessage:\"Aucun événement à afficher\"})},136:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){return e.defineLocale(\"fr\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"di_lu_ma_me_je_ve_sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd’hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",ss:\"%d secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},dayOfMonthOrdinalParse:/\\d{1,2}(er|)/,ordinal:function(e,r){switch(r){case\"D\":return e+(1===e?\"er\":\"\");default:case\"M\":case\"Q\":case\"DDD\":case\"d\":return e+(1===e?\"er\":\"e\");case\"w\":case\"W\":return e+(1===e?\"re\":\"e\")}},week:{dow:1,doy:4}})})}})});","!function(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],r):\"object\"==typeof exports?r(require(\"moment\"),require(\"fullcalendar\")):r(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,\"a\",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p=\"\",r(r.s=131)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},131:function(e,r,n){Object.defineProperty(r,\"__esModule\",{value:!0}),n(132);var t=n(1);t.datepickerLocale(\"fr-ca\",\"fr-CA\",{closeText:\"Fermer\",prevText:\"Précédent\",nextText:\"Suivant\",currentText:\"Aujourd'hui\",monthNames:[\"janvier\",\"février\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"août\",\"septembre\",\"octobre\",\"novembre\",\"décembre\"],monthNamesShort:[\"janv.\",\"févr.\",\"mars\",\"avril\",\"mai\",\"juin\",\"juil.\",\"août\",\"sept.\",\"oct.\",\"nov.\",\"déc.\"],dayNames:[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"],dayNamesShort:[\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\"],dayNamesMin:[\"D\",\"L\",\"M\",\"M\",\"J\",\"V\",\"S\"],weekHeader:\"Sem.\",dateFormat:\"yy-mm-dd\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"}),t.locale(\"fr-ca\",{buttonText:{year:\"Année\",month:\"Mois\",week:\"Semaine\",day:\"Jour\",list:\"Mon planning\"},allDayHtml:\"Toute la
journée\",eventLimitText:\"en plus\",noEventsMessage:\"Aucun événement à afficher\"})},132:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){return e.defineLocale(\"fr-ca\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"di_lu_ma_me_je_ve_sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd’hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",ss:\"%d secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},dayOfMonthOrdinalParse:/\\d{1,2}(er|e)/,ordinal:function(e,r){switch(r){default:case\"M\":case\"Q\":case\"D\":case\"DDD\":case\"d\":return e+(1===e?\"er\":\"e\");case\"w\":case\"W\":return e+(1===e?\"re\":\"e\")}}})})}})});","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"moment\"),require(\"fullcalendar\")):\"function\"==typeof define&&define.amd?define([\"moment\",\"fullcalendar\"],t):\"object\"==typeof exports?t(require(\"moment\"),require(\"fullcalendar\")):t(e.moment,e.FullCalendar)}(\"undefined\"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=109)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},109:function(e,t,n){Object.defineProperty(t,\"__esModule\",{value:!0}),n(110),n(1).locale(\"en-ca\")},110:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale(\"en-ca\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"YYYY-MM-DD\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\")}})})}})});","/*!\n * froala_editor v2.7.4 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2018 Froala Labs\n */\n\n!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):\"object\"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c=\"undefined\"!=typeof window?require(\"jquery\"):require(\"jquery\")(b)),a(c)}:a(window.jQuery)}(function(a){var b=function(c,d){this.id=++a.FE.ID,this.opts=a.extend(!0,{},a.extend({},b.DEFAULTS,\"object\"==typeof d&&d));var e=JSON.stringify(this.opts);a.FE.OPTS_MAPPING[e]=a.FE.OPTS_MAPPING[e]||this.id,this.sid=a.FE.OPTS_MAPPING[e],a.FE.SHARED[this.sid]=a.FE.SHARED[this.sid]||{},this.shared=a.FE.SHARED[this.sid],this.shared.count=(this.shared.count||0)+1,this.$oel=a(c),this.$oel.data(\"froala.editor\",this),this.o_doc=c.ownerDocument,this.o_win=\"defaultView\"in this.o_doc?this.o_doc.defaultView:this.o_doc.parentWindow;var f=a(this.o_win).scrollTop();this.$oel.on(\"froala.doInit\",a.proxy(function(){this.$oel.off(\"froala.doInit\"),this.doc=this.$el.get(0).ownerDocument,this.win=\"defaultView\"in this.doc?this.doc.defaultView:this.doc.parentWindow,this.$doc=a(this.doc),this.$win=a(this.win),this.opts.pluginsEnabled||(this.opts.pluginsEnabled=Object.keys(a.FE.PLUGINS)),this.opts.initOnClick?(this.load(a.FE.MODULES),this.$el.on(\"touchstart.init\",function(){a(this).data(\"touched\",!0)}),this.$el.on(\"touchmove.init\",function(){a(this).removeData(\"touched\")}),this.$el.on(\"mousedown.init touchend.init dragenter.init focus.init\",a.proxy(function(b){if(\"touchend\"==b.type&&!this.$el.data(\"touched\"))return!0;if(1===b.which||!b.which){this.$el.off(\"mousedown.init touchstart.init touchmove.init touchend.init dragenter.init focus.init\"),this.load(a.FE.MODULES),this.load(a.FE.PLUGINS);var c=b.originalEvent&&b.originalEvent.originalTarget;c&&\"IMG\"==c.tagName&&a(c).trigger(\"mousedown\"),\"undefined\"==typeof this.ul&&this.destroy(),\"touchend\"==b.type&&this.image&&b.originalEvent&&b.originalEvent.target&&a(b.originalEvent.target).is(\"img\")&&setTimeout(a.proxy(function(){this.image.edit(a(b.originalEvent.target))},this),100),this.ready=!0,this.events.trigger(\"initialized\")}},this)),this.events.trigger(\"initializationDelayed\")):(this.load(a.FE.MODULES),this.load(a.FE.PLUGINS),a(this.o_win).scrollTop(f),\"undefined\"==typeof this.ul&&this.destroy(),this.ready=!0,this.events.trigger(\"initialized\"))},this)),this._init()};b.DEFAULTS={initOnClick:!1,pluginsEnabled:null},b.MODULES={},b.PLUGINS={},b.VERSION=\"2.7.4\",b.INSTANCES=[],b.OPTS_MAPPING={},b.SHARED={},b.ID=0,b.prototype._init=function(){var b=this.$oel.prop(\"tagName\");this.$oel.closest(\"label\").length>=1;var c=a.proxy(function(){\"TEXTAREA\"!=b&&(this._original_html=this._original_html||this.$oel.html()),this.$box=this.$box||this.$oel,this.opts.fullPage&&(this.opts.iframe=!0),this.opts.iframe?(this.$iframe=a('