(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{ /***/"./node_modules/core-js/internals/array-buffer-native.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/internals/array-buffer-native.js ***! \***************************************************************/ /*! no static exports found */ /***/function(module,exports){eval("module.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/array-buffer-native.js?"); /***/}, /***/"./node_modules/core-js/internals/array-buffer-view-core.js": /*!******************************************************************!*\ !*** ./node_modules/core-js/internals/array-buffer-view-core.js ***! \******************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(/*! ../internals/array-buffer-native */ "./node_modules/core-js/internals/array-buffer-native.js");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");\nvar global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");\nvar has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");\nvar classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js");\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f;\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");\nvar uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol(\'toStringTag\');\nvar TYPED_ARRAY_TAG = uid(\'TYPED_ARRAY_TAG\');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== \'Opera\';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === \'DataView\' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError(\'Target is not a typed array\');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError(\'Target is not a typed array constructor\');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != \'function\' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError(\'Incorrect invocation\');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/array-buffer-view-core.js?')}, /***/"./node_modules/core-js/internals/array-buffer.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/array-buffer.js ***! \********************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(/*! ../internals/array-buffer-native */ "./node_modules/core-js/internals/array-buffer-native.js");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");\nvar redefineAll = __webpack_require__(/*! ../internals/redefine-all */ "./node_modules/core-js/internals/redefine-all.js");\nvar fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js");\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");\nvar toIndex = __webpack_require__(/*! ../internals/to-index */ "./node_modules/core-js/internals/to-index.js");\nvar IEEE754 = __webpack_require__(/*! ../internals/ieee754 */ "./node_modules/core-js/internals/ieee754.js");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js");\nvar getOwnPropertyNames = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js").f;\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f;\nvar arrayFill = __webpack_require__(/*! ../internals/array-fill */ "./node_modules/core-js/internals/array-fill.js");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js");\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = \'ArrayBuffer\';\nvar DATA_VIEW = \'DataView\';\nvar PROTOTYPE = \'prototype\';\nvar WRONG_LENGTH = \'Wrong length\';\nvar WRONG_INDEX = \'Wrong index\';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError(\'Wrong offset\');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, \'byteLength\');\n addGetter($DataView, \'buffer\');\n addGetter($DataView, \'byteLength\');\n addGetter($DataView, \'byteOffset\');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf($DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataViewPrototype.setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/array-buffer.js?')}, /***/"./node_modules/core-js/internals/array-copy-within.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/array-copy-within.js ***! \*************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/array-copy-within.js?')}, /***/"./node_modules/core-js/internals/array-fill.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/array-fill.js ***! \******************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/array-fill.js?')}, /***/"./node_modules/core-js/internals/array-last-index-of.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/internals/array-last-index-of.js ***! \***************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");\nvar arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js/internals/array-method-is-strict.js");\nvar arrayMethodUsesToLength = __webpack_require__(/*! ../internals/array-method-uses-to-length */ "./node_modules/core-js/internals/array-method-uses-to-length.js");\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict(\'lastIndexOf\');\n// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method\nvar USES_TO_LENGTH = arrayMethodUsesToLength(\'indexOf\', { ACCESSORS: true, 1: 0 });\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/array-last-index-of.js?')}, /***/"./node_modules/core-js/internals/array-reduce.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/array-reduce.js ***! \********************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval('var aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError(\'Reduce of empty array with no initial value\');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/array-reduce.js?'); /***/}, /***/"./node_modules/core-js/internals/get-iterator.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/get-iterator.js ***! \********************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval("var anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/get-iterator.js?"); /***/}, /***/"./node_modules/core-js/internals/ieee754.js": /*!***************************************************!*\ !*** ./node_modules/core-js/internals/ieee754.js ***! \***************************************************/ /*! no static exports found */ /***/function(module,exports){eval("// IEEE754 conversions based on https://github.com/feross/ieee754\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/ieee754.js?"); /***/}, /***/"./node_modules/core-js/internals/native-url.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/native-url.js ***! \******************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/native-url.js?"); /***/}, /***/"./node_modules/core-js/internals/object-to-array.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/internals/object-to-array.js ***! \***********************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval('var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");\nvar propertyIsEnumerable = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js").f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/object-to-array.js?'); /***/}, /***/"./node_modules/core-js/internals/string-punycode-to-ascii.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/internals/string-punycode-to-ascii.js ***! \********************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval("\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/string-punycode-to-ascii.js?")}, /***/"./node_modules/core-js/internals/to-index.js": /*!****************************************************!*\ !*** ./node_modules/core-js/internals/to-index.js ***! \****************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval('var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");\n\n// `ToIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError(\'Wrong length or index\');\n return length;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/to-index.js?'); /***/}, /***/"./node_modules/core-js/internals/to-offset.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/to-offset.js ***! \*****************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval("var toPositiveInteger = __webpack_require__(/*! ../internals/to-positive-integer */ \"./node_modules/core-js/internals/to-positive-integer.js\");\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/to-offset.js?"); /***/}, /***/"./node_modules/core-js/internals/to-positive-integer.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/internals/to-positive-integer.js ***! \***************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval('var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError("The argument can\'t be less than 0");\n return result;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/to-positive-integer.js?'); /***/}, /***/"./node_modules/core-js/internals/typed-array-constructor.js": /*!*******************************************************************!*\ !*** ./node_modules/core-js/internals/typed-array-constructor.js ***! \*******************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");\nvar global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(/*! ../internals/typed-array-constructors-require-wrappers */ "./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar ArrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ "./node_modules/core-js/internals/array-buffer.js");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");\nvar toIndex = __webpack_require__(/*! ../internals/to-index */ "./node_modules/core-js/internals/to-index.js");\nvar toOffset = __webpack_require__(/*! ../internals/to-offset */ "./node_modules/core-js/internals/to-offset.js");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");\nvar has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");\nvar classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");\nvar create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js");\nvar getOwnPropertyNames = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js").f;\nvar typedArrayFrom = __webpack_require__(/*! ../internals/typed-array-from */ "./node_modules/core-js/internals/typed-array-from.js");\nvar forEach = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").forEach;\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ "./node_modules/core-js/internals/set-species.js");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js");\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "./node_modules/core-js/internals/inherit-if-required.js");\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = \'BYTES_PER_ELEMENT\';\nvar WRONG_LENGTH = \'Wrong length\';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == \'ArrayBuffer\' || klass == \'SharedArrayBuffer\';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != \'symbol\'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, \'value\')\n && !has(descriptor, \'get\')\n && !has(descriptor, \'set\')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, \'writable\') || descriptor.writable)\n && (!has(descriptor, \'enumerable\') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, \'buffer\');\n addGetter(TypedArrayPrototype, \'byteOffset\');\n addGetter(TypedArrayPrototype, \'byteLength\');\n addGetter(TypedArrayPrototype, \'length\');\n }\n\n $({ target: \'Object\', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? \'Clamped\' : \'\') + \'Array\';\n var GETTER = \'get\' + TYPE;\n var SETTER = \'set\' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, \'constructor\', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/typed-array-constructor.js?')}, /***/"./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js": /*!*************************************************************************************!*\ !*** ./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js ***! \*************************************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval('/* eslint-disable no-new */\nvar global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");\nvar fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js");\nvar NATIVE_ARRAY_BUFFER_VIEWS = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js").NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js?'); /***/}, /***/"./node_modules/core-js/internals/typed-array-from.js": /*!************************************************************!*\ !*** ./node_modules/core-js/internals/typed-array-from.js ***! \************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval('var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js");\nvar aTypedArrayConstructor = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js").aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/typed-array-from.js?'); /***/}, /***/"./node_modules/core-js/modules/es.array-buffer.constructor.js": /*!*********************************************************************!*\ !*** ./node_modules/core-js/modules/es.array-buffer.constructor.js ***! \*********************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");\nvar global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");\nvar arrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ "./node_modules/core-js/internals/array-buffer.js");\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ "./node_modules/core-js/internals/set-species.js");\n\nvar ARRAY_BUFFER = \'ArrayBuffer\';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.github.io/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.array-buffer.constructor.js?')}, /***/"./node_modules/core-js/modules/es.array-buffer.slice.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.array-buffer.slice.js ***! \***************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");\nvar fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");\nvar ArrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ "./node_modules/core-js/internals/array-buffer.js");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ "./node_modules/core-js/internals/species-constructor.js");\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar nativeArrayBufferSlice = ArrayBuffer.prototype.slice;\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: \'ArrayBuffer\', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice !== undefined && end === undefined) {\n return nativeArrayBufferSlice.call(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n viewTarget.setUint8(index++, viewSource.getUint8(first++));\n } return result;\n }\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.array-buffer.slice.js?')}, /***/"./node_modules/core-js/modules/es.array.sort.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.array.sort.js ***! \*******************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");\nvar fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");\nvar arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js/internals/array-method-is-strict.js");\n\nvar test = [];\nvar nativeSort = test.sort;\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict(\'sort\');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: \'Array\', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.array.sort.js?')}, /***/"./node_modules/core-js/modules/es.object.values.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.object.values.js ***! \**********************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval('var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");\nvar $values = __webpack_require__(/*! ../internals/object-to-array */ "./node_modules/core-js/internals/object-to-array.js").values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: \'Object\', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.object.values.js?'); /***/}, /***/"./node_modules/core-js/modules/es.typed-array.copy-within.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.copy-within.js ***! \********************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $copyWithin = __webpack_require__(/*! ../internals/array-copy-within */ "./node_modules/core-js/internals/array-copy-within.js");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod(\'copyWithin\', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.copy-within.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.every.js": /*!**************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.every.js ***! \**************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $every = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod(\'every\', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.every.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.fill.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.fill.js ***! \*************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $fill = __webpack_require__(/*! ../internals/array-fill */ "./node_modules/core-js/internals/array-fill.js");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars\nexportTypedArrayMethod(\'fill\', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.fill.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.filter.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.filter.js ***! \***************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $filter = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").filter;\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ "./node_modules/core-js/internals/species-constructor.js");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod(\'filter\', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.filter.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.find-index.js": /*!*******************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.find-index.js ***! \*******************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $findIndex = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod(\'findIndex\', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.find-index.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.find.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.find.js ***! \*************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $find = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod(\'find\', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.find.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.for-each.js": /*!*****************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.for-each.js ***! \*****************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $forEach = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod(\'forEach\', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.for-each.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.includes.js": /*!*****************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.includes.js ***! \*****************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $includes = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod(\'includes\', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.includes.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.index-of.js": /*!*****************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.index-of.js ***! \*****************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $indexOf = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod(\'indexOf\', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.index-of.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.iterator.js": /*!*****************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.iterator.js ***! \*****************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar ArrayIterators = __webpack_require__(/*! ../modules/es.array.iterator */ \"./node_modules/core-js/modules/es.array.iterator.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.iterator.js?")}, /***/"./node_modules/core-js/modules/es.typed-array.join.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.join.js ***! \*************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars\nexportTypedArrayMethod('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.join.js?")}, /***/"./node_modules/core-js/modules/es.typed-array.last-index-of.js": /*!**********************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.last-index-of.js ***! \**********************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $lastIndexOf = __webpack_require__(/*! ../internals/array-last-index-of */ "./node_modules/core-js/internals/array-last-index-of.js");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars\nexportTypedArrayMethod(\'lastIndexOf\', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.last-index-of.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.map.js": /*!************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.map.js ***! \************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $map = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").map;\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ "./node_modules/core-js/internals/species-constructor.js");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod(\'map\', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.map.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.reduce-right.js": /*!*********************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.reduce-right.js ***! \*********************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $reduceRight = __webpack_require__(/*! ../internals/array-reduce */ "./node_modules/core-js/internals/array-reduce.js").right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod(\'reduceRight\', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.reduce-right.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.reduce.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.reduce.js ***! \***************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $reduce = __webpack_require__(/*! ../internals/array-reduce */ "./node_modules/core-js/internals/array-reduce.js").left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod(\'reduce\', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.reduce.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.reverse.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.reverse.js ***! \****************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.reverse.js?")}, /***/"./node_modules/core-js/modules/es.typed-array.set.js": /*!************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.set.js ***! \************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");\nvar toOffset = __webpack_require__(/*! ../internals/to-offset */ "./node_modules/core-js/internals/to-offset.js");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");\nvar fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod(\'set\', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(\'Wrong length\');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.set.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.slice.js": /*!**************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.slice.js ***! \**************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ "./node_modules/core-js/internals/species-constructor.js");\nvar fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod(\'slice\', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.slice.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.some.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.some.js ***! \*************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar $some = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod(\'some\', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.some.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.sort.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.sort.js ***! \*************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.sort.js?")}, /***/"./node_modules/core-js/modules/es.typed-array.subarray.js": /*!*****************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.subarray.js ***! \*****************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ "./node_modules/core-js/internals/species-constructor.js");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod(\'subarray\', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.subarray.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.to-locale-string.js": /*!*************************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.to-locale-string.js ***! \*************************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js");\nvar fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod(\'toLocaleString\', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.to-locale-string.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.to-string.js": /*!******************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.to-string.js ***! \******************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval('\nvar exportTypedArrayMethod = __webpack_require__(/*! ../internals/array-buffer-view-core */ "./node_modules/core-js/internals/array-buffer-view-core.js").exportTypedArrayMethod;\nvar fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");\nvar global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod(\'toString\', arrayToString, IS_NOT_ARRAY_METHOD);\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.to-string.js?')}, /***/"./node_modules/core-js/modules/es.typed-array.uint8-array.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/modules/es.typed-array.uint8-array.js ***! \********************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval("var createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \"./node_modules/core-js/internals/typed-array-constructor.js\");\n\n// `Uint8Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.typed-array.uint8-array.js?"); /***/}, /***/"./node_modules/core-js/modules/web.url-search-params.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/web.url-search-params.js ***! \***************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval("\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(/*! ../modules/es.array.iterator */ \"./node_modules/core-js/modules/es.array.iterator.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar USE_NATIVE_URL = __webpack_require__(/*! ../internals/native-url */ \"./node_modules/core-js/internals/native-url.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\nvar redefineAll = __webpack_require__(/*! ../internals/redefine-all */ \"./node_modules/core-js/internals/redefine-all.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ \"./node_modules/core-js/internals/create-iterator-constructor.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \"./node_modules/core-js/internals/get-iterator.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.appent` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/web.url-search-params.js?")}, /***/"./node_modules/core-js/modules/web.url.js": /*!*************************************************!*\ !*** ./node_modules/core-js/modules/web.url.js ***! \*************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){"use strict";eval("\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(/*! ../modules/es.string.iterator */ \"./node_modules/core-js/modules/es.string.iterator.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar USE_NATIVE_URL = __webpack_require__(/*! ../internals/native-url */ \"./node_modules/core-js/internals/native-url.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js/internals/object-define-properties.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar assign = __webpack_require__(/*! ../internals/object-assign */ \"./node_modules/core-js/internals/object-assign.js\");\nvar arrayFrom = __webpack_require__(/*! ../internals/array-from */ \"./node_modules/core-js/internals/array-from.js\");\nvar codeAt = __webpack_require__(/*! ../internals/string-multibyte */ \"./node_modules/core-js/internals/string-multibyte.js\").codeAt;\nvar toASCII = __webpack_require__(/*! ../internals/string-punycode-to-ascii */ \"./node_modules/core-js/internals/string-punycode-to-ascii.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar URLSearchParamsModule = __webpack_require__(/*! ../modules/web.url-search-params */ \"./node_modules/core-js/modules/web.url-search-params.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/web.url.js?")}, /***/"./node_modules/css-loader/dist/cjs.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/dropzone/dist/dropzone.css": /*!*************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-3-1!./node_modules/postcss-loader/src??ref--6-oneOf-3-2!./node_modules/dropzone/dist/dropzone.css ***! \*************************************************************************************************************************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval('// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, "/*\\n * The MIT License\\n * Copyright (c) 2012 Matias Meno \\n */\\n@-webkit-keyframes passing-through {\\n 0% {\\n opacity: 0;\\n -webkit-transform: translateY(40px);\\n transform: translateY(40px); }\\n 30%, 70% {\\n opacity: 1;\\n -webkit-transform: translateY(0px);\\n transform: translateY(0px); }\\n 100% {\\n opacity: 0;\\n -webkit-transform: translateY(-40px);\\n transform: translateY(-40px); } }\\n@keyframes passing-through {\\n 0% {\\n opacity: 0;\\n -webkit-transform: translateY(40px);\\n transform: translateY(40px); }\\n 30%, 70% {\\n opacity: 1;\\n -webkit-transform: translateY(0px);\\n transform: translateY(0px); }\\n 100% {\\n opacity: 0;\\n -webkit-transform: translateY(-40px);\\n transform: translateY(-40px); } }\\n@-webkit-keyframes slide-in {\\n 0% {\\n opacity: 0;\\n -webkit-transform: translateY(40px);\\n transform: translateY(40px); }\\n 30% {\\n opacity: 1;\\n -webkit-transform: translateY(0px);\\n transform: translateY(0px); } }\\n@keyframes slide-in {\\n 0% {\\n opacity: 0;\\n -webkit-transform: translateY(40px);\\n transform: translateY(40px); }\\n 30% {\\n opacity: 1;\\n -webkit-transform: translateY(0px);\\n transform: translateY(0px); } }\\n@-webkit-keyframes pulse {\\n 0% {\\n -webkit-transform: scale(1);\\n transform: scale(1); }\\n 10% {\\n -webkit-transform: scale(1.1);\\n transform: scale(1.1); }\\n 20% {\\n -webkit-transform: scale(1);\\n transform: scale(1); } }\\n@keyframes pulse {\\n 0% {\\n -webkit-transform: scale(1);\\n transform: scale(1); }\\n 10% {\\n -webkit-transform: scale(1.1);\\n transform: scale(1.1); }\\n 20% {\\n -webkit-transform: scale(1);\\n transform: scale(1); } }\\n.dropzone, .dropzone * {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box; }\\n\\n.dropzone {\\n min-height: 150px;\\n border: 2px solid rgba(0, 0, 0, 0.3);\\n background: white;\\n padding: 20px 20px; }\\n .dropzone.dz-clickable {\\n cursor: pointer; }\\n .dropzone.dz-clickable * {\\n cursor: default; }\\n .dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {\\n cursor: pointer; }\\n .dropzone.dz-started .dz-message {\\n display: none; }\\n .dropzone.dz-drag-hover {\\n border-style: solid; }\\n .dropzone.dz-drag-hover .dz-message {\\n opacity: 0.5; }\\n .dropzone .dz-message {\\n text-align: center;\\n margin: 2em 0; }\\n .dropzone .dz-preview {\\n position: relative;\\n display: inline-block;\\n vertical-align: top;\\n margin: 16px;\\n min-height: 100px; }\\n .dropzone .dz-preview:hover {\\n z-index: 1000; }\\n .dropzone .dz-preview:hover .dz-details {\\n opacity: 1; }\\n .dropzone .dz-preview.dz-file-preview .dz-image {\\n border-radius: 20px;\\n background: #999;\\n background: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#ddd));\\n background: linear-gradient(to bottom, #eee, #ddd); }\\n .dropzone .dz-preview.dz-file-preview .dz-details {\\n opacity: 1; }\\n .dropzone .dz-preview.dz-image-preview {\\n background: white; }\\n .dropzone .dz-preview.dz-image-preview .dz-details {\\n -webkit-transition: opacity 0.2s linear;\\n transition: opacity 0.2s linear; }\\n .dropzone .dz-preview .dz-remove {\\n font-size: 14px;\\n text-align: center;\\n display: block;\\n cursor: pointer;\\n border: none; }\\n .dropzone .dz-preview .dz-remove:hover {\\n text-decoration: underline; }\\n .dropzone .dz-preview:hover .dz-details {\\n opacity: 1; }\\n .dropzone .dz-preview .dz-details {\\n z-index: 20;\\n position: absolute;\\n top: 0;\\n left: 0;\\n opacity: 0;\\n font-size: 13px;\\n min-width: 100%;\\n max-width: 100%;\\n padding: 2em 1em;\\n text-align: center;\\n color: rgba(0, 0, 0, 0.9);\\n line-height: 150%; }\\n .dropzone .dz-preview .dz-details .dz-size {\\n margin-bottom: 1em;\\n font-size: 16px; }\\n .dropzone .dz-preview .dz-details .dz-filename {\\n white-space: nowrap; }\\n .dropzone .dz-preview .dz-details .dz-filename:hover span {\\n border: 1px solid rgba(200, 200, 200, 0.8);\\n background-color: rgba(255, 255, 255, 0.8); }\\n .dropzone .dz-preview .dz-details .dz-filename:not(:hover) {\\n overflow: hidden;\\n text-overflow: ellipsis; }\\n .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {\\n border: 1px solid transparent; }\\n .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {\\n background-color: rgba(255, 255, 255, 0.4);\\n padding: 0 0.4em;\\n border-radius: 3px; }\\n .dropzone .dz-preview:hover .dz-image img {\\n -webkit-transform: scale(1.05, 1.05);\\n transform: scale(1.05, 1.05);\\n -webkit-filter: blur(8px);\\n filter: blur(8px); }\\n .dropzone .dz-preview .dz-image {\\n border-radius: 20px;\\n overflow: hidden;\\n width: 120px;\\n height: 120px;\\n position: relative;\\n display: block;\\n z-index: 10; }\\n .dropzone .dz-preview .dz-image img {\\n display: block; }\\n .dropzone .dz-preview.dz-success .dz-success-mark {\\n -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\\n animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }\\n .dropzone .dz-preview.dz-error .dz-error-mark {\\n opacity: 1;\\n -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\\n animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }\\n .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {\\n pointer-events: none;\\n opacity: 0;\\n z-index: 500;\\n position: absolute;\\n display: block;\\n top: 50%;\\n left: 50%;\\n margin-left: -27px;\\n margin-top: -27px; }\\n .dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {\\n display: block;\\n width: 54px;\\n height: 54px; }\\n .dropzone .dz-preview.dz-processing .dz-progress {\\n opacity: 1;\\n -webkit-transition: all 0.2s linear;\\n transition: all 0.2s linear; }\\n .dropzone .dz-preview.dz-complete .dz-progress {\\n opacity: 0;\\n -webkit-transition: opacity 0.4s ease-in;\\n transition: opacity 0.4s ease-in; }\\n .dropzone .dz-preview:not(.dz-processing) .dz-progress {\\n -webkit-animation: pulse 6s ease infinite;\\n animation: pulse 6s ease infinite; }\\n .dropzone .dz-preview .dz-progress {\\n opacity: 1;\\n z-index: 1000;\\n pointer-events: none;\\n position: absolute;\\n height: 16px;\\n left: 50%;\\n top: 50%;\\n margin-top: -8px;\\n width: 80px;\\n margin-left: -40px;\\n background: rgba(255, 255, 255, 0.9);\\n -webkit-transform: scale(1);\\n border-radius: 8px;\\n overflow: hidden; }\\n .dropzone .dz-preview .dz-progress .dz-upload {\\n background: #333;\\n background: -webkit-gradient(linear, left top, left bottom, from(#666), to(#444));\\n background: linear-gradient(to bottom, #666, #444);\\n position: absolute;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n width: 0;\\n -webkit-transition: width 300ms ease-in-out;\\n transition: width 300ms ease-in-out; }\\n .dropzone .dz-preview.dz-error .dz-error-message {\\n display: block; }\\n .dropzone .dz-preview.dz-error:hover .dz-error-message {\\n opacity: 1;\\n pointer-events: auto; }\\n .dropzone .dz-preview .dz-error-message {\\n pointer-events: none;\\n z-index: 1000;\\n position: absolute;\\n display: block;\\n display: none;\\n opacity: 0;\\n -webkit-transition: opacity 0.3s ease;\\n transition: opacity 0.3s ease;\\n border-radius: 8px;\\n font-size: 13px;\\n top: 130px;\\n left: -10px;\\n width: 140px;\\n background: #be2626;\\n background: -webkit-gradient(linear, left top, left bottom, from(#be2626), to(#a92222));\\n background: linear-gradient(to bottom, #be2626, #a92222);\\n padding: 0.5em 1.2em;\\n color: white; }\\n .dropzone .dz-preview .dz-error-message:after {\\n content: \'\';\\n position: absolute;\\n top: -6px;\\n left: 64px;\\n width: 0;\\n height: 0;\\n border-left: 6px solid transparent;\\n border-right: 6px solid transparent;\\n border-bottom: 6px solid #be2626; }\\n", ""]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./node_modules/dropzone/dist/dropzone.css?./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-3-1!./node_modules/postcss-loader/src??ref--6-oneOf-3-2'); /***/}, /***/"./node_modules/dropzone/dist/dropzone.css": /*!*************************************************!*\ !*** ./node_modules/dropzone/dist/dropzone.css ***! \*************************************************/ /*! no static exports found */ /***/function(module,exports,__webpack_require__){eval('// style-loader: Adds some css to the DOM by adding a \'];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload = [];\n\t\tpayload.push(writextag(\'NumberFormat\', null, {"ss:Format": escapexml(SSF._table[xf.numFmtId])}));\n\t\tstyles.push(writextag(\'Style\', payload.join(""), {"ss:ID": "s" + (21+id)}));\n\t});\n\treturn writextag("Styles", styles.join(""));\n}\nfunction write_name_xlml(n) { return writextag("NamedRange", null, {"ss:Name": n.Name, "ss:RefersTo":"=" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb) {\n\tif(!((wb||{}).Workbook||{}).Names) return "";\nvar names = wb.Workbook.Names;\n\tvar out = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag("Names", out.join(""));\n}\nfunction write_ws_xlml_names(ws, opts, idx, wb) {\n\tif(!ws) return "";\n\tif(!((wb||{}).Workbook||{}).Names) return "";\nvar names = wb.Workbook.Names;\n\tvar out = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase "_": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join("");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws, opts, idx, wb) {\n\tif(!ws) return "";\n\tvar o = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws[\'!margins\']) {\n\t\to.push("");\n\t\tif(ws[\'!margins\'].header) o.push(writextag("Header", null, {\'x:Margin\':ws[\'!margins\'].header}));\n\t\tif(ws[\'!margins\'].footer) o.push(writextag("Footer", null, {\'x:Margin\':ws[\'!margins\'].footer}));\n\t\to.push(writextag("PageMargins", null, {\n\t\t\t\'x:Bottom\': ws[\'!margins\'].bottom || "0.75",\n\t\t\t\'x:Left\': ws[\'!margins\'].left || "0.7",\n\t\t\t\'x:Right\': ws[\'!margins\'].right || "0.7",\n\t\t\t\'x:Top\': ws[\'!margins\'].top || "0.75"\n\t\t}));\n\t\to.push("");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag("Visible", (wb.Workbook.Sheets[idx].Hidden == 1 ? "SheetHidden" : "SheetVeryHidden"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push("");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push("");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws[\'!protect\']) {\n\t\to.push(writetag("ProtectContents", "True"));\n\t\tif(ws[\'!protect\'].objects) o.push(writetag("ProtectObjects", "True"));\n\t\tif(ws[\'!protect\'].scenarios) o.push(writetag("ProtectScenarios", "True"));\n\t\tif(ws[\'!protect\'].selectLockedCells != null && !ws[\'!protect\'].selectLockedCells) o.push(writetag("EnableSelection", "NoSelection"));\n\t\telse if(ws[\'!protect\'].selectUnlockedCells != null && !ws[\'!protect\'].selectUnlockedCells) o.push(writetag("EnableSelection", "UnlockedCells"));\n\t[\n\t\t[ "formatCells", "AllowFormatCells" ],\n\t\t[ "formatColumns", "AllowSizeCols" ],\n\t\t[ "formatRows", "AllowSizeRows" ],\n\t\t[ "insertColumns", "AllowInsertCols" ],\n\t\t[ "insertRows", "AllowInsertRows" ],\n\t\t[ "insertHyperlinks", "AllowInsertHyperlinks" ],\n\t\t[ "deleteColumns", "AllowDeleteCols" ],\n\t\t[ "deleteRows", "AllowDeleteRows" ],\n\t\t[ "sort", "AllowSort" ],\n\t\t[ "autoFilter", "AllowFilter" ],\n\t\t[ "pivotTables", "AllowUsePivotTables" ]\n\t].forEach(function(x) { if(ws[\'!protect\'][x[0]]) o.push("<"+x[1]+"/>"); });\n\t}\n\n\tif(o.length == 0) return "";\n\treturn writextag("WorksheetOptions", o.join(""), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments) {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||"");\n\t\tvar d =writextag("ss:Data", t, {"xmlns":"http://www.w3.org/TR/REC-html40"});\n\t\treturn writextag("Comment", d, {"ss:Author":c.a});\n\t}).join("");\n}\nfunction write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr){\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return "";\n\n\tvar attr = {};\n\tif(cell.f) attr["ss:Formula"] = "=" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr["ss:ArrayRange"] = "RC:R" + (end.r == addr.r ? "" : "[" + (end.r - addr.r) + "]") + "C" + (end.c == addr.c ? "" : "[" + (end.c - addr.c) + "]");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr["ss:HRef"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr["x:HRefScreenTip"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws[\'!merges\']) {\n\t\tvar marr = ws[\'!merges\'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr[\'ss:MergeAcross\'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr[\'ss:MergeDown\'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = "", p = "";\n\tswitch(cell.t) {\n\t\tcase \'z\': return "";\n\t\tcase \'n\': t = \'Number\'; p = String(cell.v); break;\n\t\tcase \'b\': t = \'Boolean\'; p = (cell.v ? "1" : "0"); break;\n\t\tcase \'e\': t = \'Error\'; p = BErr[cell.v]; break;\n\t\tcase \'d\': t = \'DateTime\'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || SSF._table[14]; break;\n\t\tcase \'s\': t = \'String\'; p = escapexlml(cell.v||""); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr["ss:StyleID"] = "s" + (21+os);\n\tattr["ss:Index"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : "");\n\tvar m = \'\' + _v + \'\';\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag("Cell", m, attr);\n}\nfunction write_ws_xlml_row(R, row) {\n\tvar o = \'\';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws, opts, idx, wb) {\n\tif(!ws[\'!ref\']) return "";\n\tvar range = safe_decode_range(ws[\'!ref\']);\n\tvar marr = ws[\'!merges\'] || [], mi = 0;\n\tvar o = [];\n\tif(ws[\'!cols\']) ws[\'!cols\'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k = {"ss:Index":i+1};\n\t\tif(w) k[\'ss:Width\'] = width2px(p.width);\n\t\tif(n.hidden) k[\'ss:Hidden\']="1";\n\t\to.push(writextag("Column",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws[\'!rows\']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push("");\n\t\tif(row.length > 2) o.push(row.join(""));\n\t}\n\treturn o.join("");\n}\nfunction write_ws_xlml(idx, opts, wb) {\n\tvar o = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t = ws ? write_ws_xlml_names(ws, opts, idx, wb) : "";\n\tif(t.length > 0) o.push("" + t + "");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : "";\n\tif(t.length > 0) o.push("" + t + "
");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join("");\n}\nfunction write_xlml(wb, opts) {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = SSF.get_table();\n\tif(wb.SSF) {\n\t\tmake_ssf(SSF); SSF.load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{"General":0}});\n\t}\n\tvar d = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push("");\n\td.push("");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag("Worksheet", write_ws_xlml(i, opts, wb), {"ss:Name":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag("Workbook", d.join(""), {\n\t\t\'xmlns\': XLMLNS.ss,\n\t\t\'xmlns:o\': XLMLNS.o,\n\t\t\'xmlns:x\': XLMLNS.x,\n\t\t\'xmlns:ss\': XLMLNS.ss,\n\t\t\'xmlns:dt\': XLMLNS.dt,\n\t\t\'xmlns:html\': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj) {\n\tvar v = {};\n\tvar o = obj.content;\n/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, "lpstr-ansi");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, "lpstr-ansi");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, "lpwstr");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue\n\t- 2.4.59 ContinueBigName\n\t- 2.4.60 ContinueFrt\n\t- 2.4.61 ContinueFrt11\n\t- 2.4.62 ContinueFrt12\n*/\nfunction slurp(R, blob, length, opts) {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu) switch(R.n) {\n\tcase \'BOF\': case \'FilePass\': case \'FileLock\': case \'InterfaceHdr\': case \'RRDInfo\': case \'RRDHead\': case \'UsrExcl\': break;\n\tdefault:\n\t\tif(d.length === 0) break;\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar next = (XLSRecordEnum[__readUInt16LE(blob,blob.l)]);\n\tvar start = 0;\n\twhile(next != null && next.n.slice(0,8) === \'Continue\') {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(next.n == \'ContinueFrt\') start += 4;\n\t\telse if(next.n.slice(0,11) == \'ContinueFrt\') start += 12;\n\t\tbufs.push(blob.slice(start,blob.l+4+l));\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[__readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs));\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p, opts, date1904) {\n\tif(p.t === \'z\') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = SSF._table[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === \'e\') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == "General") {\n\t\t\tif(p.t === \'n\') {\n\t\t\t\tif((p.v|0) === p.v) p.w = SSF._general_int(p.v);\n\t\t\t\telse p.w = SSF._general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF._general(p.v);\n\t\t}\n\t\telse p.w = SSF.format(fmtid,p.v, {date1904:!!date1904});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == \'n\' && SSF.is_date(SSF._table[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF.parse_date_code(p.v); if(_d) { p.t = \'d\'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t) {\n\treturn ({v:val, ixfe:ixfe, t:t});\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options) {\n\tvar wb = ({opts:{}});\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out = ((options.dense ? [] : {}));\n\tvar Directory = {};\n\tvar range = ({});\n\tvar last_formula = null;\n\tvar sst = ([]);\n\tvar cur_sheet = "";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = "", cc, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf = [];\n\tvar temp_val;\n\tvar country;\n\tvar cell_valid = true;\n\tvar XFs = []; /* XF records */\n\tvar palette = [];\n\tvar Workbook = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }), wsprops = {};\n\tvar get_rgb = function getrgb(icv) {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({});\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell, line, options) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) cell_valid = false;\n\t\tif(!cell_valid) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = "" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: "", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t});\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges = [];\n\tvar objects = [];\n\tvar colinfo = [], rowinfo = [];\n\t// eslint-disable-next-line no-unused-vars\n\tvar defwidth = 0, defheight = 0; // twips / MDW respectively\n\tvar seencol = false;\n\tvar supbooks = ([]); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_Rn = \'\';\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_Rn === \'EOF\') break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_Rn === \'BoundSheet8\' && R.n !== \'BoundSheet8\') break;\n\t\t\t}\n\t\t\tlast_Rn = R.n;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error("rt mismatch: " + rt + "!=" + RecordType);\n\t\t\t\tif(R.r == 12){ blob.l += 10; length -= 10; } // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val;\n\t\t\tif(R.n === \'EOF\') val = R.f(blob, length, opts);\n\t\t\telse val = slurp(R, blob, length, opts);\n\t\t\tvar Rn = R.n;\n\t\t\tif(file_depth == 0 && Rn != \'BOF\') continue;\n\t\t\t/* nested switch statements to workaround V8 128 limit */\n\t\t\tswitch(Rn) {\n\t\t\t\t/* Workbook Options */\n\t\t\t\tcase \'Date1904\':\nwb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase \'WriteProtect\': wb.opts.WriteProtect = true; break;\n\t\t\t\tcase \'FilePass\':\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error("File is password-protected");\n\t\t\t\t\tif(val.valid == null) throw new Error("Encryption scheme unsupported");\n\t\t\t\t\tif(!val.valid) throw new Error("Password is incorrect");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \'WriteAccess\': opts.lastuser = val; break;\n\t\t\t\tcase \'FileSharing\': break; //TODO\n\t\t\t\tcase \'CodePage\':\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(val) {\n\t\t\t\t\t\tcase 0x5212: val = 1200; break;\n\t\t\t\t\t\tcase 0x8000: val = 10000; break;\n\t\t\t\t\t\tcase 0x8001: val = 1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = val);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \'RRTabId\': opts.rrtabid = val; break;\n\t\t\t\tcase \'WinProtect\': opts.winlocked = val; break;\n\t\t\t\tcase \'Template\': break; // TODO\n\t\t\t\tcase \'BookBool\': break; // TODO\n\t\t\t\tcase \'UsesELFs\': break;\n\t\t\t\tcase \'MTRSettings\': break;\n\t\t\t\tcase \'RefreshAll\':\n\t\t\t\tcase \'CalcCount\':\n\t\t\t\tcase \'CalcDelta\':\n\t\t\t\tcase \'CalcIter\':\n\t\t\t\tcase \'CalcMode\':\n\t\t\t\tcase \'CalcPrecision\':\n\t\t\t\tcase \'CalcSaveRecalc\':\n\t\t\t\t\twb.opts[Rn] = val; break;\n\t\t\t\tcase \'CalcRefMode\': opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase \'Uncalced\': break;\n\t\t\t\tcase \'ForceFullCalculation\': wb.opts.FullCalc = val; break;\n\t\t\t\tcase \'WsBool\':\n\t\t\t\t\tif(val.fDialog) out["!type"] = "dialog";\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase \'XF\': 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(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tcell_valid = true;\n\t\t\t\t\tout = ((options.dense ? [] : {}));\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\t\t\t\t\tif(opts.biff < 5) {\n\t\t\t\t\t\tif(cur_sheet === "") cur_sheet = "Sheet1";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:""}).name;\n\t\t\t\t\tif(val.dt == 0x20) out["!type"] = "chart";\n\t\t\t\t\tif(val.dt == 0x40) out["!type"] = "macro";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tdefwidth = defheight = 0;\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\n\t\t\t\tcase \'Number\': case \'BIFF2NUM\': case \'BIFF2INT\': {\n\t\t\t\t\tif(out["!type"] == "chart") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:\'n\'});\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase \'BoolErr\': {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t});\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase \'RK\': {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:\'n\'});\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase \'MulRk\': {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:\'n\'});\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase \'Formula\': {\n\t\t\t\t\tif(val.val == \'String\') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == \'PtgExp\') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = ""+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = ""+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase \'String\': {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, \'s\');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = ""+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error("String record expects Formula");\n\t\t\t\t} break;\n\t\t\t\tcase \'Array\': {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = ""+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase \'ShrFmla\': {\n\t\t\t\t\tif(!cell_valid) break;\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = ""+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase \'LabelSst\':\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, \'s\');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \'Blank\': if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:\'z\'});\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase \'MulBlank\': if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:\'z\'});\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase \'RString\':\n\t\t\t\tcase \'Label\': case \'BIFF2STR\':\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, \'s\');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \'Dimensions\': {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase \'SST\': {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase \'Format\': { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(SSF._table[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF.load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF.load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase \'BIFF2FORMAT\': {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(SSF._table[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF.load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase \'MergeCells\': merges = merges.concat(val); break;\n\n\t\t\t\tcase \'Obj\': objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase \'TxO\': opts.lastobj.TxO = val; break;\n\t\t\t\tcase \'ImData\': opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase \'HLink\': {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase \'HLinkTooltip\': {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\t/* Comments */\n\t\t\t\tcase \'Note\': {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) 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, 0x200, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws[\'!links\'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws[\'!links\'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8 && _WB.Views) write_biff_rec(ba, "Window2", write_Window2(_WB.Views[0]));\n\t/* ... */\n\tif(b8 && (ws[\'!merges\']||[]).length) write_biff_rec(ba, "MergeCells", write_MergeCells(ws[\'!merges\']));\n\t/* ... */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* ... */\n\twrite_biff_rec(ba, "CodeName", write_XLUnicodeString(cname, opts));\n\t/* ... */\n\tif(b8) write_FEAT(ba, ws);\n\t/* ... */\n\twrite_biff_rec(ba, "EOF");\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb, bufs, opts) {\n\tvar A = buf_array();\n\tvar _WB = ((wb||{}).Workbook||{});\n\tvar _sheets = (_WB.Sheets||[]);\n\tvar _wb = _WB.WBProps||{};\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == "xla") write_biff_rec(A, "Addin");\n\twrite_biff_rec(A, "InterfaceHdr", b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, "Mms", writezeroes(2));\n\tif(b5) write_biff_rec(A, "ToolbarHdr");\n\tif(b5) write_biff_rec(A, "ToolbarEnd");\n\twrite_biff_rec(A, "InterfaceEnd");\n\twrite_biff_rec(A, "WriteAccess", write_WriteAccess("SheetJS", opts));\n\twrite_biff_rec(A, "CodePage", writeuint16(b8 ? 0x04b0 : 0x04E4));\n\tif(b8) write_biff_rec(A, "DSF", writeuint16(0));\n\tif(b8) write_biff_rec(A, "Excel9File");\n\twrite_biff_rec(A, "RRTabId", write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) {\n\t\twrite_biff_rec(A, "ObProj");\n\t\tvar cname = _wb.CodeName || "ThisWorkbook";\n\t\twrite_biff_rec(A, "CodeName", write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, "BuiltInFnGroupCount", writeuint16(0x11));\n\twrite_biff_rec(A, "WinProtect", writebool(false));\n\twrite_biff_rec(A, "Protect", writebool(false));\n\twrite_biff_rec(A, "Password", writeuint16(0));\n\tif(b8) write_biff_rec(A, "Prot4Rev", writebool(false));\n\tif(b8) write_biff_rec(A, "Prot4RevPass", writeuint16(0));\n\twrite_biff_rec(A, "Window1", write_Window1(opts));\n\twrite_biff_rec(A, "Backup", writebool(false));\n\twrite_biff_rec(A, "HideObj", writeuint16(0));\n\twrite_biff_rec(A, "Date1904", writebool(safe1904(wb)=="true"));\n\twrite_biff_rec(A, "CalcPrecision", writebool(true));\n\tif(b8) write_biff_rec(A, "RefreshAll", writebool(false));\n\twrite_biff_rec(A, "BookBool", writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, "UsesELFs", writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\tif(b8) write_biff_rec(C, "Country", write_Country());\n\t/* BIFF8: [SST *Continue] ExtSST */\n\twrite_biff_rec(C, "EOF");\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet = _sheets[j] || ({});\n\t\twrite_biff_rec(B, "BoundSheet8", write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error("BS8 " + blen + " != " + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn __toBuffer([out]);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb, opts) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = SSF.get_table();\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(SSF); SSF.load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\to.cellXfs = [];\n\to.Strings = []; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tget_cell_style(o.cellXfs, {}, {revssf:{"General":0}});\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn __toBuffer([bufs]);\n}\n\nfunction write_biff_buf(wb, opts) {\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error("invalid type " + o.bookType + " for BIFF");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nvar HTML_ = (function() {\n\tfunction html_to_sheet(str, _opts) {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar ws = opts.dense ? ([]) : ({});\n\t\tvar mtch = str.match(/");\n\t\tvar mtch2 = str.match(/<\\/table/i);\n\t\tvar i = mtch.index, j = mtch2 && mtch2.index || str.length;\n\t\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, "");\n\t\tvar R = -1, C = 0, RS = 0, CS = 0;\n\t\tvar range = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\t\tvar merges = [];\n\t\tfor(i = 0; i < rows.length; ++i) {\n\t\t\tvar row = rows[i].trim();\n\t\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\t\tif(hd == "/i);\n\t\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\t\tvar cell = cells[j].trim();\n\t\t\t\tif(!cell.match(/")) > -1) m = m.slice(cc+1);\n\t\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(">")));\n\t\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\t\tvar _t = tag.t || "";\n\t\t\t\t/* TODO: generate stub cells */\n\t\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\t\tm = htmldecode(m);\n\t\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\t\tif(!m.length) continue;\n\t\t\t\tvar o = {t:\'s\', v:m};\n\t\t\t\tif(opts.raw || !m.trim().length || _t == \'s\'){}\n\t\t\t\telse if(m === \'TRUE\') o = {t:\'b\', v:true};\n\t\t\t\telse if(m === \'FALSE\') o = {t:\'b\', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:\'n\', v:fuzzynum(m)};\n\t\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\t\to = ({t:\'d\', v:parseDate(m)});\n\t\t\t\t\tif(!opts.cellDates) o = ({t:\'n\', v:datenum(o.v)});\n\t\t\t\t\to.z = opts.dateNF || SSF._table[14];\n\t\t\t\t}\n\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\t\tC += CS;\n\t\t\t}\n\t\t}\n\t\tws[\'!ref\'] = encode_range(range);\n\t\treturn ws;\n\t}\n\tfunction html_to_book(str, opts) {\n\t\treturn sheet_to_workbook(html_to_sheet(str, opts), opts);\n\t}\n\tfunction make_html_row(ws, r, R, o) {\n\t\tvar M = (ws[\'!merges\'] ||[]);\n\t\tvar oo = [];\n\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\tvar RS = 0, CS = 0;\n\t\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t\t}\n\t\t\tif(RS < 0) continue;\n\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\tvar sp = {};\n\t\t\tif(RS > 1) sp.rowspan = RS;\n\t\t\tif(CS > 1) sp.colspan = CS;\n\t\t\t/* TODO: html entities */\n\t\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || "")) || "";\n\t\t\tsp.t = cell && cell.t || \'z\';\n\t\t\tif(o.editable) w = \'\' + w + \'\';\n\t\t\tsp.id = "sjs-" + coord;\n\t\t\too.push(writextag(\'td\', w, sp));\n\t\t}\n\t\tvar preamble = "";\n\t\treturn preamble + oo.join("") + "";\n\t}\n\tfunction make_html_preamble(ws, R, o) {\n\t\tvar out = [];\n\t\treturn out.join("") + \'\';\n\t}\n\tvar _BEGIN = \'SheetJS Table Export\';\n\tvar _END = \'\';\n\tfunction sheet_to_html(ws, opts/*, wb:?Workbook*/) {\n\t\tvar o = opts || {};\n\t\tvar header = o.header != null ? o.header : _BEGIN;\n\t\tvar footer = o.footer != null ? o.footer : _END;\n\t\tvar out = [header];\n\t\tvar r = decode_range(ws[\'!ref\']);\n\t\to.dense = Array.isArray(ws);\n\t\tout.push(make_html_preamble(ws, r, o));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\t\tout.push("
" + footer);\n\t\treturn out.join("");\n\t}\n\n\treturn {\n\t\tto_workbook: html_to_book,\n\t\tto_sheet: html_to_sheet,\n\t\t_row: make_html_row,\n\t\tBEGIN: _BEGIN,\n\t\tEND: _END,\n\t\t_preamble: make_html_preamble,\n\t\tfrom_sheet: sheet_to_html\n\t};\n})();\n\nfunction parse_dom_table(table, _opts) {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar ws = opts.dense ? ([]) : ({});\n\tvar rows = table.getElementsByTagName(\'tr\');\n\tvar sheetRows = opts.sheetRows || 10000000;\n\tvar range = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar merges = [], midx = 0;\n\tvar rowinfo = [];\n\tvar _R = 0, R = 0, _C, C, RS, CS;\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts = (row.children);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v = htmldecode(elt.innerHTML);\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m = merges[midx];\n\t\t\t\tif(m.s.c == C && m.s.r <= R && R <= m.e.r) { C = m.e.c+1; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute("colspan") || 1;\n\t\t\tif((RS = +elt.getAttribute("rowspan"))>0 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar o = {t:\'s\', v:v};\n\t\t\tvar _t = elt.getAttribute("t") || "";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || \'z\';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == "s"){}\n\t\t\t\telse if(v === \'TRUE\') o = {t:\'b\', v:true};\n\t\t\t\telse if(v === \'FALSE\') o = {t:\'b\', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:\'n\', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:\'d\', v:parseDate(v)});\n\t\t\t\t\tif(!opts.cellDates) o = ({t:\'n\', v:datenum(o.v)});\n\t\t\t\t\to.z = opts.dateNF || SSF._table[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({c:C, r:R})] = o;\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws[\'!merges\'] = merges;\n\tif(rowinfo.length) ws[\'!rows\'] = rowinfo;\n\trange.e.r = R - 1;\n\tws[\'!ref\'] = encode_range(range);\n\tif(R >= sheetRows) ws[\'!fullref\'] = encode_range((range.e.r = rows.length-_R+R-1,range)); // We can count the real number of rows to parse but we don\'t to improve the performance\n\treturn ws;\n}\n\nfunction table_to_book(table, opts) {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n\nfunction is_dom_element_hidden(element) {\n\tvar display = \'\';\n\tvar get_computed_style = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue(\'display\');\n\tif(!display) display = element.style.display; // Fallback for cases when getComputedStyle is not available (e.g. an old browser or some Node.js environments) or doesn\'t work (e.g. if the element is not inserted to a document)\n\treturn display === \'none\';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element) {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === \'function\') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === \'function\') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nvar parse_content_xml = (function() {\n\n\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(/\x3c!--([\\s\\S]*?)--\x3e/mg,"").replace(//gm,"");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,""))) {\n\n\t\t\tcase \'table\': case \'工作表\': // 9.1.2 \n\t\t\t\tif(Rn[1]===\'/\') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws[\'!ref\'] = encode_range(range);\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws[\'!fullref\'] = ws[\'!ref\'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws[\'!ref\'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws[\'!merges\'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws["!rows"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag[\'名称\'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== \'undefined\') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== \'/\') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]) : ({}); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \'table-row-group\': // 9.1.9 \n\t\t\t\tif(Rn[1] === "/") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase \'table-row\': case \'行\': // 9.1.3 \n\t\t\t\tif(Rn[1] === \'/\') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag[\'行号\']) R = rowtag[\'行号\'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag[\'number-rows-repeated\'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase \'covered-table-cell\': // 9.1.5 \n\t\t\t\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\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase \'sheet\': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase \'chart\': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws[\'!chart\']) break;\n\t\t\t\tvar dfile = resolve_path(_ws[\'!chart\'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase \'macro\': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase \'dialog\': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t}\n\t\tsheets[sheet] = _ws;\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x) { return x.charAt(0) == \'/\' ? x.slice(1) : x; }\n\nfunction parse_zip(zip, opts) {\n\tmake_ssf(SSF);\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, \'META-INF/manifest.xml\')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, \'objectdata.xml\')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, \'Index/Document.iwa\')) throw new Error(\'Unsupported NUMBERS file\');\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, \'[Content_Types].xml\')));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = "xl/workbook.xml";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = "xl/workbook.bin";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error("Could not find workbook");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == "bin") xlsb = true;\n\n\tvar themes = ({});\n\tvar styles = ({});\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,\'\'), true)||"",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), link, opts);\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = "";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({});\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== \'undefined\') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({});\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? "bin" : "xml";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf("/");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + "_rels/" + dir.workbooks[0].slice(wbrelsi+1) + ".rels").replace(/^\\//,"");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = \'xl/_rels/workbook.\' + wbext + \'.rels\';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile);\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,"xl/worksheets/sheet.xml",true))?1:0;\n\tfor(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = "sheet";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = \'xl/\' + (wbrels[i][1]).replace(/[\\/]?xl\\//, "");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,"") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = \'xl/worksheets/sheet\'+(i+1-nmode)+"." + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,"sheet.");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, "$1/_rels/$3.rels");\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tif(dir.comments) parse_comments(zip, dir.comments, sheets, sheetRels, opts);\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: SSF.get_table()\n\t});\n\tif(opts.bookFiles) {\n\t\tout.keys = entries;\n\t\tout.files = zip.files;\n\t}\n\tif(opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, \'xl/vbaProject.bin\',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts) {\n\tvar opts = _opts || {};\n\tvar f = \'Workbook\', data = CFB.find(cfb, f);\n\ttry {\n\tf = \'/!DataSpaces/Version\';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = \'/!DataSpaces/DataSpaceMap\';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== "StrongEncryptionDataSpace" || dsm[0].comps[0].v !== "EncryptedPackage")\n\t\tthrow new Error("ECMA-376 Encrypted file bad " + f);\n\n\t/* 2.3.4.2 */\n\tf = \'/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace\';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != "StrongEncryptionTransform")\n\t\tthrow new Error("ECMA-376 Encrypted file bad " + f);\n\n\t/* 2.3.4.3 */\n\tf = \'/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary\';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = \'/EncryptionInfo\';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = \'/EncryptedPackage\';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f);\n\n/*global decrypt_agile */\nif(einfo[0] == 0x04 && typeof decrypt_agile !== \'undefined\') return decrypt_agile(einfo[1], data.content, opts.password || "", opts);\n/*global decrypt_std76 */\nif(einfo[0] == 0x02 && typeof decrypt_std76 !== \'undefined\') return decrypt_std76(einfo[1], data.content, opts.password || "", opts);\n\tthrow new Error("File is password-protected");\n}\n\nfunction write_zip(wb, opts) {\n\t_shapeid = 1024;\n\tif(opts.bookType == "ods") return write_ods(wb, opts);\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = SSF.get_table();\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(SSF); SSF.load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = []; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = opts.bookType == "xlsb" ? "bin" : "xml";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\nvar zip = new jszip();\n\tvar f = "", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{"General":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = "docProps/core.xml";\n\tzip.file(f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\nf = "docProps/app.xml";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip.file(f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = "docProps/custom.xml";\n\t\tzip.file(f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {\'!id\':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})["!type"] || "sheet";\n\t\tswitch(_type) {\n\t\tcase "chart": /*\n\t\t\tf = "xl/chartsheets/sheet" + rId + "." + wbext;\n\t\t\tzip.file(f, write_cs(rId-1, f, opts, wb, wsrels));\n\t\t\tct.charts.push(f);\n\t\t\tadd_rels(wsrels, -1, "chartsheets/sheet" + rId + "." + wbext, RELS.CS);\n\t\t\tbreak; */\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = "xl/worksheets/sheet" + rId + "." + wbext;\n\t\t\tzip.file(f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, "worksheets/sheet" + rId + "." + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws[\'!comments\'];\n\t\t\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\tf = "xl/workbook." + wbext;\n\tzip.file(f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = "xl/theme/theme1.xml";\n\tzip.file(f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, "theme/theme1.xml", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = "xl/styles." + wbext;\n\tzip.file(f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, "styles." + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = "xl/vbaProject.bin";\n\t\tzip.file(f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, "vbaProject.bin", RELS.VBA);\n\t}\n\n\tzip.file("[Content_Types].xml", write_ct(ct, opts));\n\tzip.file(\'_rels/.rels\', write_rels(opts.rels));\n\tzip.file(\'xl/_rels/workbook.\' + wbext + \'.rels\', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\nfunction firstbyte(f,o) {\n\tvar x = "";\n\tswitch((o||{}).type || "base64") {\n\t\tcase \'buffer\': return [f[0], f[1], f[2], f[3]];\n\t\tcase \'base64\': x = Base64.decode(f.slice(0,24)); break;\n\t\tcase \'binary\': x = f; break;\n\t\tcase \'array\': return [f[0], f[1], f[2], f[3]];\n\t\tdefault: throw new Error("Unrecognized type " + (o && o.type || "undefined"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3)];\n}\n\nfunction read_cfb(cfb, opts) {\n\tif(CFB.find(cfb, "EncryptedPackage")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data, opts) {\nvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64";\n\tswitch(o.type) {\n\t\tcase "base64": zip = new jszip(d, { base64:true }); break;\n\t\tcase "binary": case "array": zip = new jszip(d, { base64:false }); break;\n\t\tcase "buffer": zip = new jszip(d); break;\n\t\tdefault: throw new Error("Unrecognized type " + o.type);\n\t}\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data, o) {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data, o) {\n\tvar str = "", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase \'base64\': str = Base64.decode(data); break;\n\t\tcase \'binary\': str = data; break;\n\t\tcase \'buffer\': str = data.toString(\'binary\'); break;\n\t\tcase \'array\': str = cc2str(data); break;\n\t\tdefault: throw new Error("Unrecognized type " + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data, o) {\n\tvar d = data;\n\tif(o.type == \'base64\') d = Base64.decode(d);\n\td = cptable.utils.decode(1200, d.slice(2), \'str\');\n\to.type = "binary";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data) {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = "string"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data, opts) {\n\treset_cp();\n\tif(typeof ArrayBuffer !== \'undefined\' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), opts);\n\tvar d = data, n = [0,0,0,0], str = false;\n\tvar o = opts||{};\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64";\n\tif(o.type == "file") { o.type = has_buf ? "buffer" : "binary"; d = read_binary(data); }\n\tif(o.type == "string") { str = true; o.type = "binary"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == \'array\' && typeof Uint8Array !== \'undefined\' && data instanceof Uint8Array && typeof ArrayBuffer !== \'undefined\') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo="bar";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type=\'array\'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: return read_cfb(CFB.read(d, o), o);\n\t\tcase 0x09: return parse_xlscfb(d, o);\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49: if(n[1] === 0x44) return read_wb_ID(d, o); break;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF: if(n[1] === 0xFE) { return read_utf16(d, o); } break;\n\t\tcase 0x00: if(n[1] === 0x00 && n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o); break;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t}\n\tif(n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename, opts) {\n\tvar o = opts||{}; o.type = \'file\';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb, o) {\n\tswitch(o.type) {\n\t\tcase "base64": case "binary": break;\n\t\tcase "buffer": case "array": o.type = ""; break;\n\t\tcase "file": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? \'buffer\' : ""}));\n\t\tcase "string": throw new Error("\'string\' output type invalid for \'" + o.bookType + "\' files");\n\t\tdefault: throw new Error("Unrecognized type " + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\n/*global encrypt_agile */\nfunction write_zip_type(wb, opts) {\n\tvar o = opts||{};\n\tvar z = write_zip(wb, o);\n\tvar oopts = {};\n\tif(o.compression) oopts.compression = \'DEFLATE\';\n\tif(o.password) oopts.type = has_buf ? "nodebuffer" : "string";\n\telse switch(o.type) {\n\t\tcase "base64": oopts.type = "base64"; break;\n\t\tcase "binary": oopts.type = "string"; break;\n\t\tcase "string": throw new Error("\'string\' output type invalid for \'" + o.bookType + "\' files");\n\t\tcase "buffer":\n\t\tcase "file": oopts.type = has_buf ? "nodebuffer" : "string"; break;\n\t\tdefault: throw new Error("Unrecognized type " + o.type);\n\t}\n\tvar out = z.generate(oopts);\n\tif(o.password && typeof encrypt_agile !== \'undefined\') return write_cfb_ctr(encrypt_agile(out, o.password), o);\n\tif(o.type === "file") return write_dl(o.file, out);\n\treturn o.type == "string" ? utf8read(out) : out;\n}\n\nfunction write_cfb_type(wb, opts) {\n\tvar o = opts||{};\n\tvar cfb = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out, opts, bom) {\n\tif(!bom) bom = "";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase "base64": return Base64.encode(utf8write(o));\n\t\tcase "binary": return utf8write(o);\n\t\tcase "string": return out;\n\t\tcase "file": return write_dl(opts.file, o, \'utf8\');\n\t\tcase "buffer": {\n\t\t\t// $FlowIgnore\n\t\t\tif(has_buf) return Buffer_from(o, \'utf8\');\n\t\t\telse return write_string_type(o, {type:\'binary\'}).split("").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error("Unrecognized type " + opts.type);\n}\n\nfunction write_stxt_type(out, opts) {\n\tswitch(opts.type) {\n\t\tcase "base64": return Base64.encode(out);\n\t\tcase "binary": return out;\n\t\tcase "string": return out; /* override in sheet_to_txt */\n\t\tcase "file": return write_dl(opts.file, out, \'binary\');\n\t\tcase "buffer": {\n\t\t\t// $FlowIgnore\n\t\t\tif(has_buf) return Buffer_from(out, \'binary\');\n\t\t\telse return out.split("").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error("Unrecognized type " + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts) {\n\tswitch(opts.type) {\n\t\tcase "string":\n\t\tcase "base64":\n\t\tcase "binary":\n\t\t\tvar bstr = "";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == \'base64\' ? Base64.encode(bstr) : opts.type == \'string\' ? utf8read(bstr) : bstr;\n\t\tcase "file": return write_dl(opts.file, out);\n\t\tcase "buffer": return out;\n\t\tdefault: throw new Error("Unrecognized type " + opts.type);\n\t}\n}\n\nfunction writeSync(wb, opts) {\n\tcheck_wb(wb);\n\tvar o = opts||{};\n\tif(o.type == "array") { o.type = "binary"; var out = (writeSync(wb, o)); o.type = "array"; return s2ab(out); }\n\tswitch(o.bookType || \'xlsb\') {\n\t\tcase \'xml\':\n\t\tcase \'xlml\': return write_string_type(write_xlml(wb, o), o);\n\t\tcase \'slk\':\n\t\tcase \'sylk\': return write_string_type(write_slk_str(wb, o), o);\n\t\tcase \'htm\':\n\t\tcase \'html\': return write_string_type(write_htm_str(wb, o), o);\n\t\tcase \'txt\': return write_stxt_type(write_txt_str(wb, o), o);\n\t\tcase \'csv\': return write_string_type(write_csv_str(wb, o), o, "\\ufeff");\n\t\tcase \'dif\': return write_string_type(write_dif_str(wb, o), o);\n\t\tcase \'dbf\': return write_binary_type(write_dbf_buf(wb, o), o);\n\t\tcase \'prn\': return write_string_type(write_prn_str(wb, o), o);\n\t\tcase \'rtf\': return write_string_type(write_rtf_str(wb, o), o);\n\t\tcase \'eth\': return write_string_type(write_eth_str(wb, o), o);\n\t\tcase \'fods\': return write_string_type(write_ods(wb, o), o);\n\t\tcase \'biff2\': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase \'biff3\': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase \'biff4\': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase \'biff5\': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase \'biff8\':\n\t\tcase \'xla\':\n\t\tcase \'xls\': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase \'xlsx\':\n\t\tcase \'xlsm\':\n\t\tcase \'xlam\':\n\t\tcase \'xlsb\':\n\t\tcase \'ods\': return write_zip_type(wb, o);\n\t\tdefault: throw new Error ("Unrecognized bookType |" + o.bookType + "|");\n\t}\n}\n\nfunction resolve_book_type(o) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t"xls": "biff8",\n\t\t"htm": "html",\n\t\t"slk": "sylk",\n\t\t"socialcalc": "eth",\n\t\t"Sh33tJS": "WTF"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(".")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb, filename, opts) {\n\tvar o = opts||{}; o.type = \'file\';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileAsync(filename, wb, opts, cb) {\n\tvar o = opts||{}; o.type = \'file\';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = \'buffer\';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\nfunction make_json_row(sheet, r, R, cols, header, hdr, dense, o) {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !o.hasOwnProperty("raw");\n\tvar isempty = true;\n\tvar row = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, \'__rowNum__\', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase \'z\': if(v == null) break; continue;\n\t\t\tcase \'e\': v = void 0; break;\n\t\t\tcase \'s\': case \'d\': case \'b\': case \'n\': break;\n\t\t\tdefault: throw new Error(\'unrecognized type \' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet, opts) {\n\tif(sheet == null || sheet["!ref"] == null) return [];\n\tvar val = {t:\'n\',v:0}, header = 0, offset = 1, hdr = [], v=0, vv="";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet["!ref"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === "A") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase \'string\': r = safe_decode_range(range); break;\n\t\tcase \'number\': r = safe_decode_range(sheet["!ref"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols = [];\n\tvar out = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0, CC = 0;\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: "__EMPTY", t: "s"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = 0;\n\t\t\t\tfor(CC = 0; CC < hdr.length; ++CC) if(hdr[CC] == vv) vv = v + "_" + (++counter);\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /"/g;\nfunction make_csv_row(sheet, r, R, cols, fs, rs, FS, o) {\n\tvar isempty = true;\n\tvar row = [], txt = "", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = "";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = \'\'+format_cell(val, null, o);\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34) {txt = "\\"" + txt.replace(qreg, \'""\') + "\\""; break; }\n\t\t\tif(txt == "ID") txt = \'"ID"\';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = \'=\' + val.f; if(txt.indexOf(",") >= 0) txt = \'"\' + txt.replace(qreg, \'""\') + \'"\';\n\t\t} else txt = "";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet, opts) {\n\tvar out = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet["!ref"] == null) return "";\n\tvar r = safe_decode_range(sheet["!ref"]);\n\tvar FS = o.FS !== undefined ? o.FS : ",", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : "\\n", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS=="|" ? "\\\\|" : FS)+"+$");\n\tvar row = "", cols = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo = o.skipHidden && sheet["!cols"] || [];\n\tvar rowinfo = o.skipHidden && sheet["!rows"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,"");\n\t\tout.push(row + RS);\n\t}\n\tdelete o.dense;\n\treturn out.join("");\n}\n\nfunction sheet_to_txt(sheet, opts) {\n\tif(!opts) opts = {}; opts.FS = "\\t"; opts.RS = "\\n";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof cptable == \'undefined\' || opts.type == \'string\') return s;\n\tvar o = cptable.utils.encode(1200, s, \'str\');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet) {\n\tvar y = "", x, val="";\n\tif(sheet == null || sheet["!ref"] == null) return [];\n\tvar r = safe_decode_range(sheet[\'!ref\']), rr = "", cols = [], C;\n\tvar cmds = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = "";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(":") == -1) y = y + ":" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == \'z\') continue;\n\t\t\telse if(x.t == \'n\' && x.v != null) val = "" + x.v;\n\t\t\telse if(x.t == \'b\') val = x.v ? "TRUE" : "FALSE";\n\t\t\telse if(x.w !== undefined) val = "\'" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == \'s\') val = "\'" + x.v;\n\t\t\telse val = ""+x.v;\n\t\t\tcmds[cmds.length] = y + "=" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws, js, opts) {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws = _ws || ({});\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == \'number\') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin = typeof o.origin == "string" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell;\n\tvar range = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}});\n\tif(ws[\'!ref\']) {\n\t\tvar _range = safe_decode_range(ws[\'!ref\']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t}\n\tvar hdr = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = \'z\';\n\t\t\tvar z = "";\n\t\t\tif(v && typeof v === \'object\' && !(v instanceof Date)){\n\t\t\t\tws[encode_cell({c:_C + C,r:_R + R + offset})] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == \'number\') t = \'n\';\n\t\t\t\telse if(typeof v == \'boolean\') t = \'b\';\n\t\t\t\telse if(typeof v == \'string\') t = \'s\';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = \'d\';\n\t\t\t\t\tif(!o.cellDates) { t = \'n\'; v = datenum(v); }\n\t\t\t\t\tz = o.dateNF || SSF._table[14];\n\t\t\t\t}\n\t\t\t\tws[encode_cell({c:_C + C,r:_R + R + offset})] = cell = ({t:t, v:v});\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:\'s\', v:hdr[C]};\n\tws[\'!ref\'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js, opts) { return sheet_add_json(null, js, opts); }\n\nvar utils = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tget_formulae: sheet_to_formulae,\n\tmake_csv: sheet_to_csv,\n\tmake_json: sheet_to_json,\n\tmake_formulae: sheet_to_formulae,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: HTML_.from_sheet,\n\tsheet_to_dif: DIF.from_sheet,\n\tsheet_to_slk: SYLK.from_sheet,\n\tsheet_to_eth: ETH.from_sheet,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json\n};\n\n(function(utils) {\nutils.consts = utils.consts || {};\nfunction add_consts(R/*Array*/) { R.forEach(function(a){ utils.consts[a[0]] = a[1]; }); }\n\nfunction get_default(x, y, z) { return x[y] != null ? x[y] : (x[y] = z); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws, R, C) {\n\t/* A1 cell address */\n\tif(typeof R == "string") return ws[R] || (ws[R] = {t:\'z\'});\n\t/* cell address object */\n\tif(typeof R != "number") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb, sh) {\n\tif(typeof sh == "number") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error("Cannot find sheet # " + sh);\n\t} else if(typeof sh == "string") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error("Cannot find sheet name |" + sh + "|");\n\t} else throw new Error("Cannot find sheet |" + sh + "|");\n}\n\n/* simple blank workbook object */\nutils.book_new = function() {\n\treturn { SheetNames: [], Sheets: {} };\n};\n\n/* add a worksheet to the end of a given workbook */\nutils.book_append_sheet = function(wb, ws, name) {\n\tif(!name) for(var i = 1; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = "Sheet" + i) == -1) break;\n\tif(!name) throw new Error("Too many worksheets");\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error("Worksheet with name |" + name + "| already exists!");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n};\n\n/* set sheet visibility (visible/hidden/very hidden) */\nutils.book_set_sheet_visibility = function(wb, sh, vis) {\n\tget_default(wb,"Workbook",{});\n\tget_default(wb.Workbook,"Sheets",[]);\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tget_default(wb.Workbook.Sheets,idx, {});\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error("Bad sheet visibility setting " + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n};\nadd_consts([\n\t["SHEET_VISIBLE", 0],\n\t["SHEET_HIDDEN", 1],\n\t["SHEET_VERY_HIDDEN", 2]\n]);\n\n/* set number format */\nutils.cell_set_number_format = function(cell, fmt) {\n\tcell.z = fmt;\n\treturn cell;\n};\n\n/* set cell hyperlink */\nutils.cell_set_hyperlink = function(cell, target, tooltip) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target });\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n};\nutils.cell_set_internal_link = function(cell, range, tooltip) { return utils.cell_set_hyperlink(cell, "#" + range, tooltip); };\n\n/* add to cell comments */\nutils.cell_add_comment = function(cell, text, author) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||"SheetJS"});\n};\n\n/* set array formula and flush related cells */\nutils.sheet_set_array_formula = function(ws, range, formula) {\n\tvar rng = typeof range != "string" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == "string" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = \'n\';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) cell.f = formula;\n\t}\n\treturn ws;\n};\n\nreturn utils;\n})(utils);\n\nif(has_buf && "function" != \'undefined\') (function() {\n\tvar Readable = __webpack_require__(/*! stream */ 4).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\tvar write_json_stream = function(sheet, opts) {\n\t\tvar stream = Readable({objectMode:true});\n\n\t\tif(sheet == null || sheet["!ref"] == null) { stream.push(null); return stream; }\n\t\tvar val = {t:\'n\',v:0}, header = 0, offset = 1, hdr = [], v=0, vv="";\n\t\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tvar o = opts || {};\n\t\tvar range = o.range != null ? o.range : sheet["!ref"];\n\t\tif(o.header === 1) header = 1;\n\t\telse if(o.header === "A") header = 2;\n\t\telse if(Array.isArray(o.header)) header = 3;\n\t\tswitch(typeof range) {\n\t\t\tcase \'string\': r = safe_decode_range(range); break;\n\t\t\tcase \'number\': r = safe_decode_range(sheet["!ref"]); r.s.r = range; break;\n\t\t\tdefault: r = range;\n\t\t}\n\t\tif(header > 0) offset = 0;\n\t\tvar rr = encode_row(r.s.r);\n\t\tvar cols = [];\n\t\tvar counter = 0;\n\t\tvar dense = Array.isArray(sheet);\n\t\tvar R = r.s.r, C = 0, CC = 0;\n\t\tif(dense && !sheet[R]) sheet[R] = [];\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\tcols[C] = encode_col(C);\n\t\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\t\tswitch(header) {\n\t\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\t\tdefault:\n\t\t\t\t\tif(val == null) val = {w: "__EMPTY", t: "s"};\n\t\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\t\tcounter = 0;\n\t\t\t\t\tfor(CC = 0; CC < hdr.length; ++CC) if(hdr[CC] == vv) vv = v + "_" + (++counter);\n\t\t\t\t\thdr[C] = vv;\n\t\t\t}\n\t\t}\n\t\tR = r.s.r + offset;\n\t\tstream._read = function() {\n\t\t\tif(R > r.e.r) return stream.push(null);\n\t\t\twhile(R <= r.e.r) {\n\t\t\t\t//if ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\t\t\t++R;\n\t\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\t\tstream.push(row.row);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn stream;\n\t};\n\n\tXLSX.stream = {\n\t\tto_json: write_json_stream,\n\t\tto_html: write_html_stream,\n\t\tto_csv: write_csv_stream\n\t};\n})();\n\nXLSX.parse_xlscfb = parse_xlscfb;\nXLSX.parse_ods = parse_ods;\nXLSX.parse_fods = parse_fods;\nXLSX.write_ods = write_ods;\nXLSX.parse_zip = parse_zip;\nXLSX.read = readSync; //xlsread\nXLSX.readFile = readFileSync; //readFile\nXLSX.readFileSync = readFileSync;\nXLSX.write = writeSync;\nXLSX.writeFile = writeFileSync;\nXLSX.writeFileSync = writeFileSync;\nXLSX.writeFileAsync = writeFileAsync;\nXLSX.utils = utils;\nXLSX.SSF = SSF;\nXLSX.CFB = CFB;\n}\n/*global define */\nif(true) make_xlsx_lib(exports);\nelse {}\n/*exported XLS, ODS */\nvar XLS = XLSX, ODS = XLSX;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"), __webpack_require__(/*! ./../buffer/index.js */ "./node_modules/buffer/index.js").Buffer, __webpack_require__(/*! ./../node-libs-browser/mock/process.js */ "./node_modules/node-libs-browser/mock/process.js")))\n\n//# sourceURL=webpack:///./node_modules/xlsx/xlsx.js?'); /***/}}]);