xgplayer-mp4-loader 0.0.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.min.js","sources":["../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../node_modules/@babel/runtime/helpers/esm/createClass.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/core-js/internals/global.js","../../../node_modules/core-js/internals/fails.js","../../../node_modules/core-js/internals/descriptors.js","../../../node_modules/core-js/internals/object-property-is-enumerable.js","../../../node_modules/core-js/internals/engine-v8-version.js","../../../node_modules/core-js/internals/create-property-descriptor.js","../../../node_modules/core-js/internals/classof-raw.js","../../../node_modules/core-js/internals/indexed-object.js","../../../node_modules/core-js/internals/require-object-coercible.js","../../../node_modules/core-js/internals/to-indexed-object.js","../../../node_modules/core-js/internals/is-object.js","../../../node_modules/core-js/internals/get-built-in.js","../../../node_modules/core-js/internals/engine-user-agent.js","../../../node_modules/core-js/internals/native-symbol.js","../../../node_modules/core-js/internals/use-symbol-as-uid.js","../../../node_modules/core-js/internals/is-symbol.js","../../../node_modules/core-js/internals/ordinary-to-primitive.js","../../../node_modules/core-js/internals/set-global.js","../../../node_modules/core-js/internals/shared-store.js","../../../node_modules/core-js/internals/shared.js","../../../node_modules/core-js/internals/to-object.js","../../../node_modules/core-js/internals/has.js","../../../node_modules/core-js/internals/uid.js","../../../node_modules/core-js/internals/well-known-symbol.js","../../../node_modules/core-js/internals/to-primitive.js","../../../node_modules/core-js/internals/to-property-key.js","../../../node_modules/core-js/internals/document-create-element.js","../../../node_modules/core-js/internals/ie8-dom-define.js","../../../node_modules/core-js/internals/object-get-own-property-descriptor.js","../../../node_modules/core-js/internals/an-object.js","../../../node_modules/core-js/internals/object-define-property.js","../../../node_modules/core-js/internals/create-non-enumerable-property.js","../../../node_modules/core-js/internals/inspect-source.js","../../../node_modules/core-js/internals/internal-state.js","../../../node_modules/core-js/internals/native-weak-map.js","../../../node_modules/core-js/internals/shared-key.js","../../../node_modules/core-js/internals/hidden-keys.js","../../../node_modules/core-js/internals/redefine.js","../../../node_modules/core-js/internals/to-integer.js","../../../node_modules/core-js/internals/to-length.js","../../../node_modules/core-js/internals/to-absolute-index.js","../../../node_modules/core-js/internals/array-includes.js","../../../node_modules/core-js/internals/object-keys-internal.js","../../../node_modules/core-js/internals/enum-bug-keys.js","../../../node_modules/core-js/internals/object-get-own-property-names.js","../../../node_modules/core-js/internals/object-get-own-property-symbols.js","../../../node_modules/core-js/internals/own-keys.js","../../../node_modules/core-js/internals/object-create.js","../../../node_modules/core-js/internals/copy-constructor-properties.js","../../../node_modules/core-js/internals/is-forced.js","../../../node_modules/core-js/internals/export.js","../../../node_modules/core-js/internals/a-function.js","../../../node_modules/core-js/internals/function-bind-context.js","../../../node_modules/core-js/internals/is-array.js","../../../node_modules/core-js/internals/array-species-constructor.js","../../../node_modules/core-js/internals/array-species-create.js","../../../node_modules/core-js/internals/array-iteration.js","../../../node_modules/core-js/internals/object-keys.js","../../../node_modules/core-js/internals/object-define-properties.js","../../../node_modules/core-js/internals/html.js","../../../node_modules/core-js/internals/add-to-unscopables.js","../../../node_modules/core-js/modules/es.array.find.js","../../../node_modules/core-js/internals/create-property.js","../../../node_modules/core-js/internals/array-method-has-species-support.js","../../../node_modules/core-js/modules/es.array.slice.js","../../../node_modules/regenerator-runtime/runtime.js","../../../node_modules/@babel/runtime/regenerator/index.js","../../../node_modules/core-js/internals/function-bind.js","../../../node_modules/core-js/modules/es.reflect.construct.js","../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../../../node_modules/@babel/runtime/helpers/esm/construct.js","../../../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../../../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../../../node_modules/core-js/internals/iterators-core.js","../../../node_modules/core-js/internals/iterators.js","../../../node_modules/core-js/internals/correct-prototype-getter.js","../../../node_modules/core-js/internals/object-get-prototype-of.js","../../../node_modules/core-js/internals/set-to-string-tag.js","../../../node_modules/core-js/internals/create-iterator-constructor.js","../../../node_modules/core-js/internals/a-possible-prototype.js","../../../node_modules/core-js/internals/object-set-prototype-of.js","../../../node_modules/core-js/internals/define-iterator.js","../../../node_modules/core-js/modules/es.array.iterator.js","../../../node_modules/core-js/internals/to-string-tag-support.js","../../../node_modules/core-js/internals/classof.js","../../../node_modules/core-js/internals/object-to-string.js","../../../node_modules/core-js/modules/es.object.to-string.js","../../../node_modules/core-js/internals/to-string.js","../../../node_modules/core-js/internals/string-multibyte.js","../../../node_modules/core-js/modules/es.string.iterator.js","../../../node_modules/core-js/internals/dom-iterables.js","../../../node_modules/core-js/modules/web.dom-collections.iterator.js","../../../node_modules/core-js/internals/an-instance.js","../../../node_modules/core-js/internals/object-assign.js","../../../node_modules/core-js/internals/iterator-close.js","../../../node_modules/core-js/internals/call-with-safe-iteration-closing.js","../../../node_modules/core-js/internals/is-array-iterator-method.js","../../../node_modules/core-js/internals/get-iterator-method.js","../../../node_modules/core-js/internals/array-from.js","../../../node_modules/core-js/internals/redefine-all.js","../../../node_modules/core-js/internals/array-method-is-strict.js","../../../node_modules/core-js/internals/array-for-each.js","../../../node_modules/core-js/modules/web.dom-collections.for-each.js","../../../node_modules/core-js/modules/es.object.keys.js","../../../node_modules/core-js/internals/native-promise-constructor.js","../../../node_modules/core-js/internals/set-species.js","../../../node_modules/core-js/internals/iterate.js","../../../node_modules/core-js/internals/check-correctness-of-iteration.js","../../../node_modules/core-js/internals/task.js","../../../node_modules/core-js/internals/species-constructor.js","../../../node_modules/core-js/internals/engine-is-ios.js","../../../node_modules/core-js/internals/engine-is-node.js","../../../node_modules/core-js/internals/microtask.js","../../../node_modules/core-js/internals/engine-is-ios-pebble.js","../../../node_modules/core-js/internals/engine-is-webos-webkit.js","../../../node_modules/core-js/internals/new-promise-capability.js","../../../node_modules/core-js/internals/promise-resolve.js","../../../node_modules/core-js/modules/es.promise.js","../../../node_modules/core-js/internals/host-report-errors.js","../../../node_modules/core-js/internals/engine-is-browser.js","../../../node_modules/core-js/internals/perform.js","../../../node_modules/core-js/internals/regexp-flags.js","../../../node_modules/core-js/internals/regexp-sticky-helpers.js","../../../node_modules/core-js/internals/regexp-unsupported-dot-all.js","../../../node_modules/core-js/internals/regexp-exec.js","../../../node_modules/core-js/internals/regexp-unsupported-ncg.js","../../../node_modules/core-js/modules/es.regexp.exec.js","../../../node_modules/core-js/modules/es.object.assign.js","../../../node_modules/core-js/modules/es.array.concat.js","../../../node_modules/core-js/modules/es.array.map.js","../../../node_modules/core-js/modules/es.promise.finally.js","../../../node_modules/core-js/internals/array-buffer-view-core.js","../../../node_modules/core-js/internals/array-buffer-native.js","../../../node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","../../../node_modules/core-js/internals/to-index.js","../../../node_modules/core-js/internals/ieee754.js","../../../node_modules/core-js/internals/array-fill.js","../../../node_modules/core-js/internals/array-buffer.js","../../../node_modules/core-js/internals/is-integer.js","../../../node_modules/core-js/internals/to-positive-integer.js","../../../node_modules/core-js/internals/to-offset.js","../../../node_modules/core-js/internals/typed-array-from.js","../../../node_modules/core-js/internals/inherit-if-required.js","../../../node_modules/core-js/internals/typed-array-constructor.js","../../../node_modules/core-js/modules/es.typed-array.uint8-array.js","../../../node_modules/core-js/internals/array-copy-within.js","../../../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.fill.js","../../../node_modules/core-js/internals/typed-array-species-constructor.js","../../../node_modules/core-js/internals/typed-array-from-species-and-list.js","../../../node_modules/core-js/internals/array-from-constructor-and-list.js","../../../node_modules/core-js/modules/es.typed-array.filter.js","../../../node_modules/core-js/modules/es.typed-array.find.js","../../../node_modules/core-js/modules/es.typed-array.find-index.js","../../../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.index-of.js","../../../node_modules/core-js/modules/es.typed-array.iterator.js","../../../node_modules/core-js/modules/es.typed-array.join.js","../../../node_modules/core-js/internals/array-last-index-of.js","../../../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/internals/array-reduce.js","../../../node_modules/core-js/modules/es.typed-array.reduce.js","../../../node_modules/core-js/modules/es.typed-array.reduce-right.js","../../../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.slice.js","../../../node_modules/core-js/modules/es.typed-array.some.js","../../../node_modules/core-js/internals/array-sort.js","../../../node_modules/core-js/internals/engine-ff-version.js","../../../node_modules/core-js/internals/engine-is-ie-or-edge.js","../../../node_modules/core-js/internals/engine-webkit-version.js","../../../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.to-locale-string.js","../../../node_modules/core-js/modules/es.typed-array.to-string.js","../../xgplayer-streaming-shared/src/net/types.js","../../xgplayer-streaming-shared/src/net/error.js","../../../node_modules/@babel/runtime/helpers/esm/inherits.js","../../../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","../../../node_modules/core-js/internals/advance-string-index.js","../../../node_modules/core-js/internals/get-substitution.js","../../../node_modules/core-js/internals/regexp-exec-abstract.js","../../../node_modules/core-js/modules/es.string.replace.js","../../../node_modules/core-js/modules/es.array.join.js","../../../node_modules/core-js/modules/es.array.filter.js","../../../node_modules/core-js/modules/es.object.get-prototype-of.js","../../xgplayer-streaming-shared/src/is.js","../../xgplayer-streaming-shared/src/net/helper.js","../../xgplayer-streaming-shared/src/net/fetch.js","../../../node_modules/core-js/internals/object-get-own-property-names-external.js","../../../node_modules/core-js/internals/well-known-symbol-wrapped.js","../../../node_modules/core-js/internals/path.js","../../../node_modules/core-js/internals/define-well-known-symbol.js","../../../node_modules/core-js/modules/es.symbol.js","../../../node_modules/core-js/modules/es.object.get-own-property-descriptor.js","../../../node_modules/core-js/modules/es.object.get-own-property-descriptors.js","../../xgplayer-streaming-shared/src/net/config.js","../../../node_modules/core-js/modules/es.function.name.js","../../../node_modules/core-js/modules/es.array.from.js","../../../node_modules/core-js/modules/es.symbol.description.js","../../../node_modules/core-js/modules/es.symbol.iterator.js","../../../node_modules/core-js/internals/is-regexp.js","../../../node_modules/core-js/modules/es.string.split.js","../../../node_modules/core-js/internals/whitespaces.js","../../../node_modules/core-js/internals/string-trim.js","../../../node_modules/core-js/internals/string-trim-forced.js","../../../node_modules/core-js/modules/es.string.trim.js","../../xgplayer-streaming-shared/src/net/xhr.js","../../xgplayer-streaming-shared/src/net/task.js","../../xgplayer-streaming-shared/src/utils.js","../../xgplayer-streaming-shared/src/net/index.js","../../xgplayer-streaming-shared/src/streaming-helper.js","../../../node_modules/core-js/modules/es.array.includes.js","../../../node_modules/core-js/internals/not-a-regexp.js","../../../node_modules/core-js/internals/correct-is-regexp-logic.js","../../../node_modules/core-js/modules/es.string.includes.js","../../xgplayer-transmuxer/src/model/types.js","../../../node_modules/core-js/modules/es.regexp.to-string.js","../../xgplayer-transmuxer/src/utils/env.js","../../xgplayer-transmuxer/src/utils/index.js","../../xgplayer-transmuxer/src/codec/aac.js","../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../node_modules/core-js/internals/string-repeat.js","../../../node_modules/core-js/internals/string-pad.js","../../../node_modules/core-js/internals/string-pad-webkit-bug.js","../../../node_modules/core-js/modules/es.string.pad-start.js","../../../node_modules/core-js/modules/es.regexp.flags.js","../../xgplayer-transmuxer/src/mp4/mp4-parser.js","../src/error.js","../src/cache.js","../src/utils.js","../src/loader.js","../src/config.js"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var getBuiltIn = require('../internals/get-built-in');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return typeof $Symbol == 'function' && Object(it) instanceof $Symbol;\n};\n","var isObject = require('../internals/is-object');\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (pref !== 'string' && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (key, value) {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.16.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = input[TO_PRIMITIVE];\n var result;\n if (exoticToPrim !== undefined) {\n if (pref === undefined) pref = 'default';\n result = exoticToPrim.call(input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : String(key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","module.exports = require(\"regenerator-runtime\");\n","'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func -- we have no proper alternatives, IE8- only\n factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar bind = require('../internals/function-bind');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var isSymbol = require('../internals/is-symbol');\n\nmodule.exports = function (argument) {\n if (isSymbol(argument)) throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var toInteger = require('../internals/to-integer');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.codePointAt` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\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 index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var argumentsLength = arguments.length;\n var i = 1;\n while (argumentsLength > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromiseConstructorPrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromiseConstructorPrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructorPrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function' && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","module.exports = typeof window == 'object';\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","var fails = require('./fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n // eslint-disable-next-line max-statements -- TODO\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = patchedExec.call(raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = str.slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str.charAt(re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","var fails = require('./fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?<a>b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$<a>c') !== 'bc';\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && typeof NativePromise == 'function') {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromise.prototype['finally'] !== method) {\n redefine(NativePromise.prototype, 'finally', method, { unsafe: true });\n }\n}\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\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');\nvar TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');\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, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\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 && !isPrototypeOf.call(TypedArray, C)) {\n throw TypeError('Target is not a typed array constructor');\n } return C;\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)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) { /* empty */ }\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)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\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 -- safe\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_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,\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","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n","/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').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","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","// IEEE754 conversions based on https://github.com/feross/ieee754\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 -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\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","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/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","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\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 /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n /* eslint-enable no-new -- required for testing */\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 $setInt8 = $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 $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.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","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `Number.isInteger` method implementation\n// https://tc39.es/ecma262/#sec-number.isinteger\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","var toInteger = require('../internals/to-integer');\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","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/function-bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').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","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isInteger = require('../internals/is-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPropertyKey = require('../internals/to-property-key');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\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_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\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 && !isSymbol(key)\n && key in target\n && isInteger(+key)\n && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n key = toPropertyKey(key);\n return isTypedArrayIndex(target, key)\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n key = toPropertyKey(key);\n if (isTypedArrayIndex(target, key)\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 createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_CONSTRUCTOR, TypedArrayConstructor);\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","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/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","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\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","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/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","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/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","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","var ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n return aTypedArrayConstructor(speciesConstructor(originalArray, originalArray[TYPED_ARRAY_CONSTRUCTOR]));\n};\n","var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n","module.exports = function (Constructor, list) {\n var index = 0;\n var length = list.length;\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/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 return fromSpeciesAndList(this, list);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/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","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/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","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/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","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/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","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\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.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $lastIndexOf.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} : $lastIndexOf;\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/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 (typedArraySpeciesConstructor(O))(length);\n });\n});\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\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.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/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","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/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","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/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","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/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","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = typedArraySpeciesConstructor(this);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/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","// TODO: use something more complex like timsort?\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n mergeSort(array.slice(0, middle), comparefn),\n mergeSort(array.slice(middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n var result = [];\n\n while (lindex < llength || rindex < rlength) {\n if (lindex < llength && rindex < rlength) {\n result.push(comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]);\n } else {\n result.push(lindex < llength ? left[lindex++] : right[rindex++]);\n }\n } return result;\n};\n\nmodule.exports = mergeSort;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar aFunction = require('../internals/a-function');\nvar toLength = require('../internals/to-length');\nvar internalSort = require('../internals/array-sort');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && Uint16Array.prototype.sort;\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !fails(function () {\n var array = new Uint16Array(2);\n array.sort(null);\n array.sort({});\n});\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n array.sort(function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n var array = this;\n if (comparefn !== undefined) aFunction(comparefn);\n if (STABLE_SORT) return nativeSort.call(array, comparefn);\n\n aTypedArray(array);\n var arrayLength = toLength(array.length);\n var items = Array(arrayLength);\n var index;\n\n for (index = 0; index < arrayLength; index++) {\n items[index] = array[index];\n }\n\n items = internalSort(array, getSortCompare(comparefn));\n\n for (index = 0; index < arrayLength; index++) {\n array[index] = items[index];\n }\n\n return array;\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/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 var C = typedArraySpeciesConstructor(O);\n return new C(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\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.es/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","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\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.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","export const LoaderType = {\n FETCH: 'fetch',\n XHR: 'xhr'\n}\n\nexport const ResponseType = {\n ARRAY_BUFFER: 'arraybuffer',\n TEXT: 'text',\n JSON: 'json'\n}\n","import { LoaderType } from './types'\n\nexport class NetError extends Error {\n retryCount = 0\n isTimeout = false\n loaderType = LoaderType.FETCH\n startTime = 0\n endTime = 0\n\n constructor (url, request, response, msg) {\n super(msg)\n this.url = url\n this.request = request\n this.response = response\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue === 'string' &&\n replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1 &&\n replaceValue.indexOf('$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = toString(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","const toString = Object.prototype.toString\n\nexport function isObject (a) {\n return a !== null && typeof a === 'object'\n}\n\nexport function isPlainObject (val) {\n if (toString.call(val) !== '[object Object]') {\n return false\n }\n\n const prototype = Object.getPrototypeOf(val)\n return prototype === null || prototype === Object.prototype\n}\n\nexport function isDate (a) {\n return toString.call(a) === '[object Date]'\n}\n\nexport function isNumber (n) {\n return typeof n === 'number' && !isNaN(n)\n}\n","import { isDate, isObject } from '../is'\n\nexport function getRangeValue (value) {\n if (!value || value[0] == null || (value[0] === 0 && value[1] == null)) {\n return\n }\n let ret = 'bytes=' + value[0] + '-'\n if (value[1]) ret += value[1]\n return ret\n}\n\nfunction encode (val) {\n return encodeURIComponent(val)\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+')\n .replace(/%5B/gi, '[')\n .replace(/%5D/gi, ']')\n}\n\nexport function setUrlParams (url, params) {\n if (!url) return\n if (!params) return url\n let v\n const str = Object.keys(params).map(k => {\n v = params[k]\n if (v == null) return\n if (Array.isArray(v)) {\n k = k + '[]'\n } else {\n v = [v]\n }\n\n return v.map(x => {\n if (isDate(x)) {\n x = x.toISOString()\n } else if (isObject(x)) {\n x = JSON.stringify(x)\n }\n return `${encode(k)}=${encode(x)}`\n }).join('&')\n }).filter(Boolean).join('&')\n\n if (str) {\n const hashIndex = url.indexOf('#')\n if (hashIndex !== -1) {\n url = url.slice(0, hashIndex)\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + str\n }\n\n return url\n}\n\nexport function createResponse (\n data,\n response,\n contentLength,\n age,\n startTime,\n firstByteTime\n) {\n age = (age != null) ? parseFloat(age) : null\n contentLength = parseInt(contentLength || '0', 10)\n if (isNaN(contentLength)) contentLength = 0\n\n return {\n data,\n response,\n contentLength,\n age,\n startTime,\n firstByteTime,\n endTime: Date.now()\n }\n}\n","import { NetError } from './error'\nimport { createResponse, getRangeValue, setUrlParams } from './helper'\nimport { ResponseType } from './types'\n\nexport class FetchLoader {\n _abortController = null\n _timeoutTimer = null\n _reader = null\n _response = null\n _aborted = false\n\n load ({\n url,\n timeout, // ms\n responseType,\n onProgress,\n onTimeout,\n range,\n transformResponse,\n request,\n params,\n\n method,\n headers,\n body,\n mode,\n credentials,\n cache,\n redirect,\n referrer,\n referrerPolicy,\n integrity\n }) {\n this._aborted = false\n this._abortController = new AbortController()\n const init = {\n method,\n headers,\n body,\n mode,\n credentials,\n cache,\n redirect,\n referrer,\n referrerPolicy,\n integrity,\n signal: this._abortController.signal\n }\n\n let isTimeout = false\n clearTimeout(this._timeoutTimer)\n\n url = setUrlParams(url, params)\n\n const rangeValue = getRangeValue(range)\n if (rangeValue) {\n if (request) {\n headers = request.headers\n } else {\n headers = init.headers = init.headers || new Headers()\n }\n if (headers instanceof Headers) {\n headers.append('Range', rangeValue)\n } else {\n headers.Range = rangeValue\n }\n }\n\n if (timeout) {\n this._timeoutTimer = setTimeout(() => {\n isTimeout = true\n this.cancel()\n if (onTimeout) {\n const error = new NetError(url, init)\n error.isTimeout = true\n onTimeout(error)\n }\n }, timeout)\n }\n\n const startTime = Date.now()\n return fetch(request || url, request ? undefined : init).then(async (response) => {\n clearTimeout(this._timeoutTimer)\n this._response = response\n if (this._aborted) return\n if (transformResponse) {\n response = transformResponse(response, url) || response\n }\n if (!response.ok) {\n throw new NetError(url, init, response, 'bad network response')\n }\n\n const firstByteTime = Date.now()\n let data\n if (responseType === ResponseType.TEXT) {\n data = await response.text()\n } else if (responseType === ResponseType.JSON) {\n data = await response.json()\n } else {\n if (onProgress) {\n this._loadChunk(response, onProgress)\n } else {\n data = await response.arrayBuffer()\n data = new Uint8Array(data)\n }\n }\n\n return createResponse(\n data,\n response,\n response.headers.get('Content-Length'),\n response.headers.get('age'),\n startTime,\n firstByteTime\n )\n }).catch((error) => {\n clearTimeout(this._timeoutTimer)\n if (this._aborted && !isTimeout) return\n error = error instanceof NetError ? error : new NetError(url, init)\n error.startTime = startTime\n error.endTime = Date.now()\n error.isTimeout = isTimeout\n throw error\n })\n }\n\n async cancel () {\n if (this._aborted) return\n this._aborted = true\n if (this._response) {\n try {\n await this._response.body.cancel()\n if (this._reader) {\n await this._reader.cancel()\n }\n } catch (error) {\n // ignore\n }\n this._response = this._reader = null\n }\n\n if (this._abortController) {\n try {\n this._abortController.abort()\n } catch (error) {\n // ignore\n }\n this._abortController = null\n }\n }\n\n _loadChunk (response, onProgress) {\n const reader = this._reader = response.body.getReader()\n let data\n\n let startTime\n let endTime\n const pump = async () => {\n startTime = Date.now()\n try {\n data = await reader.read()\n endTime = Date.now()\n } catch (e) {\n // request aborted\n endTime = Date.now()\n onProgress(undefined, true, { startTime, endTime }, response)\n return\n }\n\n if (this._aborted) {\n onProgress(undefined, true, { startTime, endTime }, response)\n return\n }\n\n onProgress(data.value, data.done, { startTime, endTime }, response)\n if (!data.done) {\n pump()\n }\n }\n pump()\n }\n\n static isSupported () {\n if (typeof ReadableStream !== 'undefined') {\n try {\n new ReadableStream({}) // eslint-disable-line no-new\n } catch (e) {\n return false\n }\n } else {\n return false\n }\n return !!(typeof fetch !== 'undefined' && typeof AbortController !== 'undefined')\n }\n}\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = $toString(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","import { LoaderType, ResponseType } from './types'\n\nexport function getConfig (cfg) {\n return {\n loaderType: LoaderType.FETCH,\n retry: 0,\n retryDelay: 0, // ms\n timeout: 0,\n request: null, // Request\n onTimeout: undefined,\n onProgress: undefined,\n onRetryError: undefined,\n transformRequest: undefined,\n transformResponse: undefined,\n transformError: undefined,\n responseType: ResponseType.TEXT,\n range: undefined,\n url: '',\n params: undefined,\n method: 'GET',\n headers: {},\n body: undefined,\n mode: undefined,\n credentials: undefined,\n cache: undefined,\n redirect: undefined,\n referrer: undefined,\n referrerPolicy: undefined,\n integrity: undefined,\n ...cfg\n }\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","import { NetError } from './error'\nimport { createResponse, getRangeValue, setUrlParams } from './helper'\nimport { ResponseType } from './types'\n\nexport class XhrLoader {\n _xhr = null\n _aborted = false\n _timeoutTimer = null\n\n load (req) {\n clearTimeout(this._timeoutTimer)\n\n let {\n url,\n params,\n timeout, // ms\n responseType,\n onTimeout,\n transformResponse,\n onProgress,\n method,\n credentials,\n body,\n headers,\n range,\n request\n } = req\n\n let isTimeout = false\n\n url = setUrlParams(url, params)\n\n const startTime = Date.now()\n return new Promise((resolve, reject) => {\n const xhr = this._xhr = new XMLHttpRequest()\n xhr.open(method || 'GET', url, true)\n xhr.responseType = responseType\n xhr.withCredentials = credentials === 'include' || credentials === 'same-origin'\n\n const rangeValue = getRangeValue(range)\n if (rangeValue) {\n headers = headers || {}\n headers.Range = rangeValue\n }\n\n if (headers) {\n Object.keys(headers).forEach(k => {\n xhr.setRequestHeader(k, headers[k])\n })\n }\n\n if (timeout) {\n this._timeoutTimer = setTimeout(() => {\n isTimeout = true\n this.cancel()\n if (onTimeout) {\n const error = new NetError(url, request)\n error.isTimeout = true\n onTimeout(error)\n }\n }, timeout)\n }\n\n xhr.onerror = (event) => reject(event)\n xhr.onreadystatechange = () => {\n if (xhr.readyState >= 2) {\n clearTimeout(this._timeoutTimer)\n const firstByteTime = Date.now()\n\n if (xhr.readyState === 4) {\n xhr.onreadystatechange = null\n if (this._aborted) return\n\n const status = xhr.status\n let response = {\n ok: status >= 200 && status < 300,\n status,\n statusText: xhr.statusText,\n url: xhr.responseURL,\n headers: this._getHeaders(xhr),\n body: xhr.response\n }\n\n if (transformResponse) {\n response = transformResponse(response, url) || response\n }\n\n if (!response.ok) {\n return reject(new NetError(url, request, response, 'bad network response'))\n }\n\n const isArraybuffer = xhr.responseType === ResponseType.ARRAY_BUFFER\n let data = isArraybuffer ? new Uint8Array(xhr.response) : xhr.response\n\n if (onProgress) {\n onProgress(isArraybuffer ? data : undefined, true, { startTime, endTime: Date.now() }, response)\n }\n\n resolve(createResponse(\n data,\n response,\n response.headers['content-length'],\n response.headers.age,\n startTime,\n firstByteTime\n ))\n }\n }\n }\n\n xhr.send(body)\n }).catch((error) => {\n clearTimeout(this._timeoutTimer)\n if (this._aborted && !isTimeout) return\n error = error instanceof NetError ? error : new NetError(url, request)\n error.startTime = startTime\n error.endTime = Date.now()\n error.isTimeout = isTimeout\n throw error\n })\n }\n\n cancel () {\n if (this._aborted) return\n this._aborted = true\n if (this._xhr) {\n return this._xhr.cancel()\n }\n }\n\n static isSupported () {\n return typeof XMLHttpRequest !== 'undefined'\n }\n\n _getHeaders (xhr) {\n const headerLines = xhr.getAllResponseHeaders().trim().split('\\r\\n')\n const headers = {}\n for (const header of headerLines) {\n const parts = header.split(': ')\n headers[parts[0].toLowerCase()] = parts.slice(1).join(': ')\n }\n return headers\n }\n}\n","import { FetchLoader } from './fetch'\nimport { XhrLoader } from './xhr'\nimport { LoaderType } from './types'\nimport { createPublicPromise } from '../utils'\n\nexport class Task {\n constructor (type, config) {\n this.promise = createPublicPromise()\n this.alive = !!config.onProgress\n this._loaderType = type\n this._loader = type === LoaderType.FETCH ? new FetchLoader() : new XhrLoader()\n this._config = config\n this._retryCount = 0\n this._retryTimer = null\n this._canceled = false\n }\n\n exec () {\n const {\n retry,\n retryDelay,\n onRetryError,\n transformError,\n ...rest\n } = this._config\n\n const request = async () => {\n try {\n const response = await this._loader.load(rest)\n this.promise.resolve(response)\n } catch (e) {\n if (this._canceled) return\n\n e.loaderType = this._loaderType\n e.retryCount = this._retryCount\n\n let error = e\n if (transformError) {\n error = transformError(error) || error\n }\n\n if (onRetryError && this._retryCount > 0) onRetryError(error, this._retryCount, retry)\n\n this._retryCount++\n\n if (this._retryCount <= retry) {\n clearTimeout(this._retryTimer)\n this._retryTimer = setTimeout(request, retryDelay)\n return\n }\n\n this.promise.reject(error)\n }\n }\n\n request()\n\n return this.promise\n }\n\n async cancel () {\n clearTimeout(this._retryTimer)\n this._canceled = true\n return this._loader.cancel()\n }\n}\n","export function createPublicPromise () {\n let res, rej\n const promise = new Promise((resolve, reject) => {\n res = resolve\n rej = reject\n })\n promise.used = false\n promise.resolve = (...args) => {\n promise.used = true\n return res(...args)\n }\n promise.reject = (...args) => {\n promise.used = true\n return rej(...args)\n }\n return promise\n}\n","import { FetchLoader } from './fetch'\nimport { LoaderType, ResponseType } from './types'\nimport { getConfig } from './config'\nimport { Task } from './task'\nimport { isPlainObject } from '../is'\n\nexport {\n LoaderType,\n ResponseType\n}\n\nexport class NetLoader {\n type = LoaderType.FETCH\n\n _queue = []\n\n _alive = []\n\n _currentTask = null\n\n constructor (cfg) {\n this._config = getConfig(cfg)\n if (\n this._config.loaderType === LoaderType.XHR ||\n !FetchLoader.isSupported()\n ) {\n this.type = LoaderType.XHR\n }\n }\n\n isFetch () {\n return this.type === LoaderType.FETCH\n }\n\n static isFetchSupport () {\n return FetchLoader.isSupported()\n }\n\n load (url, config = {}) {\n if (typeof url === 'string' || !url) {\n config.url = url || config.url || this._config.url\n } else {\n config = url\n }\n\n config = Object.assign({}, this._config, config)\n if (config.params) config.params = Object.assign({}, config.params)\n if (config.headers && isPlainObject(config.headers)) config.headers = Object.assign({}, config.headers)\n if (config.body && isPlainObject(config.body)) config.body = Object.assign({}, config.body)\n\n if (config.transformRequest) {\n config = config.transformRequest(config) || config\n }\n\n const task = new Task(this.type, config)\n\n this._queue.push(task)\n\n if (this._queue.length === 1) {\n this._processTask()\n }\n\n return task.promise\n }\n\n cancel () {\n const cancels = this._queue.map(t => t.cancel()).concat(this._alive.map(t => t.cancel()))\n if (this._currentTask) {\n cancels.push(this._currentTask.cancel())\n }\n this._queue = []\n this._alive = []\n return Promise.all(cancels)\n }\n\n _processTask () {\n this._currentTask = this._queue.shift()\n if (!this._currentTask) return\n\n if (this._currentTask.alive) {\n this._alive.push(this._currentTask)\n }\n\n this._currentTask.exec().finally(() => {\n this._processTask()\n })\n }\n}\n","export function isMediaPlaying (media) {\n return media && !media.paused && !media.ended && media.playbackRate !== 0 && media.readyState !== 0\n}\n\nexport function getVideoPlaybackQuality (video) {\n if (!video) return {}\n if (typeof video.getVideoPlaybackQuality === 'function') {\n const info = video.getVideoPlaybackQuality()\n return {\n droppedVideoFrames: info.droppedVideoFrames || info.corruptedVideoFrames,\n totalVideoFrames: info.totalVideoFrames,\n creationTime: info.creationTime\n }\n }\n\n return {\n droppedVideoFrames: video.webkitDroppedFrameCount,\n totalVideoFrames: video.webkitDecodedFrameCount,\n creationTime: performance.now()\n }\n}\n\nexport function concatUint8Array (...arr) {\n arr = arr.filter(Boolean)\n const data = new Uint8Array(arr.reduce((p, c) => p + c.byteLength, 0))\n let prevLen = 0\n arr.forEach((d) => {\n data.set(d, prevLen)\n prevLen += d.byteLength\n })\n return data\n}\n\nexport function softDecodeProbe () {\n let webAudioEnable = false\n let webglEnable = false\n\n try {\n const AudioContext = window.AudioContext || window.webkitAudioContext\n let ctx = new AudioContext()\n ctx.close()\n ctx = null\n webAudioEnable = true\n } catch (e) {}\n\n try {\n let cvs = document.createElement('canvas')\n var validContextNames = ['webgl', 'experimental-webgl', 'moz-webgl', 'webkit-3d']\n for (let i = 0; i < validContextNames.length; i++) {\n let glCtx = cvs.getContext(validContextNames[i])\n if (glCtx) {\n glCtx = null\n cvs = null\n webglEnable = true\n break\n }\n }\n } catch (e) {}\n\n const WebComponentSupported = 'customElements' in window && window.customElements.define\n let isComponentSupport\n if (WebComponentSupported) {\n let Video = window.customElements.get('live-video')\n isComponentSupport = Video && Video.isSupported()\n }\n\n return webAudioEnable && webglEnable && isComponentSupport\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~toString(requireObjectCoercible(this))\n .indexOf(toString(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","/** @enum {string} */\nexport const TrackType = {\n VIDEO: 'video',\n AUDIO: 'audio',\n METADATA: 'metadata'\n}\n\n/** @enum {string} */\nexport const VideoCodecType = {\n AVC: 'avc',\n HEVC: 'hevc'\n}\n\n/** @enum {string} */\nexport const AudioCodecType = {\n AAC: 'aac',\n G711PCMA: 'g7110a',\n G711PCMU: 'g7110m'\n}\n\n/** @enum {string} */\nexport const WarningType = {\n LARGE_AV_SHIFT: 'LARGE_AV_SHIFT',\n LARGE_VIDEO_GAP: 'LARGE_VIDEO_GAP',\n LARGE_VIDEO_GAP_BETWEEN_CHUNK: 'LARGE_VIDEO_GAP_BETWEEN_CHUNK',\n LARGE_AUDIO_GAP: 'LARGE_AUDIO_GAP',\n AUDIO_FILLED: 'AUDIO_FILLED',\n AUDIO_DROPPED: 'AUDIO_DROPPED'\n}\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = $toString(R.source);\n var rf = R.flags;\n var f = $toString(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","export const isBrowser = typeof window !== 'undefined'\n\nconst ua = isBrowser && navigator.userAgent.toLocaleLowerCase()\n\nexport const isSafari = isBrowser && /^((?!chrome|android).)*safari/.test(ua)\nexport const isFirefox = isBrowser && ua.includes('firefox')\nexport const isAndroid = isBrowser && ua.includes('android')\n","/* c8 ignore next 4 */\nexport { ExpGolomb } from './exp-golomb'\nexport { Logger } from './logger'\nexport { UTF8 } from './utf8'\nexport * from './env'\n\nexport function concatUint8Array (...arr) {\n arr = arr.filter(Boolean)\n const data = new Uint8Array(arr.reduce((p, c) => p + c.byteLength, 0))\n let prevLen = 0\n arr.forEach((d) => {\n data.set(d, prevLen)\n prevLen += d.byteLength\n })\n return data\n}\n\nexport const MAX_SIZE = Math.pow(2, 32)\n\nexport function readBig16 (data, i = 0) {\n return (data[i] << 8) + (data[i + 1] || 0)\n}\n\nexport function readBig24 (data, i = 0) {\n return (data[i] << 16) + (data[i + 1] << 8) + (data[i + 2] || 0)\n}\n\nexport function readBig32 (data, i = 0) {\n return (data[i] << 24 >>> 0) + (data[i + 1] << 16) + (data[i + 2] << 8) + (data[i + 3] || 0)\n}\n\nexport function readBig64 (data, i = 0) {\n return readBig32(data, i) * MAX_SIZE + readBig32(data, i + 4)\n}\n\nexport function getAvcCodec (codecs) {\n let codec = 'avc1.'\n let h\n for (let i = 0; i < 3; i++) {\n h = codecs[i].toString(16)\n if (h.length < 2) h = `0${h}`\n codec += h\n }\n return codec\n}\n","import { isFirefox, isAndroid } from '../utils'\n\nexport class AAC {\n static FREQ = [\n 96000,\n 88200,\n 64000,\n 48000,\n 44100,\n 32000,\n 24000,\n 22050,\n 16000,\n 12000,\n 11025,\n 8000,\n 7350\n ];\n\n static getRateIndexByRate (rate) {\n return AAC.FREQ.indexOf(rate)\n }\n\n static parseADTS (data, pts) {\n const len = data.length\n let i = 0\n\n while ((i + 2) < len) {\n if (data[i] === 0xff && (data[i + 1] & 0xf6) === 0xf0) {\n break\n }\n i++\n }\n\n if (i >= len) return\n\n const skip = i\n const frames = []\n const samplingFrequencyIndex = (data[i + 2] & 0x3c) >>> 2\n const sampleRate = AAC.FREQ[samplingFrequencyIndex]\n if (!sampleRate) throw new Error(`Invalid sampling index: ${samplingFrequencyIndex}`)\n const objectType = ((data[i + 2] & 0xc0) >>> 6) + 1\n const channelCount = ((data[i + 2] & 1) << 2) | ((data[i + 3] & 0xc0) >>> 6)\n const { config, codec } = AAC._getConfig(samplingFrequencyIndex, channelCount, objectType)\n\n let protectionSkipBytes\n let frameLength\n let frameIndex = 0\n const duration = AAC.getFrameDuration(sampleRate)\n\n while ((i + 7) < len) {\n if ((data[i] !== 0xff) || (data[i + 1] & 0xF6) !== 0xf0) {\n i++\n continue\n }\n\n frameLength = ((data[i + 3] & 0x03) << 11) | (data[i + 4] << 3) | ((data[i + 5] & 0xe0) >> 5)\n if ((len - i) < frameLength) break\n\n protectionSkipBytes = (~data[i + 1] & 0x01) * 2\n frames.push({\n pts: pts + frameIndex * duration,\n data: data.subarray(i + 7 + protectionSkipBytes, i + frameLength)\n })\n\n frameIndex++\n i += frameLength\n }\n\n return {\n skip,\n remaining: i >= len ? undefined : data.subarray(i),\n frames,\n samplingFrequencyIndex,\n sampleRate,\n objectType,\n channelCount,\n codec,\n config,\n originCodec: `mp4a.40.${objectType}`\n }\n }\n\n static parseAudioSpecificConfig (data) {\n if (!data.length) return\n const objectType = data[0] >>> 3\n const samplingFrequencyIndex = ((data[0] & 0x07) << 1) | (data[1] >>> 7)\n const channelCount = (data[1] & 0x78) >>> 3\n const sampleRate = AAC.FREQ[samplingFrequencyIndex]\n if (!sampleRate) throw new Error(`Invalid sampling index: ${samplingFrequencyIndex}`)\n const { config, codec } = AAC._getConfig(samplingFrequencyIndex, channelCount, objectType)\n\n return {\n samplingFrequencyIndex,\n sampleRate,\n objectType,\n channelCount,\n config,\n codec,\n originCodec: `mp4a.40.${objectType}`\n }\n }\n\n static getFrameDuration (rate, timescale = 90000) {\n return 1024 * timescale / rate\n }\n\n static _getConfig (samplingIndex, channelCount, originObjectType) {\n const config = []\n let objectType\n let extensionSamplingIndex\n if (isFirefox) {\n if (samplingIndex >= 6) { // use SBR (HE-AAC)\n objectType = 5\n extensionSamplingIndex = samplingIndex - 3\n } else { // use LC-AAC\n objectType = 2\n extensionSamplingIndex = samplingIndex\n }\n } else if (isAndroid) { // use LC-AAC\n objectType = 2\n extensionSamplingIndex = samplingIndex\n } else { // use HE-AAC\n objectType = originObjectType\n extensionSamplingIndex = samplingIndex\n\n if (samplingIndex >= 6) {\n extensionSamplingIndex = samplingIndex - 3\n } else if (channelCount === 1) { // Mono channel, use LC-AAC\n objectType = 2\n extensionSamplingIndex = samplingIndex\n }\n }\n\n config[0] = objectType << 3\n config[0] |= (samplingIndex & 0x0e) >> 1\n config[1] = (samplingIndex & 0x01) << 7\n config[1] |= channelCount << 3\n if (objectType === 5) {\n config[1] |= ((extensionSamplingIndex & 0x0e) >> 1)\n config[2] = (extensionSamplingIndex & 0x01) << 7\n config[2] |= (2 << 2)\n config[3] = 0\n }\n\n return {\n config,\n codec: `mp4a.40.${objectType}`\n }\n }\n\n /* c8 ignore next 65 */\n static getSilentFrame (codec, channelCount) {\n switch (codec) {\n case 'mp4a.40.2':\n if (channelCount === 1) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80])\n } if (channelCount === 2) {\n return new Uint8Array([\n 0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80\n ])\n } if (channelCount === 3) {\n return new Uint8Array([\n 0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64,\n 0x00, 0x8e\n ])\n } if (channelCount === 4) {\n return new Uint8Array([\n 0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64,\n 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38\n ])\n } if (channelCount === 5) {\n return new Uint8Array([\n 0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64,\n 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38\n ])\n } if (channelCount === 6) {\n return new Uint8Array([\n 0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64,\n 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2,\n 0x00, 0x20, 0x08, 0xe0\n ])\n }\n break\n default:\n if (channelCount === 1) {\n return new Uint8Array([\n 0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0,\n 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5e\n ])\n } if (channelCount === 2) {\n return new Uint8Array([\n 0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0,\n 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5e\n ])\n } if (channelCount === 3) {\n return new Uint8Array([\n 0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0,\n 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5e\n ])\n }\n break\n }\n }\n}\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = toString(requireObjectCoercible($this));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : toString(fillString);\n var intMaxLength = toLength(maxLength);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.es/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.es/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line unicorn/no-unsafe-regex -- safe\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModule = require('../internals/object-define-property');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\nvar FORCED = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) objectDefinePropertyModule.f(RegExp.prototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","import { VideoCodecType } from '../model'\nimport { getAvcCodec, readBig16, readBig24, readBig32, readBig64 } from '../utils'\nimport { AAC } from '../codec'\n\nexport class MP4Parser {\n static findBox (data, names, start = 0) {\n const ret = []\n if (!data) return ret\n\n let size = 0\n let type = ''\n let headerSize = 0\n while (data.length > 7) {\n size = readBig32(data)\n type = String.fromCharCode.apply(null, data.subarray(4, 8))\n headerSize = 8\n if (size === 1) {\n size = readBig64(data, 8)\n headerSize += 8\n } else if (!size) {\n size = data.length\n }\n if (!names[0] || type === names[0]) {\n const subData = data.subarray(0, size)\n if (names.length < 2) {\n ret.push({\n start,\n size,\n headerSize,\n type,\n data: subData\n })\n } else {\n return MP4Parser.findBox(subData.subarray(headerSize), names.slice(1), start + headerSize)\n }\n }\n\n start += size\n data = data.subarray(size)\n }\n\n return ret\n }\n\n static moov (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.mvhd = MP4Parser.mvhd(MP4Parser.findBox(data, ['mvhd'], start)[0])\n ret.trak = MP4Parser.findBox(data, ['trak'], start).map(trak => MP4Parser.trak(trak))\n })\n }\n\n static mvhd (box) {\n return parseBox(box, true, (ret, data) => {\n let start = 0\n if (ret.version === 1) {\n ret.timescale = readBig32(data, 16)\n ret.duration = readBig64(data, 20)\n start += 28\n } else {\n ret.timescale = readBig32(data, 8)\n ret.duration = readBig32(data, 12)\n start += 16\n }\n ret.nextTrackId = readBig32(data, start + 76)\n })\n }\n\n static trak (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.tkhd = MP4Parser.tkhd(MP4Parser.findBox(data, ['tkhd'], start)[0])\n ret.mdia = MP4Parser.mdia(MP4Parser.findBox(data, ['mdia'], start)[0])\n })\n }\n\n static tkhd (box) {\n return parseBox(box, true, (ret, data) => {\n let start = 0\n if (ret.version === 1) {\n ret.trackId = readBig32(data, 16)\n ret.duration = readBig64(data, 24)\n start += 32\n } else {\n ret.trackId = readBig32(data, 8)\n ret.duration = readBig32(data, 16)\n start += 20\n }\n ret.width = readBig32(data, start + 52)\n ret.height = readBig32(data, start + 56)\n })\n }\n\n static mdia (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.mdhd = MP4Parser.mdhd(MP4Parser.findBox(data, ['mdhd'], start)[0])\n ret.hdlr = MP4Parser.hdlr(MP4Parser.findBox(data, ['hdlr'], start)[0])\n ret.minf = MP4Parser.minf(MP4Parser.findBox(data, ['minf'], start)[0])\n })\n }\n\n static mdhd (box) {\n return parseBox(box, true, (ret, data) => {\n let start = 0\n if (ret.version === 1) {\n ret.timescale = readBig32(data, 16)\n ret.duration = readBig64(data, 20)\n start += 28\n } else {\n ret.timescale = readBig32(data, 8)\n ret.duration = readBig32(data, 12)\n start += 16\n }\n const lang = readBig16(data, start)\n ret.language = String.fromCharCode(((lang >> 10) & 0x1F) + 0x60, ((lang >> 5) & 0x1F) + 0x60, (lang & 0x1F) + 0x60)\n })\n }\n\n static hdlr (box) {\n return parseBox(box, true, (ret, data) => {\n if (ret.version === 0) {\n ret.handlerType = String.fromCharCode.apply(null, data.subarray(4, 8))\n }\n })\n }\n\n static minf (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.vmhd = MP4Parser.vmhd(MP4Parser.findBox(data, ['vmhd'], start)[0])\n ret.smhd = MP4Parser.smhd(MP4Parser.findBox(data, ['smhd'], start)[0])\n ret.stbl = MP4Parser.stbl(MP4Parser.findBox(data, ['stbl'], start)[0])\n })\n }\n\n static vmhd (box) {\n return parseBox(box, true, (ret, data) => {\n ret.graphicsmode = readBig16(data)\n ret.opcolor = [readBig16(data, 2), readBig16(data, 4), readBig16(data, 6)]\n })\n }\n\n static smhd (box) {\n return parseBox(box, true, (ret, data) => {\n ret.balance = readBig16(data)\n })\n }\n\n static stbl (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.stsd = MP4Parser.stsd(MP4Parser.findBox(data, ['stsd'], start)[0])\n ret.stts = MP4Parser.stts(MP4Parser.findBox(data, ['stts'], start)[0])\n ret.ctts = MP4Parser.ctts(MP4Parser.findBox(data, ['ctts'], start)[0])\n ret.stsc = MP4Parser.stsc(MP4Parser.findBox(data, ['stsc'], start)[0])\n ret.stsz = MP4Parser.stsz(MP4Parser.findBox(data, ['stsz'], start)[0])\n ret.stco = MP4Parser.stco(MP4Parser.findBox(data, ['stco'], start)[0])\n ret.stss = MP4Parser.stss(MP4Parser.findBox(data, ['stss'], start)[0])\n })\n }\n\n static stsd (box) {\n return parseBox(box, true, (ret, data, start) => {\n ret.entryCount = readBig32(data)\n ret.entries = MP4Parser.findBox(data.subarray(4), [], start + 4).map(b => {\n switch (b.type) {\n case 'avc1':\n case 'avc2':\n case 'avc3':\n case 'avc4':\n return MP4Parser.avc1(b)\n case 'hvc1':\n case 'hev1':\n return MP4Parser.hvc1(b)\n case 'mp4a':\n return MP4Parser.mp4a(b)\n }\n }).filter(Boolean)\n })\n }\n\n static avc1 (box) {\n return parseBox(box, false, (ret, data, start) => {\n const bodyStart = parseVisualSampleEntry(ret, data)\n const bodyData = data.subarray(bodyStart)\n start += bodyStart\n ret.avcC = MP4Parser.avcC(MP4Parser.findBox(bodyData, ['avcC'], start)[0])\n ret.pasp = MP4Parser.pasp(MP4Parser.findBox(bodyData, ['pasp'], start)[0])\n })\n }\n\n static avcC (box) {\n return parseBox(box, false, (ret, data) => {\n ret.configurationVersion = data[0]\n ret.AVCProfileIndication = data[1]\n ret.profileCompatibility = data[2]\n ret.AVCLevelIndication = data[3]\n ret.codec = getAvcCodec([data[1], data[2], data[3]])\n ret.lengthSizeMinusOne = data[4] & 0x3\n ret.spsLength = data[5] & 0x1F\n ret.sps = []\n let start = 6\n for (let i = 0; i < ret.spsLength; i++) {\n const size = readBig16(data, start)\n start += 2\n ret.sps.push(data.subarray(start, start + size))\n start += size\n }\n ret.ppsLength = data[start]\n start += 1\n ret.pps = []\n for (let i = 0; i < ret.ppsLength; i++) {\n const size = readBig16(data, start)\n start += 2\n ret.pps.push(data.subarray(start, start += size))\n start += size\n }\n })\n }\n\n static hvc1 (box) {\n return parseBox(box, false, (ret, data, start) => {\n const bodyStart = parseVisualSampleEntry(ret, data)\n const bodyData = data.subarray(bodyStart)\n start += bodyStart\n ret.hvcC = MP4Parser.hvcC(MP4Parser.findBox(bodyData, ['hvcC'], start)[0])\n ret.pasp = MP4Parser.pasp(MP4Parser.findBox(bodyData, ['pasp'], start)[0])\n })\n }\n\n static hvcC (box) {\n return parseBox(box, false, (ret, data) => {\n ret.data = box.data\n ret.codec = 'hev1.1.6.L93.B0'\n ret.configurationVersion = data[0]\n let tmp = data[1]\n ret.generalProfileSpace = tmp >> 6\n ret.generalTierFlag = (tmp & 0x20) >> 5\n ret.generalProfileIdc = tmp & 0x1F\n ret.generalProfileCompatibility = readBig32(data, 2)\n ret.generalConstraintIndicatorFlags = data.subarray(6, 12)\n ret.generalLevelIdc = data[12]\n ret.avgFrameRate = readBig16(data, 19)\n ret.numOfArrays = data[22]\n ret.vps = []\n ret.sps = []\n ret.pps = []\n let start = 23\n let type = 0\n let numNalus = 0\n let size = 0\n for (let i = 0; i < ret.numOfArrays; i++) {\n type = data[start] & 0x3F\n numNalus = readBig16(data, start + 1)\n start += 3\n const nalus = []\n for (let j = 0; j < numNalus; j++) {\n size = readBig16(data, start)\n start += 2\n nalus.push(data.subarray(start, start + size))\n start += size\n }\n\n if (type === 32) {\n ret.vps.push(...nalus)\n } else if (type === 33) {\n ret.sps.push(...nalus)\n } else if (type === 34) {\n ret.pps.push(...nalus)\n }\n }\n })\n }\n\n static pasp (box) {\n return parseBox(box, false, (ret, data) => {\n ret.hSpacing = readBig32(data)\n ret.vSpacing = readBig32(data, 4)\n })\n }\n\n static mp4a (box) {\n return parseBox(box, false, (ret, data, start) => {\n const bodyStart = parseAudioSampleEntry(ret, data)\n ret.esds = MP4Parser.esds(MP4Parser.findBox(data.subarray(bodyStart), ['esds'], start + bodyStart)[0])\n })\n }\n\n static esds (box) {\n return parseBox(box, true, (ret, data) => {\n ret.codec = 'mp4a.'\n let start = 0\n let byteRead = 0\n let size = 0\n let tag = 0\n while (data.length) {\n start = 0\n tag = data[start]\n byteRead = data[start + 1]\n start += 2\n while (byteRead & 0x80) {\n size = (byteRead & 0x7F) << 7\n byteRead = data[start]\n start += 1\n }\n size += byteRead & 0x7F\n if (tag === 3) {\n data = data.subarray(start + 3)\n } else if (tag === 4) {\n ret.codec += (data[start].toString(16) + '.').padStart(3, '0')\n data = data.subarray(start + 13)\n } else if (tag === 5) {\n const config = ret.config = data.subarray(start, start + size)\n let objectType = (config[0] & 0xF8) >> 3\n if (objectType === 31 && config.length >= 2) {\n objectType = 32 + ((config[0] & 0x7) << 3) + ((config[1] & 0xE0) >> 5)\n }\n ret.objectType = objectType\n ret.codec += objectType.toString(16)\n return\n } else {\n return\n }\n }\n })\n }\n\n static stts (box) {\n return parseBox(box, true, (ret, data) => {\n const entryCount = readBig32(data)\n const entries = []\n let start = 4\n for (let i = 0; i < entryCount; i++) {\n entries.push({\n count: readBig32(data, start),\n delta: readBig32(data, start + 4)\n })\n start += 8\n }\n ret.entryCount = entryCount\n ret.entries = entries\n })\n }\n\n static ctts (box) {\n return parseBox(box, true, (ret, data) => {\n const entryCount = readBig32(data)\n const entries = []\n let start = 4\n if (ret.version === 1) {\n for (let i = 0; i < entryCount; i++) {\n entries.push({\n count: readBig32(data, start),\n offset: readBig32(data, start + 4)\n })\n start += 8\n }\n } else {\n for (let i = 0; i < entryCount; i++) {\n entries.push({\n count: readBig32(data, start),\n offset: -(~readBig32(data, start + 4) + 1)\n })\n start += 8\n }\n }\n ret.entryCount = entryCount\n ret.entries = entries\n })\n }\n\n static stsc (box) {\n return parseBox(box, true, (ret, data) => {\n const entryCount = readBig32(data)\n const entries = []\n let start = 4\n for (let i = 0; i < entryCount; i++) {\n entries.push({\n firstChunk: readBig32(data, start),\n samplesPerChunk: readBig32(data, start + 4),\n sampleDescriptionIndex: readBig32(data, start + 8)\n })\n start += 12\n }\n ret.entryCount = entryCount\n ret.entries = entries\n })\n }\n\n static stsz (box) {\n return parseBox(box, true, (ret, data) => {\n const sampleSize = readBig32(data)\n const sampleCount = readBig32(data, 4)\n const entrySizes = []\n if (!sampleSize) {\n let start = 8\n for (let i = 0; i < sampleCount; i++) {\n entrySizes.push(readBig32(data, start))\n start += 4\n }\n }\n ret.sampleSize = sampleSize\n ret.sampleCount = sampleCount\n ret.entrySizes = entrySizes\n })\n }\n\n static stco (box) {\n return parseBox(box, true, (ret, data) => {\n const entryCount = readBig32(data)\n const entries = []\n let start = 4\n for (let i = 0; i < entryCount; i++) {\n entries.push(readBig32(data, start))\n start += 4\n }\n ret.entryCount = entryCount\n ret.entries = entries\n })\n }\n\n static stss (box) {\n return parseBox(box, true, (ret, data) => {\n const entryCount = readBig32(data)\n const entries = []\n let start = 4\n for (let i = 0; i < entryCount; i++) {\n entries.push(readBig32(data, start))\n start += 4\n }\n ret.entryCount = entryCount\n ret.entries = entries\n })\n }\n\n static moovToTrack (moov, videoTrack, audioTrack) {\n const tracks = moov.trak\n if (!tracks || !tracks.length) return\n const vTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'vide')\n const aTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'soun')\n\n if (vTrack && videoTrack) {\n const v = videoTrack\n v.timescale = v.formatTimescale = vTrack.mdia.mdhd.timescale\n v.duration = vTrack.mdia.mdhd.duration\n const e1 = vTrack.mdia.minf.stbl.stsd.entries[0]\n v.width = e1.width\n v.height = e1.height\n if (e1.pasp) {\n v.sarRatio = [e1.pasp.hSpacing, e1.pasp.vSpacing]\n }\n if (e1.hvcC) {\n v.codecType = VideoCodecType.HEVC\n v.codec = e1.hvcC.codec\n v.vps = e1.hvcC.vps\n v.sps = e1.hvcC.sps\n v.pps = e1.hvcC.pps\n v.hvcC = e1.hvcC.data\n } else if (e1.avcC) {\n v.codec = e1.avcC.codec\n v.sps = e1.avcC.sps\n v.pps = e1.avcC.pps\n } else {\n throw new Error('unknown video stsd entry')\n }\n\n v.present = true\n }\n\n if (aTrack && audioTrack) {\n const a = audioTrack\n a.timescale = a.formatTimescale = aTrack.mdia.mdhd.timescale\n a.duration = aTrack.mdia.mdhd.duration\n const e1 = aTrack.mdia.minf.stbl.stsd.entries[0]\n a.sampleSize = e1.sampleSize\n a.sampleRate = e1.sampleRate\n a.channelCount = e1.channelCount\n a.sampleDuration = AAC.getFrameDuration(a.sampleRate, a.timescale)\n a.objectType = e1.esds?.objectType || 2\n if (e1.esds) a.config = Array.from(e1.esds.config)\n a.codec = e1.esds?.codec || 'mp4a.40.2'\n a.sampleRateIndex = AAC.getRateIndexByRate(a.sampleRate)\n a.present = true\n }\n\n return {\n videoTrack,\n audioTrack\n }\n }\n\n static moovToSamples (moov) {\n const tracks = moov.trak\n if (!tracks || !tracks.length) return\n const vTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'vide')\n const aTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'soun')\n if (!vTrack && !aTrack) return\n let videoSamples\n let audioSamples\n if (vTrack) {\n const videoStbl = vTrack.mdia?.minf?.stbl\n if (!videoStbl) return\n const { stts, stsc, stsz, stco, stss, ctts } = videoStbl\n if (!stts || !stsc || !stsz || !stco || !stss) return\n videoSamples = getSamples(stts, stsc, stsz, stco, ctts, stss)\n }\n if (aTrack) {\n const audioStbl = aTrack.mdia?.minf?.stbl\n if (!audioStbl) return\n const timescale = aTrack.mdia.mdhd?.timescale\n const { stts, stsc, stsz, stco } = audioStbl\n if (!timescale || !stts || !stsc || !stsz || !stco) return\n audioSamples = getSamples(stts, stsc, stsz, stco)\n }\n\n return {\n videoSamples,\n audioSamples\n }\n }\n}\n\nfunction getSamples (stts, stsc, stsz, stco, ctts, stss) {\n const samples = []\n const cttsEntries = ctts?.entries\n const stscEntries = stsc.entries\n const stcoEntries = stco.entries\n const stszEntrySizes = stsz.entrySizes\n const stssEntries = stss?.entries\n let keyframeMap\n if (stssEntries) {\n keyframeMap = {}\n stssEntries.forEach(x => { keyframeMap[x - 1] = true })\n }\n let cttsArr\n if (cttsEntries) {\n cttsArr = []\n cttsEntries.forEach(({ count, offset }) => {\n for (let i = 0; i < count; i++) {\n cttsArr.push(offset)\n }\n })\n }\n\n let sample\n let gopId = -1\n let dts = 0\n let pos = 0\n let chunkIndex = 0\n let chunkRunIndex = 0\n let offsetInChunk = 0\n let lastSampleInChunk = stscEntries[0].samplesPerChunk\n let lastChunkInRun = stscEntries[1] ? stscEntries[1].firstChunk - 1 : Infinity\n stts.entries.forEach(({ count, delta }) => {\n for (let i = 0; i < count; i++) {\n sample = {\n dts,\n duration: delta,\n size: stszEntrySizes[pos] || stsz.sampleSize,\n offset: stcoEntries[chunkIndex] + offsetInChunk,\n index: pos\n }\n if (stssEntries) {\n sample.keyframe = keyframeMap[pos]\n if (sample.keyframe) {\n gopId++\n }\n sample.gopId = gopId\n }\n if (cttsArr && cttsArr[pos]) {\n sample.pts = sample.dts + cttsArr[pos]\n }\n samples.push(sample)\n dts += delta\n pos++\n\n if (pos < lastSampleInChunk) {\n offsetInChunk += sample.size\n } else {\n chunkIndex++\n offsetInChunk = 0\n if (chunkIndex >= lastChunkInRun) {\n chunkRunIndex++\n lastChunkInRun = stscEntries[chunkRunIndex + 1] ? stscEntries[chunkRunIndex + 1].firstChunk - 1 : Infinity\n }\n lastSampleInChunk += stscEntries[chunkRunIndex].samplesPerChunk\n }\n }\n })\n\n return samples\n}\n\nfunction parseVisualSampleEntry (ret, data) {\n ret.dataReferenceIndex = readBig16(data, 6)\n ret.width = readBig16(data, 24)\n ret.height = readBig16(data, 26)\n ret.horizresolution = readBig32(data, 28)\n ret.vertresolution = readBig32(data, 32)\n ret.frameCount = readBig16(data, 40)\n ret.depth = readBig16(data, 74)\n return 78\n}\n\nfunction parseAudioSampleEntry (ret, data) {\n ret.dataReferenceIndex = readBig16(data, 6)\n ret.channelCount = readBig16(data, 16)\n ret.sampleSize = readBig16(data, 18)\n ret.sampleRate = readBig32(data, 24) / (1 << 16)\n return 28\n}\n\nfunction parseBox (box, isFullBox, parse) {\n if (!box) return\n if (box.size !== box.data.length) throw new Error(`box ${box.type} size !== data.length`)\n const ret = {\n start: box.start,\n size: box.size,\n headerSize: box.headerSize,\n type: box.type\n }\n if (isFullBox) {\n ret.version = box.data[box.headerSize]\n ret.flags = readBig24(box.data, box.headerSize + 1)\n ret.headerSize += 4\n }\n parse(ret, box.data.subarray(ret.headerSize), ret.start + ret.headerSize)\n return ret\n}\n","export class MediaError {\n constructor (msg, data) {\n this.type = 'file'\n this.message = msg\n this.data = data\n }\n}\n","export class Cache {\n _data = Object.create(null)\n\n set (id, data) {\n this._data[id] = data\n }\n\n get (id) {\n return this._data[id]\n }\n\n clear () {\n this._data = Object.create(null)\n }\n}\n","export function moovToSegments (moov, duration) {\n const tracks = moov.trak\n if (!tracks || !tracks.length) return\n const videoTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'vide')\n const audioTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'soun')\n if (!videoTrack && !audioTrack) return\n\n let videoSegments = []\n let audioSegments = []\n\n let segmentDurations\n if (videoTrack) {\n const videoStbl = videoTrack.mdia?.minf?.stbl\n if (!videoStbl) return\n const timescale = videoTrack.mdia.mdhd?.timescale\n const { stts, stsc, stsz, stco, stss } = videoStbl\n if (!timescale || !stts || !stsc || !stsz || !stco || !stss) return\n videoSegments = getSegments(duration, timescale, stts, stsc, stsz, stco, stss)\n segmentDurations = videoSegments.map(x => x.endTime - x.startTime)\n }\n if (audioTrack) {\n const audioStbl = audioTrack.mdia?.minf?.stbl\n if (!audioStbl) return\n const timescale = audioTrack.mdia.mdhd?.timescale\n const { stts, stsc, stsz, stco } = audioStbl\n if (!timescale || !stts || !stsc || !stsz || !stco) return\n audioSegments = getSegments(duration, timescale, stts, stsc, stsz, stco, null, segmentDurations)\n }\n\n return {\n videoSegments,\n audioSegments\n }\n}\n\nfunction getSegments (segDuration, timescale, stts, stsc, stsz, stco, stss, segmentDurations) {\n const frames = []\n const gop = []\n const gopDuration = []\n const stscEntries = stsc.entries\n const stcoEntries = stco.entries\n const stszEntrySizes = stsz.entrySizes\n const stssEntries = stss?.entries\n let keyframeMap\n if (stssEntries) {\n keyframeMap = {}\n stssEntries.forEach(x => { keyframeMap[x - 1] = true })\n }\n\n let frame\n let duration\n let startTime = 0\n let pos = 0\n let chunkIndex = 0\n let chunkRunIndex = 0\n let offsetInChunk = 0\n let lastSampleInChunk = stscEntries[0].samplesPerChunk\n let lastChunkInRun = stscEntries[1] ? stscEntries[1].firstChunk - 1 : Infinity\n stts.entries.forEach(({ count, delta }) => {\n duration = delta / timescale\n for (let i = 0; i < count; i++) {\n frame = {\n startTime,\n duration,\n size: stszEntrySizes[pos] || stsz.sampleSize,\n offset: stcoEntries[chunkIndex] + offsetInChunk,\n index: pos\n }\n if (stssEntries) {\n frame.keyframe = keyframeMap[pos]\n if (frame.keyframe) {\n gop.push([frame])\n gopDuration.push(frame.duration)\n } else {\n gop[gop.length - 1].push(frame)\n gopDuration[gop.length - 1] += frame.duration\n }\n }\n frames.push(frame)\n startTime += duration\n pos++\n\n if (pos < lastSampleInChunk) {\n offsetInChunk += frame.size\n } else {\n chunkIndex++\n offsetInChunk = 0\n if (chunkIndex >= lastChunkInRun) {\n chunkRunIndex++\n lastChunkInRun = stscEntries[chunkRunIndex + 1] ? stscEntries[chunkRunIndex + 1].firstChunk - 1 : Infinity\n }\n lastSampleInChunk += stscEntries[chunkRunIndex].samplesPerChunk\n }\n }\n })\n\n const l = frames.length\n if (!l || (stss && !frames[0].keyframe)) return\n\n const segments = []\n let segFrames = []\n let time = 0\n let lastFrame\n const pushSegment = () => {\n lastFrame = segFrames[segFrames.length - 1]\n segments.push({\n index: segments.length,\n startTime: segments[segments.length - 1]?.endTime || segFrames[0].startTime,\n endTime: lastFrame.startTime + lastFrame.duration,\n range: [segFrames[0].offset, lastFrame.offset + lastFrame.size],\n frames: segFrames\n })\n time = 0\n segFrames = []\n }\n\n if (stss) {\n let nextTime = 0\n for (let i = 0, l = gop.length; i < l; i++) {\n time += gopDuration[i]\n segFrames.push(...gop[i])\n if (i + 1 < l) {\n nextTime = time + gopDuration[i + 1]\n if (nextTime >= segDuration) {\n if (nextTime - segDuration < Math.abs(segDuration - time)) {\n segFrames.push(...gop[i + 1])\n pushSegment()\n i++\n } else {\n pushSegment()\n }\n }\n } else {\n pushSegment()\n }\n }\n } else {\n segmentDurations = segmentDurations || []\n let duration = segmentDurations[0] || segDuration\n for (let i = 0; i < l; i++) {\n segFrames.push(frames[i])\n time += frames[i].duration\n if (i + 1 >= l || time >= duration) {\n pushSegment()\n duration = segmentDurations[segments.length] || segDuration\n }\n }\n }\n\n return segments\n}\n\nexport function moovToMeta (moov) {\n let videoCodec = ''\n let audioCodec = ''\n let width = 0\n let height = 0\n let audioChannelCount = 0\n let audioSampleRate = 0\n let duration = 0\n if (moov.mvhd) {\n duration = moov.mvhd.duration / moov.mvhd.timescale\n }\n\n const tracks = moov.trak\n if (tracks) {\n const videoTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'vide')\n const audioTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'soun')\n let e1\n if (videoTrack) {\n e1 = videoTrack.mdia?.minf?.stbl?.stsd.entries[0]\n if (e1) {\n width = e1.width\n height = e1.height\n videoCodec = (e1.avcC || e1.hvcC)?.codec\n }\n }\n if (audioTrack) {\n e1 = audioTrack.mdia?.minf?.stbl?.stsd.entries[0]\n if (e1) {\n audioChannelCount = e1.channelCount\n audioSampleRate = e1.sampleRate\n audioCodec = e1.esds?.codec\n }\n }\n }\n\n return {\n videoCodec,\n audioCodec,\n width,\n height,\n audioChannelCount,\n audioSampleRate,\n duration,\n moov\n }\n}\n\nexport function isNumber (n) {\n return typeof n === 'number' && !isNaN(n)\n}\n","import { NetLoader, concatUint8Array } from 'xgplayer-streaming-shared'\nimport { MP4Parser } from 'xgplayer-transmuxer'\nimport { getConfig } from './config'\nimport { MediaError } from './error'\nimport { Cache } from './cache'\nimport { isNumber, moovToMeta, moovToSegments } from './utils'\n\nexport class MP4Loader {\n vid = ''\n url = ''\n meta = {}\n downloadInfo = []\n videoSegments = []\n audioSegments = []\n cache = null\n\n _currentSegmentIndex = -1\n _currentLoadingSegmentIndex = -1\n\n constructor (config) {\n this._config = getConfig(config)\n const {\n vid,\n moovEnd,\n segmentDuration,\n cache,\n maxDownloadInfoSize,\n ...rest\n } = this._config\n this.cache = cache || new Cache()\n this.vid = vid || rest.url\n this.url = rest.url\n rest.transformError = this._transformError\n\n this._loader = new NetLoader(rest)\n }\n\n get isMetaLoaded () {\n return this.videoSegments.length || this.audioSegments.length\n }\n\n setCurrentSegment (segIndex) {\n if (isNumber(segIndex)) {\n this._currentSegmentIndex = segIndex\n }\n }\n\n isLastSegment (segIndex) {\n if (isNumber(segIndex)) {\n const lastIndex = this.videoSegments[this.videoSegments.length - 1]?.index || this.audioSegments[this.audioSegments.length - 1]?.index || 0\n return segIndex === lastIndex\n }\n\n return false\n }\n\n isSegmentLoading (segIndex) {\n return segIndex === this._currentLoadingSegmentIndex\n }\n\n async changeUrl (url, vid = url, moovEnd) {\n await this.reset()\n if (url) this.url = url\n if (vid) this.vid = vid\n if (moovEnd) this._config.moovEnd = moovEnd\n }\n\n async getOrLoadMeta (cache) {\n if (!this.isMetaLoaded) await this.loadMeta(cache)\n return this.meta\n }\n\n async loadMeta (cache, moovEnd) {\n const responses = []\n let res = await this._loadData([0, moovEnd || this._config.moovEnd], cache)\n if (!res) return\n responses.push(res)\n let moov = MP4Parser.findBox(res.data, ['moov'])[0]\n if (!moov) {\n const mdat = MP4Parser.findBox(res.data, ['mdat'])[0]\n if (!mdat) {\n throw new MediaError('cannot find moov or mdat box', res.data)\n }\n const moovStart = mdat.start + mdat.size\n res = await this._loadData([moovStart], cache)\n if (!res) return\n responses.push(res)\n moov = MP4Parser.findBox(res.data, ['moov'], moovStart)[0]\n if (!moov) {\n throw new MediaError('cannot find moov box', res.data)\n }\n }\n if (moov.size > moov.data.length) {\n res = await this._loadData([res.data.length, moov.start + moov.size - 1], cache)\n if (!res) return\n responses.push(res)\n moov.data = concatUint8Array(moov.data, res.data)\n }\n const parsedMoov = MP4Parser.moov(moov)\n if (!parsedMoov) {\n throw new MediaError('cannot parse moov box', moov.data)\n }\n\n const segments = moovToSegments(parsedMoov, this._config.segmentDuration)\n if (!segments) {\n throw new MediaError('cannot parse segments', moov.data)\n }\n\n this.meta = moovToMeta(parsedMoov)\n const { videoSegments, audioSegments } = segments\n this.videoSegments = videoSegments\n this.audioSegments = audioSegments\n\n return {\n meta: this.meta,\n videoSegments,\n audioSegments,\n responses\n }\n }\n\n getSegmentByTime (time) {\n let video\n let audio\n if (!this.videoSegments.length) {\n audio = this.audioSegments.find(x => x.startTime <= time && x.endTime > time)\n } else {\n video = this.videoSegments.find(x => x.startTime <= time && x.endTime > time)\n if (video) {\n audio = this.audioSegments[video.index]\n }\n }\n\n return {\n video,\n audio\n }\n }\n\n async loadSegmentByTime (time, cache, changeCurrent = true) {\n if (!this.isMetaLoaded) {\n await this.loadMeta(cache)\n }\n const { video, audio } = this.getSegmentByTime(time)\n return this._loadSegment(video, audio, cache, changeCurrent)\n }\n\n async loadNextSegment (cache, changeCurrent = true) {\n if (!this.isMetaLoaded) {\n await this.loadMeta()\n }\n const video = this.videoSegments[this._currentSegmentIndex + 1]\n const audio = this.audioSegments[this._currentSegmentIndex + 1]\n return this._loadSegment(video, audio, cache, changeCurrent)\n }\n\n async preload (time) {\n if (!this.isMetaLoaded) {\n await this.loadMeta(true)\n }\n if (!time || time < 0) return\n const { video, audio } = this.getSegmentByTime(time)\n const index = Math.max(video?.index || 0, audio?.index || 0)\n if (!index) return\n\n const videos = this.videoSegments.slice(0, index)\n const audios = this.audioSegments.slice(0, index)\n\n const load = async (i) => {\n if (i > index) return\n await this._loadSegment(videos[i], audios[i], true, false)\n await load(i + 1)\n }\n\n await load(0)\n }\n\n cancel () {\n return this._loader.cancel()\n }\n\n async reset () {\n await this._loader.cancel()\n this.vid = this.url = ''\n this.meta = {}\n this.downloadInfo = []\n this.videoSegments = []\n this.audioSegments = []\n this._currentSegmentIndex = -1\n this._currentLoadingSegmentIndex = -1\n }\n\n async destroy () {\n await this.cancel()\n this.cache.clear()\n }\n\n async _loadSegment (video, audio, cache, changeCurrent) {\n if (!video && !audio) return\n const segIndex = video?.index || audio?.index || 0\n this._currentLoadingSegmentIndex = segIndex\n let res\n try {\n res = await this._loadData([\n Math.min(video?.range[0] || Infinity, audio?.range[0] || Infinity),\n Math.max(video?.range[1] || 0, audio?.range[1] || 0)\n ], cache)\n } finally {\n this._currentLoadingSegmentIndex = -1\n }\n if (!res) return\n\n if (changeCurrent) {\n this._currentSegmentIndex = segIndex\n }\n\n res.video = video\n res.audio = audio\n\n return res\n }\n\n async _loadData (range, cache) {\n const cacheKey = this._getCacheKey(range)\n const data = await this.cache.get(cacheKey)\n let res\n if (!data) {\n res = await this._loader.load(this.url, { range })\n } else {\n res = { data, fromCache: true }\n }\n if (!res) return\n if (!data) {\n this.downloadInfo.push({\n startTime: res.startTime,\n endTime: res.endTime,\n size: res.data.byteLength,\n range\n })\n if (this._addDownloadInfo > this._config.maxDownloadInfoSize) {\n this._downloadInfos = this.downloadInfo.slice(-this._config.maxDownloadInfoSize)\n }\n }\n\n if (!data && cache) {\n this.cache.set(cacheKey, res.data)\n }\n\n res.range = range\n return res\n }\n\n _transformError = (error) => {\n error.type = 'network'\n return error\n }\n\n _getCacheKey (range) {\n return (this.vid || this.url) + ':' + range\n }\n}\n","export function getConfig (cfg) {\n return {\n vid: '',\n moovEnd: 8000,\n segmentDuration: 5,\n maxDownloadInfoSize: 30,\n cache: null,\n // ...xgplayer-streaming-shared/src/net/config\n ...cfg,\n responseType: 'arraybuffer'\n }\n}\n"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","this","args","arguments","apply","err","undefined","_objectWithoutProperties","source","excluded","i","target","sourceKeys","Object","keys","length","indexOf","objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","prototype","propertyIsEnumerable","call","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","_createClass","protoProps","staticProps","_defineProperty","obj","check","it","Math","global","globalThis","window","Function","fails","exec","descriptors","require$$0","get","$propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","V","match","version","createPropertyDescriptor","bitmap","toString","classofRaw","slice","classof","require$$1","split","indexedObject","requireObjectCoercible","IndexedObject","toIndexedObject","isObject","aFunction","variable","getBuiltIn","namespace","method","engineUserAgent","userAgent","process","Deno","versions","v8","engineV8Version","V8_VERSION","nativeSymbol","symbol","Symbol","String","sham","useSymbolAsUid","iterator","isSymbol","$Symbol","setGlobal","SHARED","sharedStore","store","sharedModule","push","mode","copyright","toObject","argument","hasOwnProperty","has","hasOwn","id","postfix","random","uid","shared","require$$2","require$$3","NATIVE_SYMBOL","require$$4","USE_SYMBOL_AS_UID","require$$5","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","wellKnownSymbol","name","ordinaryToPrimitive","input","pref","val","valueOf","TO_PRIMITIVE","toPrimitive","result","exoticToPrim","toPropertyKey","document","EXISTS","createElement","documentCreateElement","ie8DomDefine","a","DESCRIPTORS","propertyIsEnumerableModule","IE8_DOM_DEFINE","require$$6","$getOwnPropertyDescriptor","O","P","f","anObject","$defineProperty","Attributes","definePropertyModule","createNonEnumerableProperty","object","functionToString","inspectSource","set","WeakMap","nativeWeakMap","test","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","objectHas","require$$7","OBJECT_ALREADY_INITIALIZED","state","wmget","wmhas","wmset","metadata","facade","STATE","internalState","enforce","getterFor","TYPE","type","getInternalState","enforceInternalState","TEMPLATE","redefineModule","options","unsafe","simple","noTargetGet","join","ceil","floor","toInteger","isNaN","min","toLength","max","toAbsoluteIndex","index","integer","createMethod","IS_INCLUDES","$this","el","fromIndex","arrayIncludes","includes","objectKeysInternal","names","enumBugKeys","internalObjectKeys","concat","getOwnPropertyNames","activeXDocument","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ownKeys","getOwnPropertyDescriptorModule","copyConstructorProperties","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","isForced_1","redefine","_export","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","functionBindContext","that","b","c","isArray","Array","SPECIES","arraySpeciesConstructor","originalArray","C","constructor","arraySpeciesCreate","bind","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","specificCreate","boundFunction","create","arrayIteration","forEach","map","filter","some","every","find","findIndex","filterReject","objectKeys","objectDefineProperties","defineProperties","Properties","html","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","domain","style","display","appendChild","src","contentWindow","open","F","objectCreate","UNSCOPABLES","ArrayPrototype","addToUnscopables","$","$find","FIND","SKIPS_HOLES","proto","createProperty","propertyKey","arrayMethodHasSpeciesSupport","METHOD_NAME","array","foo","Boolean","HAS_SPECIES_SUPPORT","require$$8","nativeSlice","start","end","n","k","fin","runtime","exports","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","reverse","pop","skipTempReset","prev","charAt","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","regenerator","factories","construct","argsLength","list","functionBind","partArgs","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","FORCED","_setPrototypeOf","o","p","_typeof","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","_isNativeReflectConstruct","Reflect","Proxy","e","_construct","Parent","Class","isNativeReflectConstruct","_wrapNativeSuper","_cache","Map","Wrapper","Target","newTarget","$args","PrototypeOfArrayIteratorPrototype","arrayIterator","iterators","correctPrototypeGetter","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","objectGetPrototypeOf","ITERATOR","BUGGY_SAFARI_ITERATORS","iteratorsCore","TO_STRING_TAG","setToStringTag","TAG","Iterators","returnThis","aPossiblePrototype","objectSetPrototypeOf","setter","CORRECT_SETTER","createIteratorConstructor","IteratorConstructor","NAME","require$$9","require$$10","KEYS","VALUES","ENTRIES","defineIterator","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","InternalStateModule","ARRAY_ITERATOR","setInternalState","es_array_iterator","iterated","kind","Arguments","toStringTagSupport","TO_STRING_TAG_SUPPORT","CORRECT_ARGUMENTS","tag","tryGet","callee","objectToString","CONVERT_TO_STRING","pos","first","second","S","position","size","charCodeAt","stringMultibyte","codeAt","STRING_ITERATOR","point","domIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","DOMIterables","ArrayIteratorMethods","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","anInstance","$assign","assign","objectAssign","A","B","alphabet","chr","T","argumentsLength","j","iteratorClose","returnMethod","isArrayIteratorMethod","getIteratorMethod","callWithSafeIterationClosing","redefineAll","arrayMethodIsStrict","$forEach","nativeKeys","nativePromiseConstructor","setSpecies","CONSTRUCTOR_NAME","Result","stopped","SAFE_CLOSING","called","iteratorWithReturn","return","from","location","defer","channel","port","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","speciesConstructor","defaultConstructor","engineIsIos","engineIsNode","IS_IOS","IS_NODE","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","run","runner","listener","event","post","postMessage","protocol","host","nextTick","now","port2","port1","onmessage","addEventListener","importScripts","removeChild","setTimeout","flush","head","last","notify","toggle","node","promise","task","engineIsIosPebble","Pebble","engineIsWebosWebkit","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","parent","exit","enter","createTextNode","observe","characterData","microtask","PromiseCapability","$$resolve","$$reject","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","newPromiseCapability","promiseResolve","x","promiseCapability","engineIsBrowser","NativePromise","require$$11","require$$12","require$$13","iterate","unboundFunction","iterFn","step","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","condition","callFn","require$$15","require$$16","require$$17","require$$18","require$$19","hostReportErrors","console","newPromiseCapabilityModule","require$$21","perform","require$$23","require$$24","IS_BROWSER","require$$26","require$$27","require$$28","require$$25","PROMISE","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromiseConstructorPrototype","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","SUBCLASSING","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","all","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","handler","fail","rejection","onHandleUnhandled","onUnhandled","reason","initEvent","isUnhandled","emit","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","r","capability","$promiseResolve","remaining","alreadyCalled","race","regexpFlags","ignoreCase","multiline","dotAll","unicode","sticky","$RegExp","RegExp","re","lastIndex","re1","re2","regexpUnsupportedDotAll","flags","regexpUnsupportedNcg","groups","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","group","str","raw","charsAdded","strCopy","regexpExec","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","len","E","$map","real","finally","onFinally","isFunction","Prototype","arrayBufferNative","ArrayBuffer","DataView","NATIVE_ARRAY_BUFFER","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isTypedArray","klass","arrayBufferViewCore","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","property","ARRAY","TypedArrayConstructor","exportTypedArrayStaticMethod","isView","typedArrayConstructorsRequireWrappers","toIndex","number","RangeError","abs","pow","log","LN2","arrayFill","endPos","IEEE754","pack","mantissaLength","bytes","exponent","mantissa","buffer","exponentLength","eMax","eBias","rt","sign","Infinity","unpack","nBits","NaN","require$$14","ARRAY_BUFFER","DATA_VIEW","WRONG_INDEX","NativeArrayBuffer","$ArrayBuffer","$DataView","$DataViewPrototype","packIEEE754","unpackIEEE754","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","view","count","isLittleEndian","intIndex","byteLength","byteOffset","conversion","ArrayBufferPrototype","testView","$setInt8","setInt8","getInt8","setUint8","bufferLength","offset","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","arrayBuffer","toPositiveInteger","toOffset","BYTES","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","isInteger","isFinite","require$$20","typedArrayFrom","mapfn","mapping","require$$22","inheritIfRequired","dummy","NewTarget","NewTargetPrototype","nativeDefineProperty","nativeGetOwnPropertyDescriptor","round","BYTES_PER_ELEMENT","WRONG_LENGTH","fromList","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","typedArrayConstructorModule","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","getter","typedArrayOffset","$length","$len","createTypedArrayConstructor","init","$copyWithin","copyWithin","to","inc","$every","$fill","typedArraySpeciesConstructor","arrayFromConstructorAndList","$filter","fromSpeciesAndList","predicate","$findIndex","$includes","searchElement","$indexOf","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","$join","separator","$lastIndexOf","lastIndexOf","NEGATIVE_ZERO","STRICT_METHOD","IS_RIGHT","memo","arrayReduce","left","right","$reduce","$reduceRight","middle","arrayLike","$slice","$some","mergeSort","comparefn","insertionSort","merge","element","llength","rlength","lindex","rindex","arraySort","firefox","engineFfVersion","engineIsIeOrEdge","webkit","engineWebkitVersion","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","sort","ACCEPT_INCORRECT_ARGUMENTS","STABLE_SORT","mod","expected","arrayLength","items","y","getSortCompare","begin","beginIndex","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","arrayJoin","IS_NOT_ARRAY_METHOD","LoaderType","ResponseType","NetError","subClass","superClass","url","request","response","msg","RegExpPrototype","fixRegexpWellKnownSymbolLogic","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","regexp","arg2","forceStringMethod","$exec","advanceStringIndex","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","regexpExecAbstract","R","fixRegExpWellKnownSymbolLogic","getSubstitution","matched","captures","namedCaptures","tailPos","m","symbols","ch","capture","regExpExec","REPLACE","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","_","maybeCallNative","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","rx","res","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","replacerArgs","nativeJoin","ES3_STRINGS","nativeGetPrototypeOf","isPlainObject","getRangeValue","ret","encode","encodeURIComponent","setUrlParams","params","v","toISOString","JSON","stringify","hashIndex","createResponse","contentLength","age","startTime","firstByteTime","parseFloat","parseInt","endTime","Date","FetchLoader","timeout","responseType","onProgress","onTimeout","range","transformResponse","headers","body","credentials","cache","redirect","referrer","referrerPolicy","integrity","_aborted","_abortController","AbortController","signal","isTimeout","clearTimeout","_timeoutTimer","rangeValue","Headers","append","Range","_this","cancel","fetch","_response","text","json","_loadChunk","_reader","abort","reader","getReader","pump","read","_this2","ReadableStream","$getOwnPropertyNames","windowNames","getWindowNames","path","wrappedWellKnownSymbolModule","defineWellKnownSymbol","$toString","nativeObjectCreate","getOwnPropertyNamesExternal","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","HIDDEN","$stringify","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","description","$defineProperties","properties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","for","keyFor","sym","useSetter","useSimple","space","$replacer","FAILS_ON_PRIMITIVES","getConfig","cfg","loaderType","retry","retryDelay","onRetryError","transformRequest","transformError","getOwnPropertyDescriptors","FunctionPrototype","FunctionPrototypeToString","nameRE","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","MATCH","isRegexp","isRegExp","callRegExpExec","arrayPush","MAX_UINT32","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","z","originalExec","whitespaces","whitespace","ltrim","rtrim","stringTrim","trim","$trim","forcedStringTrimMethod","XhrLoader","req","xhr","_xhr","XMLHttpRequest","withCredentials","setRequestHeader","onerror","onreadystatechange","readyState","status","statusText","responseURL","_getHeaders","isArraybuffer","send","getAllResponseHeaders","parts","Task","config","rej","used","createPublicPromise","alive","_loaderType","_loader","_config","_retryCount","_retryTimer","_canceled","rest","load","retryCount","NetLoader","isSupported","_queue","_processTask","cancels","t","_alive","_currentTask","shift","concatUint8Array","arr","reduce","prevLen","d","notARegExp","error1","error2","correctIsRegExpLogic","searchString","VideoCodecType","TO_STRING","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","isBrowser","ua","navigator","toLocaleLowerCase","isFirefox","isAndroid","MAX_SIZE","readBig16","readBig32","readBig64","AAC","rate","FREQ","pts","skip","frames","samplingFrequencyIndex","sampleRate","protectionSkipBytes","frameLength","objectType","channelCount","_getConfig","codec","frameIndex","duration","getFrameDuration","subarray","originCodec","timescale","samplingIndex","originObjectType","extensionSamplingIndex","_arrayLikeToArray","arr2","_toConsumableArray","arrayLikeToArray","arrayWithoutHoles","iterableToArray","minLen","unsupportedIterableToArray","nonIterableSpread","repeat","IS_END","maxLength","fillString","fillLen","stringFiller","stringLength","fillStr","intMaxLength","stringPad","stringPadWebkitBug","$padStart","padStart","objectDefinePropertyModule","regExpFlags","MP4Parser","headerSize","fromCharCode","subData","findBox","box","parseBox","mvhd","trak","nextTrackId","tkhd","mdia","trackId","width","height","mdhd","hdlr","minf","lang","language","handlerType","vmhd","smhd","stbl","graphicsmode","opcolor","balance","stsd","stts","ctts","stsc","stsz","stco","stss","entryCount","avc1","hvc1","mp4a","bodyStart","parseVisualSampleEntry","bodyData","avcC","pasp","configurationVersion","AVCProfileIndication","profileCompatibility","AVCLevelIndication","codecs","h","getAvcCodec","lengthSizeMinusOne","spsLength","sps","ppsLength","pps","hvcC","tmp","generalProfileSpace","generalTierFlag","generalProfileIdc","generalProfileCompatibility","generalConstraintIndicatorFlags","generalLevelIdc","avgFrameRate","numOfArrays","vps","numNalus","nalus","hSpacing","vSpacing","dataReferenceIndex","sampleSize","parseAudioSampleEntry","esds","byteRead","delta","firstChunk","samplesPerChunk","sampleDescriptionIndex","sampleCount","entrySizes","moov","videoTrack","audioTrack","tracks","vTrack","aTrack","formatTimescale","e1","sarRatio","codecType","present","sampleDuration","sampleRateIndex","getRateIndexByRate","videoSamples","audioSamples","videoStbl","_vTrack$mdia","_vTrack$mdia$minf","getSamples","audioStbl","_aTrack$mdia","_aTrack$mdia$minf","_aTrack$mdia$mdhd","keyframeMap","cttsArr","sample","samples","cttsEntries","stscEntries","stcoEntries","stszEntrySizes","stssEntries","gopId","dts","chunkIndex","chunkRunIndex","offsetInChunk","lastSampleInChunk","lastChunkInRun","keyframe","horizresolution","vertresolution","frameCount","depth","isFullBox","parse","readBig24","MediaError","message","Cache","_data","moovToSegments","segmentDurations","videoSegments","audioSegments","_videoTrack$mdia","_videoTrack$mdia$minf","_videoTrack$mdia$mdhd","getSegments","_audioTrack$mdia","_audioTrack$mdia$minf","_audioTrack$mdia$mdhd","segDuration","frame","gop","gopDuration","l","lastFrame","segments","segFrames","time","pushSegment","nextTime","moovToMeta","videoCodec","audioCodec","audioChannelCount","audioSampleRate","_videoTrack$mdia2","_videoTrack$mdia2$min","_videoTrack$mdia2$min2","_ref2","_audioTrack$mdia2","_audioTrack$mdia2$min","_audioTrack$mdia2$min2","_e1$esds","isNumber","vid","moovEnd","segmentDuration","maxDownloadInfoSize","_transformError","segIndex","_currentSegmentIndex","_this$audioSegments","_currentLoadingSegmentIndex","isMetaLoaded","loadMeta","meta","responses","_loadData","mdat","moovStart","parsedMoov","video","audio","changeCurrent","getSegmentByTime","_loadSegment","videos","audios","downloadInfo","cacheKey","_getCacheKey","fromCache","_addDownloadInfo","_downloadInfos"],"mappings":"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"}
1
+ {"version":3,"file":"index.min.js","sources":["../../xgplayer-streaming-shared/src/utils.js","../../xgplayer-streaming-shared/src/buffer.js","../../xgplayer-streaming-shared/src/error.js","../../xgplayer-streaming-shared/src/env.js","../../xgplayer-streaming-shared/src/logger.js","../../xgplayer-streaming-shared/src/mse.js","../../xgplayer-streaming-shared/src/net/types.js","../../xgplayer-streaming-shared/src/net/error.js","../../xgplayer-streaming-shared/src/is.js","../../xgplayer-streaming-shared/src/net/helper.js","../../xgplayer-streaming-shared/src/event.js","../../../node_modules/eventemitter3/index.js","../../xgplayer-streaming-shared/src/net/fetch.js","../../xgplayer-streaming-shared/src/net/xhr.js","../../xgplayer-streaming-shared/src/net/task.js","../../xgplayer-streaming-shared/src/streaming-helper.js","../../xgplayer-streaming-shared/src/net/index.js","../../xgplayer-streaming-shared/src/net/config.js","../../xgplayer-transmuxer/src/model/types.js","../../xgplayer-transmuxer/src/model/video-track.js","../../xgplayer-transmuxer/src/model/audio-track.js","../../xgplayer-transmuxer/src/model/video-sample.js","../../xgplayer-transmuxer/src/model/audio-sample.js","../../xgplayer-transmuxer/src/model/metadata-track.js","../../xgplayer-transmuxer/src/utils/exp-golomb.js","../../xgplayer-transmuxer/src/utils/logger.js","../../xgplayer-transmuxer/src/utils/utf8.js","../../xgplayer-transmuxer/src/utils/env.js","../../xgplayer-transmuxer/src/utils/index.js","../../xgplayer-transmuxer/src/codec/nalu.js","../../xgplayer-transmuxer/src/codec/avc.js","../../xgplayer-transmuxer/src/codec/aac.js","../../xgplayer-transmuxer/src/codec/hevc.js","../../xgplayer-transmuxer/src/flv/fixer.js","../../xgplayer-transmuxer/src/flv/amf.js","../../xgplayer-transmuxer/src/flv/index.js","../../xgplayer-transmuxer/src/mpeg-ts/index.js","../../xgplayer-transmuxer/src/mp4/mp4-parser.js","../../xgplayer-transmuxer/src/mp4/buffer.js","../../xgplayer-transmuxer/src/mp4/mp4.js","../../xgplayer-transmuxer/src/mp4/logger.js","../../../node_modules/crypto-es/lib/md5.js","../../../node_modules/crypto-es/lib/core.js","../../../node_modules/crypto-es/lib/enc-base64.js","../../../node_modules/crypto-es/lib/evpkdf.js","../../../node_modules/crypto-es/lib/cipher-core.js","../../../node_modules/crypto-es/lib/aes.js","../../../node_modules/crypto-es/lib/mode-ctr.js","../src/error.js","../src/cache.js","../src/utils.js","../src/loader.js","../src/config.js"],"sourcesContent":["export function createPublicPromise () {\n let res, rej\n const promise = new Promise((resolve, reject) => {\n res = resolve\n rej = reject\n })\n promise.used = false\n promise.resolve = (...args) => {\n promise.used = true\n return res(...args)\n }\n promise.reject = (...args) => {\n promise.used = true\n return rej(...args)\n }\n return promise\n}\n\nexport function nowTime () {\n try {\n return parseInt(performance.now(), 10)\n } catch (e) {\n return new Date().getTime()\n }\n}\n","export class Buffer {\n /**\n * @param {TimeRanges} buf\n * @returns {number}\n */\n static start (buf) {\n if (!buf || !buf.length) return 0\n\n // Safari bug: https://bit.ly/2trx6O8\n if (buf.length === 1 && buf.end(0) - buf.start(0) < 1e-6) return 0\n // Edge bug: https://bit.ly/2JYLPeB\n if (buf.length === 1 && buf.start(0) < 0) return 0\n\n return buf.start(0)\n }\n\n /**\n * @param {TimeRanges} buf\n * @returns {number}\n */\n static end (buf) {\n if (!buf || !buf.length) return 0\n\n // Safari bug: https://bit.ly/2trx6O8\n if (buf.length === 1 && buf.end(0) - buf.start(0) < 1e-6) return 0\n\n return buf.end(buf.length - 1)\n }\n\n /**\n * @param {{buffered?: TimeRanges}} b\n * @returns {TimeRanges | void}\n */\n static get (b) {\n if (!b) return\n try {\n return b.buffered\n } catch (error) {\n // ignore\n }\n }\n\n /**\n * @param {TimeRanges} buf\n * @param {number} [maxHole]\n * @returns {[number,number][]}\n */\n static buffers (buf, maxHole) {\n if (!buf || !buf.length) return []\n\n const buffers = []\n for (let i = 0, l = buf.length; i < l; i++) {\n const bufLen = buffers.length\n if (!bufLen || !maxHole) {\n buffers.push([buf.start(i), buf.end(i)])\n } else {\n const last = buffers[bufLen - 1]\n const lastEnd = last[1]\n const start = buf.start(i)\n if (start - lastEnd <= maxHole) {\n const end = buf.end(i)\n if (end > lastEnd) {\n last[1] = end\n }\n } else {\n buffers.push([buf.start(i), buf.end(i)])\n }\n }\n }\n return buffers\n }\n\n /**\n * @param {TimeRanges} buf\n * @param {number} [maxHole]\n * @returns {{buffers:[number,number][],length:number}}\n */\n static totalLength (buffers) {\n if (!buffers || !buffers.length) return 0\n return buffers.reduce((a, c) => (a += (c[1] - c[0])), 0)\n }\n\n /**\n *\n * @param {TimeRanges} buf\n * @param {number} [pos=0]\n * @param {number} [maxHole=0]\n * @returns {{start:number,end:number,buffers:[number,number][],remaining:number,index?:number,nextStart?:number,nextEnd?:number,prevStart?:number,prevEnd?:number}}\n */\n static info (buf, pos = 0, maxHole = 0) {\n if (!buf || !buf.length) return { start: 0, end: 0, buffers: [] }\n\n let start = 0\n let end = 0\n let index = 0\n let nextStart = 0\n let nextEnd = 0\n let prevStart = 0\n let prevEnd = 0\n const buffers = Buffer.buffers(buf, maxHole)\n\n for (let i = 0, l = buffers.length; i < l; i++) {\n const item = buffers[i]\n if (pos + maxHole >= item[0] && pos < item[1]) {\n start = item[0]\n end = item[1]\n index = i\n } else if (pos + maxHole < item[0]) {\n nextStart = item[0]\n nextEnd = item[1]\n break\n } else if (pos + maxHole > item[1]) {\n prevStart = item[0]\n prevEnd = item[1]\n }\n }\n\n return {\n start,\n end,\n index,\n buffers,\n nextStart,\n nextEnd,\n prevStart,\n prevEnd,\n currentTime: pos,\n behind: pos - start,\n remaining: end ? end - pos : 0,\n length: Buffer.totalLength && Buffer.totalLength(buffers)\n }\n }\n}\n","export const ERR = {\n MANIFEST: 'manifest',\n NETWORK: 'network',\n NETWORK_TIMEOUT: 'network_timeout',\n NETWORK_FORBIDDEN:'network_forbidden',\n NETWROK_RANGE_NOT_SATISFIABLE:'network_range_not_satisfiable',\n DEMUX: 'demux',\n REMUX: 'remux',\n MEDIA: 'media',\n DRM: 'drm',\n OTHER: 'other',\n RUNTIME:'runtime',\n\n SUB_TYPES: {\n FLV: 'FLV',\n HLS: 'HLS',\n MP4: 'MP4',\n FMP4: 'FMP4',\n MSE_ADD_SB: 'MSE_ADD_SB',\n MSE_APPEND_BUFFER: 'MSE_APPEND_BUFFER',\n MSE_OTHER: 'MSE_OTHER',\n MSE_FULL: 'MSE_FULL',\n OPTION: 'OPTION',\n DASH:'DASH',\n LICENSE:'LICENSE',\n CUSTOM_LICENSE:'CUSTOM_LICENSE',\n MSE_HIJACK:'MSE_HIJACK',\n EME_HIJACK:'EME_HIJACK',\n SIDX:'SIDX',\n NO_CANPLAY_ERROR:'NO_CANPLAY_ERROR',\n BUFFERBREAK_ERROR:'BUFFERBREAK_ERROR',\n MEDIA_ERR_ABORTED:'MEDIA_ERR_ABORTED',\n MEDIA_ERR_NETWORK:'MEDIA_ERR_NETWORK',\n MEDIA_ERR_DECODE:'MEDIA_ERR_DECODE',\n MEDIA_ERR_SRC_NOT_SUPPORTED:'MEDIA_ERR_SRC_NOT_SUPPORTED',\n MEDIA_ERR_CODEC_NOT_SUPPORTED:'MEDIA_ERR_CODEC_NOT_SUPPORTED',\n MEDIA_ERR_URL_EMPTY:'MEDIA_ERR_URL_EMPTY'\n }\n}\n\nexport const ERR_CODE = {\n [ERR.MANIFEST]: {\n HLS: 1100,\n DASH:1200\n },\n [ERR.NETWORK]: 2100,\n [ERR.NETWORK_TIMEOUT]: 2101,\n [ERR.NETWORK_FORBIDDEN]:2103,\n [ERR.NETWROK_RANGE_NOT_SATISFIABLE]:2116,\n [ERR.DEMUX]: {\n FLV: 3100,\n HLS: 3200,\n MP4: 3300,\n FMP4: 3400,\n SIDX: 3410\n },\n [ERR.REMUX]: {\n FMP4: 4100,\n MP4: 4200\n },\n [ERR.MEDIA]: {\n MEDIA_ERR_ABORTED: 5101,\n MEDIA_ERR_NETWORK: 5102,\n MEDIA_ERR_DECODE: 5103,\n MEDIA_ERR_SRC_NOT_SUPPORTED: 5104,\n MEDIA_ERR_CODEC_NOT_SUPPORTED: 5105,\n MEDIA_ERR_URL_EMPTY: 5106,\n MSE_ADD_SB: 5200,\n MSE_APPEND_BUFFER: 5201,\n MSE_OTHER: 5202,\n MSE_FULL: 5203,\n MSE_HIJACK:5204,\n EME_HIJACK:5301\n },\n [ERR.DRM]:{\n LICENSE:7100,\n CUSTOM_LICENSE:7200\n },\n [ERR.OTHER]: 8000,\n [ERR.RUNTIME]:{\n NO_CANPLAY_ERROR:9001,\n BUFFERBREAK_ERROR:9002\n }\n}\n\nexport class StreamingError extends Error {\n constructor (type, subType, origin, payload, msg) {\n super(msg || origin?.message)\n this.errorType = type === ERR.NETWORK_TIMEOUT ? ERR.NETWORK : type\n this.originError = origin\n this.ext = payload\n this.errorCode = ERR_CODE[type][subType] || ERR_CODE[type]\n this.errorMessage = this.message\n if (!this.errorCode) {\n this.errorType = ERR.OTHER\n this.errorCode = ERR_CODE[this.errorType]\n }\n }\n\n static create (type, subType, origin, payload, msg) {\n if (type instanceof StreamingError) {\n return type\n } else if (type instanceof Error) {\n origin = type\n type = ''\n }\n\n if (!type) type = ERR.OTHER\n\n return new StreamingError(type, subType, origin, payload, msg)\n }\n\n static network (error) {\n return new StreamingError(\n error?.isTimeout ? ERR.NETWORK_TIMEOUT : ERR.NETWORK,\n null,\n error instanceof Error ? error : null,\n {\n url: error?.url,\n response: error?.response,\n httpCode: error?.response?.status\n }\n )\n }\n}\n","export const isBrowser = typeof window !== 'undefined'\n","\nexport const LogCacheLevel = {\n 'DEBUG': 1,\n 'LOG': 2,\n 'WARN': 3,\n 'ERROR': 4\n}\nconst LOG_MAX_SIZE = 200 * 1024\nconst SIMPLE_TYPE = ['Boolean', 'Number' ,'String', 'Undefined','Null', 'Date','Object']\nexport class Logger {\n constructor (name,config) {\n this.name = name || ''\n this._prefix = `[${this.name}]`\n Logger.disabled = config?.disabled || true\n this.logCacheLevel = config?.logCacheLevel || 3\n this.logMaxSize = config?.logMaxSize || LOG_MAX_SIZE\n this.logSize = 0\n this.logTextArray = []\n }\n\n debug (...args) {\n this.logCache(LogCacheLevel.DEBUG,...args)\n if (Logger.disabled) return\n console.debug(this._prefix, nowTime(), ...args)\n }\n\n log (...args) {\n this.logCache(LogCacheLevel.LOG,...args)\n if (Logger.disabled) return\n console.log(this._prefix, nowTime(), ...args)\n }\n\n warn (...args) {\n this.logCache(LogCacheLevel.WARN,...args)\n if (Logger.disabled) return\n console.warn(this._prefix, nowTime(), ...args)\n }\n\n error (...args) {\n this.logCache(LogCacheLevel.ERROR,...args)\n if (Logger.disabled) return\n console.error(this._prefix, nowTime(), ...args)\n }\n\n logCache (logCacheLevel, ...logText) {\n if (logCacheLevel < this.logCacheLevel) return\n let text = ''\n try {\n const finLogText = logText.map( item => logable(item))\n text = this._prefix + nowTime() + (JSON.stringify(finLogText))\n } catch (e) {\n return\n }\n if (logCacheLevel >= this.logCacheLevel) {\n this.logSize += text.length\n this.logTextArray.push(text)\n }\n if (this.logSize > this.logMaxSize) {\n const delLog = this.logTextArray.shift()\n this.logSize -= delLog.length\n }\n }\n\n getLogCache () {\n const logText = this.logTextArray.join('\\n')\n this.reset()\n return logText\n }\n\n reset () {\n this.logTextArray = []\n this.logSize = 0\n }\n\n table (...args) {\n if (Logger.disabled) return\n console.group(this._prefix)\n console.table(...args)\n console.groupEnd()\n }\n\n static disabled = true\n\n static enable () {\n Logger.disabled = false\n }\n\n static disable () {\n Logger.disabled = true\n }\n\n setLogLevel (val) {\n this.logCacheLevel = val\n }\n}\nfunction nowTime () {\n return new Date().toLocaleString()\n}\n\nfunction reduceDepth (val) {\n if (typeof val !== 'object') {\n return val\n }\n const objType = Object.prototype.toString.call(val).slice(8, -1)\n switch (objType) {\n case 'Array':\n case 'Uint8Array':\n case 'ArrayBuffer':\n\n return objType + '[' + val.length + ']'\n case 'Object':\n return '{}'\n default:\n return objType\n }\n}\n\nfunction logable (obj, maxDepth, depth) {\n if (!depth) depth = 1\n if (!maxDepth) maxDepth = 2\n const result = {}\n\n if (!obj || typeof obj !== 'object') {\n return obj\n }\n\n const objType = Object.prototype.toString.call(obj).slice(8, -1)\n if (!SIMPLE_TYPE.includes(objType)) {\n return objType\n }\n\n if (depth > maxDepth) {\n return undefined\n }\n\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (depth === maxDepth) {\n result[key] = reduceDepth(obj[key])\n } else if (typeof obj[key] === 'object') {\n result[key] = logable(obj[key], maxDepth, depth + 1)\n } else {\n result[key] = obj[key]\n }\n }\n }\n return result\n}\n\n","/* eslint-disable no-undef */\nimport { createPublicPromise, nowTime } from './utils'\nimport { Buffer } from './buffer'\nimport { StreamingError, ERR } from './error'\nimport { isBrowser } from './env'\nimport { Logger } from './logger'\n\nfunction getMediaSource () {\n try {\n return isBrowser ? window.MediaSource : null\n } catch (e) {}\n}\n\nconst MediaSource = getMediaSource()\n\n/** @enum {string} */\nexport const MSEErrorType = {\n UPDATE_ERROR: 'updateError'\n}\n\nconst OP_NAME = {\n APPEND: 'appendBuffer',\n REMOVE: 'removeBuffer'\n}\n\nexport class MSEError extends Error {\n /**\n * @param {MSEErrorType} type\n * @param {any} [msg]\n */\n constructor (type, msg) {\n super(msg || type)\n this.type = type\n this.msg = msg\n }\n}\n\nexport class MSE {\n /** @type { HTMLMediaElement | null } */\n media = null\n\n /** @type { MediaSource | null } */\n mediaSource = null\n\n _openPromise = createPublicPromise()\n\n _queue = Object.create(null)\n\n _sourceBuffer = Object.create(null)\n\n static VIDEO = 'video'\n\n static AUDIO = 'audio'\n\n _mseFullFlag = {}\n\n _st = 0\n\n _opst = 0\n\n _logger = null\n\n _config = null\n _url = null\n\n\n static getDefaultConfig () {\n return {\n openLog: false\n }\n }\n\n /**\n * @param {HTMLMediaElement} [media]\n */\n constructor (media, config) {\n this._config = Object.assign(MSE.getDefaultConfig(), config)\n if (media) this.bindMedia(media)\n this._logger = new Logger('MSE')\n if (this._config.openLog) {\n Logger.enable()\n }\n }\n\n get isOpened () {\n return this.mediaSource?.readyState === 'open'\n }\n\n get url () {\n return this._url\n }\n\n get duration () {\n return this.mediaSource?.duration || -1\n }\n\n get isEnded () {\n return this.mediaSource ? this.mediaSource.readyState === 'ended' : false\n }\n\n isFull (type) {\n return type ? this._mseFullFlag[type] : this._mseFullFlag[MSE.VIDEO]\n }\n\n /**\n * @param { number } duration\n * @return { Promise }\n */\n updateDuration (duration) {\n // 设置值比当前值小,会导致异常\n if (this.mediaSource && this.mediaSource.duration > duration) {\n return Promise.resolve()\n }\n\n return this._enqueueBlockingOp(() => {\n if (this.isEnded) {\n this._logger.debug('[debug mse] setDuration ended')\n return\n }\n if (this.mediaSource) {\n this.mediaSource.duration = duration\n this._logger.debug('[debug mse] setDuration')\n }\n }, 'updateDuration')\n }\n\n /** @return { Promise } */\n open () {\n if (this._openPromise.used && !this.isOpened && this.mediaSource) {\n const ms = this.mediaSource\n const onOpen = () => {\n const costtime = nowTime() - this._st\n this._logger.debug('MSE OPEN', costtime)\n ms.removeEventListener('sourceopen', onOpen)\n this._openPromise.resolve({costtime})\n }\n ms.addEventListener('sourceopen', onOpen)\n this._openPromise = createPublicPromise()\n }\n\n return this._openPromise\n }\n\n /**\n * @param { HTMLMediaElement } media\n * @return { Promise }\n */\n async bindMedia (media) {\n if (this.mediaSource || this.media) await this.unbindMedia()\n if (!media || !MediaSource) throw new Error('Param media or MediaSource does not exist')\n this.media = media\n const ms = this.mediaSource = new MediaSource()\n this._st = nowTime()\n\n const onOpen = () => {\n const costtime = nowTime() - this._st\n this._logger.debug('MSE OPEN')\n ms.removeEventListener('sourceopen', onOpen)\n URL.revokeObjectURL(media.src)\n this._openPromise.resolve({costtime})\n }\n ms.addEventListener('sourceopen', onOpen)\n this._url = URL.createObjectURL(ms)\n media.src = this._url\n return this._openPromise\n }\n\n /** @return { Promise } */\n async unbindMedia () {\n if (!this._openPromise.used) this._openPromise.resolve()\n const ms = this.mediaSource\n\n if (ms) {\n Object.keys(this._queue).forEach((t) => {\n const queue = this._queue[t]\n if (queue) {\n queue.forEach(x => x.promise.resolve)\n }\n })\n\n const hasMetadata = !!this.media && this.media.readyState >= 1\n const mseOpen = ms.readyState === 'open'\n\n if (hasMetadata && mseOpen) {\n try {\n ms.endOfStream()\n } catch (error) {\n // ignore\n }\n }\n\n Object.keys(this._sourceBuffer).forEach(k => {\n try {\n ms.removeSourceBuffer(this._sourceBuffer[k])\n } catch (error) {\n // ignore\n }\n })\n }\n\n if (this.media) {\n this.media.removeAttribute('src')\n try {\n this.media.load()\n } catch (error) {\n // ignore\n }\n this.media = null\n }\n\n this.mediaSource = null\n this._openPromise = createPublicPromise()\n this._queue = Object.create(null)\n this._sourceBuffer = Object.create(null)\n }\n\n /**\n * @param { string } type\n * @param { string } mimeType\n */\n createSource (type, mimeType) {\n if (this._sourceBuffer[type] || !this.mediaSource) return\n let sb\n try {\n sb = this._sourceBuffer[type] = this.mediaSource.addSourceBuffer(mimeType)\n } catch (error) {\n throw new StreamingError(ERR.MEDIA, ERR.SUB_TYPES.MSE_ADD_SB, error)\n }\n sb.mimeType = mimeType\n sb.addEventListener('updateend', this._onSBUpdateEnd.bind(this, type))\n sb.addEventListener('error', this._onSBUpdateError.bind(this, type))\n }\n\n /**\n * @param { string } type\n * @param { string } mimeType\n * @return { Promise }\n */\n changeType (type, mimeType) {\n const sb = this._sourceBuffer[type]\n if (!this.mediaSource || !sb || sb.mimeType === mimeType || typeof sb.changeType !== 'function') return Promise.resolve()\n\n return this._enqueueOp(type, () => {\n sb.changeType(mimeType)\n sb.mimeType = mimeType\n this._onSBUpdateEnd(type)\n })\n }\n\n /**\n * @param { string } type\n * @param { string } mimeType\n * @return { Promise }\n */\n createOrChangeSource (type, mimeType) {\n this.createSource(type, mimeType)\n return this.changeType(type, mimeType)\n }\n\n /**\n * @param { string } type\n * @param { BufferSource } buffer\n * @return { Promise }\n */\n append (type, buffer, context) {\n if (!buffer || !buffer.byteLength) {\n return Promise.resolve()\n }\n\n if (!this._sourceBuffer[type]) return Promise.resolve()\n\n return this._enqueueOp(type, () => {\n if (!this.mediaSource) return\n this._logger.debug('MSE APPEND START', context)\n this._opst = nowTime()\n this._sourceBuffer[type]?.appendBuffer(buffer)\n }, OP_NAME.APPEND, context)\n\n }\n\n /**\n * @param { string } type\n * @param { number } startTime\n * @param { number } endTime\n * @return { Promise }\n */\n remove (type, startTime, endTime, context) {\n // if (Object.keys(this._sourceBuffer).length === 1) return Promise.resolve()\n let isInsertHead = false\n if (this._mseFullFlag[type]) {\n isInsertHead = true\n }\n return this._enqueueOp(type, () => {\n if (!this.mediaSource) return\n const sb = this._sourceBuffer[type]\n if (startTime >= endTime || !sb) {\n this._onSBUpdateEnd(type)\n return\n }\n this._opst = nowTime()\n this._logger.debug('MSE REMOVE START', type, startTime, endTime, context)\n sb.remove(startTime, endTime)\n }, OP_NAME.REMOVE, context, isInsertHead)\n }\n\n clearBuffer (startTime, endTime) {\n let p\n Object.keys(this._sourceBuffer).forEach(k => {\n p = this._enqueueOp(k, () => {\n if (!this.mediaSource) return\n const sb = this._sourceBuffer[k]\n this._logger.debug('MSE clearBuffer START', k, startTime, endTime)\n sb.remove(startTime, endTime)\n })\n })\n return p\n }\n\n clearAllBuffer () {\n let p\n Object.keys(this._sourceBuffer).forEach(k => {\n p = this._enqueueOp(k, () => {\n if (!this.mediaSource) return\n const sb = this._sourceBuffer[k]\n this._logger.debug('MSE clearAllBuffer START', k)\n sb.remove(0, Buffer.end(Buffer.get(sb)))\n })\n })\n return p\n }\n\n clearOpQueues (type) {\n this._logger.debug('MSE clearOpQueue START')\n const queue = this._queue[type]\n if (!queue || !queue[type] || queue.length < 5) return\n const initOpque = []\n queue.forEach(op => {\n if (op.context && op.context.isinit) {\n initOpque.push(op)\n }\n })\n this._queue[type] = queue.slice(0, 2)\n initOpque.length > 0 && this._queue[type].push(...initOpque)\n }\n\n /**\n * @param {EndOfStreamError} [reason]\n * @returns {Promise}\n */\n endOfStream (reason) {\n if (!this.mediaSource || this.mediaSource.readyState !== 'open') return Promise.resolve()\n return this._enqueueBlockingOp(() => {\n const ms = this.mediaSource\n if (!ms || ms.readyState !== 'open') return\n this._logger.debug('MSE endOfStream START')\n if (reason) {\n ms.endOfStream(reason)\n } else {\n ms.endOfStream()\n }\n }, 'endOfStream')\n }\n\n setLiveSeekableRange (start, end) {\n const ms = this.mediaSource\n if (start < 0 || end < start || !ms?.setLiveSeekableRange || ms.readyState !== 'open') return\n ms.setLiveSeekableRange(start, end)\n }\n\n /**\n * @param {string} type\n * @returns {?SourceBuffer}\n */\n getSourceBuffer (type) {\n return this._sourceBuffer[type]\n }\n\n /**\n * @param { string } type\n * @return { TimeRanges | void }\n */\n buffered (type) {\n return Buffer.get(this._sourceBuffer[type])\n }\n\n /**\n * @param { string } type\n * @return { number }\n */\n bufferStart (type) {\n return Buffer.start(this.buffered(type))\n }\n\n /**\n * @param { string } type\n * @return { number }\n */\n bufferEnd (type) {\n return Buffer.end(this.buffered(type))\n }\n\n _enqueueOp (type, exec, opName, context, isInsertHead) {\n if (!this.mediaSource) return Promise.resolve()\n const queue = this._queue[type] = this._queue[type] || []\n const op = {\n exec,\n promise: createPublicPromise(),\n opName,\n context\n }\n\n if (isInsertHead) {\n queue.splice(0, 0, op)\n this._mseFullFlag[type] = false\n this._startQueue(type)\n } else {\n queue.push(op)\n }\n\n if (this.isOpened) {\n if (queue.length === 1) {\n this._startQueue(type)\n }\n } else {\n this._openPromise.then(() => {\n if (queue.length === 1) {\n this._startQueue(type)\n }\n })\n }\n\n\n return op.promise\n }\n\n async _enqueueBlockingOp (exec, opName) {\n if (!this.mediaSource) return Promise.resolve()\n const types = Object.keys(this._sourceBuffer)\n if (!types.length) {\n return exec()\n }\n\n const waiters = []\n types.forEach(t => {\n const queue = this._queue[t]\n const prom = createPublicPromise()\n waiters.push(prom)\n queue.push({exec: () => prom.resolve(), promise: prom, opName})\n if (queue.length === 1) {\n this._startQueue(t)\n }\n })\n\n return Promise.all(waiters).then(() => {\n try {\n return exec()\n } finally {\n types.forEach(t => {\n const queue = this._queue[t]\n const sb = this._sourceBuffer[t]\n queue?.shift()\n if (!sb || !sb.updating) {\n this._startQueue(t)\n }\n })\n }\n })\n }\n\n _startQueue (type) {\n const queue = this._queue[type]\n if (queue) {\n const op = queue[0]\n if (op && !this._mseFullFlag[type]) {\n try {\n op.exec()\n } catch (error) {\n if (error && error.message && error.message.indexOf('SourceBuffer is full') >= 0) {\n this._mseFullFlag[type] = true\n this._logger.error('[MSE error], context,', op.context, ' ,name,', op.opName, ',err,SourceBuffer is full')\n op.promise.reject(new StreamingError(ERR.MEDIA, ERR.SUB_TYPES.MSE_FULL, error))\n } else {\n this._logger.error(error)\n op.promise.reject(new StreamingError(ERR.MEDIA, ERR.SUB_TYPES.MSE_OTHER, error))\n queue.shift()\n this._startQueue(type)\n }\n }\n }\n }\n }\n\n _onSBUpdateEnd = (type) => {\n const queue = this._queue[type]\n if (queue) {\n const op = queue.shift()\n if (op) {\n const costtime = nowTime() - this._opst\n this._logger.debug('UpdateEnd', op.opName, costtime, op.context)\n op.promise.resolve({name: op.opName, context: op.context, costtime})\n this._startQueue(type)\n }\n }\n }\n\n _onSBUpdateError = (type, event) => {\n const queue = this._queue[type]\n if (queue) {\n const op = queue[0]\n if (op) {\n this._logger.error('UpdateError', type, op.opName, op.context)\n op.promise.reject(new StreamingError(ERR.MEDIA, ERR.SUB_TYPES.MSE_APPEND_BUFFER, event))\n // Do not shift from queue, 'updateend' event will fire next\n }\n }\n }\n\n /**\n * @param {string} [mime='video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"']\n * @returns {boolean}\n */\n static isSupported (mime = 'video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"') {\n if (!MediaSource) return false\n try {\n return MediaSource.isTypeSupported(mime)\n } catch (error) {\n this._logger.error(mime, error)\n return false\n }\n }\n\n setTimeoffset (type, timestampOffset, context) {\n return this._enqueueOp(type, () => {\n if (timestampOffset < 0) {\n timestampOffset += 0.001\n }\n this._sourceBuffer[type].timestampOffset = timestampOffset\n this._onSBUpdateEnd(type)\n }, 'setTimeoffset', context)\n }\n\n /** *重置decode时间戳 */\n abort (type, context) {\n if (!this.isOpened) {\n return Promise.resolve()\n }\n return this._enqueueOp(type, () => {\n this._sourceBuffer[type].abort()\n this._onSBUpdateEnd(type)\n }, 'abort', context)\n }\n}\n","export const LoaderType = {\n FETCH: 'fetch',\n XHR: 'xhr'\n}\n\nexport const ResponseType = {\n ARRAY_BUFFER: 'arraybuffer',\n TEXT: 'text',\n JSON: 'json'\n}\n","import { LoaderType } from './types'\n\nexport class NetError extends Error {\n retryCount = 0\n isTimeout = false\n loaderType = LoaderType.FETCH\n startTime = 0\n endTime = 0\n options = {}\n\n constructor (url, request, response, msg) {\n super(msg)\n this.url = url\n this.request = request\n this.response = response\n }\n}\n","const toString = Object.prototype.toString\n\nexport function isObject (a) {\n return a !== null && typeof a === 'object'\n}\n\nexport function isPlainObject (val) {\n if (toString.call(val) !== '[object Object]') {\n return false\n }\n\n const prototype = Object.getPrototypeOf(val)\n return prototype === null || prototype === Object.prototype\n}\n\nexport function isDate (a) {\n return toString.call(a) === '[object Date]'\n}\n\nexport function isNumber (n) {\n return typeof n === 'number' && !Number.isNaN(n)\n}\n","import { isDate, isObject } from '../is'\n\nexport function getRangeValue (value) {\n if (!value || value[0] === null || value[0] === undefined || (value[0] === 0 && (value[1] === null || value[1] === undefined))) {\n return\n }\n let ret = 'bytes=' + value[0] + '-'\n if (value[1]) ret += value[1]\n return ret\n}\n\nfunction encode (val) {\n return encodeURIComponent(val)\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+')\n .replace(/%5B/gi, '[')\n .replace(/%5D/gi, ']')\n}\n\nexport function setUrlParams (url, params) {\n if (!url) return\n if (!params) return url\n let v\n const str = Object.keys(params).map(k => {\n v = params[k]\n if (v === null || v === undefined) return\n if (Array.isArray(v)) {\n k = k + '[]'\n } else {\n v = [v]\n }\n\n return v.map(x => {\n if (isDate(x)) {\n x = x.toISOString()\n } else if (isObject(x)) {\n x = JSON.stringify(x)\n }\n return `${encode(k)}=${encode(x)}`\n }).join('&')\n }).filter(Boolean).join('&')\n\n if (str) {\n const hashIndex = url.indexOf('#')\n if (hashIndex !== -1) {\n url = url.slice(0, hashIndex)\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + str\n }\n\n return url\n}\n\nexport function createResponse (\n data,\n done,\n response,\n contentLength,\n age,\n startTime,\n firstByteTime,\n index,\n range,\n vid,\n priOptions\n) {\n age = (age !== null && age !== undefined) ? parseFloat(age) : null\n contentLength = parseInt(contentLength || '0', 10)\n if (Number.isNaN(contentLength)) contentLength = 0\n const option = { range, vid, index, contentLength, age, startTime, firstByteTime, endTime: Date.now(), priOptions }\n return { data, done, option, response }\n}\n\nexport function calculateSpeed (byteLen, millisec) {\n return Math.round(byteLen * 8 * 1000 / millisec / 1024)\n}\n","export const EVENT = {\n ERROR: 'error',\n\n TTFB: 'core.ttfb',\n LOAD_START: 'core.loadstart',\n LOAD_RESPONSE_HEADERS: 'core.loadresponseheaders',\n LOAD_COMPLETE: 'core.loadcomplete',\n LOAD_RETRY: 'core.loadretry',\n SOURCEBUFFER_CREATED: 'core.sourcebuffercreated',\n ANALYZE_DURATION_EXCEEDED: 'core.analyzedurationexceeded',\n REMOVE_BUFFER: 'core.removebuffer',\n BUFFEREOS: 'core.buffereos',\n KEYFRAME: 'core.keyframe',\n METADATA_PARSED: 'core.metadataparsed',\n SEI: 'core.sei',\n SEI_IN_TIME: 'core.seiintime',\n FLV_SCRIPT_DATA: 'core.flvscriptdata',\n LOWDECODE: 'core.lowdecode',\n SWITCH_URL_SUCCESS: 'core.switchurlsuccess',\n SWITCH_URL_FAILED: 'core.switchurlfailed',\n SPEED: 'core.speed',\n HLS_MANIFEST_LOADED: 'core.hlsmanifestloaded',\n HLS_LEVEL_LOADED: 'core.hlslevelloaded',\n DEMUXED_TRACK:'demuxedtrack',\n\n STREAM_EXCEPTION: 'core.streamexception',\n LARGE_AV_FIRST_FRAME_GAP_DETECT: 'LARGE_AV_FIRST_FRAME_GAP_DETECT',\n LARGE_VIDEO_DTS_GAP_DETECT: 'LARGE_VIDEO_DTS_GAP_DETECT',\n LARGE_AUDIO_DTS_GAP_DETECT: 'LARGE_AUDIO_DTS_GAP_DETECT',\n AUDIO_GAP_DETECT: 'AUDIO_GAP_DETECT',\n AUDIO_OVERLAP_DETECT: 'AUDIO_OVERLAP_DETECT',\n MAX_DTS_DELTA_WITH_NEXT_SEGMENT_DETECT: 'MAX_DTS_DELTA_WITH_NEXT_SEGMENT_DETECT',\n REAL_TIME_SPEED: 'real_time_speed'\n}\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","import { NetError } from './error'\nimport { createResponse, getRangeValue, setUrlParams, calculateSpeed } from './helper'\nimport { ResponseType } from './types'\nimport { EVENT } from '../event'\nimport EventEmitter from 'eventemitter3'\nconst CACHESIZE = 2 * 1024 * 1024\nexport class FetchLoader extends EventEmitter {\n _abortController = null\n _timeoutTimer = null\n _reader = null\n _response = null\n _aborted = false\n _index = -1\n _range = null\n _receivedLength = 0\n _running = false\n _logger = null\n _vid = ''\n _onProcessMinLen = 0\n _onCancel = null\n _priOptions = null // 比较私有化的参数传递,回调时候透传\n\n constructor () {\n super()\n }\n\n load ({\n url,\n vid,\n timeout, // ms\n responseType,\n onProgress,\n index,\n onTimeout,\n onCancel,\n range,\n transformResponse,\n request,\n params,\n logger,\n\n method,\n headers,\n body,\n mode,\n credentials,\n cache,\n redirect,\n referrer,\n referrerPolicy,\n onProcessMinLen,\n priOptions\n }) {\n this._logger = logger\n this._aborted = false\n this._onProcessMinLen = onProcessMinLen\n this._onCancel = onCancel\n this._abortController = typeof AbortController !== 'undefined' && new AbortController()\n this._running = true\n this._index = index\n this._range = range || [0, 0]\n this._vid = vid || url\n this._priOptions = priOptions || {}\n const init = {\n method,\n headers,\n body,\n mode,\n credentials,\n cache,\n redirect,\n referrer,\n referrerPolicy,\n signal: this._abortController?.signal\n }\n\n let isTimeout = false\n clearTimeout(this._timeoutTimer)\n\n url = setUrlParams(url, params)\n\n const rangeValue = getRangeValue(range)\n if (rangeValue) {\n if (request) {\n headers = request.headers\n } else {\n headers = init.headers = init.headers || (Headers ? new Headers() : {})\n }\n if (Headers && headers instanceof Headers) {\n headers.append('Range', rangeValue)\n } else {\n headers.Range = rangeValue\n }\n }\n\n if (timeout) {\n this._timeoutTimer = setTimeout(() => {\n isTimeout = true\n this.cancel()\n if (onTimeout) {\n const error = new NetError(url, init, null, 'timeout')\n error.isTimeout = true\n onTimeout(error, {index: this._index, range: this._range, vid: this._vid, priOptions: this._priOptions})\n }\n }, timeout)\n }\n\n const startTime = Date.now()\n this._logger.debug('[fetch load start], index,', index, ',range,', range)\n return new Promise((resolve, reject) => {\n fetch(request || url, request ? undefined : init).then(async (response) => {\n clearTimeout(this._timeoutTimer)\n this._response = response\n if (this._aborted || !this._running) return\n if (transformResponse) {\n response = transformResponse(response, url) || response\n }\n if (!response.ok) {\n throw new NetError(url, init, response, 'bad network response')\n }\n\n const firstByteTime = Date.now()\n let data\n if (responseType === ResponseType.TEXT) {\n data = await response.text()\n this._running = false\n } else if (responseType === ResponseType.JSON) {\n data = await response.json()\n this._running = false\n } else {\n if (onProgress) {\n this.resolve = resolve\n this.reject = reject\n this._loadChunk(response, onProgress, startTime, firstByteTime)\n return\n } else {\n data = await response.arrayBuffer()\n data = new Uint8Array(data)\n this._running = false\n const costTime = Date.now() - startTime\n const speed = calculateSpeed(data.byteLength, costTime)\n this.emit(EVENT.REAL_TIME_SPEED, {speed,len: data.byteLength, time: costTime, vid: this._vid, index: this._index, range: this._range, priOptions: this._priOptions})\n }\n }\n this._logger.debug('[fetch load end], index,', index, ',range,', range)\n resolve(createResponse(\n data,\n true,\n response,\n response.headers.get('Content-Length'),\n response.headers.get('age'),\n startTime,\n firstByteTime,\n index,\n range,\n this._vid,\n this._priOptions\n ))\n }).catch((error) => {\n clearTimeout(this._timeoutTimer)\n this._running = false\n if (this._aborted && !isTimeout) return\n error = error instanceof NetError ? error : new NetError(url, init, null, error?.message)\n error.startTime = startTime\n error.endTime = Date.now()\n error.isTimeout = isTimeout\n error.options = {index: this._index, range: this._range, vid: this._vid, priOptions: this._priOptions}\n reject(error)\n })\n })\n }\n\n async cancel () {\n if (this._aborted) return\n this._aborted = true\n this._running = false\n if (this._response) {\n try {\n // await this._response.body.cancel()\n if (this._reader) {\n await this._reader.cancel()\n }\n } catch (error) {\n // ignore\n }\n this._response = this._reader = null\n }\n\n if (this._abortController) {\n try {\n this._abortController.abort()\n } catch (error) {\n // ignore\n }\n this._abortController = null\n }\n if (this._onCancel) {\n this._onCancel({index: this._index, range: this._range, vid: this._vid, priOptions: this._priOptions})\n }\n }\n\n _loadChunk (response, onProgress, st, firstByteTime) {\n if (!response.body || !response.body.getReader) {\n this._running = false\n const err = new NetError(response.url, '', response, 'onProgress of bad response.body.getReader')\n err.options = {index: this._index, range: this._range, vid: this._vid, priOptions: this._priOptions}\n this.reject(err)\n return\n }\n if (this._onProcessMinLen > 0) {\n this._cache = new Uint8Array(CACHESIZE)\n this._writeIdx = 0\n }\n const reader = this._reader = response.body.getReader()\n let data\n\n let startTime\n let endTime\n const pump = async () => {\n startTime = Date.now()\n try {\n data = await reader.read()\n endTime = Date.now()\n } catch (e) {\n // request aborted\n endTime = Date.now()\n if (!this._aborted) {\n this._running = false\n e.options = {index: this._index, range: this._range, vid: this._vid, priOptions: this._priOptions}\n this.reject(e)\n }\n return\n }\n const startRange = this._range?.length > 0 ? this._range[0] : 0\n const startByte = startRange + this._receivedLength\n if (this._aborted) {\n this._running = false\n onProgress(undefined, false, { range: [startByte, startByte], vid: this._vid, index: this._index, startTime, endTime, st, firstByteTime, priOptions:this._priOptions }, response)\n return\n }\n const curLen = data.value ? data.value.byteLength : 0\n this._receivedLength += curLen\n this._logger.debug('【fetchLoader,onProgress call】,task,', this._range, ', start,', startByte, ', end,', startRange + this._receivedLength, ', done,', data.done)\n let retData\n if (this._onProcessMinLen > 0) {\n if (this._writeIdx + curLen >= this._onProcessMinLen || data.done) {\n retData = new Uint8Array(this._writeIdx + curLen)\n retData.set(this._cache.slice(0, this._writeIdx), 0)\n curLen > 0 && retData.set(data.value, this._writeIdx)\n this._writeIdx = 0\n this._logger.debug('【fetchLoader,onProgress enough】,done,', data.done, ',len,', retData.byteLength, ', writeIdx,', this._writeIdx)\n } else {\n if (curLen > 0 && this._writeIdx + curLen < CACHESIZE) {\n this._cache.set(data.value, this._writeIdx)\n this._writeIdx += curLen\n this._logger.debug('【fetchLoader,onProgress cache】,len,', curLen, ', writeIdx,', this._writeIdx)\n } else if (curLen > 0) {\n const temp = new Uint8Array(this._writeIdx + curLen + 2048)\n this._logger.debug('【fetchLoader,onProgress extra start】,size,', this._writeIdx + curLen + 2048, ', datalen,', curLen, ', writeIdx,', this._writeIdx)\n temp.set(this._cache.slice(0, this._writeIdx), 0)\n curLen > 0 && temp.set(data.value, this._writeIdx)\n this._writeIdx += curLen\n delete this._cache\n this._cache = temp\n this._logger.debug('【fetchLoader,onProgress extra end】,len,', curLen, ', writeIdx,', this._writeIdx)\n }\n }\n } else {\n retData = data.value\n }\n if (retData && retData.byteLength > 0 || data.done) {\n onProgress(retData, data.done, {\n range: [this._range[0] + this._receivedLength - (retData ? retData.byteLength : 0), this._range[0] + this._receivedLength],\n vid: this._vid,\n index: this._index,\n startTime,\n endTime,\n st,\n firstByteTime,\n priOptions:this._priOptions\n }, response)\n }\n if (!data.done) {\n pump()\n } else {\n const costTime = Date.now() - st\n const speed = calculateSpeed(this._receivedLength, costTime)\n this.emit(EVENT.REAL_TIME_SPEED, {speed,len: this._receivedLength, time: costTime, vid: this._vid, index: this._index, range: this._range, priOptions: this._priOptions})\n this._running = false\n this._logger.debug('[fetchLoader onProgress end],task,', this._range, ',done,', data.done)\n this.resolve(createResponse(\n data,\n true,\n response,\n response.headers.get('Content-Length'),\n response.headers.get('age'),\n st,\n firstByteTime,\n this._index,\n this._range,\n this._vid,\n this._priOptions\n ))\n }\n }\n pump()\n }\n\n get receiveLen () {\n return this._receivedLength\n }\n\n get running () {\n return this._running\n }\n\n set running (status) {\n this._running = status\n }\n\n static isSupported () {\n return !!(typeof fetch !== 'undefined')\n }\n}\n","import { NetError } from './error'\nimport { createResponse, getRangeValue, setUrlParams, calculateSpeed } from './helper'\nimport { ResponseType } from './types'\nimport { EVENT } from '../event'\nimport EventEmitter from 'eventemitter3'\nexport class XhrLoader extends EventEmitter {\n\n _xhr = null\n _aborted = false\n _timeoutTimer = null\n _range = null\n _receivedLength = 0\n _url = null\n _onProgress = null\n _index = -1\n _headers = null\n // _chunkSizeKBList = [\n // 128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192\n // ]\n\n _currentChunkSizeKB = 384\n _timeout = null\n _xhr = null\n _withCredentials = null\n _startTime = -1\n // _speedSampler = new SpeedSampler()\n _loadCompleteResolve = null\n _loadCompleteReject = null\n _runing = false\n _logger = false\n _vid = ''\n _responseType\n _credentials\n _method\n _transformResponse\n _firstRtt\n _onCancel = null\n _priOptions = null // 比较私有化的参数传递,回调时候透传\n\n\n constructor () {\n super()\n }\n\n load (req) {\n clearTimeout(this._timeoutTimer)\n this._logger = req.logger\n this._range = req.range\n this._onProgress = req.onProgress\n this._index = req.index\n this._headers = req.headers\n this._withCredentials = req.credentials === 'include' || req.credentials === 'same-origin'\n this._body = req.body || null\n req.method && (this._method = req.method)\n this._timeout = req.timeout || null\n this._runing = true\n this._vid = req.vid || req.url\n this._responseType = req.responseType\n this._firstRtt = -1\n this._onTimeout = req.onTimeout\n this._onCancel = req.onCancel\n this._request = req.request\n this._priOptions = req.priOptions || {}\n this._logger.debug('【xhrLoader task】, range', this._range)\n\n this._url = setUrlParams(req.url, req.params)\n\n const startTime = Date.now()\n return new Promise((resolve, reject) => {\n this._loadCompleteResolve = resolve\n this._loadCompleteReject = reject\n this._startLoad()\n }).catch((error) => {\n clearTimeout(this._timeoutTimer)\n this._runing = false\n if (this._aborted) return\n error = error instanceof NetError ? error : new NetError(this._url, this._request)\n error.startTime = startTime\n error.endTime = Date.now()\n error.options = {index: this._index, vid: this._vid, priOptions: this._priOptions}\n throw error\n })\n }\n\n _startLoad () {\n let range = null\n if (this._responseType === ResponseType.ARRAY_BUFFER && this._range && this._range.length > 1) {\n if (this._onProgress) {\n this._firstRtt = -1\n const chunkSize = this._currentChunkSizeKB * 1024\n const from = this._range[0] + this._receivedLength\n let to = this._range[1]\n if (chunkSize < this._range[1] - from) {\n to = from + chunkSize\n }\n range = [from, to]\n this._logger.debug('[xhr_loader->],tast :', this._range, ', SubRange, ', range)\n } else {\n range = this._range\n this._logger.debug('[xhr_loader->],tast :', this._range, ', allRange, ', range)\n }\n }\n this._internalOpen(range)\n }\n\n _internalOpen (range) {\n try {\n this._startTime = Date.now()\n const xhr = this._xhr = new XMLHttpRequest()\n xhr.open(this._method || 'GET', this._url, true)\n xhr.responseType = this._responseType\n this._timeout && (xhr.timeout = this._timeout)\n xhr.withCredentials = this._withCredentials\n xhr.onload = this._onLoad.bind(this)\n xhr.onreadystatechange = this._onReadyStatechange.bind(this)\n xhr.onerror = (errorEvent) => {\n this._running = false\n const error = new NetError(this._url, this._request, errorEvent?.currentTarget?.response, ('xhr.onerror.status:' + errorEvent?.currentTarget?.status + ',statusText,' + errorEvent?.currentTarget?.statusText))\n error.options = {index: this._index, range: this._range, vid: this._vid, priOptions: this._priOptions}\n this._loadCompleteReject(error)\n }\n xhr.ontimeout = (event) => {\n this.cancel()\n const error = new NetError(this._url, this._request, {status:408}, 'timeout')\n if (this._onTimeout) {\n error.isTimeout = true\n this._onTimeout(error,{index: this._index, range: this._range, vid: this._vid, priOptions: this._priOptions})\n }\n error.options = {index: this._index, range: this._range, vid: this._vid, priOptions: this._priOptions}\n this._loadCompleteReject(error)\n }\n const headers = this._headers || {}\n const rangeValue = getRangeValue(range)\n if (rangeValue) {\n headers.Range = rangeValue\n }\n if (headers) {\n Object.keys(headers).forEach(k => {\n xhr.setRequestHeader(k, headers[k])\n })\n }\n this._logger.debug('[xhr.send->] tast,', this._range, ',load sub range, ', range)\n xhr.send(this._body)\n } catch (e) {\n e.options = {index: this._index, range, vid: this._vid, priOptions: this._priOptions}\n this._loadCompleteReject(e)\n }\n }\n\n _onReadyStatechange (e) {\n const xhr = e.target\n if (xhr.readyState === 2) {\n this._firstRtt < 0 && (this._firstRtt = Date.now())\n }\n }\n\n _onLoad (e) {\n const status = e.target.status\n if (status < 200 || status > 299) {\n const error = new NetError(this._url, null, { ...e.target.response, status }, 'bad response,status:' + status)\n error.options = {index: this._index, range: this._range, vid: this._vid, priOptions: this._priOptions}\n return this._loadCompleteReject(error)\n }\n let data = null\n let done = false\n let byteStart\n const startRange = (this._range?.length > 0 ? this._range [0] : 0 )\n if (this._responseType === ResponseType.ARRAY_BUFFER) {\n const chunk = new Uint8Array(e.target.response)\n byteStart = startRange + this._receivedLength\n if (chunk && chunk.byteLength > 0) {\n this._receivedLength += chunk.byteLength\n const costTime = Date.now() - this._startTime\n const speed = calculateSpeed(this._receivedLength, costTime)\n this.emit(EVENT.REAL_TIME_SPEED, {speed, len: this._receivedLength, time: costTime, vid: this._vid, index: this._index, range: [byteStart, startRange + this._receivedLength], priOptions: this._priOptions})\n }\n data = chunk\n if (this._range?.length > 1 && this._range[1] && this._receivedLength < this._range[1] - this._range[0]) {\n done = false\n } else {\n done = true\n }\n this._logger.debug('[xhr load done->], tast :', this._range, ', start', byteStart, 'end ', startRange + this._receivedLength, ',dataLen,', (chunk ? chunk.byteLength : 0), ',receivedLength', this._receivedLength, ',index,', this._index, ', done,', done)\n } else {\n done = true\n data = e.target.response\n }\n let response = {\n ok: status >= 200 && status < 300,\n status,\n statusText: this._xhr.statusText,\n url: this._xhr.responseURL,\n headers: this._getHeaders(this._xhr),\n body: this._xhr.response\n }\n if (this._transformResponse) {\n response = this._transformResponse(response, this._url) || response\n }\n if (this._onProgress) {\n this._onProgress(data, done, { index: this._index, vid: this._vid, range: [byteStart, startRange + this._receivedLength], startTime: this._startTime, endTime: Date.now(), priOptions: this._priOptions }, response)\n }\n\n if (!done) {\n this._startLoad()\n } else {\n this._runing = false\n this._loadCompleteResolve && this._loadCompleteResolve(createResponse(\n this._onProgress ? null : data,\n done,\n response,\n response.headers['content-length'],\n response.headers.age,\n this._startTime,\n this._firstRtt,\n this._index,\n this._range,\n this._vid,\n this._priOptions\n ))\n }\n }\n\n cancel () {\n if (this._aborted) return\n this._aborted = true\n this._runing = false\n super.removeAllListeners()\n if (this._onCancel) {\n this._onCancel({index: this._index, range: this._range, vid: this._vid, priOptions: this._priOptions})\n }\n if (this._xhr) {\n return this._xhr.abort()\n }\n }\n\n static isSupported () {\n return typeof XMLHttpRequest !== 'undefined'\n }\n\n get receiveLen () {\n return this._receivedLength\n }\n\n get running () {\n return this._running\n }\n\n set running (status) {\n this._running = status\n }\n\n _getHeaders (xhr) {\n const headerLines = xhr.getAllResponseHeaders().trim().split('\\r\\n')\n const headers = {}\n for (const header of headerLines) {\n const parts = header.split(': ')\n headers[parts[0].toLowerCase()] = parts.slice(1).join(': ')\n }\n return headers\n }\n}\n","import { FetchLoader } from './fetch'\nimport { XhrLoader } from './xhr'\nimport { LoaderType } from './types'\nimport { createPublicPromise } from '../utils'\nimport { Logger } from '../logger'\n\nexport class Task {\n constructor (type, config) {\n this.promise = createPublicPromise()\n this.alive = !!config.onProgress\n !config.logger && (config.logger = new Logger('Loader'))\n this._loaderType = type\n this._loader = type === LoaderType.FETCH && !!window.fetch ? new FetchLoader() : new XhrLoader()\n this._config = config\n this._retryCount = 0\n this._retryTimer = null\n this._canceled = false\n this._retryCheckFunc = config.retryCheckFunc\n this._logger = config.logger\n }\n\n exec () {\n const {\n retry,\n retryDelay,\n onRetryError,\n transformError,\n ...rest\n } = this._config\n\n const request = async () => {\n try {\n const response = await this._loader.load(rest)\n this.promise.resolve(response)\n } catch (e) {\n this._loader.running = false\n this._logger.debug('[task request catch err]', e)\n if (this._canceled) return\n\n e.loaderType = this._loaderType\n e.retryCount = this._retryCount\n\n let error = e\n if (transformError) {\n error = transformError(error) || error\n }\n\n if (onRetryError && this._retryCount > 0) onRetryError(error, this._retryCount, {index: rest.index, vid: rest.vid, range: rest.range, priOptions: rest.priOptions})\n\n this._retryCount++\n let isRetry = true\n if (this._retryCheckFunc) {\n isRetry = this._retryCheckFunc(e)\n }\n if (isRetry && this._retryCount <= retry) {\n clearTimeout(this._retryTimer)\n this._logger.debug('[task request setTimeout],retry', this._retryCount, ',retry range,', rest.range)\n this._retryTimer = setTimeout(request, retryDelay)\n return\n }\n this.promise.reject(error)\n }\n }\n\n request()\n return this.promise\n }\n\n async cancel () {\n clearTimeout(this._retryTimer)\n this._canceled = true\n this._loader.running = false\n return this._loader.cancel()\n }\n\n get running () {\n return this._loader && this._loader.running\n }\n\n get loader () {\n return this._loader\n }\n}\n","export function isMediaPlaying (media) {\n return media && !media.paused && !media.ended && media.playbackRate !== 0 && media.readyState !== 0\n}\n\nexport function getVideoPlaybackQuality (video) {\n if (!video) return {}\n if (typeof video.getVideoPlaybackQuality === 'function') {\n const info = video.getVideoPlaybackQuality()\n return {\n droppedVideoFrames: info.droppedVideoFrames || info.corruptedVideoFrames,\n totalVideoFrames: info.totalVideoFrames,\n creationTime: info.creationTime\n }\n }\n\n return {\n droppedVideoFrames: video.webkitDroppedFrameCount,\n totalVideoFrames: video.webkitDecodedFrameCount,\n creationTime: performance.now()\n }\n}\n\n/**\n * @param {Array.<Uint8Array>} arr\n * @returns\n */\nexport function concatUint8Array (...arr) {\n arr = arr.filter(Boolean)\n if (arr.length < 2) return arr[0]\n const data = new Uint8Array(arr.reduce((p, c) => p + c.byteLength, 0))\n let prevLen = 0\n arr.forEach((d) => {\n data.set(d, prevLen)\n prevLen += d.byteLength\n })\n return data\n}\n\nexport function sleep (t = 0) {\n return new Promise((resolve) => setTimeout(resolve, t))\n}\n","import { FetchLoader } from './fetch'\nimport { LoaderType, ResponseType } from './types'\nimport { getConfig } from './config'\nimport { Task } from './task'\nimport { isPlainObject } from '../is'\nimport { sleep } from '../streaming-helper'\nimport { EVENT } from '../event'\nimport EventEmitter from 'eventemitter3'\n\nexport {\n LoaderType,\n ResponseType\n}\n\nexport class NetLoader extends EventEmitter {\n type = LoaderType.FETCH\n\n _queue = []\n\n _alive = []\n\n _currentTask = null\n\n _config\n\n constructor (cfg) {\n super(cfg)\n this._config = getConfig(cfg)\n if (\n this._config.loaderType === LoaderType.XHR ||\n !FetchLoader.isSupported()\n ) {\n this.type = LoaderType.XHR\n }\n this.log = cfg.logger\n }\n\n isFetch () {\n return this.type === LoaderType.FETCH\n }\n\n static isFetchSupport () {\n return FetchLoader.isSupported()\n }\n\n load (url, config = {}) {\n if (typeof url === 'string' || !url) {\n config.url = url || config.url || this._config.url\n } else {\n config = url\n }\n\n config = Object.assign({}, this._config, config)\n if (config.params) config.params = Object.assign({}, config.params)\n if (config.headers && isPlainObject(config.headers)) config.headers = Object.assign({}, config.headers)\n if (config.body && isPlainObject(config.body)) config.body = Object.assign({}, config.body)\n\n if (config.transformRequest) {\n config = config.transformRequest(config) || config\n }\n config.logger = this.log\n\n const task = new Task(this.type, config)\n task.loader.on(EVENT.REAL_TIME_SPEED, (data) => {\n this.emit(EVENT.REAL_TIME_SPEED, data)\n })\n this._queue.push(task)\n if (this._queue.length === 1 && (!this._currentTask || !this._currentTask.running)) {\n this._processTask()\n }\n\n return task.promise\n }\n\n async cancel () {\n const cancels = this._queue.map(t => t.cancel()).concat(this._alive.map(t => t.cancel()))\n if (this._currentTask) {\n cancels.push(this._currentTask.cancel())\n }\n this._queue = []\n this._alive = []\n await Promise.all(cancels)\n await sleep()\n }\n\n _processTask () {\n this._currentTask = this._queue.shift()\n if (!this._currentTask) return\n\n if (this._currentTask.alive) {\n this._alive.push(this._currentTask)\n }\n const req = this._currentTask.exec().catch(e => {})\n\n if (!(req && typeof req.finally === 'function')) return\n\n req.finally(() => {\n if (this._currentTask?.alive && this._alive?.length > 0) {\n this._alive = this._alive.filter(task => task && task !== this._currentTask)\n }\n this._processTask()\n })\n\n }\n}\n","import { LoaderType, ResponseType } from './types'\n\nexport function getConfig (cfg) {\n return {\n loaderType: LoaderType.FETCH,\n retry: 0,\n retryDelay: 0, // ms\n timeout: 0,\n request: null, // Request\n onTimeout: undefined,\n onProgress: undefined,\n onRetryError: undefined,\n transformRequest: undefined,\n transformResponse: undefined,\n transformError: undefined,\n responseType: ResponseType.TEXT,\n range: undefined,\n url: '',\n params: undefined,\n method: 'GET',\n headers: {},\n body: undefined,\n mode: undefined,\n credentials: undefined,\n cache: undefined,\n redirect: undefined,\n referrer: undefined,\n referrerPolicy: undefined,\n integrity: undefined,\n onProcessMinLen: 0,\n ...cfg\n }\n}\n","/** @enum {string} */\nexport const TrackType = {\n VIDEO: 'video',\n AUDIO: 'audio',\n METADATA: 'metadata'\n}\n\n/** @enum {string} */\nexport const VideoCodecType = {\n AVC: 'avc',\n HEVC: 'hevc'\n}\n\n/** @enum {string} */\nexport const AudioCodecType = {\n AAC: 'aac',\n G711PCMA: 'g7110a',\n G711PCMU: 'g7110m'\n}\n\n/** @enum {string} */\nexport const WarningType = {\n LARGE_AV_SHIFT: 'LARGE_AV_SHIFT',\n LARGE_VIDEO_GAP: 'LARGE_VIDEO_GAP',\n LARGE_VIDEO_GAP_BETWEEN_CHUNK: 'LARGE_VIDEO_GAP_BETWEEN_CHUNK',\n LARGE_AUDIO_GAP: 'LARGE_AUDIO_GAP',\n AUDIO_FILLED: 'AUDIO_FILLED',\n AUDIO_DROPPED: 'AUDIO_DROPPED'\n}\n","import { TrackType, VideoCodecType } from './types'\n\nexport class VideoTrack {\n id = 1\n\n /** @readonly */\n type = TrackType.VIDEO\n\n codecType = VideoCodecType.AVC\n\n pid = -1 // ts use\n\n /** @type {Uint8Array | Object} */\n hvcC = undefined\n\n codec = ''\n\n timescale = 0\n\n formatTimescale = 0\n\n sequenceNumber = 0\n\n baseMediaDecodeTime = 0\n\n baseDts = 0\n\n duration = 0\n\n warnings = []\n\n /** @type {import('./video-sample').VideoSample[]} */\n samples = []\n\n /** @type {Uint8Array[]} */\n pps = []\n\n /** @type {Uint8Array[]} */\n sps = []\n\n /** @type {Uint8Array[]} */\n vps = []\n\n fpsNum = 0\n\n fpsDen = 0\n\n /** @type {[number, number]} */\n sarRatio = [] // [hSpacing, vSpacing]\n\n width = 0\n\n height = 0\n\n nalUnitSize = 4\n\n present = false\n\n isVideoEncryption = false\n\n isAudioEncryption = false\n\n isVideo = true\n\n kid = null\n\n pssh = null\n\n /** @type {any} */\n ext\n\n reset () {\n this.sequenceNumber =\n this.width =\n this.height =\n this.fpsDen =\n this.fpsNum =\n this.duration =\n this.baseMediaDecodeTime =\n this.timescale = 0\n this.codec = ''\n this.present = false\n this.pid = -1\n this.pps = []\n this.sps = []\n this.vps = []\n this.sarRatio = []\n this.samples = []\n this.warnings = []\n this.hvcC = null\n }\n\n /**\n * @returns {boolean}\n */\n exist () {\n return !!(this.pps.length && this.sps.length && this.codec)\n }\n\n /**\n * @returns {boolean}\n */\n hasSample () {\n return !!this.samples.length\n }\n\n get isEncryption (){\n return this.isVideoEncryption\n }\n}\n","import { TrackType, AudioCodecType } from './types'\n\nexport class AudioTrack {\n id = 2\n\n /** @readonly */\n type = TrackType.AUDIO\n\n codecType = AudioCodecType.AAC\n\n pid = -1\n\n codec = ''\n\n sequenceNumber = 0\n\n sampleDuration = 0\n\n timescale = 0\n\n formatTimescale = 0\n\n baseMediaDecodeTime = 0\n\n duration = 0\n\n warnings = []\n\n /** @type {import('./audio-sample').AudioSample[]} */\n samples = []\n\n baseDts = 0\n\n sampleSize = 16\n\n sampleRate = 0\n\n channelCount = 0\n\n objectType = 0\n\n sampleRateIndex = 0\n\n /** @type {number[]} */\n config = []\n\n present = false\n\n isVideoEncryption = false\n\n isAudioEncryption = false\n\n kid = null\n\n /** @type {any} */\n ext\n\n reset () {\n this.sequenceNumber = 0\n this.timescale = 0\n this.sampleDuration = 0\n this.sampleRate = 0\n this.channelCount = 0\n this.baseMediaDecodeTime = 0\n this.present = false\n this.pid = -1\n this.codec = ''\n this.samples = []\n this.config = []\n this.warnings = []\n }\n\n /**\n * @returns {boolean}\n */\n exist () {\n return !!(this.sampleRate && this.channelCount && this.codec && this.codecType === AudioCodecType.AAC)\n }\n\n /**\n * @returns {boolean}\n */\n hasSample () {\n return !!this.samples.length\n }\n\n get isEncryption (){\n return this.isAudioEncryption\n }\n}\n","/**\n * @typedef {Object} VideoFlag\n * @property {number} [isLeading=0]\n * @property {number} [dependsOn=1]\n * @property {number} [isDependedOn=0]\n * @property {number} [hasRedundancy=0]\n * @property {number} [paddingValue=0]\n * @property {number} [degradationPriority=0]\n * @property {number} [isNonSyncSample=1]\n */\n\nexport class VideoSample {\n /** @type {VideoFlag} */\n flag = {}\n\n keyframe = false\n\n gopId = 0\n\n duration = 0\n\n size = 0\n\n units = []\n\n chromaFormat = 420\n\n // sampleOffset = 0\n\n /**\n * @param {number} pts\n * @param {number} dts\n * @param {Uint8Array[]} [units]\n */\n constructor (pts, dts, units) {\n this.originPts = this.pts = pts\n this.originDts = this.dts = dts\n if (units) this.units = units\n }\n\n /**\n * @returns {number}\n */\n get cts () {\n return this.pts - this.dts\n }\n\n setToKeyframe () {\n this.keyframe = true\n this.flag.dependsOn = 2\n this.flag.isNonSyncSample = 0\n }\n}\n","export class AudioSample {\n duration = 1024\n\n flag = { dependsOn: 2, isNonSyncSample: 0 }\n keyframe = true\n\n /**\n * @param {number} pts\n * @param {Uint8Array} data\n * @param {number} [duration=1024]\n */\n constructor (pts, data, duration, sampleOffset) {\n this.originPts = this.pts = this.dts = pts\n this.data = data\n this.size = data.byteLength\n this.sampleOffset = sampleOffset\n if (duration) this.duration = duration\n }\n}\n","import { TrackType } from './types'\n\nclass Sample {\n time = 0 // second\n\n /**\n * @param {Object} data\n * @param {number} pts\n */\n constructor (data, pts) {\n this.data = data\n this.originPts = this.pts = pts\n }\n}\n\nexport class FlvScriptSample extends Sample {}\n\nexport class SeiSample extends Sample {}\n\nexport class MetadataTrack {\n /** @readonly */\n id = 3\n\n /** @readonly */\n type = TrackType.METADATA\n\n timescale = 0\n\n /** @type {FlvScriptSample[]} */\n flvScriptSamples = []\n\n /** @type {SeiSample[]} */\n seiSamples = []\n\n /**\n * @returns {boolean}\n */\n exist () {\n return !!((this.flvScriptSamples.length || this.seiSamples.length) && this.timescale)\n }\n\n reset () {\n this.timescale = 0\n this.flvScriptSamples = []\n this.seiSamples = []\n }\n\n /**\n * @returns {boolean}\n */\n hasSample () {\n return !!(this.flvScriptSamples.length || this.seiSamples.length)\n }\n}\n","export class ExpGolomb {\n _bytesAvailable\n\n _bitsAvailable = 0\n\n _word = 0\n\n constructor (data) {\n if (!data) throw new Error('ExpGolomb data params is required')\n this._data = data\n this._bytesAvailable = data.byteLength\n if (this._bytesAvailable) this._loadWord()\n }\n\n _loadWord () {\n const position = this._data.byteLength - this._bytesAvailable\n const availableBytes = Math.min(4, this._bytesAvailable)\n if (availableBytes === 0) throw new Error('No bytes available')\n\n const workingBytes = new Uint8Array(4)\n workingBytes.set(this._data.subarray(position, position + availableBytes))\n\n this._word = new DataView(workingBytes.buffer).getUint32(0)\n this._bitsAvailable = availableBytes * 8\n this._bytesAvailable -= availableBytes\n }\n\n skipBits (count) {\n if (this._bitsAvailable > count) {\n this._word <<= count\n this._bitsAvailable -= count\n } else {\n count -= this._bitsAvailable\n const skipBytes = Math.floor(count / 8)\n count -= (skipBytes * 8)\n this._bytesAvailable -= skipBytes\n this._loadWord()\n this._word <<= count\n this._bitsAvailable -= count\n }\n }\n\n readBits (size) {\n if (size > 32) {\n throw new Error('Cannot read more than 32 bits')\n }\n\n let bits = Math.min(this._bitsAvailable, size)\n const val = this._word >>> (32 - bits)\n\n this._bitsAvailable -= bits\n if (this._bitsAvailable > 0) {\n this._word <<= bits\n } else if (this._bytesAvailable > 0) {\n this._loadWord()\n }\n\n bits = size - bits\n if (bits > 0 && this._bitsAvailable) {\n return (val << bits) | this.readBits(bits)\n }\n return val\n }\n\n skipLZ () {\n let leadingZeroCount\n for (\n leadingZeroCount = 0;\n leadingZeroCount < this._bitsAvailable;\n ++leadingZeroCount\n ) {\n if ((this._word & (0x80000000 >>> leadingZeroCount)) !== 0) {\n this._word <<= leadingZeroCount\n this._bitsAvailable -= leadingZeroCount\n return leadingZeroCount\n }\n }\n this._loadWord()\n return leadingZeroCount + this.skipLZ()\n }\n\n skipUEG () {\n this.skipBits(1 + this.skipLZ())\n }\n\n readUEG () {\n const clz = this.skipLZ()\n return this.readBits(clz + 1) - 1\n }\n\n readEG () {\n const val = this.readUEG()\n if (1 & val) {\n return (1 + val) >>> 1\n }\n return -1 * (val >>> 1)\n }\n\n readBool () {\n return this.readBits(1) === 1\n }\n\n readUByte () {\n return this.readBits(8)\n }\n\n skipScalingList (count) {\n let lastScale = 8\n let nextScale = 8\n let deltaScale\n for (let j = 0; j < count; j++) {\n if (nextScale !== 0) {\n deltaScale = this.readEG()\n nextScale = (lastScale + deltaScale + 256) % 256\n }\n lastScale = nextScale === 0 ? lastScale : nextScale\n }\n }\n}\n","export class Logger {\n constructor (name) {\n this.name = name || ''\n this._prefix = `[${this.name}]`\n }\n\n warn (...args) {\n if (Logger.disabled) return\n console.warn(this._prefix, ...args)\n }\n\n static disabled = true\n\n static enable () {\n Logger.disabled = false\n }\n\n static disable () {\n Logger.disabled = true\n }\n}\n","export class UTF8 {\n /**\n *\n * @param {Uint8Array} uint8array\n * @return {string}\n */\n static decode (uint8array) {\n const out = []\n const input = uint8array\n let i = 0\n const length = uint8array.length\n\n while (i < length) {\n if (input[i] < 0x80) {\n out.push(String.fromCharCode(input[i]))\n ++i\n continue\n } else if (input[i] < 0xC0) {\n // fallthrough\n } else if (input[i] < 0xE0) {\n if (UTF8._checkContinuation(input, i, 1)) {\n const ucs4 = (input[i] & 0x1F) << 6 | (input[i + 1] & 0x3F)\n if (ucs4 >= 0x80) {\n out.push(String.fromCharCode(ucs4 & 0xFFFF))\n i += 2\n continue\n }\n }\n } else if (input[i] < 0xF0) {\n if (UTF8._checkContinuation(input, i, 2)) {\n const ucs4 = (input[i] & 0xF) << 12 | (input[i + 1] & 0x3F) << 6 | input[i + 2] & 0x3F\n if (ucs4 >= 0x800 && (ucs4 & 0xF800) !== 0xD800) {\n out.push(String.fromCharCode(ucs4 & 0xFFFF))\n i += 3\n continue\n }\n }\n } else if (input[i] < 0xF8) {\n if (UTF8._checkContinuation(input, i, 3)) {\n let ucs4 = (input[i] & 0x7) << 18 | (input[i + 1] & 0x3F) << 12 |\n (input[i + 2] & 0x3F) << 6 | (input[i + 3] & 0x3F)\n if (ucs4 > 0x10000 && ucs4 < 0x110000) {\n ucs4 -= 0x10000\n out.push(String.fromCharCode((ucs4 >>> 10) | 0xD800))\n out.push(String.fromCharCode((ucs4 & 0x3FF) | 0xDC00))\n i += 4\n continue\n }\n }\n }\n out.push(String.fromCharCode(0xFFFD))\n ++i\n }\n\n return out.join('')\n }\n\n static _checkContinuation (uint8array, start, checkLength) {\n const array = uint8array\n if (start + checkLength < array.length) {\n while (checkLength--) {\n if ((array[++start] & 0xC0) !== 0x80) {\n return false\n }\n }\n return true\n } else {\n return false\n }\n }\n}\n","export const isBrowser = typeof window !== 'undefined'\n\nconst ua = isBrowser && navigator.userAgent.toLocaleLowerCase()\n\n// eslint-disable-next-line no-lookahead-lookbehind-regexp/no-lookahead-lookbehind-regexp\nexport const isSafari = isBrowser && /^((?!chrome|android).)*safari/.test(ua)\nexport const isFirefox = isBrowser && ua.includes('firefox')\nexport const isAndroid = isBrowser && ua.includes('android')\n","/* c8 ignore next 4 */\nexport { ExpGolomb } from './exp-golomb'\nexport { Logger } from './logger'\nexport { UTF8 } from './utf8'\nexport * from './env'\n\nexport function concatUint8Array (...arr) {\n arr = arr.filter(Boolean)\n const data = new Uint8Array(arr.reduce((p, c) => p + c.byteLength, 0))\n let prevLen = 0\n arr.forEach((d) => {\n data.set(d, prevLen)\n prevLen += d.byteLength\n })\n return data\n}\n\nexport const MAX_SIZE = Math.pow(2, 32)\n\nexport function readBig16 (data, i = 0) {\n return (data[i] << 8) + (data[i + 1] || 0)\n}\n\nexport function readBig24 (data, i = 0) {\n return (data[i] << 16) + (data[i + 1] << 8) + (data[i + 2] || 0)\n}\n\nexport function readBig32 (data, i = 0) {\n return (data[i] << 24 >>> 0) + (data[i + 1] << 16) + (data[i + 2] << 8) + (data[i + 3] || 0)\n}\n\nexport function readBig64 (data, i = 0) {\n return readBig32(data, i) * MAX_SIZE + readBig32(data, i + 4)\n}\n\nexport function getAvcCodec (codecs) {\n let codec = 'avc1.'\n let h\n for (let i = 0; i < 3; i++) {\n h = codecs[i].toString(16)\n if (h.length < 2) h = `0${h}`\n codec += h\n }\n return codec\n}\n\nexport function formatIV (arr) {\n let iv = ''\n arr.forEach(value => {\n iv += bufferToString(value)\n })\n if (iv.length <= 32) {\n const len = 32 - iv.length\n for (let i = 0; i < len; i++) {\n iv += '0'\n }\n }\n return iv\n}\n\nexport function parse (a) {\n if (!Array.isArray(a)) {\n const arr = []\n let value = ''\n for (let i = 0; i < a.length; i++) {\n if (i % 2) {\n value = a[i - 1] + a[i]\n arr.push(parseInt(value, 16))\n value = ''\n }\n }\n return arr\n }\n return a.map(item => { return parseInt(item, 16) })\n}\nfunction bufferToString (value) {\n return ('0' + (Number(value).toString(16))).slice(-2).toUpperCase()\n}\n\nexport function hashVal (str) {\n let hash = 0; let i; let chr\n if (str.length === 0) return hash\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i)\n hash = ((hash << 5) - hash) + chr\n hash |= 0\n }\n return hash\n}\n","import { readBig32 } from '../utils'\n\nexport class NALu {\n static parseAnnexB (data) {\n const len = data.length\n let start = 2\n let end = 0\n while (data[start] !== null && data[start] !== undefined && data[start] !== 1) {\n start++\n }\n start++\n end = start + 2\n\n if (end >= len) return []\n\n const units = []\n\n while (end < len) {\n switch (data[end]) {\n case 0:\n if (data[end - 1] !== 0) {\n end += 2\n break\n } else if (data[end - 2] !== 0) {\n end++\n break\n }\n\n if (start !== end - 2) units.push(data.subarray(start, end - 2))\n\n do {\n end++\n } while (data[end] !== 1 && end < len)\n start = end + 1\n end = start + 2\n break\n case 1:\n if (data[end - 1] !== 0 || data[end - 2] !== 0) {\n end += 3\n break\n }\n if (start !== end - 2) units.push(data.subarray(start, end - 2))\n start = end + 1\n end = start + 2\n break\n default:\n end += 3\n break\n }\n }\n\n if (start < len) units.push(data.subarray(start))\n\n return units\n }\n\n static parseAvcC (data, size = 4) {\n if (data.length < 4) return\n const dataLen = data.length\n const units = []\n\n let offset = 0\n let length\n while ((offset + size) < dataLen) {\n length = readBig32(data, offset)\n if (size === 3) length >>>= 8\n offset += size\n\n if (!length) continue\n if (offset + length > dataLen) {\n break\n }\n\n units.push(data.subarray(offset, offset + length))\n offset += length\n }\n\n return units\n }\n\n static parseSEI (unit, isHevc) {\n const len = unit.length\n let i = isHevc ? 2 : 1\n let type = 0\n let size = 0\n let uuid = ''\n\n while (unit[i] === 255) {\n type += 255\n i++\n }\n\n type += unit[i++]\n\n while (unit[i] === 255) {\n size += 255\n i++\n }\n size += unit[i++]\n\n if (type === 5 && len > i + 16) {\n for (let j = 0; j < 16; j++) {\n uuid += unit[i].toString(16)\n i++\n }\n }\n\n return {\n payload: unit.subarray(i), type, size, uuid\n }\n }\n\n static removeEPB (uint) {\n const length = uint.byteLength\n const emulationPreventionBytesPositions = []\n let i = 1\n\n while (i < length - 2) {\n if (uint[i] === 0 && uint[i + 1] === 0 && uint[i + 2] === 0x03) {\n emulationPreventionBytesPositions.push(i + 2)\n i += 2\n } else {\n i++\n }\n }\n\n if (!emulationPreventionBytesPositions.length) return uint\n\n const newLength = length - emulationPreventionBytesPositions.length\n const newData = new Uint8Array(newLength)\n\n let sourceIndex = 0\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === emulationPreventionBytesPositions[0]) {\n sourceIndex++\n emulationPreventionBytesPositions.shift()\n }\n newData[i] = uint[sourceIndex]\n }\n\n return newData\n }\n}\n","import { NALu } from './nalu'\nimport { ExpGolomb, getAvcCodec } from '../utils'\n\nexport class AVC {\n static parseAVCDecoderConfigurationRecord (data) {\n if (data.length < 7) return\n const nalUnitSize = (data[4] & 3) + 1\n\n let spsParsed\n const spsArr = []\n const ppsArr = []\n\n let offset = 6\n const spsCount = data[5] & 0x1f\n let spsSize\n for (let i = 0; i < spsCount; i++) {\n spsSize = (data[offset] << 8) | data[offset + 1]\n offset += 2\n if (!spsSize) continue\n\n const sps = data.subarray(offset, offset + spsSize)\n offset += spsSize\n spsArr.push(sps)\n\n if (!spsParsed) {\n spsParsed = AVC.parseSPS(NALu.removeEPB(sps))\n }\n }\n\n const ppsCount = data[offset]\n offset++\n let ppsSize\n for (let i = 0; i < ppsCount; i++) {\n ppsSize = (data[offset] << 8) | data[offset + 1]\n offset += 2\n if (!ppsSize) continue\n ppsArr.push(data.subarray(offset, offset + ppsSize))\n offset += ppsSize\n }\n\n return {\n sps: spsParsed,\n spsArr,\n ppsArr,\n nalUnitSize\n }\n }\n\n static parseSPS (unit) {\n const eg = new ExpGolomb(unit)\n eg.readUByte()\n\n const profileIdc = eg.readUByte()\n const profileCompatibility = eg.readUByte()\n const levelIdc = eg.readUByte()\n eg.skipUEG()\n\n let chromaFormat = 420\n if (\n profileIdc === 100 ||\n profileIdc === 110 ||\n profileIdc === 122 ||\n profileIdc === 244 ||\n profileIdc === 44 ||\n profileIdc === 83 ||\n profileIdc === 86 ||\n profileIdc === 118 ||\n profileIdc === 128 ||\n profileIdc === 138 ||\n profileIdc === 144\n ) {\n const chromaFormatIdc = eg.readUEG()\n if (chromaFormatIdc <= 3) chromaFormat = [0, 420, 422, 444][chromaFormatIdc]\n if (chromaFormatIdc === 3) eg.skipBits(1)\n eg.skipUEG()\n eg.skipUEG()\n eg.skipBits(1)\n if (eg.readBool()) {\n const scalingListCount = chromaFormatIdc !== 3 ? 8 : 12\n for (let i = 0; i < scalingListCount; i++) {\n if (eg.readBool()) {\n if (i < 6) {\n eg.skipScalingList(16)\n } else {\n eg.skipScalingList(64)\n }\n }\n }\n }\n }\n\n eg.skipUEG()\n const picOrderCntType = eg.readUEG()\n if (picOrderCntType === 0) {\n eg.readUEG()\n } else if (picOrderCntType === 1) {\n eg.skipBits(1)\n eg.skipUEG()\n eg.skipUEG()\n const numRefFramesInPicOrderCntCycle = eg.readUEG()\n for (let i = 0; i < numRefFramesInPicOrderCntCycle; i++) {\n eg.skipUEG()\n }\n }\n\n eg.skipUEG()\n eg.skipBits(1)\n const picWidthInMbsMinus1 = eg.readUEG()\n const picHeightInMapUnitsMinus1 = eg.readUEG()\n const frameMbsOnlyFlag = eg.readBits(1)\n if (frameMbsOnlyFlag === 0) eg.skipBits(1)\n eg.skipBits(1)\n\n let frameCropLeftOffset = 0\n let frameCropRightOffset = 0\n let frameCropTopOffset = 0\n let frameCropBottomOffset = 0\n\n if (eg.readBool()) {\n frameCropLeftOffset = eg.readUEG()\n frameCropRightOffset = eg.readUEG()\n frameCropTopOffset = eg.readUEG()\n frameCropBottomOffset = eg.readUEG()\n }\n\n let sarRatio\n let fixedFrame\n let fpsNum\n let fpsDen\n let fps\n if (eg.readBool()) {\n if (eg.readBool()) {\n const aspectRatioIdc = eg.readUByte()\n switch (aspectRatioIdc) {\n case 1: sarRatio = [1, 1]; break\n case 2: sarRatio = [12, 11]; break\n case 3: sarRatio = [10, 11]; break\n case 4: sarRatio = [16, 11]; break\n case 5: sarRatio = [40, 33]; break\n case 6: sarRatio = [24, 11]; break\n case 7: sarRatio = [20, 11]; break\n case 8: sarRatio = [32, 11]; break\n case 9: sarRatio = [80, 33]; break\n case 10: sarRatio = [18, 11]; break\n case 11: sarRatio = [15, 11]; break\n case 12: sarRatio = [64, 33]; break\n case 13: sarRatio = [160, 99]; break\n case 14: sarRatio = [4, 3]; break\n case 15: sarRatio = [3, 2]; break\n case 16: sarRatio = [2, 1]; break\n case 255: {\n sarRatio = [\n (eg.readUByte() << 8) | eg.readUByte(),\n (eg.readUByte() << 8) | eg.readUByte()\n ]\n break\n }\n default:\n }\n }\n\n if (eg.readBool()) eg.readBool()\n\n if (eg.readBool()) {\n eg.readBits(4)\n if (eg.readBool()) eg.readBits(24)\n }\n\n if (eg.readBool()) {\n eg.readUEG()\n eg.readUEG()\n }\n\n if (eg.readBool()) {\n const numUnitsInTick = eg.readBits(32)\n const timeScale = eg.readBits(32)\n fixedFrame = eg.readBool()\n\n fpsNum = timeScale\n fpsDen = numUnitsInTick * 2\n fps = fpsNum / fpsDen\n }\n }\n\n return {\n codec: getAvcCodec(unit.subarray(1, 4)),\n profileIdc,\n profileCompatibility,\n levelIdc,\n chromaFormat,\n width: Math.ceil(\n (picWidthInMbsMinus1 + 1) * 16 -\n 2 * (frameCropLeftOffset + frameCropRightOffset)\n ),\n height:\n (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 -\n (frameMbsOnlyFlag ? 2 : 4) *\n (frameCropTopOffset + frameCropBottomOffset),\n sarRatio,\n fpsNum,\n fpsDen,\n fps,\n fixedFrame\n }\n }\n}\n","import { isFirefox, isAndroid } from '../utils'\n\nexport class AAC {\n static FREQ = [\n 96000,\n 88200,\n 64000,\n 48000,\n 44100,\n 32000,\n 24000,\n 22050,\n 16000,\n 12000,\n 11025,\n 8000,\n 7350\n ];\n\n static getRateIndexByRate (rate) {\n return AAC.FREQ.indexOf(rate)\n }\n\n static parseADTS (data, pts) {\n const len = data.length\n let i = 0\n\n while ((i + 2) < len) {\n if (data[i] === 0xff && (data[i + 1] & 0xf6) === 0xf0) {\n break\n }\n i++\n }\n\n if (i >= len) return\n\n const skip = i\n const frames = []\n const samplingFrequencyIndex = (data[i + 2] & 0x3c) >>> 2\n const sampleRate = AAC.FREQ[samplingFrequencyIndex]\n if (!sampleRate) throw new Error(`Invalid sampling index: ${samplingFrequencyIndex}`)\n const objectType = ((data[i + 2] & 0xc0) >>> 6) + 1\n const channelCount = ((data[i + 2] & 1) << 2) | ((data[i + 3] & 0xc0) >>> 6)\n const { config, codec } = AAC._getConfig(samplingFrequencyIndex, channelCount, objectType)\n\n let protectionSkipBytes\n let frameLength\n let frameIndex = 0\n const duration = AAC.getFrameDuration(sampleRate)\n\n while ((i + 7) < len) {\n if ((data[i] !== 0xff) || (data[i + 1] & 0xF6) !== 0xf0) {\n i++\n continue\n }\n\n frameLength = ((data[i + 3] & 0x03) << 11) | (data[i + 4] << 3) | ((data[i + 5] & 0xe0) >> 5)\n if ((len - i) < frameLength) break\n\n protectionSkipBytes = (~data[i + 1] & 0x01) * 2\n frames.push({\n pts: pts + frameIndex * duration,\n data: data.subarray(i + 7 + protectionSkipBytes, i + frameLength)\n })\n\n frameIndex++\n i += frameLength\n }\n\n return {\n skip,\n remaining: i >= len ? undefined : data.subarray(i),\n frames,\n samplingFrequencyIndex,\n sampleRate,\n objectType,\n channelCount,\n codec,\n config,\n originCodec: `mp4a.40.${objectType}`\n }\n }\n\n static parseAudioSpecificConfig (data) {\n if (!data.length) return\n const objectType = data[0] >>> 3\n const samplingFrequencyIndex = ((data[0] & 0x07) << 1) | (data[1] >>> 7)\n const channelCount = (data[1] & 0x78) >>> 3\n const sampleRate = AAC.FREQ[samplingFrequencyIndex]\n // play as no audio track stream\n if (!sampleRate) return\n const { config, codec } = AAC._getConfig(samplingFrequencyIndex, channelCount, objectType)\n\n return {\n samplingFrequencyIndex,\n sampleRate,\n objectType,\n channelCount,\n config,\n codec,\n originCodec: `mp4a.40.${objectType}`\n }\n }\n\n static getFrameDuration (rate, timescale = 90000) {\n return 1024 * timescale / rate\n }\n\n static _getConfig (samplingIndex, channelCount, originObjectType) {\n const config = []\n let objectType\n let extensionSamplingIndex\n if (isFirefox) {\n if (samplingIndex >= 6) { // use SBR (HE-AAC)\n objectType = 5\n extensionSamplingIndex = samplingIndex - 3\n } else { // use LC-AAC\n objectType = 2\n extensionSamplingIndex = samplingIndex\n }\n } else if (isAndroid) { // use LC-AAC\n objectType = 2\n extensionSamplingIndex = samplingIndex\n } else { // use HE-AAC\n objectType = (originObjectType === 2 || originObjectType === 5) ? originObjectType : 5\n extensionSamplingIndex = samplingIndex\n\n if (samplingIndex >= 6) {\n extensionSamplingIndex = samplingIndex - 3\n } else if (channelCount === 1) { // Mono channel, use LC-AAC\n objectType = 2\n extensionSamplingIndex = samplingIndex\n }\n }\n\n config[0] = objectType << 3\n config[0] |= (samplingIndex & 0x0e) >> 1\n config[1] = (samplingIndex & 0x01) << 7\n config[1] |= channelCount << 3\n if (objectType === 5) {\n config[1] |= ((extensionSamplingIndex & 0x0e) >> 1)\n config[2] = (extensionSamplingIndex & 0x01) << 7\n config[2] |= (2 << 2)\n config[3] = 0\n }\n\n return {\n config,\n codec: `mp4a.40.${objectType}`\n }\n }\n\n /* c8 ignore next 65 */\n static getSilentFrame (codec, channelCount) {\n switch (codec) {\n case 'mp4a.40.2':\n if (channelCount === 1) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80])\n } if (channelCount === 2) {\n return new Uint8Array([\n 0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80\n ])\n } if (channelCount === 3) {\n return new Uint8Array([\n 0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64,\n 0x00, 0x8e\n ])\n } if (channelCount === 4) {\n return new Uint8Array([\n 0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64,\n 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38\n ])\n } if (channelCount === 5) {\n return new Uint8Array([\n 0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64,\n 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38\n ])\n } if (channelCount === 6) {\n return new Uint8Array([\n 0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64,\n 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2,\n 0x00, 0x20, 0x08, 0xe0\n ])\n }\n break\n default:\n if (channelCount === 1) {\n return new Uint8Array([\n 0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0,\n 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5e\n ])\n } if (channelCount === 2) {\n return new Uint8Array([\n 0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0,\n 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5e\n ])\n } if (channelCount === 3) {\n return new Uint8Array([\n 0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0,\n 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n 0x5a, 0x5e\n ])\n }\n break\n }\n }\n}\n","import { NALu } from './nalu'\nimport { ExpGolomb } from '../utils'\n\nexport class HEVC {\n static parseHEVCDecoderConfigurationRecord (data, hvcC = {}) {\n if (data.length < 23) return\n hvcC = hvcC || {}\n const nalUnitSize = (data[21] & 3) + 1\n\n let vpsParsed\n let spsParsed\n const spsArr = []\n const ppsArr = []\n const vpsArr = []\n\n let offset = 23\n const numOfArrays = data[22]\n\n let nalUnitType\n let numNalus\n let nalSize\n for (let i = 0; i < numOfArrays; i++) {\n nalUnitType = data[offset] & 0x3f\n numNalus = (data[offset + 1] << 8) | data[offset + 2]\n\n offset += 3\n\n for (let j = 0; j < numNalus; j++) {\n nalSize = (data[offset] << 8) | data[offset + 1]\n offset += 2\n if (!nalSize) continue\n switch (nalUnitType) {\n case 32: {\n const vps = data.subarray(offset, offset + nalSize)\n if (!vpsParsed) vpsParsed = HEVC.parseVPS(NALu.removeEPB(vps), hvcC)\n vpsArr.push(vps)\n }\n break\n case 33: {\n const sps = data.subarray(offset, offset + nalSize)\n if (!spsParsed) spsParsed = HEVC.parseSPS(NALu.removeEPB(sps), hvcC)\n spsArr.push(sps)\n }\n break\n case 34:\n ppsArr.push(data.subarray(offset, offset + nalSize))\n break\n default:\n }\n\n offset += nalSize\n }\n }\n\n return {\n hvcC,\n sps: spsParsed,\n spsArr,\n ppsArr,\n vpsArr,\n nalUnitSize\n }\n }\n\n static parseVPS (unit, hvcC) {\n hvcC = hvcC || {}\n const eg = new ExpGolomb(unit)\n eg.readUByte()\n eg.readUByte()\n\n eg.readBits(12)\n const vpsMaxSubLayersMinus1 = eg.readBits(3)\n hvcC.numTemporalLayers = Math.max(hvcC.numTemporalLayers || 0, vpsMaxSubLayersMinus1 + 1)\n eg.readBits(17)\n HEVC._parseProfileTierLevel(eg, vpsMaxSubLayersMinus1, hvcC)\n\n return hvcC\n }\n\n static parseSPS (unit, hvcC = {}) {\n hvcC = hvcC || {}\n const eg = new ExpGolomb(unit)\n eg.readUByte()\n eg.readUByte()\n\n eg.readBits(4)\n const spsMaxSubLayersMinus1 = eg.readBits(3)\n hvcC.numTemporalLayers = Math.max(spsMaxSubLayersMinus1 + 1, hvcC.numTemporalLayers || 0)\n hvcC.temporalIdNested = eg.readBits(1)\n HEVC._parseProfileTierLevel(eg, spsMaxSubLayersMinus1, hvcC)\n\n eg.readUEG() // sps_seq_parameter_set_id\n\n const chromaFormatIdc = hvcC.chromaFormatIdc = eg.readUEG()\n let chromaFormat = 420\n if (chromaFormatIdc <= 3) chromaFormat = [0, 420, 422, 444][chromaFormatIdc]\n\n let separateColourPlaneFlag = 0\n if (chromaFormatIdc === 3) {\n separateColourPlaneFlag = eg.readBits(1)\n }\n\n let width = eg.readUEG() // pic_width_in_luma_samples\n let height = eg.readUEG() // pic_height_in_luma_samples\n\n const conformanceWindowFlag = eg.readBits(1)\n\n let confWinLeftOffset\n let confWinRightOffset\n let confWinTopOffset\n let confWinBottomOffset\n if (conformanceWindowFlag === 1) {\n confWinLeftOffset = eg.readUEG() // conf_win_left_offset\n confWinRightOffset = eg.readUEG() // conf_win_right_offset\n confWinTopOffset = eg.readUEG() // conf_win_top_offset\n confWinBottomOffset = eg.readUEG() // conf_win_bottom_offset\n }\n\n hvcC.bitDepthLumaMinus8 = eg.readUEG() // bit_depth_luma_minus8\n hvcC.bitDepthChromaMinus8 = eg.readUEG() // bit_depth_chroma_minus8\n\n if (conformanceWindowFlag === 1) {\n const subWidthC = (((chromaFormatIdc === 1) || (chromaFormatIdc === 2)) && (separateColourPlaneFlag === 0)) ? 2 : 1\n const subHeightC = ((chromaFormatIdc === 1) && (separateColourPlaneFlag === 0)) ? 2 : 1\n width -= (subWidthC * (confWinRightOffset + confWinLeftOffset))\n height -= (subHeightC * (confWinBottomOffset + confWinTopOffset))\n }\n\n return {\n codec: 'hev1.1.6.L93.B0',\n width,\n height,\n chromaFormat,\n hvcC\n }\n }\n\n static _parseProfileTierLevel (eg, maxSubLayersMinus1, hvcC) {\n const generalTierFlag = hvcC.generalTierFlag || 0\n hvcC.generalProfileSpace = eg.readBits(2)\n hvcC.generalTierFlag = Math.max(eg.readBits(1), generalTierFlag)\n hvcC.generalProfileIdc = Math.max(eg.readBits(5), hvcC.generalProfileIdc || 0)\n hvcC.generalProfileCompatibilityFlags = eg.readBits(32)\n hvcC.generalConstraintIndicatorFlags = [eg.readBits(8), eg.readBits(8), eg.readBits(8), eg.readBits(8), eg.readBits(8), eg.readBits(8)]\n const generalLevelIdc = eg.readBits(8)\n if (generalTierFlag < hvcC.generalTierFlag) {\n hvcC.generalLevelIdc = generalLevelIdc\n } else {\n hvcC.generalLevelIdc = Math.max(generalLevelIdc, hvcC.generalLevelIdc || 0)\n }\n\n const subLayerProfilePresentFlag = []\n const subLayerLevelPresentFlag = []\n for (let j = 0; j < maxSubLayersMinus1; j++) {\n subLayerProfilePresentFlag[j] = eg.readBits(1)\n subLayerLevelPresentFlag[j] = eg.readBits(1)\n }\n\n if (maxSubLayersMinus1 > 0) {\n eg.readBits((8 - maxSubLayersMinus1) * 2)\n }\n\n for (let i = 0; i < maxSubLayersMinus1; i++) {\n if (subLayerProfilePresentFlag[i] !== 0) {\n eg.readBits(2)\n eg.readBits(1)\n eg.readBits(5)\n\n eg.readBits(16)\n eg.readBits(16)\n\n eg.readBits(4)\n\n eg.readBits(16)\n eg.readBits(16)\n eg.readBits(12)\n }\n if (subLayerLevelPresentFlag[i] !== 0) {\n eg.readBits(8)\n }\n }\n }\n}\n","import { AudioCodecType, AudioSample, WarningType } from '../model'\nimport { AAC } from '../codec'\nimport { isSafari } from '../utils'\n\nconst LARGE_AV_FIRST_FRAME_GAP = 500 // ms\nconst AUDIO_GAP_OVERLAP_THRESHOLD_COUNT = 3\nconst MAX_SILENT_FRAME_DURATION = 1000 // ms\nconst AUDIO_EXCETION_LOG_EMIT_DURATION = 5000 // 5s\nconst MAX_VIDEO_FRAME_DURATION = 1000 // ms\nconst MAX_DTS_DELTA_WITH_NEXT_CHUNK = 200 // ms\nconst VIDEO_EXCETION_LOG_EMIT_DURATION = 5000 // 5s\nconst TRACK_BREACKED_CHECK_TIME = 5\n\nexport class FlvFixer {\n constructor (videoTrack, audioTrack, metadataTrack) {\n this.videoTrack = videoTrack\n this.audioTrack = audioTrack\n this.metadataTrack = metadataTrack\n\n this._baseDts = -1\n this._baseDtsInited = false\n\n this._audioNextPts = undefined\n this._videoNextDts = undefined\n\n this._audioTimestampBreak = 0\n this._videoTimestampBreak = 0\n this._lastVideoDuration = 0\n\n this._lastAudioExceptionGapDot = -Infinity\n this._lastAudioExceptionOverlapDot = -Infinity\n this._lastAudioExceptionLargeGapDot = -Infinity\n\n this._lastVideoExceptionLargeGapDot = -Infinity\n this._lastVideoExceptionChunkFirstDtsDot = -Infinity\n }\n\n /**\n * @param {number} startTime 点播seek到的时间点\n * @param {boolean} discontinuity 是否换流\n * @param {boolean} contiguous 前后chunk时间戳是否连续\n */\n fix (startTime = 0, discontinuity = false, contiguous = true) {\n startTime = Math.round(startTime * 1000)\n const videoTrack = this.videoTrack\n const audioTrack = this.audioTrack\n\n if (discontinuity || !contiguous) {\n this._videoLastSample = null\n this._audioNextPts = undefined\n this._videoNextDts = undefined\n this._audioTimestampBreak = 0\n this._videoTimestampBreak = 0\n this._lastAudioExceptionGapDot = -Infinity\n this._lastAudioExceptionOverlapDot = -Infinity\n this._lastAudioExceptionLargeGapDot = -Infinity\n this._lastVideoExceptionLargeGapDot = -Infinity\n this._lastVideoExceptionChunkFirstDtsDot = -Infinity\n }\n\n if (discontinuity && !contiguous) {\n this._baseDtsInited = false\n }\n\n if (!this._baseDtsInited) {\n this._calculateBaseDts(audioTrack, videoTrack)\n }\n\n if (!contiguous && startTime) {\n this._audioNextPts = this._videoNextDts = startTime\n }\n\n const resetBaseDts = this._baseDtsInited &&\n (this._videoTimestampBreak || !this.videoTrack.exist()) &&\n (this._audioTimestampBreak || !this.audioTrack.exist())\n\n if (resetBaseDts) {\n this._resetBaseDtsWhenStreamBreaked()\n }\n\n this._fixAudio(audioTrack)\n\n this._fixVideo(videoTrack)\n\n if (this.metadataTrack.exist()) {\n const timescale = this.metadataTrack.timescale\n this.metadataTrack.seiSamples.forEach(s => {\n s.pts = s.originPts - this._baseDts\n s.time = Math.max(0, s.pts) / timescale\n })\n this.metadataTrack.flvScriptSamples.forEach(s => {\n s.pts = s.originPts - this._baseDts\n s.time = Math.max(0, s.pts) / timescale\n })\n }\n\n if (videoTrack.samples.length) {\n videoTrack.baseMediaDecodeTime = videoTrack.samples[0].dts\n }\n if (audioTrack.samples.length) {\n audioTrack.baseMediaDecodeTime = audioTrack.samples[0].pts * audioTrack.timescale / 1000\n }\n }\n\n _fixVideo (videoTrack) {\n const samples = videoTrack.samples\n\n if (!samples.length) return\n\n samples.forEach(x => {\n x.dts -= this._baseDts\n x.pts -= this._baseDts\n })\n\n let refSampleDurationInt\n if (videoTrack.fpsNum && videoTrack.fpsDen) {\n refSampleDurationInt = videoTrack.timescale * (videoTrack.fpsDen / videoTrack.fpsNum)\n } else if (videoTrack.length > 1) {\n const first = videoTrack.samples[0]\n const last = videoTrack.samples[samples.length - 1]\n refSampleDurationInt = Math.floor((last.dts - first.dts) / (samples.length - 1))\n } else {\n refSampleDurationInt = this._lastVideoDuration || 40\n }\n\n const lastSample = samples.pop()\n\n if (this._videoLastSample) {\n samples.unshift(this._videoLastSample)\n }\n\n this._videoLastSample = lastSample\n\n if (!samples.length) return\n\n if (this._videoNextDts === undefined) {\n const samp0 = samples[0]\n this._videoNextDts = samp0.dts\n }\n\n const len = samples.length\n let sampleDuration = 0\n const firstSample = samples[0]\n const vDelta = this._videoNextDts - firstSample.dts\n\n if (Math.abs(vDelta) > MAX_DTS_DELTA_WITH_NEXT_CHUNK) {\n // emit large delta of first sample with expect\n if (Math.abs(firstSample.dts - this._lastVideoExceptionChunkFirstDtsDot) > VIDEO_EXCETION_LOG_EMIT_DURATION) {\n this._lastVideoExceptionChunkFirstDtsDot = firstSample.dts\n\n videoTrack.warnings.push({\n type: WarningType.LARGE_VIDEO_GAP_BETWEEN_CHUNK,\n nextDts: this._videoNextDts,\n firstSampleDts: firstSample.dts,\n nextSampleDts: samples[1]?.dts,\n sampleDuration: vDelta\n })\n }\n\n // only video breaked\n if (this._videoTimestampBreak >= TRACK_BREACKED_CHECK_TIME) {\n this._videoNextDts = firstSample.dts\n this._videoTimestampBreak = 0\n } else {\n // resolve first frame only\n firstSample.dts += vDelta\n firstSample.pts += vDelta\n if (!this.audioTrack.exist()) {\n this._videoTimestampBreak = 1\n }\n }\n }\n\n for (let i = 0; i < len; i++) {\n const dts = samples[i].dts\n const nextSample = samples[i + 1]\n\n if (i < len - 1) {\n sampleDuration = nextSample.dts - dts\n } else if (lastSample) {\n sampleDuration = lastSample.dts - dts\n } else {\n sampleDuration = refSampleDurationInt\n }\n\n if (sampleDuration > MAX_VIDEO_FRAME_DURATION || sampleDuration < 0) {\n this._videoTimestampBreak++\n // emit stream breaked\n if (Math.abs(dts - this._lastVideoExceptionLargeGapDot) > VIDEO_EXCETION_LOG_EMIT_DURATION) {\n this._lastVideoExceptionLargeGapDot = dts\n videoTrack.warnings.push({\n type: WarningType.LARGE_VIDEO_GAP,\n time: dts / videoTrack.timescale,\n dts,\n originDts: samples[i].originDts,\n nextDts: this._videoNextDts,\n sampleDuration,\n refSampleDuration: refSampleDurationInt\n })\n }\n\n sampleDuration = refSampleDurationInt\n }\n\n samples[i].duration = sampleDuration\n this._videoNextDts += sampleDuration\n this._lastVideoDuration = sampleDuration\n }\n }\n\n _fixAudio (audioTrack) {\n const samples = audioTrack.samples\n if (!samples.length) return\n\n // offset origin timestamp\n samples.forEach(x => {\n x.dts = x.pts -= this._baseDts\n })\n\n this._doFixAudioInternal(audioTrack, samples, 1000)\n }\n\n _calculateBaseDts (audioTrack, videoTrack) {\n const audioSamps = audioTrack.samples\n const videoSamps = videoTrack.samples\n\n if (!audioSamps.length && !videoSamps.length) {\n return false\n }\n\n let audioBasePts = Infinity\n let videoBaseDts = Infinity\n\n if (audioSamps.length) {\n audioTrack.baseDts = audioBasePts = audioSamps[0].pts\n }\n\n if (videoSamps.length) {\n videoTrack.baseDts = videoBaseDts = videoSamps[0].dts\n }\n\n this._baseDts = Math.min(audioBasePts, videoBaseDts)\n\n const delta = videoBaseDts - audioBasePts\n\n if (Number.isFinite(delta) && Math.abs(delta) > LARGE_AV_FIRST_FRAME_GAP) {\n videoTrack.warnings.push({\n type: WarningType.LARGE_AV_SHIFT,\n videoBaseDts,\n audioBasePts,\n baseDts: this._baseDts,\n delta\n })\n }\n\n this._baseDtsInited = true\n return true\n }\n\n _resetBaseDtsWhenStreamBreaked () {\n /**\n * timestamp breaked\n * _audioNextDts\n * ---------------------|\n * (_baseDts) _videoNextDts\n * ----------------------|\n * <----------------\n * nextVideo.dts\n * ----------------------------------------|\n * nextAudio.dts\n * ---------------------------------------|\n */\n\n // calc baseDts base on new samples\n const calc = this._calculateBaseDts(this.audioTrack, this.videoTrack)\n\n if (!calc) return\n\n // consider the expect dts for next frame\n if (!this.audioTrack.exist()){\n this._baseDts -= this._videoNextDts\n } else if (!this.videoTrack.exist()){\n this._baseDts -= this._audioNextPts\n } else {\n this._baseDts -= Math.min(this._audioNextPts, this._videoNextDts)\n }\n this._videoTimestampBreak = 0\n this._audioTimestampBreak = 0\n }\n\n _doFixAudioInternal (audioTrack, samples, timescale) {\n if (!audioTrack.sampleDuration) {\n audioTrack.sampleDuration = audioTrack.codecType === AudioCodecType.AAC\n ? AAC.getFrameDuration(audioTrack.timescale, timescale)\n : this._getG711Duration(audioTrack)\n }\n const refSampleDuration = audioTrack.sampleDuration\n\n const sampleDurationInSampleRate = audioTrack.codecType === AudioCodecType.AAC ? 1024 : refSampleDuration * audioTrack.timescale / 1000\n\n if (this._audioNextPts === undefined) {\n const samp0 = samples[0]\n this._audioNextPts = samp0.pts\n }\n\n for (let i = 0; i < samples.length; i++) {\n let nextPts = this._audioNextPts\n const sample = samples[i]\n let delta = sample.pts - nextPts\n\n // only audio breaked\n if (i === 0 && this._audioTimestampBreak >= TRACK_BREACKED_CHECK_TIME) {\n nextPts = this._audioNextPts = sample.dts\n delta = 0\n this._audioTimestampBreak = 0\n }\n\n // fill frames\n // delta >= 3 * refSampleDurationInt\n // delta <= 500s\n if (!this._audioTimestampBreak && delta >= AUDIO_GAP_OVERLAP_THRESHOLD_COUNT * refSampleDuration && delta <= MAX_SILENT_FRAME_DURATION && !isSafari) {\n const silentFrame = this._getSilentFrame(audioTrack) || samples[0].data.subarray()\n const count = Math.floor(delta / refSampleDuration)\n\n if (Math.abs(sample.pts - this._lastAudioExceptionGapDot) > AUDIO_EXCETION_LOG_EMIT_DURATION) {\n this._lastAudioExceptionGapDot = sample.pts\n audioTrack.warnings.push({\n type: WarningType.AUDIO_FILLED,\n pts: sample.pts,\n originPts: sample.originPts,\n count,\n nextPts,\n refSampleDuration\n })\n }\n\n for (let j = 0; j < count; j++) {\n const silentSample = new AudioSample(Math.floor(this._audioNextPts + refSampleDuration) - Math.floor(this._audioNextPts), silentFrame, sampleDurationInSampleRate)\n silentSample.originPts = Math.floor(this._baseDts + nextPts)\n samples.splice(i, 0, silentSample)\n this._audioNextPts += refSampleDuration\n i++\n }\n\n i--\n // delta <= -3 * refSampleDurationInt\n // delta >= -500ms\n } else if (delta <= -AUDIO_GAP_OVERLAP_THRESHOLD_COUNT * refSampleDuration && delta >= -1 * MAX_SILENT_FRAME_DURATION) {\n // need discard frames\n if (Math.abs(sample.pts - this._lastAudioExceptionOverlapDot) > AUDIO_EXCETION_LOG_EMIT_DURATION) {\n this._lastAudioExceptionOverlapDot = sample.pts\n\n audioTrack.warnings.push({\n type: WarningType.AUDIO_DROPPED,\n pts: sample.pts,\n originPts: sample.originPts,\n nextPts,\n refSampleDuration\n })\n }\n samples.splice(i, 1)\n i--\n } else {\n if (Math.abs(delta) > MAX_SILENT_FRAME_DURATION) {\n this._audioTimestampBreak++\n\n if (Math.abs(sample.pts - this._lastAudioExceptionLargeGapDot) > AUDIO_EXCETION_LOG_EMIT_DURATION) {\n this._lastAudioExceptionLargeGapDot = sample.pts\n audioTrack.warnings.push({\n type: WarningType.LARGE_AUDIO_GAP,\n time: sample.pts / 1000,\n pts: sample.pts,\n originPts: sample.originPts,\n nextPts,\n sampleDuration: delta,\n refSampleDuration\n })\n }\n }\n\n sample.dts = sample.pts = nextPts\n sample.duration = sampleDurationInSampleRate\n this._audioNextPts += refSampleDuration\n }\n }\n }\n\n _getG711Duration (track) {\n const { sampleSize, channelCount, sampleRate } = track\n const samp0 = track.samples[0]\n if (!samp0) return\n return samp0.data.byteLength * 2 / channelCount / (sampleSize / 8) / sampleRate * 1000\n }\n\n _getSilentFrame (track) {\n if (track.codecType === AudioCodecType.AAC) return AAC.getSilentFrame(track.codec, track.channelCount)\n return new Uint8Array(8 * track.sampleDuration * track.channelCount)\n }\n}\n","import { UTF8 } from '../utils'\n\nexport class AMF {\n static parse (data) {\n if (data.length < 3) return\n\n const ret = {}\n const name = AMF._parseValue(new DataView(data.buffer, data.byteOffset, data.byteLength))\n const value = AMF._parseValue(new DataView(data.buffer, data.byteOffset + name.size, data.byteLength - name.size))\n ret[name.data] = value.data\n\n return ret\n }\n\n static _parseValue (view) {\n const dataLen = view.byteLength\n const type = view.getUint8(0)\n let offset = 1\n let isEnd = false\n let value\n\n switch (type) {\n case 0: // Number(Double) type\n value = view.getFloat64(1)\n offset += 8\n break\n case 1: { // Boolean type\n value = !!view.getUint8(1)\n offset += 1\n break\n }\n case 2: { // String type\n const { data, size } = AMF._parseString(new DataView(view.buffer, view.byteOffset + offset, view.byteLength - offset))\n value = data\n offset += size\n }\n break\n case 3: { // Object(s) type\n value = {}\n let terminal = 0\n if ((view.getUint32(dataLen - 4) & 0x00FFFFFF) === 9) {\n terminal = 3\n }\n while (offset < dataLen - 4) { // 4 === type(UI8) + ScriptDataObjectEnd(UI24)\n const { size, data, isEnd } = AMF._parseObject(new DataView(view.buffer, view.byteOffset + offset, view.byteLength - offset - terminal))\n if (isEnd) break\n value[data.name] = data.value\n offset += size\n }\n if (offset <= dataLen - 3) {\n const marker = view.getUint32(offset - 1) & 0x00FFFFFF\n if (marker === 9) offset += 3\n }\n }\n break\n case 8: { // ECMA array type (Mixed array)\n value = {}\n offset += 4 // ECMAArrayLength(UI32)\n let terminal = 0 // workaround for malformed MixedArrays which has missing ScriptDataObjectEnd\n if ((view.getUint32(dataLen - 4) & 0x00FFFFFF) === 9) {\n terminal = 3\n }\n while (offset < dataLen - 8) { // 8 === type(UI8) + ECMAArrayLength(UI32) + ScriptDataVariableEnd(UI24)\n const { size, data, isEnd } = AMF._parseObject(new DataView(view.buffer, view.byteOffset + offset, view.byteLength - offset - terminal))\n if (isEnd) break\n value[data.name] = data.value\n offset += size\n }\n if (offset <= dataLen - 3) {\n const marker = view.getUint32(offset - 1) & 0x00FFFFFF\n if (marker === 9) {\n offset += 3\n }\n }\n }\n break\n case 9: // ScriptDataObjectEnd\n value = undefined\n offset = 1\n isEnd = true\n break\n case 10: { // Strict array type\n value = []\n const strictArrayLength = view.getUint32(1)\n offset += 4\n for (let i = 0; i < strictArrayLength; i++) {\n const { data, size } = AMF._parseValue(new DataView(view.buffer, view.byteOffset + offset, view.byteLength - offset))\n value.push(data)\n offset += size\n }\n }\n break\n case 11: { // Date type\n const timestamp = view.getFloat64(offset) + view.getInt16(offset + 8) * 60000\n value = new Date(timestamp)\n offset += 10\n }\n break\n case 12: { // Long string type\n const length = view.getUint32(1)\n offset += 4\n value = ''\n if (length > 0) {\n value = UTF8.decode(new Uint8Array(view.buffer, view.byteOffset + offset, length))\n }\n offset += length\n }\n break\n default:\n offset = dataLen\n break\n }\n\n return {\n data: value,\n size: offset,\n isEnd\n }\n }\n\n static _parseString (view) {\n const length = view.getUint16(0)\n let data = ''\n if (length > 0) {\n data = UTF8.decode(new Uint8Array(view.buffer, view.byteOffset + 2, length))\n }\n\n return {\n data,\n size: 2 + length\n }\n }\n\n static _parseObject (view) {\n if (view.byteLength < 3) return\n\n const name = AMF._parseString(view)\n const value = AMF._parseValue(new DataView(view.buffer, view.byteOffset + name.size, view.byteLength - name.size))\n\n return {\n data: {\n name: name.data,\n value: value.data\n },\n size: name.size + value.size,\n isEnd: value.isEnd\n }\n }\n}\n","import { VideoTrack, AudioTrack, MetadataTrack, AudioSample, VideoSample, VideoCodecType, AudioCodecType, FlvScriptSample, SeiSample } from '../model'\nimport { FlvFixer } from './fixer'\nimport { concatUint8Array, Logger, readBig32 } from '../utils'\nimport { AAC, AVC, HEVC, NALu } from '../codec'\nimport { AMF } from './amf'\n\nconst logger = new Logger('FlvDemuxer')\n\n/**\n * @typedef {Object} DemuxResult\n * @property {VideoTrack} videoTrack\n * @property {AudioTrack} audioTrack\n * @property {MetadataTrack} metadataTrack\n */\n\nexport class FlvDemuxer {\n _headerParsed = false\n _remainingData = null\n _gopId = 0\n _needAddMetaBeforeKeyFrameNal = true // 标识H265流中关键帧Nal之前是否需要插入vps、sps、pps Nal\n\n static AUDIO_RATE = [5500, 11000, 22000, 44000]\n\n /**\n * @param {VideoTrack} [videoTrack]\n * @param {AudioTrack} [audioTrack]\n * @param {MetadataTrack} [metadataTrack]\n */\n constructor (videoTrack, audioTrack, metadataTrack) {\n this.videoTrack = videoTrack || new VideoTrack()\n this.audioTrack = audioTrack || new AudioTrack()\n this.metadataTrack = metadataTrack || new MetadataTrack()\n this._fixer = new FlvFixer(this.videoTrack, this.audioTrack, this.metadataTrack)\n }\n\n /**\n * @param {Uint8Array} data\n * @param {boolean} [discontinuity=false]\n * @param {boolean} [contiguous=true]\n * @returns {DemuxResult}\n */\n demux (data, discontinuity = false, contiguous = true) {\n const { audioTrack, videoTrack, metadataTrack } = this\n\n if (discontinuity || !contiguous) {\n this._remainingData = null\n this._headerParsed = false\n }\n\n if (discontinuity) {\n videoTrack.reset()\n audioTrack.reset()\n metadataTrack.reset()\n } else {\n videoTrack.samples = []\n audioTrack.samples = []\n metadataTrack.seiSamples = []\n metadataTrack.flvScriptSamples = []\n videoTrack.warnings = []\n audioTrack.warnings = []\n\n if (this._remainingData) {\n data = concatUint8Array(this._remainingData, data)\n this._remainingData = null\n }\n }\n\n if (!data.length) {\n return {\n videoTrack,\n audioTrack,\n metadataTrack\n }\n }\n\n let offset = 0\n if (!this._headerParsed) {\n if (!FlvDemuxer.probe(data)) {\n throw new Error('Invalid flv file')\n }\n audioTrack.present = ((data[4] & 4) >>> 2) !== 0\n videoTrack.present = (data[4] & 1) !== 0\n this._headerParsed = true\n offset = readBig32(data, 5) + 4 // skip prev tag size\n }\n\n const dataLen = data.length\n\n let tagType\n let dataSize\n let timestamp\n let bodyData\n let prevTagSize\n while ((offset + 15) < dataLen) { // header and prev tag size\n tagType = data[offset]\n dataSize = (data[offset + 1] << 16) | (data[offset + 2] << 8) | data[offset + 3]\n if (offset + 15 + dataSize > dataLen) break\n timestamp = (\n (data[offset + 7] << 24 >>> 0) +\n (data[offset + 4] << 16) +\n (data[offset + 5] << 8) +\n data[offset + 6]\n )\n\n offset += 11\n bodyData = data.subarray(offset, offset + dataSize)\n if (tagType === 8) {\n this._parseAudio(bodyData, timestamp)\n } else if (tagType === 9) {\n this._parseVideo(bodyData, timestamp)\n } else if (tagType === 18) {\n this._parseScript(bodyData, timestamp)\n } else {\n logger.warn(`Invalid tag type: ${tagType}`)\n }\n\n offset += dataSize\n prevTagSize = readBig32(data, offset)\n if (prevTagSize !== 11 + dataSize) {\n logger.warn(`Invalid PrevTagSize ${prevTagSize} (${11 + dataSize})`)\n }\n\n offset += 4\n }\n\n if (offset < dataLen) {\n this._remainingData = data.subarray(offset)\n }\n\n audioTrack.formatTimescale = videoTrack.formatTimescale = videoTrack.timescale = metadataTrack.timescale = 1000\n audioTrack.timescale = audioTrack.sampleRate || 0\n\n if (!audioTrack.exist() && audioTrack.hasSample()) {\n audioTrack.reset()\n }\n if (!videoTrack.exist() && videoTrack.hasSample()) {\n videoTrack.reset()\n }\n\n return {\n videoTrack,\n audioTrack,\n metadataTrack\n }\n }\n\n /**\n * @param {number} [startTime=0]\n * @param {boolean} [discontinuity=false]\n * @param {boolean} [contiguous=true]\n * @returns {DemuxResult}\n */\n fix (startTime, discontinuity, contiguous) {\n this._fixer.fix(startTime, discontinuity, contiguous)\n return {\n videoTrack: this.videoTrack,\n audioTrack: this.audioTrack,\n metadataTrack: this.metadataTrack\n }\n }\n\n /**\n * @param {Uint8Array} data\n * @param {boolean} [discontinuity=false]\n * @param {boolean} [contiguous=true]\n * @param {number} [startTime=0]\n * @returns {DemuxResult}\n */\n demuxAndFix (data, discontinuity, contiguous, startTime) {\n this.demux(data, discontinuity, contiguous)\n return this.fix(startTime, discontinuity, contiguous)\n }\n\n /**\n * @param { Uint8Array } data\n * @returns {boolean}\n */\n static probe (data) {\n if (data[0] !== 0x46 || data[1] !== 0x4C || data[2] !== 0x56 || data[3] !== 0x01) {\n return false\n }\n return readBig32(data, 5) >= 9\n }\n\n _parseAudio (data, pts) {\n if (!data.length) return\n\n const format = (data[0] & 0xf0) >>> 4\n const track = this.audioTrack\n\n if (\n format !== 10 && // AAC\n format !== 7 && // G.711 A-law logarithmic PCM\n format !== 8 // G.711 mu-law logarithmic PCM\n ) {\n logger.warn(`Unsupported sound format: ${format}`)\n track.reset()\n return\n }\n\n if (format !== 10) {\n const soundRate = (data[0] & 0x0c) >> 2\n const soundSize = (data[0] & 0x02) >> 1\n const soundType = (data[0] & 0x01)\n track.sampleRate = FlvDemuxer.AUDIO_RATE[soundRate]\n track.sampleSize = soundSize ? 16 : 8\n track.channelCount = soundType + 1\n }\n\n if (format === 10) {\n this._parseAac(data, pts)\n } else {\n this._parseG711(data, pts, format)\n }\n }\n\n _parseG711 (data, pts, format) {\n const track = this.audioTrack\n track.codecType = format === 7 ? AudioCodecType.G711PCMA : AudioCodecType.G711PCMU\n track.sampleRate = 8000\n track.codec = track.codecType\n track.samples.push(new AudioSample(pts, data.subarray(1)))\n }\n\n _parseAac (data, pts) {\n const track = this.audioTrack\n track.codecType = AudioCodecType.AAC\n\n if (data[1] === 0) { // AACPacketType\n const ret = AAC.parseAudioSpecificConfig(data.subarray(2))\n if (ret) {\n track.codec = ret.codec\n track.channelCount = ret.channelCount\n track.sampleRate = ret.sampleRate\n track.config = ret.config\n track.objectType = ret.objectType\n track.sampleRateIndex = ret.samplingFrequencyIndex\n } else {\n track.reset()\n logger.warn('Cannot parse AudioSpecificConfig', data)\n }\n } else if (data[1] === 1) { // Raw AAC frame data\n if (pts === undefined || pts === null) return\n track.samples.push(new AudioSample(pts, data.subarray(2)))\n } else {\n logger.warn(`Unknown AACPacketType: ${data[1]}`)\n }\n }\n\n _parseVideo (data, dts) {\n if (data.length < 6) return\n\n const frameType = (data[0] & 0xf0) >>> 4\n const codecId = data[0] & 0x0f\n\n const track = this.videoTrack\n\n if (\n codecId !== 7 && // AVC\n codecId !== 12 // HEVC\n ) {\n track.reset()\n logger.warn(`Unsupported codecId: ${codecId}`)\n return\n }\n\n const isHevc = codecId === 12\n track.codecType = isHevc ? VideoCodecType.HEVC : VideoCodecType.AVC\n\n const packetType = data[1]\n const cts = (((data[2] << 16) | (data[3] << 8) | (data[4])) << 8) >> 8\n\n if (packetType === 0) { // DecoderConfigurationRecord\n const configData = data.subarray(5)\n const ret = isHevc\n ? HEVC.parseHEVCDecoderConfigurationRecord(configData)\n : AVC.parseAVCDecoderConfigurationRecord(configData)\n if (ret) {\n const { hvcC, sps, ppsArr, spsArr, vpsArr, nalUnitSize } = ret\n if (hvcC) {\n track.hvcC = track.hvcC || hvcC\n }\n if (sps) {\n track.codec = sps.codec\n track.width = sps.width\n track.height = sps.height\n track.sarRatio = sps.sarRatio\n track.fpsNum = sps.fpsNum\n track.fpsDen = sps.fpsDen\n }\n if (spsArr.length) track.sps = spsArr\n if (ppsArr.length) track.pps = ppsArr\n if (vpsArr && vpsArr.length) track.vps = vpsArr\n if (nalUnitSize) track.nalUnitSize = nalUnitSize\n } else {\n logger.warn(`Cannot parse ${isHevc ? 'HEVC' : 'AVC'}DecoderConfigurationRecord`, data)\n }\n } else if (packetType === 1) { // One or more NALUs\n let units = NALu.parseAvcC(data.subarray(5), track.nalUnitSize)\n\n units = this._checkAddMetaNalToUnits(isHevc, units, track)\n\n if (units && units.length) {\n const sample = new VideoSample(dts + cts, dts, units)\n if (frameType === 1) {\n sample.setToKeyframe()\n }\n track.samples.push(sample)\n\n units.forEach(unit => {\n const type = isHevc ? (unit[0] >>> 1) & 0x3f : unit[0] & 0x1f\n switch (type) {\n case 5: // IDR\n case 16: // HEVC BLA_W_LP\n case 17: // HEVC BLA_W_RADL\n case 18: // HEVC BLA_N_LP\n case 19: // HEVC IDR_W_RADL\n case 20: // HEVC IDR_N_LP\n case 21: // HEVC CRA_NUT\n case 22: // HEVC RSV_IRAP_VCL22\n case 23: // HEVC RSV_IRAP_VCL23\n if ((!isHevc && type !== 5) || (isHevc && type === 5)) break\n sample.setToKeyframe()\n break\n case 6: // SEI\n case 39: // HEVC PREFIX_SEI\n case 40: // HEVC SUFFIX_SEI\n if ((!isHevc && type !== 6) || (isHevc && type === 6)) break\n this.metadataTrack.seiSamples.push(new SeiSample(\n NALu.parseSEI(NALu.removeEPB(unit), isHevc),\n dts + cts\n ))\n break\n default:\n }\n })\n\n if (sample.keyframe) {\n this._gopId++\n }\n sample.gopId = this._gopId\n } else {\n logger.warn('Cannot parse NALUs', data)\n }\n } else if (packetType === 2) {\n // AVC end of sequence, Empty\n } else {\n logger.warn(`Unknown AVCPacketType: ${packetType}`)\n }\n }\n\n _checkAddMetaNalToUnits (hevc, units, track) {\n if (!hevc || !this._needAddMetaBeforeKeyFrameNal) {\n this._needAddMetaBeforeKeyFrameNal = false\n return units\n }\n\n const nalTypes = units.map(x => (x[0] >>> 1) & 0x3f)\n\n if (nalTypes.includes(32)) {\n this._needAddMetaBeforeKeyFrameNal = false\n return units\n }\n\n units.unshift(track.pps[0])\n units.unshift(track.sps[0])\n units.unshift(track.vps[0])\n\n return units.filter(Boolean)\n }\n\n _parseScript (data, pts) {\n this.metadataTrack.flvScriptSamples.push(new FlvScriptSample(AMF.parse(data), pts))\n }\n}\n","import { TsFixer } from './fixer'\nimport { AVC, AAC, HEVC, NALu } from '../codec'\nimport { VideoSample, AudioSample, VideoCodecType, VideoTrack, AudioTrack, MetadataTrack, SeiSample } from '../model'\nimport { Logger, concatUint8Array } from '../utils'\n\nconst logger = new Logger('TsDemuxer')\n\nexport class TsDemuxer {\n _pmtId = -1\n _remainingPacketData = null\n _videoPesData = []\n _audioPesData = []\n _gopId = 0\n\n /**\n * @param {VideoTrack} [videoTrack]\n * @param {AudioTrack} [audioTrack]\n * @param {MetadataTrack} [metadataTrack]\n */\n constructor (videoTrack, audioTrack, metadataTrack) {\n this.videoTrack = videoTrack || new VideoTrack()\n this.audioTrack = audioTrack || new AudioTrack()\n this.metadataTrack = metadataTrack || new MetadataTrack()\n this._fixer = new TsFixer(this.videoTrack, this.audioTrack, this.metadataTrack)\n }\n\n /**\n * @param {Uint8Array} data\n * @param {boolean} [discontinuity=false]\n * @param {boolean} [contiguous=true]\n * @returns {import('../flv').DemuxResult}\n */\n demux (data, discontinuity = false, contiguous = true) {\n const { audioTrack, videoTrack, metadataTrack } = this\n\n if (discontinuity) {\n this._pmtId = -1\n videoTrack.reset()\n audioTrack.reset()\n metadataTrack.reset()\n }\n\n if (!contiguous || discontinuity) {\n this._remainingPacketData = null\n this._videoPesData = []\n this._audioPesData = []\n } else {\n videoTrack.samples = []\n audioTrack.samples = []\n metadataTrack.seiSamples = []\n videoTrack.warnings = []\n audioTrack.warnings = []\n\n if (this._remainingPacketData) {\n data = concatUint8Array(this._remainingPacketData, data)\n this._remainingPacketData = null\n }\n }\n\n let dataLen = data.length\n const remainingLength = dataLen % 188\n if (remainingLength) {\n this._remainingPacketData = data.subarray(dataLen - remainingLength)\n dataLen -= remainingLength\n }\n\n let videoPid = videoTrack.pid\n let audioPid = audioTrack.pid\n\n for (let start = 0; start < dataLen; start += 188) {\n if (data[start] !== 0x47) throw new Error('TS packet did not start with 0x47')\n const payloadUnitStartIndicator = !!(data[start + 1] & 0x40)\n const pid = ((data[start + 1] & 0x1f) << 8) + data[start + 2]\n const adaptationFiledControl = (data[start + 3] & 0x30) >> 4\n\n let offset\n if (adaptationFiledControl > 1) {\n offset = start + 5 + data[start + 4]\n if (offset === start + 188) continue\n } else {\n offset = start + 4\n }\n\n switch (pid) {\n case 0: // PAT\n if (payloadUnitStartIndicator) offset += data[offset] + 1\n this._pmtId = ((data[offset + 10] & 0x1f) << 8) | data[offset + 11]\n break\n case this._pmtId: {\n if (payloadUnitStartIndicator) offset += data[offset] + 1\n const tableEnd = offset + 3 + (((data[offset + 1] & 0x0f) << 8) | data[offset + 2]) - 4\n const programInfoLength = ((data[offset + 10] & 0x0f) << 8) | data[offset + 11]\n offset += 12 + programInfoLength\n\n while (offset < tableEnd) {\n const esPid = ((data[offset + 1] & 0x1f) << 8) | data[offset + 2]\n switch (data[offset]) {\n case 0x0f: // AAC ADTS\n audioTrack.pid = audioPid = esPid\n break\n case 0x1b: // AVC\n if (videoPid !== -1) break\n videoTrack.codecType = VideoCodecType.AVC\n videoTrack.pid = videoPid = esPid\n break\n case 0x24: // HEVC\n if (videoPid !== -1) break\n videoTrack.codecType = VideoCodecType.HEVC\n videoTrack.pid = videoPid = esPid\n break\n default:\n logger.warn(`Unsupported stream. type: ${data[offset]}, pid: ${esPid}`)\n }\n\n offset += (((data[offset + 3] & 0x0f) << 8) | data[offset + 4]) + 5\n }\n }\n break\n case videoPid:\n if (payloadUnitStartIndicator && this._videoPesData.length) {\n this._parseVideoData()\n }\n this._videoPesData.push(data.subarray(offset, start + 188))\n break\n case audioPid:\n if (payloadUnitStartIndicator && this._audioPesData.length) {\n this._parseAudioData()\n }\n this._audioPesData.push(data.subarray(offset, start + 188))\n break\n case 17:\n case 0x1fff:\n break\n default:\n logger.warn(`Unknown pid: ${pid}`)\n }\n }\n\n this._parseVideoData()\n this._parseAudioData()\n\n audioTrack.formatTimescale = videoTrack.formatTimescale = videoTrack.timescale = metadataTrack.timescale = 90000\n\n audioTrack.timescale = audioTrack.sampleRate || 0\n\n return {\n videoTrack,\n audioTrack,\n metadataTrack\n }\n }\n\n /**\n * @param {number} [startTime=0]\n * @param {boolean} [discontinuity=false]\n * @param {boolean} [contiguous=true]\n */\n fix (startTime, discontinuity, contiguous) {\n this._fixer.fix(startTime, discontinuity, contiguous)\n return {\n videoTrack: this.videoTrack,\n audioTrack: this.audioTrack,\n metadataTrack: this.metadataTrack\n }\n }\n\n /**\n * @param {Uint8Array} data\n * @param {boolean} [discontinuity=false]\n * @param {boolean} [contiguous=true]\n * @param {number} [startTime=0]\n */\n demuxAndFix (data, discontinuity, contiguous, startTime) {\n this.demux(data, discontinuity, contiguous)\n return this.fix(startTime, discontinuity, contiguous)\n }\n\n /**\n * @param { Uint8Array } data\n * @returns {boolean}\n */\n static probe (data) {\n if (!data.length) return false\n return data[0] === 0x47 && data[188] === 0x47 && data[376] === 0x47\n }\n\n _parseVideoData () {\n if (!this._videoPesData.length) return\n const pes = TsDemuxer._parsePES(concatUint8Array(...this._videoPesData))\n if (!pes) {\n logger.warn('Cannot parse video pes', this._videoPesData)\n return\n }\n\n const units = NALu.parseAnnexB(pes.data)\n if (units) {\n this._createVideoSample(units, pes.pts, pes.dts)\n } else {\n logger.warn('Cannot parse avc units', pes)\n }\n\n this._videoPesData = []\n }\n\n _createVideoSample (units, pts, dts) {\n if (!units.length) return\n const track = this.videoTrack\n const isHevc = track.codecType === VideoCodecType.HEVC\n\n const sample = new VideoSample(pts, dts)\n units.forEach((unit) => {\n const type = isHevc ? (unit[0] >>> 1) & 0x3f : unit[0] & 0x1f\n switch (type) {\n case 5: // IDR\n case 16: // HEVC BLA_W_LP\n case 17: // HEVC BLA_W_RADL\n case 18: // HEVC BLA_N_LP\n case 19: // HEVC IDR_W_RADL\n case 20: // HEVC IDR_N_LP\n case 21: // HEVC CRA_NUT\n case 22: // HEVC RSV_IRAP_VCL22\n case 23: // HEVC RSV_IRAP_VCL23\n if ((!isHevc && type !== 5) || (isHevc && type === 5)) break\n sample.setToKeyframe()\n this._gopId++\n break\n case 6: // SEI\n case 39: // HEVC PREFIX_SEI\n case 40: // HEVC SUFFIX_SEI\n if ((!isHevc && type !== 6) || (isHevc && type === 6)) break\n this.metadataTrack.seiSamples.push(new SeiSample(\n NALu.parseSEI(NALu.removeEPB(unit), isHevc),\n pts\n ))\n // fix 分割nal之前只要sei信息被当做单独一个sample\n return\n case 32: // HEVC VPS\n if (!isHevc) break\n if (!track.vps.length) {\n const hvcC = HEVC.parseVPS(NALu.removeEPB(unit), track.hvcC)\n track.hvcC = track.hvcC || hvcC\n track.vps = [unit]\n }\n break\n case 7: // SPS\n case 33: // HEVC SPS\n if ((!isHevc && type !== 7) || (isHevc && type === 7)) break\n if (!track.sps.length) {\n const data = NALu.removeEPB(unit)\n const spsInfo = isHevc ? HEVC.parseSPS(data, track.hvcC) : AVC.parseSPS(data)\n track.sps = [unit]\n track.hvcC = track.hvcC || spsInfo.hvcC\n track.codec = spsInfo.codec\n track.width = spsInfo.width\n track.height = spsInfo.height\n track.sarRatio = spsInfo.sarRatio\n track.fpsNum = spsInfo.fpsNum\n track.fpsDen = spsInfo.fpsDen\n }\n break\n case 8: // PPS\n case 34: // HEVC PPS\n if ((!isHevc && type !== 8) || (isHevc && type === 8)) break\n if (!track.pps.length) track.pps = [unit]\n break\n case 9: // AUD\n case 35: // HEVC AUD\n // if ((!isHevc && type !== 9) || (isHevc && type === 9)) break\n // sample.gopId = this._gopId\n // if (sample.units.length && !keyFrame) {\n // this._pushVideoSample(track, sample)\n // sample = this.prevAvcSample = new VideoSample(pts, dts)\n // }\n break\n default:\n }\n sample.units.push(unit)\n })\n sample.gopId = this._gopId\n this._pushVideoSample(track, sample)\n }\n\n _pushVideoSample (track, sample) {\n if (sample.units.length) {\n if (sample.pts === null || sample.pts === undefined) {\n logger.warn('Video sample no pts', sample)\n const lastSample = track.samples[track.samples.length - 1]\n if (lastSample) {\n sample.pts = lastSample.pts\n sample.dts = lastSample.dts\n } else {\n logger.warn('Drop video sample', sample)\n }\n } else {\n track.samples.push(sample)\n }\n }\n }\n\n _parseAudioData () {\n if (!this._audioPesData.length) return\n const pes = TsDemuxer._parsePES(concatUint8Array(...this._audioPesData))\n if (!pes) {\n logger.warn('Cannot parse audio pes', this._audioPesData)\n return\n }\n\n this._parseAacData(pes)\n\n this._audioPesData = []\n }\n\n _parseAacData (pes) {\n const track = this.audioTrack\n let pts = pes.pts\n if (pts === null || pts === undefined) {\n logger.warn('AAC pes not pts', track)\n if (!track.samples.length || !track.sampleRate) {\n return\n }\n pts = track.samples[track.samples.length - 1].pts + AAC.getFrameDuration(track.sampleRate)\n }\n\n const ret = AAC.parseADTS(pes.data, pts)\n if (ret) {\n track.codec = ret.codec\n track.channelCount = ret.channelCount\n track.sampleRate = ret.sampleRate\n track.objectType = ret.objectType\n track.sampleRateIndex = ret.samplingFrequencyIndex\n track.config = ret.config\n track.samples.push(...ret.frames.map((s) => new AudioSample(s.pts, s.data)))\n\n if (ret.skip) {\n logger.warn(`Skip aac adts ${ret.skip} bits`)\n }\n if (ret.remaining) {\n logger.warn(`Remaining aac adts ${ret.remaining} bits`)\n }\n } else {\n logger.warn('Cannot parse aac adts', pes)\n }\n }\n\n static _parsePES (data) {\n const headerDataLen = data[8]\n if (headerDataLen === null || headerDataLen === undefined || data.length < (headerDataLen + 9)) return\n const startPrefix = data[0] << 16 | data[1] << 8 | data[2]\n if (startPrefix !== 1) return\n const pesLen = (data[4] << 8) + data[5]\n if (pesLen && pesLen > data.length - 6) return\n\n let pts\n let dts\n const ptsDtsFlags = data[7]\n if (ptsDtsFlags & 0xc0) {\n pts = (data[9] & 0x0e) * 536870912 +\n (data[10] & 0xff) * 4194304 +\n (data[11] & 0xfe) * 16384 +\n (data[12] & 0xff) * 128 +\n (data[13] & 0xfe) / 2\n\n if (ptsDtsFlags & 0x40) {\n dts = (data[14] & 0x0e) * 536870912 +\n (data[15] & 0xff) * 4194304 +\n (data[16] & 0xfe) * 16384 +\n (data[17] & 0xff) * 128 +\n (data[18] & 0xfe) / 2\n if (pts - dts > 60 * 90000) pts = dts\n } else {\n dts = pts\n }\n }\n\n return { data: data.subarray(9 + headerDataLen), pts, dts }\n }\n}\n","import { AudioCodecType, VideoCodecType } from '../model'\nimport { getAvcCodec, readBig16, readBig24, readBig32, readBig64 } from '../utils'\nimport { AAC } from '../codec'\nexport class MP4Parser {\n static findBox (data, names, start = 0) {\n const ret = []\n if (!data) return ret\n\n let size = 0\n let type = ''\n let headerSize = 0\n while (data.length > 7) {\n size = readBig32(data)\n type = String.fromCharCode.apply(null, data.subarray(4, 8))\n headerSize = 8\n if (size === 1) {\n size = readBig64(data, 8)\n headerSize += 8\n } else if (!size) {\n size = data.length\n }\n if (!names[0] || type === names[0]) {\n const subData = data.subarray(0, size)\n if (names.length < 2) {\n ret.push({\n start,\n size,\n headerSize,\n type,\n data: subData\n })\n } else {\n return MP4Parser.findBox(subData.subarray(headerSize), names.slice(1), start + headerSize)\n }\n }\n\n start += size\n data = data.subarray(size)\n }\n\n return ret\n }\n\n static tfhd (box) {\n return parseBox(box, true, (ret, data) => {\n ret.trackId = readBig32(data)\n let start = 4\n const baseDataOffsetPresent = (ret.flags & 0xff) & 0x01\n const sampleDescriptionIndexPresent = (ret.flags & 0xff) & 0x02\n const defaultSampleDurationPresent = (ret.flags & 0xff) & 0x08\n const defaultSampleSizePresent = (ret.flags & 0xff) & 0x10\n const defaultSampleFlagsPresent = (ret.flags & 0xff) & 0x20\n\n if (baseDataOffsetPresent) {\n start += 4 // truncate top 4 bytes\n ret.baseDataOffset = readBig32(data, start)\n start += 4\n }\n if (sampleDescriptionIndexPresent) {\n ret.sampleDescriptionIndex = readBig32(data, start)\n start += 4\n }\n if (defaultSampleDurationPresent) {\n ret.defaultSampleDuration = readBig32(data, start)\n start += 4\n }\n if (defaultSampleSizePresent) {\n ret.defaultSampleSize = readBig32(data, start)\n start += 4\n }\n if (defaultSampleFlagsPresent) {\n ret.defaultSampleFlags = readBig32(data, start)\n }\n })\n }\n\n static sidx (box) {\n return parseBox(box, true, (ret, data) => {\n let start = 0\n ret.reference_ID = readBig32(data, start)// stream.readUint32();\n start += 4\n ret.timescale = readBig32(data, start)\n start += 4\n if (ret.version === 0) {\n ret.earliest_presentation_time = readBig32(data, start)\n start += 4\n ret.first_offset = readBig32(data, start)\n start += 4\n } else {\n ret.earliest_presentation_time = readBig64(data, start)\n start += 8\n ret.first_offset = readBig64(data, start)\n start += 8\n }\n start += 2\n ret.references = []\n const count = readBig16(data, start)\n start += 2\n for (let i = 0; i < count; i++) {\n const ref = {}\n ret.references.push(ref)\n let tmp32 = readBig32(data, start)\n start += 4\n ref.reference_type = (tmp32 >> 31) & 0x1\n ref.referenced_size = tmp32 & 0x7FFFFFFF\n ref.subsegment_duration = readBig32(data, start)\n start += 4\n tmp32 = readBig32(data, start)\n start += 4\n ref.starts_with_SAP = (tmp32 >> 31) & 0x1\n ref.SAP_type = (tmp32 >> 28) & 0x7\n ref.SAP_delta_time = tmp32 & 0xFFFFFFF\n }\n })\n }\n\n static moov (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.mvhd = MP4Parser.mvhd(MP4Parser.findBox(data, ['mvhd'], start)[0])\n ret.trak = MP4Parser.findBox(data, ['trak'], start).map(trak => MP4Parser.trak(trak))\n ret.pssh = MP4Parser.pssh(MP4Parser.findBox(data, ['pssh'], start)[0])\n })\n }\n\n static mvhd (box) {\n return parseBox(box, true, (ret, data) => {\n let start = 0\n if (ret.version === 1) {\n ret.timescale = readBig32(data, 16)\n ret.duration = readBig64(data, 20)\n start += 28\n } else {\n ret.timescale = readBig32(data, 8)\n ret.duration = readBig32(data, 12)\n start += 16\n }\n ret.nextTrackId = readBig32(data, start + 76)\n })\n }\n\n static trak (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.tkhd = MP4Parser.tkhd(MP4Parser.findBox(data, ['tkhd'], start)[0])\n ret.mdia = MP4Parser.mdia(MP4Parser.findBox(data, ['mdia'], start)[0])\n })\n }\n\n static tkhd (box) {\n return parseBox(box, true, (ret, data) => {\n let start = 0\n if (ret.version === 1) {\n ret.trackId = readBig32(data, 16)\n ret.duration = readBig64(data, 24)\n start += 32\n } else {\n ret.trackId = readBig32(data, 8)\n ret.duration = readBig32(data, 16)\n start += 20\n }\n ret.width = readBig32(data, start + 52)\n ret.height = readBig32(data, start + 56)\n })\n }\n\n static mdia (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.mdhd = MP4Parser.mdhd(MP4Parser.findBox(data, ['mdhd'], start)[0])\n ret.hdlr = MP4Parser.hdlr(MP4Parser.findBox(data, ['hdlr'], start)[0])\n ret.minf = MP4Parser.minf(MP4Parser.findBox(data, ['minf'], start)[0])\n })\n }\n\n static mdhd (box) {\n return parseBox(box, true, (ret, data) => {\n let start = 0\n if (ret.version === 1) {\n ret.timescale = readBig32(data, 16)\n ret.duration = readBig64(data, 20)\n start += 28\n } else {\n ret.timescale = readBig32(data, 8)\n ret.duration = readBig32(data, 12)\n start += 16\n }\n const lang = readBig16(data, start)\n ret.language = String.fromCharCode(((lang >> 10) & 0x1F) + 0x60, ((lang >> 5) & 0x1F) + 0x60, (lang & 0x1F) + 0x60)\n })\n }\n\n static hdlr (box) {\n return parseBox(box, true, (ret, data) => {\n if (ret.version === 0) {\n ret.handlerType = String.fromCharCode.apply(null, data.subarray(4, 8))\n }\n })\n }\n\n static minf (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.vmhd = MP4Parser.vmhd(MP4Parser.findBox(data, ['vmhd'], start)[0])\n ret.smhd = MP4Parser.smhd(MP4Parser.findBox(data, ['smhd'], start)[0])\n ret.stbl = MP4Parser.stbl(MP4Parser.findBox(data, ['stbl'], start)[0])\n })\n }\n\n static vmhd (box) {\n return parseBox(box, true, (ret, data) => {\n ret.graphicsmode = readBig16(data)\n ret.opcolor = [readBig16(data, 2), readBig16(data, 4), readBig16(data, 6)]\n })\n }\n\n static smhd (box) {\n return parseBox(box, true, (ret, data) => {\n ret.balance = readBig16(data)\n })\n }\n\n static stbl (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.stsd = MP4Parser.stsd(MP4Parser.findBox(data, ['stsd'], start)[0])\n ret.stts = MP4Parser.stts(MP4Parser.findBox(data, ['stts'], start)[0])\n ret.ctts = MP4Parser.ctts(MP4Parser.findBox(data, ['ctts'], start)[0])\n ret.stsc = MP4Parser.stsc(MP4Parser.findBox(data, ['stsc'], start)[0])\n ret.stsz = MP4Parser.stsz(MP4Parser.findBox(data, ['stsz'], start)[0])\n ret.stco = MP4Parser.stco(MP4Parser.findBox(data, ['stco'], start)[0])\n if (!ret.stco) {\n ret.co64 = MP4Parser.co64(MP4Parser.findBox(data, ['co64'], start)[0])\n ret.stco = ret.co64\n }\n const default_IV_size = ret.stsd.entries[0]?.sinf?.schi?.tenc.default_IV_size\n ret.stss = MP4Parser.stss(MP4Parser.findBox(data, ['stss'], start)[0])\n ret.senc = MP4Parser.senc(MP4Parser.findBox(data, ['senc'], start)[0], default_IV_size)\n })\n }\n\n static senc (box, iv = 8) {\n return parseBox(box, true, (ret, data) => {\n let start = 0\n const sampleCount = readBig32(data, start)\n start += 4\n ret.samples = []\n for (let i = 0; i < sampleCount; i++) {\n const sample = {}\n sample.InitializationVector = []\n for (let j = 0; j < iv; j++){\n sample.InitializationVector[j] = data[start + j]\n }\n start += iv\n if (ret.flags & 0x2) {\n sample.subsamples = []\n const subsampleCount = readBig16(data, start)\n start += 2\n for (let j = 0; j < subsampleCount; j++) {\n const subsample = {}\n subsample.BytesOfClearData = readBig16(data, start)\n start += 2\n subsample.BytesOfProtectedData = readBig32(data, start)\n start += 4\n sample.subsamples.push(subsample)\n }\n }\n ret.samples.push(sample)\n }\n })\n }\n\n static pssh (box) {\n return parseBox(box, true, (ret, data) => {\n const keyIds = []\n const systemId = []\n let start = 0\n for (let i = 0; i < 16; i++) {\n systemId.push(toHex(data[start + i]))\n }\n start += 16\n if (ret.version > 0) {\n const numKeyIds = readBig32(data, start)\n start += 4\n for (let i = 0; i < ('' + numKeyIds).length; i++) {\n for (let j = 0; j < 16; j++) {\n const keyId = data[start]\n start += 1\n keyIds.push(toHex(keyId))\n }\n }\n }\n const dataSize = readBig32(data, start)\n ret.data_size = dataSize\n start += 4\n ret.kid = keyIds\n ret.system_id = systemId\n ret.buffer = data\n })\n }\n\n static stsd (box) {\n return parseBox(box, true, (ret, data, start) => {\n ret.entryCount = readBig32(data)\n ret.entries = MP4Parser.findBox(data.subarray(4), [], start + 4).map(b => {\n switch (b.type) {\n case 'avc1':\n case 'avc2':\n case 'avc3':\n case 'avc4':\n return MP4Parser.avc1(b)\n case 'hvc1':\n case 'hev1':\n return MP4Parser.hvc1(b)\n case 'mp4a':\n return MP4Parser.mp4a(b)\n case 'alaw':\n case 'ulaw':\n return MP4Parser.alaw(b)\n case 'enca':\n // sinf->schi->tenc\n return parseBox(b, false, (ret, data, start) => {\n ret.channelCount = readBig16(data, 16)\n ret.samplesize = readBig16(data, 18)\n ret.sampleRate = (readBig32(data, 24) / (1 << 16))\n data = data.subarray(28)\n ret.sinf = MP4Parser.sinf(MP4Parser.findBox(data, ['sinf'], start)[0])\n ret.esds = MP4Parser.esds(MP4Parser.findBox(data, ['esds'], start)[0])\n })\n case 'encv':\n // sinf->schi->tenc\n return parseBox(b, false, (ret, data, start) => {\n ret.width = readBig16(data, 24)\n ret.height = readBig16(data, 26)\n ret.horizresolution = readBig32(data, 28)\n ret.vertresolution = readBig32(data, 32)\n data = data.subarray(78)\n ret.sinf = MP4Parser.sinf(MP4Parser.findBox(data, ['sinf'], start)[0])\n ret.avcC = MP4Parser.avcC(MP4Parser.findBox(data, ['avcC'], start)[0])\n ret.hvcC = MP4Parser.hvcC(MP4Parser.findBox(data, ['hvcC'], start)[0])\n ret.pasp = MP4Parser.pasp(MP4Parser.findBox(data, ['pasp'], start)[0])\n })\n default:\n }\n }).filter(Boolean)\n })\n }\n\n static tenc (box) {\n return parseBox(box, false, (ret, data) => {\n let start = 6\n ret.default_IsEncrypted = data[start]\n start += 1\n ret.default_IV_size = data[start]\n start += 1\n ret.default_KID = []\n for (let i = 0; i < 16; i++) {\n ret.default_KID.push(toHex(data[start]))\n start += 1\n }\n })\n }\n\n static schi (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.tenc = MP4Parser.tenc(MP4Parser.findBox(data, ['tenc'], start)[0])\n })\n }\n\n static sinf (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.schi = MP4Parser.schi(MP4Parser.findBox(data, ['schi'], start)[0])\n ret.frma = MP4Parser.frma(MP4Parser.findBox(data, ['frma'], start)[0])\n })\n }\n\n static frma (box) {\n return parseBox(box, false, (ret, data) => {\n ret.data_format = ''\n for (let i = 0; i < 4; i++) {\n ret.data_format += String.fromCharCode(data[i])\n }\n })\n }\n\n static avc1 (box) {\n return parseBox(box, false, (ret, data, start) => {\n const bodyStart = parseVisualSampleEntry(ret, data)\n const bodyData = data.subarray(bodyStart)\n start += bodyStart\n ret.avcC = MP4Parser.avcC(MP4Parser.findBox(bodyData, ['avcC'], start)[0])\n ret.pasp = MP4Parser.pasp(MP4Parser.findBox(bodyData, ['pasp'], start)[0])\n })\n }\n\n static avcC (box) {\n return parseBox(box, false, (ret, data) => {\n ret.configurationVersion = data[0]\n ret.AVCProfileIndication = data[1]\n ret.profileCompatibility = data[2]\n ret.AVCLevelIndication = data[3]\n ret.codec = getAvcCodec([data[1], data[2], data[3]])\n ret.lengthSizeMinusOne = data[4] & 0x3\n ret.spsLength = data[5] & 0x1F\n ret.sps = []\n let start = 6\n for (let i = 0; i < ret.spsLength; i++) {\n const size = readBig16(data, start)\n start += 2\n ret.sps.push(data.subarray(start, start + size))\n // ret.spsInfo = SpsParser.parseSPS(ret.sps[i])\n // ret.pixelRatio = ret.spsInfo.par_ratio\n start += size\n }\n ret.ppsLength = data[start]\n start += 1\n ret.pps = []\n for (let i = 0; i < ret.ppsLength; i++) {\n const size = readBig16(data, start)\n start += 2\n ret.pps.push(data.subarray(start, start += size))\n start += size\n }\n })\n }\n\n static hvc1 (box) {\n return parseBox(box, false, (ret, data, start) => {\n const bodyStart = parseVisualSampleEntry(ret, data)\n const bodyData = data.subarray(bodyStart)\n start += bodyStart\n ret.hvcC = MP4Parser.hvcC(MP4Parser.findBox(bodyData, ['hvcC'], start)[0])\n ret.pasp = MP4Parser.pasp(MP4Parser.findBox(bodyData, ['pasp'], start)[0])\n })\n }\n\n static hvcC (box) {\n return parseBox(box, false, (ret, data) => {\n ret.data = box.data\n ret.codec = 'hev1.1.6.L93.B0'\n ret.configurationVersion = data[0]\n const tmp = data[1]\n ret.generalProfileSpace = tmp >> 6\n ret.generalTierFlag = (tmp & 0x20) >> 5\n ret.generalProfileIdc = tmp & 0x1F\n ret.generalProfileCompatibility = readBig32(data, 2)\n ret.generalConstraintIndicatorFlags = data.subarray(6, 12)\n ret.generalLevelIdc = data[12]\n ret.avgFrameRate = readBig16(data, 19)\n ret.numOfArrays = data[22]\n ret.vps = []\n ret.sps = []\n ret.pps = []\n let start = 23\n let type = 0\n let numNalus = 0\n let size = 0\n for (let i = 0; i < ret.numOfArrays; i++) {\n type = data[start] & 0x3F\n numNalus = readBig16(data, start + 1)\n start += 3\n const nalus = []\n for (let j = 0; j < numNalus; j++) {\n size = readBig16(data, start)\n start += 2\n nalus.push(data.subarray(start, start + size))\n start += size\n }\n\n if (type === 32) {\n ret.vps.push(...nalus)\n } else if (type === 33) {\n ret.sps.push(...nalus)\n } else if (type === 34) {\n ret.pps.push(...nalus)\n }\n }\n })\n }\n\n static pasp (box) {\n return parseBox(box, false, (ret, data) => {\n ret.hSpacing = readBig32(data)\n ret.vSpacing = readBig32(data, 4)\n })\n }\n\n static mp4a (box) {\n return parseBox(box, false, (ret, data, start) => {\n const bodyStart = parseAudioSampleEntry(ret, data)\n ret.esds = MP4Parser.esds(MP4Parser.findBox(data.subarray(bodyStart), ['esds'], start + bodyStart)[0])\n })\n }\n\n static esds (box) {\n return parseBox(box, true, (ret, data) => {\n ret.codec = 'mp4a.'\n let start = 0\n let byteRead = 0\n let size = 0\n let tag = 0\n while (data.length) {\n start = 0\n tag = data[start]\n byteRead = data[start + 1]\n start += 2\n while (byteRead & 0x80) {\n size = (byteRead & 0x7F) << 7\n byteRead = data[start]\n start += 1\n }\n size += byteRead & 0x7F\n if (tag === 3) {\n data = data.subarray(start + 3)\n } else if (tag === 4) {\n ret.codec += (data[start].toString(16) + '.').padStart(3, '0')\n data = data.subarray(start + 13)\n } else if (tag === 5) {\n const config = ret.config = data.subarray(start, start + size)\n let objectType = (config[0] & 0xF8) >> 3\n if (objectType === 31 && config.length >= 2) {\n objectType = 32 + ((config[0] & 0x7) << 3) + ((config[1] & 0xE0) >> 5)\n }\n ret.objectType = objectType\n ret.codec += objectType.toString(16)\n if (ret.codec[ret.codec.length - 1] === '.') {\n ret.codec = ret.codec.substring(0, ret.codec.length - 1)\n }\n return\n } else {\n if (ret.codec[ret.codec.length - 1] === '.') {\n ret.codec = ret.codec.substring(0, ret.codec.length - 1)\n }\n return\n }\n }\n })\n }\n\n static alaw (box) {\n return parseBox(box, false, (ret, data) => {\n parseAudioSampleEntry(ret, data)\n })\n }\n\n static stts (box) {\n return parseBox(box, true, (ret, data) => {\n const entryCount = readBig32(data)\n const entries = []\n let start = 4\n for (let i = 0; i < entryCount; i++) {\n entries.push({\n count: readBig32(data, start),\n delta: readBig32(data, start + 4)\n })\n start += 8\n }\n ret.entryCount = entryCount\n ret.entries = entries\n })\n }\n\n static ctts (box) {\n return parseBox(box, true, (ret, data) => {\n const entryCount = readBig32(data)\n const entries = []\n let start = 4\n if (ret.version === 1) {\n for (let i = 0; i < entryCount; i++) {\n entries.push({\n count: readBig32(data, start),\n offset: readBig32(data, start + 4)\n })\n start += 8\n }\n } else {\n for (let i = 0; i < entryCount; i++) {\n entries.push({\n count: readBig32(data, start),\n offset: -(~readBig32(data, start + 4) + 1)\n })\n start += 8\n }\n }\n ret.entryCount = entryCount\n ret.entries = entries\n })\n }\n\n static stsc (box) {\n return parseBox(box, true, (ret, data) => {\n const entryCount = readBig32(data)\n const entries = []\n let start = 4\n for (let i = 0; i < entryCount; i++) {\n entries.push({\n firstChunk: readBig32(data, start),\n samplesPerChunk: readBig32(data, start + 4),\n sampleDescriptionIndex: readBig32(data, start + 8)\n })\n start += 12\n }\n ret.entryCount = entryCount\n ret.entries = entries\n })\n }\n\n static stsz (box) {\n return parseBox(box, true, (ret, data) => {\n const sampleSize = readBig32(data)\n const sampleCount = readBig32(data, 4)\n const entrySizes = []\n if (!sampleSize) {\n let start = 8\n for (let i = 0; i < sampleCount; i++) {\n entrySizes.push(readBig32(data, start))\n start += 4\n }\n }\n ret.sampleSize = sampleSize\n ret.sampleCount = sampleCount\n ret.entrySizes = entrySizes\n })\n }\n\n static stco (box) {\n return parseBox(box, true, (ret, data) => {\n const entryCount = readBig32(data)\n const entries = []\n let start = 4\n for (let i = 0; i < entryCount; i++) {\n entries.push(readBig32(data, start))\n start += 4\n }\n ret.entryCount = entryCount\n ret.entries = entries\n })\n }\n\n static co64 (box) {\n return parseBox(box, true, (ret, data) => {\n const entryCount = readBig32(data)\n const entries = []\n let start = 4\n for (let i = 0; i < entryCount; i++) {\n entries.push(readBig64(data, start))\n start += 8\n }\n ret.entryCount = entryCount\n ret.entries = entries\n })\n }\n\n static stss (box) {\n return parseBox(box, true, (ret, data) => {\n const entryCount = readBig32(data)\n const entries = []\n let start = 4\n for (let i = 0; i < entryCount; i++) {\n entries.push(readBig32(data, start))\n start += 4\n }\n ret.entryCount = entryCount\n ret.entries = entries\n })\n }\n\n static moof (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.mfhd = MP4Parser.mfhd(MP4Parser.findBox(data, ['mfhd'], start)[0])\n ret.traf = MP4Parser.findBox(data, ['traf'], start).map(t => MP4Parser.traf(t))\n })\n }\n\n static mfhd (box) {\n return parseBox(box, true, (ret, data) => {\n ret.sequenceNumber = readBig32(data)\n })\n }\n\n static traf (box) {\n return parseBox(box, false, (ret, data, start) => {\n ret.tfhd = MP4Parser.tfhd(MP4Parser.findBox(data, ['tfhd'], start)[0])\n ret.tfdt = MP4Parser.tfdt(MP4Parser.findBox(data, ['tfdt'], start)[0])\n ret.trun = MP4Parser.trun(MP4Parser.findBox(data, ['trun'], start)[0])\n })\n }\n\n static trun (box) {\n return parseBox(box, true, (ret, data) => {\n const { version, flags } = ret\n const dataLen = data.length\n const sampleCount = ret.sampleCount = readBig32(data)\n let offset = 4\n if (dataLen > offset && flags & 1) {\n ret.dataOffset = -(~readBig32(data, offset) + 1)\n offset += 4\n }\n if (dataLen > offset && flags & 4) {\n ret.firstSampleFlags = readBig32(data, offset)\n offset += 4\n }\n ret.samples = []\n if (dataLen > offset) {\n let sample\n for (let i = 0; i < sampleCount; i++) {\n sample = {}\n if (flags & 0x100) {\n sample.duration = readBig32(data, offset)\n offset += 4\n }\n if (flags & 0x200) {\n sample.size = readBig32(data, offset)\n offset += 4\n }\n if (flags & 0x400) {\n sample.flags = readBig32(data, offset)\n offset += 4\n }\n if (flags & 0x800) {\n if (version) {\n sample.cts = -(~readBig32(data, offset + 4) + 1)\n } else {\n sample.cts = readBig32(data, offset)\n }\n offset += 4\n }\n ret.samples.push(sample)\n }\n }\n })\n }\n\n static tfdt (box) {\n return parseBox(box, true, (ret, data) => {\n if (ret.version === 1) {\n ret.baseMediaDecodeTime = readBig64(data)\n } else {\n ret.baseMediaDecodeTime = readBig32(data)\n }\n })\n }\n\n static probe (data) {\n return !!MP4Parser.findBox(data, ['ftyp'])\n }\n\n static parseSampleFlags (flags) {\n return {\n isLeading: (flags[0] & 0x0c) >>> 2,\n dependsOn: flags[0] & 0x03,\n isDependedOn: (flags[1] & 0xc0) >>> 6,\n hasRedundancy: (flags[1] & 0x30) >>> 4,\n paddingValue: (flags[1] & 0x0e) >>> 1,\n isNonSyncSample: flags[1] & 0x01,\n degradationPriority: (flags[2] << 8) | flags[3]\n }\n }\n\n static moovToTrack (moov, videoTrack, audioTrack) {\n const tracks = moov.trak\n if (!tracks || !tracks.length) return\n const vTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'vide')\n const aTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'soun')\n if (vTrack && videoTrack) {\n const v = videoTrack\n const _vTrackId = vTrack.tkhd?.trackId\n if (_vTrackId !== null && _vTrackId !== undefined) v.id = vTrack.tkhd.trackId\n v.tkhdDuration = vTrack.tkhd.duration\n v.mvhdDurtion = moov.mvhd.duration\n v.mvhdTimecale = moov.mvhd.timescale\n v.timescale = v.formatTimescale = vTrack.mdia.mdhd.timescale\n v.duration = vTrack.mdia.mdhd.duration || (v.mvhdDurtion / v.mvhdTimecale * v.timescale)\n const e1 = vTrack.mdia.minf.stbl.stsd.entries[0]\n v.width = e1.width\n v.height = e1.height\n if (e1.pasp) {\n v.sarRatio = [e1.pasp.hSpacing, e1.pasp.vSpacing]\n }\n if (e1.hvcC) {\n v.codecType = VideoCodecType.HEVC\n v.codec = e1.hvcC.codec\n v.vps = e1.hvcC.vps\n v.sps = e1.hvcC.sps\n v.pps = e1.hvcC.pps\n v.hvcC = e1.hvcC.data\n } else if (e1.avcC) {\n v.codec = e1.avcC.codec\n v.sps = e1.avcC.sps\n v.pps = e1.avcC.pps\n } else {\n throw new Error('unknown video stsd entry')\n }\n v.present = true\n v.ext = {}\n v.ext.stss = vTrack.mdia?.minf?.stbl?.stss\n v.ext.ctts = vTrack.mdia?.minf?.stbl?.ctts\n\n if (e1 && e1.type === 'encv') {\n v.isVideoEncryption = true\n e1.default_KID = e1.sinf?.schi?.tenc.default_KID\n e1.default_IsEncrypted = e1.sinf?.schi?.tenc.default_IsEncrypted\n e1.default_IV_size = e1.sinf?.schi?.tenc.default_IV_size\n v.videoSenc = vTrack.mdia.minf.stbl.senc && vTrack.mdia.minf.stbl.senc.samples\n e1.data_format = e1.sinf?.frma?.data_format\n v.useEME = moov.useEME\n v.kidValue = moov.kidValue\n v.pssh = moov.pssh\n v.encv = e1\n }\n }\n\n if (aTrack && audioTrack) {\n const a = audioTrack\n const _aTrackId = aTrack.tkhd?.trackId\n if (_aTrackId !== null && _aTrackId !== undefined) a.id = aTrack.tkhd.trackId\n a.tkhdDuration = aTrack.tkhd.duration\n a.mvhdDurtion = moov.mvhd.duration\n a.mvhdTimecale = moov.mvhd.timescale\n a.timescale = a.formatTimescale = aTrack.mdia.mdhd.timescale\n a.duration = aTrack.mdia.mdhd.duration || (a.mvhdDurtion / a.mvhdTimecale * a.timescale)\n const e1 = aTrack.mdia.minf.stbl.stsd.entries[0]\n a.sampleSize = e1.sampleSize\n a.sampleRate = e1.sampleRate\n a.channelCount = e1.channelCount\n a.present = true\n\n switch (e1.type) {\n case 'alaw':\n a.codecType = a.codec = AudioCodecType.G711PCMA\n a.sampleRate = 8000\n break\n case 'ulaw':\n a.codecType = a.codec = AudioCodecType.G711PCMU\n a.sampleRate = 8000\n break\n default:\n a.sampleDuration = AAC.getFrameDuration(a.sampleRate, a.timescale)\n a.sampleRateIndex = AAC.getRateIndexByRate(a.sampleRate)\n a.objectType = e1.esds?.objectType || 2\n if (e1.esds) a.config = Array.from(e1.esds.config)\n a.codec = e1.esds?.codec || 'mp4a.40.2'\n break\n }\n a.sampleDuration = AAC.getFrameDuration(a.sampleRate, a.timescale)\n a.objectType = e1.esds?.objectType || 2\n if (e1.esds) {\n if (e1.esds.config) {\n a.config = Array.from(e1.esds.config)\n } else {\n console.warn('esds config is null')\n }\n }\n a.codec = e1.esds?.codec || 'mp4a.40.2'\n a.sampleRateIndex = AAC.getRateIndexByRate(a.sampleRate)\n a.ext = {}\n a.ext.stss = aTrack.mdia?.minf?.stbl?.stss\n a.ext.ctts = aTrack.mdia?.minf?.stbl?.ctts\n a.present = true\n if (e1 && e1.type === 'enca') {\n a.isAudioEncryption = true\n e1.data_format = e1.sinf?.frma?.data_format\n e1.default_KID = e1.sinf?.schi?.tenc.default_KID\n e1.default_IsEncrypted = e1.sinf?.schi?.tenc.default_IsEncrypted\n e1.default_IV_size = e1.sinf?.schi?.tenc.default_IV_size\n a.audioSenc = aTrack.mdia.minf.stbl.senc && aTrack.mdia.minf.stbl.senc.samples\n a.useEME = moov.useEME\n a.kidValue = moov.kidValue\n a.enca = e1\n }\n }\n\n audioTrack && (audioTrack.isVideoEncryption = videoTrack ? videoTrack.isVideoEncryption : false)\n videoTrack && (videoTrack.isAudioEncryption = audioTrack ? audioTrack.isAudioEncryption : false)\n\n if (videoTrack?.encv || audioTrack?.enca) {\n const vkid = videoTrack?.encv?.default_KID\n const akid = audioTrack?.enca?.default_KID\n const kid = (vkid || akid) ? (vkid || akid).join('') : null\n videoTrack && (videoTrack.kid = kid)\n audioTrack && (audioTrack.kid = kid)\n }\n\n videoTrack && (videoTrack.flags = 0xf01)\n audioTrack && (audioTrack.flags = 0x701)\n\n return {\n videoTrack,\n audioTrack\n }\n }\n\n static evaluateDefaultDuration (videoTrack, audioTrack, videoSampleCount) {\n const audioSampleCount = audioTrack?.samples?.length\n\n // audio\n if (!audioSampleCount) return 1024\n\n const segmentDuration = 1024 * audioSampleCount / audioTrack.timescale\n\n return segmentDuration * videoTrack.timescale / videoSampleCount\n }\n\n static moofToSamples (moof, videoTrack, audioTrack) {\n const ret = {}\n\n if (moof.mfhd) {\n if (videoTrack) videoTrack.sequenceNumber = moof.mfhd.sequenceNumber\n if (audioTrack) audioTrack.sequenceNumber = moof.mfhd.sequenceNumber\n }\n\n moof.traf.forEach(({ tfhd, tfdt, trun }) => {\n if (!tfhd || !trun) return\n if (tfdt) {\n if (videoTrack && videoTrack.id === tfhd.trackId) videoTrack.baseMediaDecodeTime = tfdt.baseMediaDecodeTime\n if (audioTrack && audioTrack.id === tfhd.trackId) audioTrack.baseMediaDecodeTime = tfdt.baseMediaDecodeTime\n }\n const defaultSize = tfhd.defaultSampleSize || 0\n const defaultDuration = tfhd.defaultSampleDuration || MP4Parser.evaluateDefaultDuration(videoTrack, audioTrack, trun.samples.length || trun.sampleCount)\n let offset = trun.dataOffset || 0\n let dts = 0\n let gopId = -1\n if (!trun.samples.length && trun.sampleCount) {\n ret[tfhd.trackId] = []\n for (let i = 0; i < trun.sampleCount; i++) {\n ret[tfhd.trackId].push({\n offset,\n dts,\n duration: defaultDuration,\n size: defaultSize\n })\n dts += defaultDuration\n offset += defaultSize\n }\n } else {\n ret[tfhd.trackId] = trun.samples.map((s, index) => {\n s = {\n offset,\n dts,\n pts: dts + (s.cts || 0),\n duration: s.duration || defaultDuration,\n size: s.size || defaultSize,\n gopId,\n keyframe: index === 0 || ((s.flags !== null && s.flags !== undefined) && ((s.flags & 65536) >>> 0) !== 65536)\n }\n if (s.keyframe) {\n gopId++\n s.gopId = gopId\n }\n dts += s.duration\n offset += s.size\n return s\n })\n }\n })\n\n return ret\n }\n\n static moovToSamples (moov) {\n const tracks = moov.trak\n if (!tracks || !tracks.length) return\n const vTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'vide')\n const aTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'soun')\n if (!vTrack && !aTrack) return\n let videoSamples\n let audioSamples\n if (vTrack) {\n const videoStbl = vTrack.mdia?.minf?.stbl\n if (!videoStbl) return\n const { stts, stsc, stsz, stco, stss, ctts } = videoStbl\n if (!stts || !stsc || !stsz || !stco || !stss) return\n videoSamples = getSamples(stts, stsc, stsz, stco, ctts, stss)\n }\n if (aTrack) {\n const audioStbl = aTrack.mdia?.minf?.stbl\n if (!audioStbl) return\n const timescale = aTrack.mdia.mdhd?.timescale\n const { stts, stsc, stsz, stco } = audioStbl\n if (!timescale || !stts || !stsc || !stsz || !stco) return\n audioSamples = getSamples(stts, stsc, stsz, stco)\n }\n\n return {\n videoSamples,\n audioSamples\n }\n }\n}\n\nfunction getSamples (stts, stsc, stsz, stco, ctts, stss) {\n const samples = []\n const cttsEntries = ctts?.entries\n const stscEntries = stsc.entries\n const stcoEntries = stco.entries\n const stszEntrySizes = stsz.entrySizes\n const stssEntries = stss?.entries\n let keyframeMap\n if (stssEntries) {\n keyframeMap = {}\n stssEntries.forEach(x => { keyframeMap[x - 1] = true })\n }\n let cttsArr\n if (cttsEntries) {\n cttsArr = []\n cttsEntries.forEach(({ count, offset }) => {\n for (let i = 0; i < count; i++) {\n cttsArr.push(offset)\n }\n })\n }\n\n let sample\n let gopId = -1\n let dts = 0\n let pos = 0\n let chunkIndex = 0\n let chunkRunIndex = 0\n let offsetInChunk = 0\n let lastSampleInChunk = stscEntries[0].samplesPerChunk\n let lastChunkInRun = stscEntries[1] ? stscEntries[1].firstChunk - 1 : Infinity\n stts.entries.forEach(({ count, delta }) => {\n for (let i = 0; i < count; i++) {\n sample = {\n dts,\n duration: delta,\n size: stszEntrySizes[pos] || stsz.sampleSize,\n offset: stcoEntries[chunkIndex] + offsetInChunk,\n index: pos\n }\n if (stssEntries) {\n sample.keyframe = keyframeMap[pos]\n if (sample.keyframe) {\n gopId++\n }\n sample.gopId = gopId\n }\n // sample.timeOffset = 0\n if (cttsArr && pos < cttsArr.length) {\n sample.pts = sample.dts + cttsArr[pos]\n // sample.timeOffset = cttsArr[pos]\n // if (pos === 0) {\n // sample.pts = sample.dts\n // sample.timeOffset = 0\n // }\n }\n samples.push(sample)\n dts += delta\n pos++\n\n if (pos < lastSampleInChunk) {\n offsetInChunk += sample.size\n } else {\n chunkIndex++\n offsetInChunk = 0\n if (chunkIndex >= lastChunkInRun) {\n chunkRunIndex++\n lastChunkInRun = stscEntries[chunkRunIndex + 1] ? stscEntries[chunkRunIndex + 1].firstChunk - 1 : Infinity\n }\n lastSampleInChunk += stscEntries[chunkRunIndex].samplesPerChunk\n }\n }\n })\n\n return samples\n}\n\nfunction parseVisualSampleEntry (ret, data) {\n ret.dataReferenceIndex = readBig16(data, 6)\n ret.width = readBig16(data, 24)\n ret.height = readBig16(data, 26)\n ret.horizresolution = readBig32(data, 28)\n ret.vertresolution = readBig32(data, 32)\n ret.frameCount = readBig16(data, 40)\n ret.depth = readBig16(data, 74)\n return 78\n}\n\nfunction parseAudioSampleEntry (ret, data) {\n ret.dataReferenceIndex = readBig16(data, 6)\n ret.channelCount = readBig16(data, 16)\n ret.sampleSize = readBig16(data, 18)\n ret.sampleRate = readBig32(data, 24) / (1 << 16)\n return 28\n}\n\nfunction parseBox (box, isFullBox, parse) {\n if (!box) return\n if (box.size !== box.data.length) throw new Error(`box ${box.type} size !== data.length`)\n const ret = {\n start: box.start,\n size: box.size,\n headerSize: box.headerSize,\n type: box.type\n }\n if (isFullBox) {\n ret.version = box.data[box.headerSize]\n ret.flags = readBig24(box.data, box.headerSize + 1)\n ret.headerSize += 4\n }\n parse(ret, box.data.subarray(ret.headerSize), ret.start + ret.headerSize)\n return ret\n}\n\nconst padStart = function (str, length, pad) {\n const charstr = String(pad)\n const len = length >> 0\n let maxlen = Math.ceil(len / charstr.length)\n const chars = []\n const r = String(str)\n while (maxlen--) {\n chars.push(charstr)\n }\n return chars.join('').substring(0, len - r.length) + r\n}\n\nconst toHex = function (...value) {\n const hex = []\n value.forEach(item => {\n hex.push(padStart(Number(item).toString(16), 2, 0))\n })\n return hex[0]\n}\n","\n// 改造为兼容IE11\nfunction Concat (ResultConstructor, ...arrays){\n let totalLength = 0\n arrays.forEach(function (arr){\n totalLength += arr.length\n })\n const result = new ResultConstructor(totalLength)\n let offset = 0\n arrays.forEach(function (arr){\n result.set(arr, offset)\n offset += arr.length\n })\n return result\n}\n\nclass Buffer {\n constructor () {\n this.buffer = new Uint8Array(0)\n }\n\n write (...buffer) {\n const self = this\n buffer.forEach(item => {\n if (item) {\n self.buffer = Concat(Uint8Array, self.buffer, item)\n } else {\n window.console.warn(item)\n }\n })\n }\n\n static writeUint16 (value) {\n return new Uint8Array([\n (value >> 8) & 0xff,\n value & 0xff\n ])\n }\n\n static writeUint32 (value) {\n return new Uint8Array([\n value >> 24,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n ])\n }\n}\n\nexport default Buffer\n","import { TrackType, VideoCodecType } from '../model'\nimport { concatUint8Array, parse /* hashVal */ } from '../utils'\nimport Buffer from './buffer'\n// import Crypto from './crypto/crypto'\nconst UINT32_MAX = 2 ** 32 - 1\n\nexport class MP4 {\n static types = [\n 'avc1',\n 'avcC',\n 'hvc1',\n 'hvcC',\n 'dinf',\n 'dref',\n 'esds',\n 'ftyp',\n 'hdlr',\n 'mdat',\n 'mdhd',\n 'mdia',\n 'mfhd',\n 'minf',\n 'moof',\n 'moov',\n 'mp4a',\n 'mvex',\n 'mvhd',\n 'pasp',\n 'stbl',\n 'stco',\n 'stsc',\n 'stsd',\n 'stsz',\n 'stts',\n 'tfdt',\n 'tfhd',\n 'traf',\n 'trak',\n 'trex',\n 'tkhd',\n 'vmhd',\n 'smhd',\n 'ctts',\n 'stss',\n 'styp',\n 'pssh',\n 'sidx',\n 'sbgp',\n 'saiz',\n 'saio',\n 'senc',\n 'trun',\n 'encv',\n 'enca',\n 'sinf',\n 'btrt',\n 'frma',\n 'tenc',\n 'schm',\n 'schi',\n 'mehd',\n 'fiel',\n 'sdtp'\n ].reduce((p, c) => {\n p[c] = [c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2), c.charCodeAt(3)]\n return p\n }, Object.create(null));\n\n static HDLR_TYPES = {\n video: new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x56, 0x69, 0x64, 0x65, 0x6f, 0x48, 0x61,\n 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler'\n ]),\n audio: new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61,\n 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler'\n ])\n }\n\n static FTYPAVC1 = MP4.box(MP4.types.ftyp, new Uint8Array([\n 105, 115, 111, 109, // isom\n 0, 0, 0, 1,\n 105, 115, 111, 109,\n 97, 118, 99, 49 // avc1\n ]))\n\n static FTYPHEV1 = MP4.box(MP4.types.ftyp, new Uint8Array([\n 105, 115, 111, 109, // isom\n 0, 0, 0, 1,\n 105, 115, 111, 109,\n 104, 101, 118, 49 // hev1\n ]))\n\n static DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0c, // entry_size\n 0x75, 0x72, 0x6c, 0x20, // 'url' type\n 0x00, // version\n 0x00, 0x00, 0x01 // entry_flags\n ])))\n\n static VMHD = MP4.box(MP4.types.vmhd, new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x01, // flags\n 0x00, 0x00, // graphics mode\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // op color\n ]))\n\n static SMHD = MP4.box(MP4.types.smhd, new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, // balance\n 0x00, 0x00 // reserved\n ]))\n\n static StblTable = new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ])\n\n static STTS = MP4.box(MP4.types.stts, MP4.StblTable)\n\n static STSC = MP4.box(MP4.types.stsc, MP4.StblTable)\n\n static STSZ = MP4.box(MP4.types.stsz, new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]))\n\n static STCO = MP4.box(MP4.types.stco, MP4.StblTable)\n\n static box (type, ...payload) {\n payload = payload.filter(Boolean)\n const size = 8 + payload.reduce((p, c) => (p + c.byteLength), 0)\n const ret = new Uint8Array(size)\n ret[0] = (size >> 24) & 0xff\n ret[1] = (size >> 16) & 0xff\n ret[2] = (size >> 8) & 0xff\n ret[3] = size & 0xff\n ret.set(type, 4)\n let offset = 8\n payload.forEach((data) => {\n ret.set(data, offset)\n offset += data.byteLength\n })\n return ret\n }\n\n static ftyp (tracks) {\n const isHevc = tracks.find(t => t.type === TrackType.VIDEO && t.codecType === VideoCodecType.HEVC)\n return isHevc ? MP4.FTYPHEV1 : MP4.FTYPAVC1\n }\n\n static initSegment (tracks) {\n const ftyp = MP4.ftyp(tracks)\n // console.log('[remux],ftyp ,len ', ftyp.byteLength, hashVal(ftyp.toString()))\n const init = concatUint8Array(ftyp, MP4.moov(tracks))\n // console.log('[remux],init ,len ', init.byteLength, hashVal(init.toString()))\n return init\n }\n\n static pssh (data) {\n // const buffer = new Buffer()\n const content = new Uint8Array(\n [\n 0x01, 0x00, 0x00, 0x00 // version\n ].concat(\n [\n 0x10, 0x77, 0xef, 0xec,\n 0xc0, 0xb2, 0x4d, 0x02,\n 0xac, 0xe3, 0x3c, 0x1e,\n 0x52, 0xe2, 0xfb, 0x4b\n ],\n [0x00, 0x00, 0x00, 0x01],\n parse(data.kid),\n [0x00, 0x00, 0x00, 0x00]\n )\n )\n return MP4.box(MP4.types.pssh, content)\n }\n\n static moov (tracks) {\n if (tracks[0].useEME && (tracks[0].encv || tracks[0].enca)) {\n if (!tracks[0].pssh) {\n tracks[0].pssh = {\n kid: tracks[0].kid\n }\n }\n const pssh = this.pssh(tracks[0].pssh)\n // console.log('[remux],pssh,', hashVal(pssh.toString()))\n return MP4.box(MP4.types.moov,\n MP4.mvhd(tracks[0].mvhdDurtion || tracks[0].duration, tracks[0].mvhdTimecale || tracks[0].timescale),\n MP4.mvex(tracks),\n ...tracks.map((t) => MP4.trak(t)),\n pssh)\n } else {\n return MP4.box(MP4.types.moov,\n MP4.mvhd(tracks[0].mvhdDurtion || tracks[0].duration, tracks[0].mvhdTimecale || tracks[0].timescale),\n ...tracks.map((t) => MP4.trak(t)),\n MP4.mvex(tracks)\n )\n }\n }\n\n static mvhd (duration, timescale = 90000) {\n const mvhd = MP4.box(MP4.types.mvhd, new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >> 24) & 0xff, (timescale >> 16) & 0xff, (timescale >> 8) & 0xff, timescale & 0xff,\n (duration >> 24) & 0xff, (duration >> 16) & 0xff, (duration >> 8) & 0xff, duration & 0xff,\n 0x00, 0x01, 0x00, 0x00, // rate\n 0x01, 0x00, // volume\n 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // matrix\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0xff, 0xff, 0xff, 0xff // todo 0xff, 0xff, 0xff, 0xff // next_track_ID\n ]))\n // console.log('[remux],mvhd, len,', mvhd.byteLength, hashVal(mvhd.toString()))\n return mvhd\n }\n\n static trak (track) {\n const trak = MP4.box(\n MP4.types.trak,\n MP4.tkhd(track.id, track.tkhdDuration || 0, track.width, track.height),\n MP4.mdia(track)\n )\n // console.log('[remux],trak, len,', trak.byteLength, track.id, hashVal(trak.toString()))\n return trak\n }\n\n static tkhd (id, duration, width = 0, height = 0) {\n const tkhd = MP4.box(MP4.types.tkhd, new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x07, // flags、todo 0x07\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time todo\n (id >> 24) & 0xff, (id >> 16) & 0xff, (id >> 8) & 0xff, id & 0xff,\n 0x00, 0x00, 0x00, 0x00,\n (duration >> 24) & 0xff, (duration >> 16) & 0xff, (duration >> 8) & 0xff, duration & 0xff, // todo (duration >> 24) & 0xff, (duration >> 16) & 0xff, (duration >> 8) & 0xff, duration & 0xff,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, // layer\n 0x00, 0x00, // /*0x00*/ alternate_group //todo type === 'video' ? 0x01 : 0x00(第二个位置)\n 0x01, 0x00, // /* 0x01 */, 0x00, // non-audio track volume //todo type === 'audio' ? 0x01 : 0x00(第一个位置)\n 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // matrix\n (width >> 8) & 0xff, width & 0xff, 0x00, 0x00,\n (height >> 8) & 0xff, height & 0xff, 0x00, 0x00\n ]))\n // console.log('[remux],tkhd, len,', tkhd.byteLength, hashVal(tkhd.toString()))\n return tkhd\n }\n\n static mdia (track) {\n const mdia = MP4.box(MP4.types.mdia, MP4.mdhd(track.duration, track.timescale), MP4.hdlr(track.type), MP4.minf(track))\n // console.log('[remux],mdia, len,', mdia.byteLength, hashVal(mdia.toString()))\n return mdia\n }\n\n static mdhd (duration, timescale = 90000) {\n const mdhd = MP4.box(MP4.types.mdhd, new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // todo 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >> 24) & 0xff, (timescale >> 16) & 0xff, (timescale >> 8) & 0xff, timescale & 0xff,\n (duration >> 24) & 0xff, (duration >> 16) & 0xff, (duration >> 8) & 0xff, duration & 0xff, // (duration >> 24) & 0xff, (duration >> 16) & 0xff, (duration >> 8) & 0xff, duration & 0xff,//todo\n 0x55, 0xc4, // 'und' language (undetermined) //todo 0x15, 0xC7\n 0x00, 0x00 // pre_defined\n ]))\n // console.log('[remux],mdhd, len,', mdhd.byteLength, hashVal(mdhd.toString()))\n return mdhd\n }\n\n static hdlr (type) {\n const hdlr = MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type])\n // console.log('[remux],hdlr, len,', hdlr.byteLength, hashVal(hdlr.toString()))\n return hdlr\n }\n\n static minf (track) {\n const minf = MP4.box(MP4.types.minf, track.type === TrackType.VIDEO ? MP4.VMHD : MP4.SMHD, MP4.DINF, MP4.stbl(track))\n // console.log('[remux],minf, len,', minf.byteLength, hashVal(minf.toString()))\n return minf\n }\n\n static stbl (track) {\n const extBox = []\n if (track && track.ext) {\n track.ext.stss && extBox.push(MP4.stss(track.ext.stss.entries))\n // track.ext.stss && extBox.push(MP4.ctts(track.ext.stss.entries))\n }\n const stbl = MP4.box(MP4.types.stbl, MP4.stsd(track), MP4.STTS, extBox[0], MP4.STSC, MP4.STSZ, MP4.STCO)\n // console.log('[remux],stbl, len,', stbl.byteLength, hashVal(stbl.toString()))\n return stbl\n }\n\n static stsd (track) {\n let content\n if (track.type === 'audio') {\n if (track.useEME && track.enca) {\n content = MP4.enca(track)\n // console.log('[remux],enca, len,', content.byteLength, track.type, hashVal(content.toString()))\n } else {\n content = MP4.mp4a(track)\n // console.log('[remux],mp4a, len,', content.byteLength, track.type, hashVal(content.toString()))\n }\n } else if (track.useEME && track.encv) {\n content = MP4.encv(track)\n // console.log('[remux],encv, len,', content.byteLength, track.type, hashVal(content.toString()))\n } else {\n content = MP4.avc1hev1(track)\n // console.log('[remux],avc1hev1, len,', content.byteLength, track.type, hashVal(content.toString()))\n }\n const stsd = MP4.box(MP4.types.stsd, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01 // entry_count\n ]), content)\n // console.log('[remux],stsd, len,', stsd.byteLength, hashVal(stsd.toString()))\n return stsd\n }\n\n static enca (data) {\n const channelCount = data.enca.channelCount\n const sampleRate = data.enca.sampleRate\n const content = new Uint8Array([\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, channelCount, // channelcount\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00, // reserved2\n (sampleRate >> 8) & 0xff,\n sampleRate & 0xff, //\n 0x00, 0x00\n ])\n const esds = MP4.esds(data.config)\n // console.log('[remux],esds, len,', esds.byteLength, hashVal(esds.toString()))\n const sinf = MP4.sinf(data.enca)\n // console.log('[remux],sinf, len,', sinf.byteLength, hashVal(sinf.toString()))\n return MP4.box(MP4.types.enca, content, esds, sinf)\n }\n\n static encv (track) {\n const sps = track.sps.length > 0 ? track.sps[0] : []\n const pps = track.pps.length > 0 ? track.pps[0] : []\n const width = track.width\n const height = track.height\n const hSpacing = track.sarRatio[0]\n const vSpacing = track.sarRatio[1]\n\n const content = new Uint8Array([\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n\n 0x00, 0x00, // pre_defined\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n (width >> 8) & 0xff,\n width & 0xff, // width\n (height >> 8) & 0xff,\n height & 0xff, // height\n 0x00, 0x48, 0x00, 0x00, // horizresolution\n 0x00, 0x48, 0x00, 0x00, // vertresolution\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // frame_count\n\n 0x12,\n 0x64, 0x61, 0x69, 0x6C, // dailymotion/hls.js\n 0x79, 0x6D, 0x6F, 0x74,\n 0x69, 0x6F, 0x6E, 0x2F,\n 0x68, 0x6C, 0x73, 0x2E,\n 0x6A, 0x73, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, // compressorname\n 0x00, 0x18, // depth = 24\n 0x11, 0x11]) // pre_defined = -1;\n const avcc = new Uint8Array([\n 0x01, // version\n sps[1], // profile\n sps[2], // profile compatible\n sps[3], // level\n 0xfc | 3,\n 0xE0 | 1, // 目前只处理一个sps\n sps.length >>> 8 & 0xff,\n sps.length & 0xff\n ].concat(...sps).concat([\n 0x01,\n pps.length >>> 8 & 0xff,\n pps.length & 0xff\n ]).concat(...pps))\n const btrt = new Uint8Array([\n 0x00, 0x00, 0x58, 0x39,\n 0x00, 0x0F, 0xC8, 0xC0,\n 0x00, 0x04, 0x56, 0x48\n ])\n const sinf = MP4.sinf(track.encv)\n const pasp = new Uint8Array([\n (hSpacing >> 24), // hSpacing\n (hSpacing >> 16) & 0xff,\n (hSpacing >> 8) & 0xff,\n hSpacing & 0xff,\n (vSpacing >> 24), // vSpacing\n (vSpacing >> 16) & 0xff,\n (vSpacing >> 8) & 0xff,\n vSpacing & 0xff\n ])\n return MP4.box(MP4.types.encv, content, MP4.box(MP4.types.avcC, avcc), MP4.box(MP4.types.btrt, btrt), sinf, MP4.box(MP4.types.pasp, pasp))\n }\n\n static schi (data) {\n const content = new Uint8Array([])\n const tenc = MP4.tenc(data)\n return MP4.box(MP4.types.schi, content, tenc)\n }\n\n static tenc (data) {\n // 用于每个track的加密参数(包括KID、初始化向量、加密标志位),包含在TrackEncryptionBox(‘tenc’)中。\n const content = new Uint8Array(\n [\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // skip\n data.default_IsEncrypted & 0xff, // default_isProtected\n data.default_IV_size & 0xff // default_Per_Sample_IV_Size\n ].concat(parse(data.default_KID)))\n return MP4.box(MP4.types.tenc, content)\n }\n\n static sinf (data) {\n const content = new Uint8Array([])\n const frma = new Uint8Array([\n data.data_format.charCodeAt(0),\n data.data_format.charCodeAt(1),\n data.data_format.charCodeAt(2),\n data.data_format.charCodeAt(3)\n ])\n const schm = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00,\n 0x63, 0x65, 0x6E, 0x63, // cenc\n 0x00, 0x01, 0x00, 0x00 // version\n ])\n const schi = MP4.schi(data)\n return MP4.box(MP4.types.sinf, content, MP4.box(MP4.types.frma, frma), MP4.box(MP4.types.schm, schm), schi)\n }\n\n static avc1hev1 (track) {\n const isHevc = track.codecType === VideoCodecType.HEVC\n const typ = isHevc ? MP4.types.hvc1 : MP4.types.avc1\n const config = isHevc ? MP4.hvcC(track) : MP4.avcC(track)\n const boxes = [\n new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, // pre_defined\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined\n (track.width >> 8) & 0xff, track.width & 0xff, // width\n (track.height >> 8) & 0xff, track.height & 0xff, // height\n 0x00, 0x48, 0x00, 0x00, // horizresolution\n 0x00, 0x48, 0x00, 0x00, // vertresolution\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // frame_count\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // compressor name\n 0x00, 0x18, // depth\n 0x11, 0x11 // pre_defined = -1 //todo\n ]), config\n ]\n // console.log('[remux],avc1hev1_0, len,', boxes[0].byteLength, hashVal(boxes[0].toString()))\n // console.log('[remux],avc1hev1_1, len,', boxes[1].byteLength, hashVal(boxes[1].toString()))\n if (isHevc) {\n boxes.push(MP4.box(MP4.types.fiel, new Uint8Array([0x01, 0x00])))\n // console.log('[remux],fiel, len,', boxes[2].byteLength, hashVal(boxes[2].toString()))\n } else if (track.sarRatio && track.sarRatio.length > 1) {\n boxes.push(MP4.pasp(track.sarRatio))\n // console.log('[remux],pasp, len,', boxes[2].byteLength, hashVal(boxes[2].toString()))\n }\n return MP4.box(typ, ...boxes)\n }\n\n static avcC (track) {\n const sps = []\n const pps = []\n\n let len\n track.sps.forEach((s) => {\n len = s.byteLength\n sps.push((len >>> 8) & 0xff)\n sps.push(len & 0xff)\n sps.push(...s)\n })\n\n track.pps.forEach((p) => {\n len = p.byteLength\n pps.push((len >>> 8) & 0xff)\n pps.push(len & 0xff)\n pps.push(...p)\n })\n\n return MP4.box(MP4.types.avcC, new Uint8Array([\n 0x01, // configurationVersion\n sps[3], // AVCProfileIndication\n sps[4], // profile_compatibility\n sps[5], // AVCLevelIndication\n 0xfc | 3, // lengthSizeMinusOne\n 0xe0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets\n ].concat(...sps)\n .concat([track.pps.length]) // numOfPictureParameterSets\n .concat(...pps)))\n }\n\n static hvcC (track) {\n const hvcC = track.hvcC\n if (hvcC instanceof ArrayBuffer || hvcC instanceof Uint8Array) return hvcC\n const { vps, sps, pps } = track\n let data\n if (hvcC) {\n const pcf = hvcC.generalProfileCompatibilityFlags\n const cif = hvcC.generalConstraintIndicatorFlags\n const numOfArrays = (vps.length && 1) + (sps.length && 1) + (pps.length && 1)\n data = [\n 0x01, // configurationVersion\n hvcC.generalProfileSpace << 6 | hvcC.generalTierFlag << 5 | hvcC.generalProfileIdc,\n pcf >>> 24, pcf >>> 16, pcf >>> 8, pcf,\n cif[0], cif[1], cif[2], cif[3], cif[4], cif[5],\n hvcC.generalLevelIdc,\n 0xF0, 0x00, // min_spatial_segmentation_idc\n 0xFC, // parallelismType\n hvcC.chromaFormatIdc | 0xFC,\n hvcC.bitDepthLumaMinus8 | 0xF8,\n hvcC.bitDepthChromaMinus8 | 0xF8,\n 0x00, 0x00, // avgFrameRate\n hvcC.numTemporalLayers << 3 | hvcC.temporalIdNested << 2 | 3,\n numOfArrays\n ]\n const write = (x) => {\n data.push(x.length >> 8, x.length)\n data.push(...x)\n }\n if (vps.length) {\n data.push(0xA0, 0x00, vps.length)\n vps.forEach(write)\n }\n if (sps.length) {\n data.push(0xA1, 0x00, sps.length)\n sps.forEach(write)\n }\n if (pps.length) {\n data.push(0xA2, 0x00, pps.length)\n pps.forEach(write)\n }\n } else {\n data = [\n 0x01, // configurationVersion\n 0x01, // profile_space + tier_flag + profile_idc\n 0x60, 0x00, 0x00, 0x00, // general_profile_compatibility\n 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, // constraint_indicator_flags\n 0x5D, // level_idc=90\n 0xF0, 0x00, 0xFC, 0xFD, // profile_compatibility_indications\n 0xF8, // ‘11111’b + bitDepthLumaMinus8\n 0xF8, // ‘11111’b + bitDepthChromaMinus8\n 0x00, 0x00, // avgFrameRate\n 0x0F, // constantFrameRate + numTemporalLayers + ‘1’b + lengthSizeMinusOne\n 0x03, // numOfArrays\n\n // vps\n 0xA0, 0x00, 0x01, // array_completeness + ‘0’b + NAL_unit_type + numNalus\n 0x00, 0x18, // nalUnitLength\n 0x40, 0x01, 0x0C, 0x01, 0xFF, 0xFF, 0x01, 0x60, 0x00, 0x00, 0x03, 0x00, 0x90, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x5D, 0x99, 0x98, 0x09,\n\n // sps\n 0xA1, 0x00, 0x01, // array_completeness + ‘0’b + NAL_unit_type + numNalus\n 0x00, 0x2D, // nalUnitLength\n 0x42, 0x01, 0x01, 0x01, 0x60, 0x00, 0x00, 0x03, 0x00, 0x90, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x5D, 0xA0, 0x02,\n 0x80, 0x80, 0x2D, 0x16, 0x59, 0x99, 0xA4, 0x93, 0x2B, 0x9A, 0x80, 0x80, 0x80, 0x82, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,\n 0x00, 0x03, 0x00, 0x32, 0x10,\n\n // pps\n 0xA2, 0x00, 0x01, // array_completeness + ‘0’b + NAL_unit_type + numNalus\n 0x00, 0x07, // nalUnitLength\n 0x44, 0x01, 0xC1, 0x72, 0xB4, 0x62, 0x40\n ]\n }\n return MP4.box(MP4.types.hvcC, new Uint8Array(data))\n }\n\n static pasp ([hSpacing, vSpacing]) {\n return MP4.box(MP4.types.pasp, new Uint8Array([\n hSpacing >> 24, (hSpacing >> 16) & 0xff, (hSpacing >> 8) & 0xff, hSpacing & 0xff,\n vSpacing >> 24, (vSpacing >> 16) & 0xff, (vSpacing >> 8) & 0xff, vSpacing & 0xff\n ]))\n }\n\n static mp4a (track) {\n return MP4.box(MP4.types.mp4a, new Uint8Array([\n 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, track.channelCount,\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, // pre_defined\n 0x00, 0x00, // reserved\n (track.sampleRate >> 8) & 0xff, track.sampleRate & 0xff,\n 0x00, 0x00\n ]), track.config.length ? MP4.esds(track.config) : undefined)\n }\n\n static esds (config) {\n const len = config.length\n const esds = MP4.box(MP4.types.esds, new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x03, // tag\n 0x17 + len, // length\n 0x00, 0x00, // ES_ID\n 0x00, // streamDependenceFlag, URL_flag, reserved, streamPriority\n 0x04, // tag\n 0x0f + len, // length\n 0x40, // object type\n 0x15, // streamType\n 0x00, 0x06, 0x00, // bufferSizeDB\n 0x00, 0x00, 0xda, 0xc0, // maxBitrate\n 0x00, 0x00, 0xda, 0xc0, // avgBitrate\n 0x05 // tag, DecoderSpecificInfoTag\n ].concat([len])\n .concat(config)\n .concat(\n [0x06, 0x01, 0x02]// GASpecificConfig\n )\n ))\n // console.log('[remux],esds ,len ', esds.byteLength, hashVal(esds.toString()))\n return esds\n }\n\n static mvex (tracks) {\n // const mehd = MP4.box(MP4.types.mehd, this.extension(0, 0), Buffer.writeUint32(tracks[0].tkhdDuration))\n // const mvex = MP4.box(MP4.types.mvex, mehd, MP4.trex1(1), MP4.trex2(2))\n // // console.log('[remux],mvex, len,', mvex.byteLength, hashVal(mvex.toString()))\n // const mvex = MP4.box(MP4.types.mvex, MP4.trex1(1), MP4.trex2(2))\n const mvex = MP4.box(MP4.types.mvex, ...tracks.map((t) => MP4.trex(t.id)))\n // console.log('[remux],mvex, len,', mvex.byteLength, hashVal(mvex.toString()))\n return mvex\n }\n\n static trex (id) {\n const trex = MP4.box(MP4.types.trex, new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n id >> 24, (id >> 16) & 0xff, (id >> 8) & 0xff, id & 0xff, // track_ID\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]))\n // console.log('[remux],trex, len,', trex.byteLength, hashVal(trex.toString()))\n return trex\n }\n\n static trex1 (id) {\n const trex = MP4.box(MP4.types.trex, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n (id >> 24),\n (id >> 16) & 0xff,\n (id >> 8) & 0xff,\n (id & 0xff), // track_ID\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x02, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x00 // default_sample_flags\n ]))\n // console.log('[remux],trex, len,', trex.byteLength, hashVal(trex.toString()))\n return trex\n }\n\n static trex2 (id) {\n const trex = MP4.box(MP4.types.trex, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n (id >> 24),\n (id >> 16) & 0xff,\n (id >> 8) & 0xff,\n (id & 0xff), // track_ID\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x04, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x02, 0x00, 0x00, 0x00 // default_sample_flags\n ]))\n // console.log('[remux],trex, len,', trex.byteLength, hashVal(trex.toString()))\n return trex\n }\n\n static moof (tracks) {\n const moof = MP4.box(MP4.types.moof, MP4.mfhd(tracks[0].samples ? tracks[0].samples[0].gopId : 0), ...tracks.map((t) => MP4.traf(t)))\n // console.log('[remux],moof, len', moof.byteLength)\n return moof\n // return MP4.box(MP4.types.moof, MP4.mfhd(tracks[0].gopId), ...tracks.map((t) => MP4.traf(t)))\n }\n\n static mfhd (sequenceNumber) {\n // sequenceNumber += 1\n const mfhd = MP4.box(MP4.types.mfhd, new Uint8Array([\n 0x00, // version\n 0x00, 0x00, 0x00, // flags\n sequenceNumber >> 24, (sequenceNumber >> 16) & 0xff, (sequenceNumber >> 8) & 0xff, sequenceNumber & 0xff\n ]))\n // console.log('[remux],mfhd, len,', mfhd.byteLength, hashVal(mfhd.toString()))\n return mfhd\n }\n\n static traf (track) {\n const tfhd = MP4.tfhd(track.id)\n // console.log('[remux],tfhd, len,', tfhd.byteLength, hashVal(tfhd.toString()), ', trackid = ', track.id)\n // console.log('[remux],tfdt,baseMediaDecodeTime,', track.baseMediaDecodeTime)\n const tfdt = MP4.tfdt(track, track.baseMediaDecodeTime)\n let sencLength = 0\n let samples\n if (track.isVideo && track.videoSenc) {\n samples = track.videoSenc\n samples.forEach(function (item) {\n sencLength = sencLength + 8\n if (item.subsamples && item.subsamples.length) {\n sencLength = sencLength + 2\n sencLength = sencLength + item.subsamples.length * 6\n }\n })\n }\n track.videoSencLength = sencLength\n // console.log('[remux],tfdt, len,', tfdt.toString().length)\n // console.log('[remux],tfdt, len,', tfdt.byteLength, hashVal(tfdt.toString()))\n if (!track.useEME || (!track.isVideoEncryption && !track.isAudioEncryption)) {\n const sdtp = MP4.sdtp(track)\n // console.log('[remux],sdtp, len,', sdtp.byteLength, hashVal(sdtp.toString()))\n const offset = 16 + // tfhd\n 20 + // tfdt\n 8 + // traf header\n 16 + // mfhd\n 8 + // moof header\n 8 // mdat header\n return MP4.box(MP4.types.traf, tfhd, tfdt, sdtp, MP4.trun(track.samples, sdtp.byteLength + offset))\n } else if (track.isVideoEncryption) {\n if (track.isVideo) {\n // 加密视频\n const saiz = MP4.saiz(track)\n const saio = MP4.saio(track)\n const trun = MP4.trun1(track)\n const senc = MP4.senc(track)\n const traf = MP4.box(MP4.types.traf, tfhd, tfdt, saiz, saio, trun, senc)\n // console.log('[remux],trex_video, len,', traf.byteLength, hashVal(traf.toString()))\n return traf\n } else {\n // 视频加密,音频加密和未加密处理\n if (!track.isAudioEncryption) {\n // 音频未加密\n const sbgp = MP4.sbgp()\n const trun = MP4.trun1(track)\n return MP4.box(MP4.types.traf, tfhd, tfdt, sbgp, trun)\n } else {\n // 音频加密\n const sbgp = MP4.sbgp()\n const saiz = MP4.saiz(track)\n const saio = MP4.saio(track)\n const senc = MP4.senc(track)\n const trun = MP4.trun1(track)\n const traf = MP4.box(MP4.types.traf, tfhd, tfdt, sbgp, saiz, saio, senc, trun)\n // console.log('[remux],trex_audio, len,', traf.byteLength, hashVal(traf.toString()))\n return traf\n }\n }\n } else {\n // 视频未加密,音频加密\n if (track.isVideo) {\n const trun = MP4.trun1(track)\n return MP4.box(MP4.types.traf, tfhd, tfdt, trun)\n } else {\n const sbgp = MP4.sbgp()\n const saiz = MP4.saiz(track)\n const saio = MP4.saio(track)\n const senc = MP4.senc(track)\n const trun = MP4.trun1(track)\n const traf = MP4.box(MP4.types.traf, tfhd, tfdt, sbgp, saiz, saio, senc, trun)\n // console.log('[remux],trex, len,', traf.byteLength, hashVal(traf.toString()))\n return traf\n }\n }\n }\n\n static sdtp (data) {\n const buffer = new Buffer()\n data.samples.forEach(item => {\n buffer.write(new Uint8Array(data.isVideo ? [item.keyframe ? 32 : 16] : [16]))\n })\n return MP4.box(MP4.types.sdtp, this.extension(0, 0), buffer.buffer)\n }\n\n static trun1 (data) {\n // const id = data.id\n // const ceil = id === 1 ? 12 : 4\n const buffer = new Buffer()\n const sampleCount = Buffer.writeUint32(data.samples.length)\n let offset = null\n if (data.isVideo) {\n const sencLength = data.videoSencLength\n /*\n 16 + // mfhd\n 16 + // tfhd\n 20 + // tfdt\n 17 + //saiz\n 24 + //saio\n data.samples.length*16\n 4(offset) + 4(sampleCount) + 12(header) //trun\n 12(header) + sencLength //senc\n 8 + // traf header\n 8 + // moof header\n 8 // mdat header\n = 149+data.samples.length * 16 + sencLength\n */\n offset = Buffer.writeUint32(data.samples.length * 16 + sencLength + 149)\n if (!data.isVideoEncryption && data.isAudioEncryption) {\n offset = Buffer.writeUint32(data.samples.length * 16 + 92)\n }\n } else {\n /*\n 16 + // mfhd\n 16 + // tfhd\n 20 + // tfdt\n 28 + //sbgp\n 4(offset) + 4(sampleCount) + 12(header) //trun\n 8 + // traf header\n 8 + // moof header\n 8 // mdat header\n */\n let len = data.samples.length * 12 + 124\n if (data.isAudioEncryption) {\n len = data.samples.length * 12 + 8 * data.audioSenc.length + 177\n }\n offset = Buffer.writeUint32(len)\n }\n\n data.samples.forEach(item => {\n buffer.write(Buffer.writeUint32(item.duration))\n buffer.write(Buffer.writeUint32(item.size))\n buffer.write(Buffer.writeUint32(item.keyframe ? 0x02000000 : 0x00010000))\n if (data.isVideo) {\n buffer.write(Buffer.writeUint32(item.cts ? item.cts : 0))\n }\n })\n\n return MP4.box(MP4.types.trun, this.extension(0, data.flags), sampleCount, offset, buffer.buffer)\n }\n\n static senc (data) {\n const buffer = new Buffer()\n const len = data.samples.length\n const ceil = data.isVideo ? 16 : 8\n const flag = data.isVideo ? 2 : 0\n let samples = []\n let samplesLength = 0\n if (data.isVideo) {\n samples = data.videoSenc\n samplesLength = data.videoSencLength\n } else {\n samples = data.audioSenc\n }\n samplesLength = samplesLength || ceil * len\n buffer.write(\n Buffer.writeUint32(16 + samplesLength), MP4.types.senc, this.extension(0, flag)\n )\n buffer.write(Buffer.writeUint32(len))\n samples.forEach(item => {\n for (let i = 0; i < item.InitializationVector.length; i++) {\n buffer.write(new Uint8Array([item.InitializationVector[i]]))\n }\n if (item.subsamples && item.subsamples.length) {\n buffer.write(Buffer.writeUint16(item.subsamples.length))\n item.subsamples.forEach(value => {\n buffer.write(Buffer.writeUint16(value.BytesOfClearData))\n buffer.write(Buffer.writeUint32(value.BytesOfProtectedData))\n })\n }\n })\n return buffer.buffer\n // return MP4.box(MP4.types.senc, this.extension(0, flag), buffer.buffer)\n }\n\n static saio (data) {\n let length = data.samples.length * 12 + 141\n if (!data.isVideo && data.isAudioEncryption) {\n length = 149\n }\n const content = new Uint8Array([\n 0x01, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x01,\n 0x00, 0x00, 0x00, 0x00,\n (length >> 24) & 0xff,\n (length >> 16) & 0xff,\n (length >> 8) & 0xff,\n length & 0xff\n ])\n return MP4.box(MP4.types.saio, content)\n }\n\n static saiz (data) {\n const samplesLength = data.samples.length\n const content = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00,\n 0x10, // default sample info size\n (samplesLength >> 24) & 0xff,\n (samplesLength >> 16) & 0xff,\n (samplesLength >> 8) & 0xff,\n samplesLength & 0xff\n ])\n return MP4.box(MP4.types.saiz, content)\n }\n\n static sbgp () {\n const content = new Uint8Array([\n 0x72, 0x6F, 0x6C, 0x6C, // sgpd, grouping_type\n 0x00, 0x00, 0x00, 0x01,\n 0x00, 0x00, 0x01, 0x19,\n 0x00, 0x00, 0x00, 0x01\n ])\n return MP4.box(MP4.types.sbgp, this.extension(0, 0), content)\n }\n\n static extension (version, flag) {\n return new Uint8Array([\n version,\n (flag >> 16) & 0xff,\n (flag >> 8) & 0xff,\n flag & 0xff\n ])\n }\n\n static tfhd (id) {\n return MP4.box(MP4.types.tfhd, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags todo 0x00\n id >> 24, (id >> 16) & 0xff, (id >> 8) & 0xff, id & 0xff // track_ID\n ]))\n }\n\n static tfdt (data, baseMediaDecodeTime) {\n const upperWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1))\n const lowerWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1))\n if (data.useEME && (data.isVideoEncryption || data.isAudioEncryption)) {\n return MP4.box(MP4.types.tfdt, new Uint8Array([\n 0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n lowerWordBaseMediaDecodeTime >> 24,\n (lowerWordBaseMediaDecodeTime >> 16) & 0xff,\n (lowerWordBaseMediaDecodeTime >> 8) & 0xff,\n lowerWordBaseMediaDecodeTime & 0xff\n ]))\n } else {\n return MP4.box(MP4.types.tfdt, new Uint8Array([\n 0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n upperWordBaseMediaDecodeTime >> 24,\n (upperWordBaseMediaDecodeTime >> 16) & 0xff,\n (upperWordBaseMediaDecodeTime >> 8) & 0xff,\n upperWordBaseMediaDecodeTime & 0xff,\n lowerWordBaseMediaDecodeTime >> 24,\n (lowerWordBaseMediaDecodeTime >> 16) & 0xff,\n (lowerWordBaseMediaDecodeTime >> 8) & 0xff,\n lowerWordBaseMediaDecodeTime & 0xff\n ]))\n }\n }\n\n static trun (samples, offset) {\n const sampleLen = samples.length\n const dataLen = 12 + (16 * sampleLen)\n offset += 8 + dataLen\n const data = new Uint8Array(dataLen)\n data.set([\n 0x00, // version\n 0x00, 0x0f, 0x01, // flags\n (sampleLen >>> 24) & 0xff, (sampleLen >>> 16) & 0xff, (sampleLen >>> 8) & 0xff, sampleLen & 0xff,\n (offset >>> 24) & 0xff, (offset >>> 16) & 0xff, (offset >>> 8) & 0xff, offset & 0xff // data_offset\n ], 0)\n for (let i = 0; i < sampleLen; i++) {\n const {\n duration, size, flag = {}, cts = 0\n } = samples[i]\n data.set([\n (duration >>> 24) & 0xff, (duration >>> 16) & 0xff, (duration >>> 8) & 0xff, duration & 0xff,\n (size >>> 24) & 0xff, (size >>> 16) & 0xff, (size >>> 8) & 0xff, size & 0xff,\n (flag.isLeading << 2) | (flag.dependsOn === null || flag.dependsOn === undefined ? 1 : flag.dependsOn),\n (flag.isDependedOn << 6) | (flag.hasRedundancy << 4) | (flag.paddingValue << 1) | (flag.isNonSyncSample === null || flag.isNonSyncSample === undefined ? 1 : flag.isNonSyncSample),\n flag.degradationPriority & (0xf0 << 8), flag.degradationPriority & 0x0f, // sample_flags\n (cts >>> 24) & 0xff, (cts >>> 16) & 0xff, (cts >>> 8) & 0xff, cts & 0xff // sample_composition_time_offset\n ], 12 + 16 * i)\n }\n\n return MP4.box(MP4.types.trun, data)\n }\n\n static moovMP4 (tracks) {\n return MP4.box(MP4.types.moov,\n MP4.mvhd(tracks[0].duration, tracks[0].timescale),\n ...tracks.map((t) => MP4.trackMP4(t)))\n }\n\n static trackMP4 (track) {\n return MP4.box(\n MP4.types.trak,\n MP4.tkhd(track.id, track.duration, track.width, track.height),\n MP4.mdiaMP4(track)\n )\n }\n\n static mdiaMP4 (track) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(track.duration, track.timescale), MP4.hdlr(track.type), MP4.minfMP4(track))\n }\n\n static minfMP4 (track) {\n return MP4.box(MP4.types.minf, track.type === TrackType.VIDEO ? MP4.VMHD : MP4.SMHD, MP4.DINF, MP4.stblMP4(track))\n }\n\n static stblMP4 (track) {\n const { ext } = track\n const boxes = [\n MP4.stsd(track),\n MP4.stts(ext.stts),\n MP4.stsc(ext.stsc),\n MP4.stsz(ext.stsz),\n MP4.stco(ext.stco)\n ]\n\n if (ext.stss.length) {\n boxes.push(MP4.stss(ext.stss))\n }\n\n if (ext.ctts.length) {\n boxes.push(MP4.ctts(ext.ctts))\n }\n\n return MP4.box(MP4.types.stbl, ...boxes)\n }\n\n static stts (samples) {\n const len = samples.length\n const data = new Uint8Array(8 * len)\n let offset = 0\n samples.forEach(({ value, count }) => {\n data.set([\n count >> 24, (count >> 16) & 0xff, (count >> 8) & 0xff, count & 0xff,\n value >> 24, (value >> 16) & 0xff, (value >> 8) & 0xff, value & 0xff\n ], offset)\n offset += 8\n })\n\n return MP4.box(MP4.types.stts, concatUint8Array(new Uint8Array([\n 0, 0, 0, 0,\n (len >> 24), (len >> 16) & 0xff, (len >> 8) & 0xff, len & 0xff\n ]), data))\n }\n\n static stsc (entries) {\n const len = entries.length\n const data = new Uint8Array(12 * len)\n let offset = 0\n entries.forEach(({ firstChunk, samplesPerChunk, sampleDescIndex }) => {\n data.set([\n firstChunk >> 24, (firstChunk >> 16) & 0xff, (firstChunk >> 8) & 0xff, firstChunk & 0xff,\n samplesPerChunk >> 24, (samplesPerChunk >> 16) & 0xff, (samplesPerChunk >> 8) & 0xff, samplesPerChunk & 0xff,\n sampleDescIndex >> 24, (sampleDescIndex >> 16) & 0xff, (sampleDescIndex >> 8) & 0xff, sampleDescIndex & 0xff\n ], offset)\n offset += 12\n })\n return MP4.box(MP4.types.stsc, concatUint8Array(new Uint8Array([\n 0, 0, 0, 0,\n (len >> 24), (len >> 16) & 0xff, (len >> 8) & 0xff, len & 0xff\n ]), data))\n }\n\n static stsz (samplesSizes) {\n const len = samplesSizes.length\n const data = new Uint8Array(4 * len)\n let offset = 0\n samplesSizes.forEach((x) => {\n data.set([\n x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff\n ], offset)\n offset += 4\n })\n return MP4.box(MP4.types.stsz, concatUint8Array(\n new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n len >> 24, (len >> 16) & 0xff, (len >> 8) & 0xff, len & 0xff\n ]),\n data\n ))\n }\n\n static stco (offsets) {\n const len = offsets.length\n const data = new Uint8Array(4 * len)\n let offset = 0\n offsets.forEach((x) => {\n data.set([\n x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff\n ], offset)\n offset += 4\n })\n return MP4.box(MP4.types.stco, concatUint8Array(\n new Uint8Array([\n 0, 0, 0, 0,\n len >> 24, (len >> 16) & 0xff, (len >> 8) & 0xff, len & 0xff\n ]),\n data\n ))\n }\n\n static stss (keyframeIndexes) {\n const len = keyframeIndexes.length\n const data = new Uint8Array(4 * len)\n let offset = 0\n keyframeIndexes.forEach((x) => {\n data.set([\n x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff\n ], offset)\n offset += 4\n })\n return MP4.box(MP4.types.stss, concatUint8Array(\n new Uint8Array([\n 0, 0, 0, 0,\n len >> 24, (len >> 16) & 0xff, (len >> 8) & 0xff, len & 0xff\n ]),\n data\n ))\n }\n\n static ctts (samples) {\n const len = samples.length\n const data = new Uint8Array(8 * len)\n let offset = 0\n samples.forEach(({ value, count }) => {\n data.set([\n count >> 24, (count >> 16) & 0xff, (count >> 8) & 0xff, count & 0xff,\n value >> 24, (value >> 16) & 0xff, (value >> 8) & 0xff, value & 0xff\n ], offset)\n offset += 8\n })\n return MP4.box(MP4.types.ctts, concatUint8Array(new Uint8Array([\n 0, 0, 0, 0,\n len >> 24, (len >> 16) & 0xff, (len >> 8) & 0xff, len & 0xff\n ]), data))\n }\n\n static styp () {\n return MP4.box(MP4.types.styp, new Uint8Array([\n 0x6D, 0x73, 0x64, 0x68,\n 0x00, 0x00, 0x00, 0x00,\n 0x6D, 0x73, 0x64, 0x68,\n 0x6D, 0x73, 0x69, 0x78\n ]))\n }\n\n // data.sampleOffset 指的是samples的序列号。_samples[0].idx\n static sidx (data) {\n // const buffer = new Buffer()\n const timescale = data.timescale\n const duration = data.samples[0].duration\n const durationCount = duration * data.samples.length\n const earliestTime = data.samples[0].sampleOffset * duration\n let mdatSize = 8\n data.samples.forEach(item => {\n mdatSize += item.size\n })\n let length = 0\n if (data.isVideo) {\n let sencLength = 0\n let samples\n if (data.videoSenc) {\n samples = data.videoSenc\n }\n if (data.isVideo) {\n samples.forEach(item => {\n sencLength = sencLength + 8\n if (item.subsamples && item.subsamples.length) {\n sencLength = sencLength + 2\n sencLength = sencLength + item.subsamples.length * 6\n }\n })\n }\n data.videoSencLength = sencLength\n length = mdatSize + 141 + data.samples.length * 16 + sencLength\n if (data.useEME && data.isAudioEncryption && !data.isVideoEncryption) {\n length = mdatSize + (data.samples.length * 16) + 84\n }\n } else {\n length = mdatSize + 116 + data.samples.length * 12\n if (data.useEME && data.isAudioEncryption) {\n length = mdatSize + 169 + data.samples.length * 12 + 8 * data.audioSenc.length\n }\n }\n\n const content = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, data.id & 0xff, // ref_id\n (timescale >> 24) & 0xff,\n (timescale >> 16) & 0xff,\n (timescale >> 8) & 0xff,\n timescale & 0xff, // timescale\n (earliestTime >> 24) & 0xff,\n (earliestTime >> 16) & 0xff,\n (earliestTime >> 8) & 0xff,\n earliestTime & 0xff, // earliest_presentation_time\n 0x00, 0x00, 0x00, 0x00, // first_offset\n 0x00, 0x00, // reserved\n 0x00, 0x01, // ref_count\n // 0x00, 0x04, 0x11, 0xCF, // ref_size + ref_type\n // 0x00, 0x01, 0x0A, 0xA6, // ref_size + ref_type\n 0x00, // ref_size + ref_type ref_size = moof.size + mdat.size\n (length >> 16) & 0xff,\n (length >> 8) & 0xff,\n length & 0xff,\n (durationCount >> 24) & 0xff,\n (durationCount >> 16) & 0xff,\n (durationCount >> 8) & 0xff,\n durationCount & 0xff,\n 0x90, 0x00, 0x00, 0x00\n ])\n return MP4.box(MP4.types.sidx, content)\n }\n\n static mdat (data) {\n const mdat = MP4.box(MP4.types.mdat, data)\n // console.log('[remux],mdat ,len ', mdat.byteLength, hashVal(mdat.toString()))\n return mdat\n }\n}\n","\nexport class Logger {\n constructor (name, enable) {\n this.name = name || ''\n this._prefix = `[${this.name}]`\n Logger.disabled = enable\n }\n\n debug (...args) {\n if (Logger.disabled) return\n console.debug(this._prefix, ...args)\n }\n\n log (...args) {\n if (Logger.disabled) return\n console.log(this._prefix, ...args)\n }\n\n warn (...args) {\n if (Logger.disabled) return\n console.warn(this._prefix, ...args)\n }\n\n error (...args) {\n if (Logger.disabled) return\n console.error(this._prefix, ...args)\n }\n\n table (...args) {\n if (Logger.disabled) return\n console.group(this._prefix)\n console.table(...args)\n console.groupEnd()\n }\n\n static disabled = true\n\n static enable () {\n Logger.disabled = false\n }\n\n static disable () {\n Logger.disabled = true\n }\n}\n","import {\n WordArray,\n Hasher,\n} from './core.js';\n\n// Constants table\nconst T = [];\n\n// Compute constants\nfor (let i = 0; i < 64; i += 1) {\n T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n}\n\nconst FF = (a, b, c, d, x, s, t) => {\n const n = a + ((b & c) | (~b & d)) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n};\n\nconst GG = (a, b, c, d, x, s, t) => {\n const n = a + ((b & d) | (c & ~d)) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n};\n\nconst HH = (a, b, c, d, x, s, t) => {\n const n = a + (b ^ c ^ d) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n};\n\nconst II = (a, b, c, d, x, s, t) => {\n const n = a + (c ^ (b | ~d)) + x + t;\n return ((n << s) | (n >>> (32 - s))) + b;\n};\n\n/**\n * MD5 hash algorithm.\n */\nexport class MD5Algo extends Hasher {\n _doReset() {\n this._hash = new WordArray([\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n ]);\n }\n\n _doProcessBlock(M, offset) {\n const _M = M;\n\n // Swap endian\n for (let i = 0; i < 16; i += 1) {\n // Shortcuts\n const offset_i = offset + i;\n const M_offset_i = M[offset_i];\n\n _M[offset_i] = (\n (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff)\n | (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n );\n }\n\n // Shortcuts\n const H = this._hash.words;\n\n const M_offset_0 = _M[offset + 0];\n const M_offset_1 = _M[offset + 1];\n const M_offset_2 = _M[offset + 2];\n const M_offset_3 = _M[offset + 3];\n const M_offset_4 = _M[offset + 4];\n const M_offset_5 = _M[offset + 5];\n const M_offset_6 = _M[offset + 6];\n const M_offset_7 = _M[offset + 7];\n const M_offset_8 = _M[offset + 8];\n const M_offset_9 = _M[offset + 9];\n const M_offset_10 = _M[offset + 10];\n const M_offset_11 = _M[offset + 11];\n const M_offset_12 = _M[offset + 12];\n const M_offset_13 = _M[offset + 13];\n const M_offset_14 = _M[offset + 14];\n const M_offset_15 = _M[offset + 15];\n\n // Working varialbes\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n\n // Computation\n a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n a = II(a, b, c, d, M_offset_0, 6, T[48]);\n d = II(d, a, b, c, M_offset_7, 10, T[49]);\n c = II(c, d, a, b, M_offset_14, 15, T[50]);\n b = II(b, c, d, a, M_offset_5, 21, T[51]);\n a = II(a, b, c, d, M_offset_12, 6, T[52]);\n d = II(d, a, b, c, M_offset_3, 10, T[53]);\n c = II(c, d, a, b, M_offset_10, 15, T[54]);\n b = II(b, c, d, a, M_offset_1, 21, T[55]);\n a = II(a, b, c, d, M_offset_8, 6, T[56]);\n d = II(d, a, b, c, M_offset_15, 10, T[57]);\n c = II(c, d, a, b, M_offset_6, 15, T[58]);\n b = II(b, c, d, a, M_offset_13, 21, T[59]);\n a = II(a, b, c, d, M_offset_4, 6, T[60]);\n d = II(d, a, b, c, M_offset_11, 10, T[61]);\n c = II(c, d, a, b, M_offset_2, 15, T[62]);\n b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n // Intermediate hash value\n H[0] = (H[0] + a) | 0;\n H[1] = (H[1] + b) | 0;\n H[2] = (H[2] + c) | 0;\n H[3] = (H[3] + d) | 0;\n }\n /* eslint-ensable no-param-reassign */\n\n _doFinalize() {\n // Shortcuts\n const data = this._data;\n const dataWords = data.words;\n\n const nBitsTotal = this._nDataBytes * 8;\n const nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - (nBitsLeft % 32));\n\n const nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n const nBitsTotalL = nBitsTotal;\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff)\n | (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n );\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff)\n | (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n );\n\n data.sigBytes = (dataWords.length + 1) * 4;\n\n // Hash final blocks\n this._process();\n\n // Shortcuts\n const hash = this._hash;\n const H = hash.words;\n\n // Swap endian\n for (let i = 0; i < 4; i += 1) {\n // Shortcut\n const H_i = H[i];\n\n H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff)\n | (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n }\n\n // Return final computed hash\n return hash;\n }\n\n clone() {\n const clone = super.clone.call(this);\n clone._hash = this._hash.clone();\n\n return clone;\n }\n}\n\n/**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.MD5('message');\n * var hash = CryptoJS.MD5(wordArray);\n */\nexport const MD5 = Hasher._createHelper(MD5Algo);\n\n/**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacMD5(message, key);\n */\nexport const HmacMD5 = Hasher._createHmacHelper(MD5Algo);\n","/* eslint-disable no-use-before-define */\n\n/**\n * Base class for inheritance.\n */\nexport class Base {\n /**\n * Extends this object and runs the init method.\n * Arguments to create() will be passed to init().\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var instance = MyType.create();\n */\n static create(...args) {\n return new this(...args);\n }\n\n /**\n * Copies properties into this object.\n *\n * @param {Object} properties The properties to mix in.\n *\n * @example\n *\n * MyType.mixIn({\n * field: 'value'\n * });\n */\n mixIn(properties) {\n return Object.assign(this, properties);\n }\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = instance.clone();\n */\n clone() {\n const clone = new this.constructor();\n Object.assign(clone, this);\n return clone;\n }\n}\n\n/**\n * An array of 32-bit words.\n *\n * @property {Array} words The array of 32-bit words.\n * @property {number} sigBytes The number of significant bytes in this word array.\n */\nexport class WordArray extends Base {\n /**\n * Initializes a newly created word array.\n *\n * @param {Array} words (Optional) An array of 32-bit words.\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.create();\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n */\n constructor(words = [], sigBytes = words.length * 4) {\n super();\n\n let typedArray = words;\n // Convert buffers to uint8\n if (typedArray instanceof ArrayBuffer) {\n typedArray = new Uint8Array(typedArray);\n }\n\n // Convert other array views to uint8\n if (\n typedArray instanceof Int8Array\n || typedArray instanceof Uint8ClampedArray\n || typedArray instanceof Int16Array\n || typedArray instanceof Uint16Array\n || typedArray instanceof Int32Array\n || typedArray instanceof Uint32Array\n || typedArray instanceof Float32Array\n || typedArray instanceof Float64Array\n ) {\n typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n }\n\n // Handle Uint8Array\n if (typedArray instanceof Uint8Array) {\n // Shortcut\n const typedArrayByteLength = typedArray.byteLength;\n\n // Extract bytes\n const _words = [];\n for (let i = 0; i < typedArrayByteLength; i += 1) {\n _words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n }\n\n // Initialize this word array\n this.words = _words;\n this.sigBytes = typedArrayByteLength;\n } else {\n // Else call normal init\n this.words = words;\n this.sigBytes = sigBytes;\n }\n }\n\n /**\n * Creates a word array filled with random bytes.\n *\n * @param {number} nBytes The number of random bytes to generate.\n *\n * @return {WordArray} The random word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.random(16);\n */\n static random(nBytes) {\n const words = [];\n\n const r = (m_w) => {\n let _m_w = m_w;\n let _m_z = 0x3ade68b1;\n const mask = 0xffffffff;\n\n return () => {\n _m_z = (0x9069 * (_m_z & 0xFFFF) + (_m_z >> 0x10)) & mask;\n _m_w = (0x4650 * (_m_w & 0xFFFF) + (_m_w >> 0x10)) & mask;\n let result = ((_m_z << 0x10) + _m_w) & mask;\n result /= 0x100000000;\n result += 0.5;\n return result * (Math.random() > 0.5 ? 1 : -1);\n };\n };\n\n for (let i = 0, rcache; i < nBytes; i += 4) {\n const _r = r((rcache || Math.random()) * 0x100000000);\n\n rcache = _r() * 0x3ade67b7;\n words.push((_r() * 0x100000000) | 0);\n }\n\n return new WordArray(words, nBytes);\n }\n\n /**\n * Converts this word array to a string.\n *\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n *\n * @return {string} The stringified word array.\n *\n * @example\n *\n * var string = wordArray + '';\n * var string = wordArray.toString();\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\n */\n toString(encoder = Hex) {\n return encoder.stringify(this);\n }\n\n /**\n * Concatenates a word array to this word array.\n *\n * @param {WordArray} wordArray The word array to append.\n *\n * @return {WordArray} This word array.\n *\n * @example\n *\n * wordArray1.concat(wordArray2);\n */\n concat(wordArray) {\n // Shortcuts\n const thisWords = this.words;\n const thatWords = wordArray.words;\n const thisSigBytes = this.sigBytes;\n const thatSigBytes = wordArray.sigBytes;\n\n // Clamp excess bits\n this.clamp();\n\n // Concat\n if (thisSigBytes % 4) {\n // Copy one byte at a time\n for (let i = 0; i < thatSigBytes; i += 1) {\n const thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n }\n } else {\n // Copy one word at a time\n for (let i = 0; i < thatSigBytes; i += 4) {\n thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n }\n }\n this.sigBytes += thatSigBytes;\n\n // Chainable\n return this;\n }\n\n /**\n * Removes insignificant bits.\n *\n * @example\n *\n * wordArray.clamp();\n */\n clamp() {\n // Shortcuts\n const { words, sigBytes } = this;\n\n // Clamp\n words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n words.length = Math.ceil(sigBytes / 4);\n }\n\n /**\n * Creates a copy of this word array.\n *\n * @return {WordArray} The clone.\n *\n * @example\n *\n * var clone = wordArray.clone();\n */\n clone() {\n const clone = super.clone.call(this);\n clone.words = this.words.slice(0);\n\n return clone;\n }\n}\n\n/**\n * Hex encoding strategy.\n */\nexport const Hex = {\n /**\n * Converts a word array to a hex string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The hex string.\n *\n * @static\n *\n * @example\n *\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n */\n stringify(wordArray) {\n // Shortcuts\n const { words, sigBytes } = wordArray;\n\n // Convert\n const hexChars = [];\n for (let i = 0; i < sigBytes; i += 1) {\n const bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n\n return hexChars.join('');\n },\n\n /**\n * Converts a hex string to a word array.\n *\n * @param {string} hexStr The hex string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n */\n parse(hexStr) {\n // Shortcut\n const hexStrLength = hexStr.length;\n\n // Convert\n const words = [];\n for (let i = 0; i < hexStrLength; i += 2) {\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n }\n\n return new WordArray(words, hexStrLength / 2);\n },\n};\n\n/**\n * Latin1 encoding strategy.\n */\nexport const Latin1 = {\n /**\n * Converts a word array to a Latin1 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Latin1 string.\n *\n * @static\n *\n * @example\n *\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n */\n stringify(wordArray) {\n // Shortcuts\n const { words, sigBytes } = wordArray;\n\n // Convert\n const latin1Chars = [];\n for (let i = 0; i < sigBytes; i += 1) {\n const bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n latin1Chars.push(String.fromCharCode(bite));\n }\n\n return latin1Chars.join('');\n },\n\n /**\n * Converts a Latin1 string to a word array.\n *\n * @param {string} latin1Str The Latin1 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n */\n parse(latin1Str) {\n // Shortcut\n const latin1StrLength = latin1Str.length;\n\n // Convert\n const words = [];\n for (let i = 0; i < latin1StrLength; i += 1) {\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n }\n\n return new WordArray(words, latin1StrLength);\n },\n};\n\n/**\n * UTF-8 encoding strategy.\n */\nexport const Utf8 = {\n /**\n * Converts a word array to a UTF-8 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-8 string.\n *\n * @static\n *\n * @example\n *\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n */\n stringify(wordArray) {\n try {\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n } catch (e) {\n throw new Error('Malformed UTF-8 data');\n }\n },\n\n /**\n * Converts a UTF-8 string to a word array.\n *\n * @param {string} utf8Str The UTF-8 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n */\n parse(utf8Str) {\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n },\n};\n\n/**\n * Abstract buffered block algorithm template.\n *\n * The property blockSize must be implemented in a concrete subtype.\n *\n * @property {number} _minBufferSize\n *\n * The number of blocks that should be kept unprocessed in the buffer. Default: 0\n */\nexport class BufferedBlockAlgorithm extends Base {\n constructor() {\n super();\n this._minBufferSize = 0;\n }\n\n /**\n * Resets this block algorithm's data buffer to its initial state.\n *\n * @example\n *\n * bufferedBlockAlgorithm.reset();\n */\n reset() {\n // Initial values\n this._data = new WordArray();\n this._nDataBytes = 0;\n }\n\n /**\n * Adds new data to this block algorithm's buffer.\n *\n * @param {WordArray|string} data\n *\n * The data to append. Strings are converted to a WordArray using UTF-8.\n *\n * @example\n *\n * bufferedBlockAlgorithm._append('data');\n * bufferedBlockAlgorithm._append(wordArray);\n */\n _append(data) {\n let m_data = data;\n\n // Convert string to WordArray, else assume WordArray already\n if (typeof m_data === 'string') {\n m_data = Utf8.parse(m_data);\n }\n\n // Append\n this._data.concat(m_data);\n this._nDataBytes += m_data.sigBytes;\n }\n\n /**\n * Processes available data blocks.\n *\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n *\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n *\n * @return {WordArray} The processed data.\n *\n * @example\n *\n * var processedData = bufferedBlockAlgorithm._process();\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n */\n _process(doFlush) {\n let processedWords;\n\n // Shortcuts\n const { _data: data, blockSize } = this;\n const dataWords = data.words;\n const dataSigBytes = data.sigBytes;\n const blockSizeBytes = blockSize * 4;\n\n // Count blocks ready\n let nBlocksReady = dataSigBytes / blockSizeBytes;\n if (doFlush) {\n // Round up to include partial blocks\n nBlocksReady = Math.ceil(nBlocksReady);\n } else {\n // Round down to include only full blocks,\n // less the number of blocks that must remain in the buffer\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n }\n\n // Count words ready\n const nWordsReady = nBlocksReady * blockSize;\n\n // Count bytes ready\n const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n // Process blocks\n if (nWordsReady) {\n for (let offset = 0; offset < nWordsReady; offset += blockSize) {\n // Perform concrete-algorithm logic\n this._doProcessBlock(dataWords, offset);\n }\n\n // Remove processed words\n processedWords = dataWords.splice(0, nWordsReady);\n data.sigBytes -= nBytesReady;\n }\n\n // Return processed words\n return new WordArray(processedWords, nBytesReady);\n }\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = bufferedBlockAlgorithm.clone();\n */\n clone() {\n const clone = super.clone.call(this);\n clone._data = this._data.clone();\n\n return clone;\n }\n}\n\n/**\n * Abstract hasher template.\n *\n * @property {number} blockSize\n *\n * The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n */\nexport class Hasher extends BufferedBlockAlgorithm {\n constructor(cfg) {\n super();\n\n this.blockSize = 512 / 32;\n\n /**\n * Configuration options.\n */\n this.cfg = Object.assign(new Base(), cfg);\n\n // Set initial values\n this.reset();\n }\n\n /**\n * Creates a shortcut function to a hasher's object interface.\n *\n * @param {Hasher} SubHasher The hasher to create a helper for.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n */\n static _createHelper(SubHasher) {\n return (message, cfg) => new SubHasher(cfg).finalize(message);\n }\n\n /**\n * Creates a shortcut function to the HMAC's object interface.\n *\n * @param {Hasher} SubHasher The hasher to use in this HMAC helper.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n */\n static _createHmacHelper(SubHasher) {\n return (message, key) => new HMAC(SubHasher, key).finalize(message);\n }\n\n /**\n * Resets this hasher to its initial state.\n *\n * @example\n *\n * hasher.reset();\n */\n reset() {\n // Reset data buffer\n super.reset.call(this);\n\n // Perform concrete-hasher logic\n this._doReset();\n }\n\n /**\n * Updates this hasher with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {Hasher} This hasher.\n *\n * @example\n *\n * hasher.update('message');\n * hasher.update(wordArray);\n */\n update(messageUpdate) {\n // Append\n this._append(messageUpdate);\n\n // Update the hash\n this._process();\n\n // Chainable\n return this;\n }\n\n /**\n * Finalizes the hash computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The hash.\n *\n * @example\n *\n * var hash = hasher.finalize();\n * var hash = hasher.finalize('message');\n * var hash = hasher.finalize(wordArray);\n */\n finalize(messageUpdate) {\n // Final message update\n if (messageUpdate) {\n this._append(messageUpdate);\n }\n\n // Perform concrete-hasher logic\n const hash = this._doFinalize();\n\n return hash;\n }\n}\n\n/**\n * HMAC algorithm.\n */\nexport class HMAC extends Base {\n /**\n * Initializes a newly created HMAC.\n *\n * @param {Hasher} SubHasher The hash algorithm to use.\n * @param {WordArray|string} key The secret key.\n *\n * @example\n *\n * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n */\n constructor(SubHasher, key) {\n super();\n\n const hasher = new SubHasher();\n this._hasher = hasher;\n\n // Convert string to WordArray, else assume WordArray already\n let _key = key;\n if (typeof _key === 'string') {\n _key = Utf8.parse(_key);\n }\n\n // Shortcuts\n const hasherBlockSize = hasher.blockSize;\n const hasherBlockSizeBytes = hasherBlockSize * 4;\n\n // Allow arbitrary length keys\n if (_key.sigBytes > hasherBlockSizeBytes) {\n _key = hasher.finalize(key);\n }\n\n // Clamp excess bits\n _key.clamp();\n\n // Clone key for inner and outer pads\n const oKey = _key.clone();\n this._oKey = oKey;\n const iKey = _key.clone();\n this._iKey = iKey;\n\n // Shortcuts\n const oKeyWords = oKey.words;\n const iKeyWords = iKey.words;\n\n // XOR keys with pad constants\n for (let i = 0; i < hasherBlockSize; i += 1) {\n oKeyWords[i] ^= 0x5c5c5c5c;\n iKeyWords[i] ^= 0x36363636;\n }\n oKey.sigBytes = hasherBlockSizeBytes;\n iKey.sigBytes = hasherBlockSizeBytes;\n\n // Set initial values\n this.reset();\n }\n\n /**\n * Resets this HMAC to its initial state.\n *\n * @example\n *\n * hmacHasher.reset();\n */\n reset() {\n // Shortcut\n const hasher = this._hasher;\n\n // Reset\n hasher.reset();\n hasher.update(this._iKey);\n }\n\n /**\n * Updates this HMAC with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {HMAC} This HMAC instance.\n *\n * @example\n *\n * hmacHasher.update('message');\n * hmacHasher.update(wordArray);\n */\n update(messageUpdate) {\n this._hasher.update(messageUpdate);\n\n // Chainable\n return this;\n }\n\n /**\n * Finalizes the HMAC computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The HMAC.\n *\n * @example\n *\n * var hmac = hmacHasher.finalize();\n * var hmac = hmacHasher.finalize('message');\n * var hmac = hmacHasher.finalize(wordArray);\n */\n finalize(messageUpdate) {\n // Shortcut\n const hasher = this._hasher;\n\n // Compute HMAC\n const innerHash = hasher.finalize(messageUpdate);\n hasher.reset();\n const hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n return hmac;\n }\n}\n","import {\n WordArray,\n} from './core.js';\n\nconst parseLoop = (base64Str, base64StrLength, reverseMap) => {\n const words = [];\n let nBytes = 0;\n for (let i = 0; i < base64StrLength; i += 1) {\n if (i % 4) {\n const bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n const bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n const bitsCombined = bits1 | bits2;\n words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n nBytes += 1;\n }\n }\n return WordArray.create(words, nBytes);\n};\n\n/**\n * Base64 encoding strategy.\n */\nexport const Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * const base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify(wordArray) {\n // Shortcuts\n const { words, sigBytes } = wordArray;\n const map = this._map;\n\n // Clamp excess bits\n wordArray.clamp();\n\n // Convert\n const base64Chars = [];\n for (let i = 0; i < sigBytes; i += 3) {\n const byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n const byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n const byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n const triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n for (let j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j += 1) {\n base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n }\n }\n\n // Add padding\n const paddingChar = map.charAt(64);\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n\n return base64Chars.join('');\n },\n\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * const wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse(base64Str) {\n // Shortcuts\n let base64StrLength = base64Str.length;\n const map = this._map;\n let reverseMap = this._reverseMap;\n\n if (!reverseMap) {\n this._reverseMap = [];\n reverseMap = this._reverseMap;\n for (let j = 0; j < map.length; j += 1) {\n reverseMap[map.charCodeAt(j)] = j;\n }\n }\n\n // Ignore padding\n const paddingChar = map.charAt(64);\n if (paddingChar) {\n const paddingIndex = base64Str.indexOf(paddingChar);\n if (paddingIndex !== -1) {\n base64StrLength = paddingIndex;\n }\n }\n\n // Convert\n return parseLoop(base64Str, base64StrLength, reverseMap);\n },\n\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n};\n","import {\n Base,\n WordArray,\n} from './core.js';\nimport { MD5Algo } from './md5.js';\n\n/**\n * This key derivation function is meant to conform with EVP_BytesToKey.\n * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n */\nexport class EvpKDFAlgo extends Base {\n /**\n * Initializes a newly created key derivation function.\n *\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n *\n * @example\n *\n * const kdf = CryptoJS.algo.EvpKDF.create();\n * const kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n * const kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n */\n constructor(cfg) {\n super();\n\n /**\n * Configuration options.\n *\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n * @property {number} iterations The number of iterations to perform. Default: 1\n */\n this.cfg = Object.assign(\n new Base(),\n {\n keySize: 128 / 32,\n hasher: MD5Algo,\n iterations: 1,\n },\n cfg,\n );\n }\n\n /**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n *\n * @return {WordArray} The derived key.\n *\n * @example\n *\n * const key = kdf.compute(password, salt);\n */\n compute(password, salt) {\n let block;\n\n // Shortcut\n const { cfg } = this;\n\n // Init hasher\n const hasher = cfg.hasher.create();\n\n // Initial values\n const derivedKey = WordArray.create();\n\n // Shortcuts\n const derivedKeyWords = derivedKey.words;\n const { keySize, iterations } = cfg;\n\n // Generate key\n while (derivedKeyWords.length < keySize) {\n if (block) {\n hasher.update(block);\n }\n block = hasher.update(password).finalize(salt);\n hasher.reset();\n\n // Iterations\n for (let i = 1; i < iterations; i += 1) {\n block = hasher.finalize(block);\n hasher.reset();\n }\n\n derivedKey.concat(block);\n }\n derivedKey.sigBytes = keySize * 4;\n\n return derivedKey;\n }\n}\n\n/**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\n *\n * @return {WordArray} The derived key.\n *\n * @static\n *\n * @example\n *\n * var key = CryptoJS.EvpKDF(password, salt);\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n */\nexport const EvpKDF = (password, salt, cfg) => EvpKDFAlgo.create(cfg).compute(password, salt);\n","/* eslint-disable no-use-before-define */\n\nimport {\n Base,\n WordArray,\n BufferedBlockAlgorithm,\n} from './core.js';\nimport { Base64 } from './enc-base64.js';\nimport { EvpKDFAlgo } from './evpkdf.js';\n\n/**\n * Abstract base cipher template.\n *\n * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n */\nexport class Cipher extends BufferedBlockAlgorithm {\n /**\n * Initializes a newly created cipher.\n *\n * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @example\n *\n * const cipher = CryptoJS.algo.AES.create(\n * CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }\n * );\n */\n constructor(xformMode, key, cfg) {\n super();\n\n /**\n * Configuration options.\n *\n * @property {WordArray} iv The IV to use for this operation.\n */\n this.cfg = Object.assign(new Base(), cfg);\n\n // Store transform mode and key\n this._xformMode = xformMode;\n this._key = key;\n\n // Set initial values\n this.reset();\n }\n\n /**\n * Creates this cipher in encryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * const cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n */\n static createEncryptor(key, cfg) {\n return this.create(this._ENC_XFORM_MODE, key, cfg);\n }\n\n /**\n * Creates this cipher in decryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * const cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n */\n static createDecryptor(key, cfg) {\n return this.create(this._DEC_XFORM_MODE, key, cfg);\n }\n\n /**\n * Creates shortcut functions to a cipher's object interface.\n *\n * @param {Cipher} cipher The cipher to create a helper for.\n *\n * @return {Object} An object with encrypt and decrypt shortcut functions.\n *\n * @static\n *\n * @example\n *\n * const AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n */\n static _createHelper(SubCipher) {\n const selectCipherStrategy = (key) => {\n if (typeof key === 'string') {\n return PasswordBasedCipher;\n }\n return SerializableCipher;\n };\n\n return {\n encrypt(message, key, cfg) {\n return selectCipherStrategy(key).encrypt(SubCipher, message, key, cfg);\n },\n\n decrypt(ciphertext, key, cfg) {\n return selectCipherStrategy(key).decrypt(SubCipher, ciphertext, key, cfg);\n },\n };\n }\n\n /**\n * Resets this cipher to its initial state.\n *\n * @example\n *\n * cipher.reset();\n */\n reset() {\n // Reset data buffer\n super.reset.call(this);\n\n // Perform concrete-cipher logic\n this._doReset();\n }\n\n /**\n * Adds data to be encrypted or decrypted.\n *\n * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n *\n * @return {WordArray} The data after processing.\n *\n * @example\n *\n * const encrypted = cipher.process('data');\n * const encrypted = cipher.process(wordArray);\n */\n process(dataUpdate) {\n // Append\n this._append(dataUpdate);\n\n // Process available blocks\n return this._process();\n }\n\n /**\n * Finalizes the encryption or decryption process.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n *\n * @return {WordArray} The data after final processing.\n *\n * @example\n *\n * const encrypted = cipher.finalize();\n * const encrypted = cipher.finalize('data');\n * const encrypted = cipher.finalize(wordArray);\n */\n finalize(dataUpdate) {\n // Final data update\n if (dataUpdate) {\n this._append(dataUpdate);\n }\n\n // Perform concrete-cipher logic\n const finalProcessedData = this._doFinalize();\n\n return finalProcessedData;\n }\n}\nCipher._ENC_XFORM_MODE = 1;\nCipher._DEC_XFORM_MODE = 2;\nCipher.keySize = 128 / 32;\nCipher.ivSize = 128 / 32;\n\n/**\n * Abstract base stream cipher template.\n *\n * @property {number} blockSize\n *\n * The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n */\nexport class StreamCipher extends Cipher {\n constructor(...args) {\n super(...args);\n\n this.blockSize = 1;\n }\n\n _doFinalize() {\n // Process partial blocks\n const finalProcessedBlocks = this._process(!!'flush');\n\n return finalProcessedBlocks;\n }\n}\n\n/**\n * Abstract base block cipher mode template.\n */\nexport class BlockCipherMode extends Base {\n /**\n * Initializes a newly created mode.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @example\n *\n * const mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n */\n constructor(cipher, iv) {\n super();\n\n this._cipher = cipher;\n this._iv = iv;\n }\n\n /**\n * Creates this mode for encryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * const mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n */\n static createEncryptor(cipher, iv) {\n return this.Encryptor.create(cipher, iv);\n }\n\n /**\n * Creates this mode for decryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * const mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n */\n static createDecryptor(cipher, iv) {\n return this.Decryptor.create(cipher, iv);\n }\n}\n\nfunction xorBlock(words, offset, blockSize) {\n const _words = words;\n let block;\n\n // Shortcut\n const iv = this._iv;\n\n // Choose mixing block\n if (iv) {\n block = iv;\n\n // Remove IV for subsequent blocks\n this._iv = undefined;\n } else {\n block = this._prevBlock;\n }\n\n // XOR blocks\n for (let i = 0; i < blockSize; i += 1) {\n _words[offset + i] ^= block[i];\n }\n}\n\n/**\n * Cipher Block Chaining mode.\n */\n\n/**\n * Abstract base CBC mode.\n */\nexport class CBC extends BlockCipherMode {\n}\n/**\n * CBC encryptor.\n */\nCBC.Encryptor = class extends CBC {\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock(words, offset) {\n // Shortcuts\n const cipher = this._cipher;\n const { blockSize } = cipher;\n\n // XOR and encrypt\n xorBlock.call(this, words, offset, blockSize);\n cipher.encryptBlock(words, offset);\n\n // Remember this block to use with next block\n this._prevBlock = words.slice(offset, offset + blockSize);\n }\n};\n/**\n * CBC decryptor.\n */\nCBC.Decryptor = class extends CBC {\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock(words, offset) {\n // Shortcuts\n const cipher = this._cipher;\n const { blockSize } = cipher;\n\n // Remember this block to use with next block\n const thisBlock = words.slice(offset, offset + blockSize);\n\n // Decrypt and XOR\n cipher.decryptBlock(words, offset);\n xorBlock.call(this, words, offset, blockSize);\n\n // This block becomes the previous block\n this._prevBlock = thisBlock;\n }\n};\n\n/**\n * PKCS #5/7 padding strategy.\n */\nexport const Pkcs7 = {\n /**\n * Pads data using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to pad.\n * @param {number} blockSize The multiple that the data should be padded to.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n */\n pad(data, blockSize) {\n // Shortcut\n const blockSizeBytes = blockSize * 4;\n\n // Count padding bytes\n const nPaddingBytes = blockSizeBytes - (data.sigBytes % blockSizeBytes);\n\n // Create padding word\n const paddingWord = (nPaddingBytes << 24)\n | (nPaddingBytes << 16)\n | (nPaddingBytes << 8)\n | nPaddingBytes;\n\n // Create padding\n const paddingWords = [];\n for (let i = 0; i < nPaddingBytes; i += 4) {\n paddingWords.push(paddingWord);\n }\n const padding = WordArray.create(paddingWords, nPaddingBytes);\n\n // Add padding\n data.concat(padding);\n },\n\n /**\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to unpad.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.unpad(wordArray);\n */\n unpad(data) {\n const _data = data;\n\n // Get number of padding bytes from last byte\n const nPaddingBytes = _data.words[(_data.sigBytes - 1) >>> 2] & 0xff;\n\n // Remove padding\n _data.sigBytes -= nPaddingBytes;\n },\n};\n\n/**\n * Abstract base block cipher template.\n *\n * @property {number} blockSize\n *\n * The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n */\nexport class BlockCipher extends Cipher {\n constructor(xformMode, key, cfg) {\n /**\n * Configuration options.\n *\n * @property {Mode} mode The block mode to use. Default: CBC\n * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n */\n super(xformMode, key, Object.assign(\n {\n mode: CBC,\n padding: Pkcs7,\n },\n cfg,\n ));\n\n this.blockSize = 128 / 32;\n }\n\n reset() {\n let modeCreator;\n\n // Reset cipher\n super.reset.call(this);\n\n // Shortcuts\n const { cfg } = this;\n const { iv, mode } = cfg;\n\n // Reset block mode\n if (this._xformMode === this.constructor._ENC_XFORM_MODE) {\n modeCreator = mode.createEncryptor;\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n modeCreator = mode.createDecryptor;\n // Keep at least one block in the buffer for unpadding\n this._minBufferSize = 1;\n }\n\n this._mode = modeCreator.call(mode, this, iv && iv.words);\n this._mode.__creator = modeCreator;\n }\n\n _doProcessBlock(words, offset) {\n this._mode.processBlock(words, offset);\n }\n\n _doFinalize() {\n let finalProcessedBlocks;\n\n // Shortcut\n const { padding } = this.cfg;\n\n // Finalize\n if (this._xformMode === this.constructor._ENC_XFORM_MODE) {\n // Pad data\n padding.pad(this._data, this.blockSize);\n\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush');\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush');\n\n // Unpad data\n padding.unpad(finalProcessedBlocks);\n }\n\n return finalProcessedBlocks;\n }\n}\n\n/**\n * A collection of cipher parameters.\n *\n * @property {WordArray} ciphertext The raw ciphertext.\n * @property {WordArray} key The key to this ciphertext.\n * @property {WordArray} iv The IV used in the ciphering operation.\n * @property {WordArray} salt The salt used with a key derivation function.\n * @property {Cipher} algorithm The cipher algorithm.\n * @property {Mode} mode The block mode used in the ciphering operation.\n * @property {Padding} padding The padding scheme used in the ciphering operation.\n * @property {number} blockSize The block size of the cipher.\n * @property {Format} formatter\n * The default formatting strategy to convert this cipher params object to a string.\n */\nexport class CipherParams extends Base {\n /**\n * Initializes a newly created cipher params object.\n *\n * @param {Object} cipherParams An object with any of the possible cipher parameters.\n *\n * @example\n *\n * var cipherParams = CryptoJS.lib.CipherParams.create({\n * ciphertext: ciphertextWordArray,\n * key: keyWordArray,\n * iv: ivWordArray,\n * salt: saltWordArray,\n * algorithm: CryptoJS.algo.AES,\n * mode: CryptoJS.mode.CBC,\n * padding: CryptoJS.pad.PKCS7,\n * blockSize: 4,\n * formatter: CryptoJS.format.OpenSSL\n * });\n */\n constructor(cipherParams) {\n super();\n\n this.mixIn(cipherParams);\n }\n\n /**\n * Converts this cipher params object to a string.\n *\n * @param {Format} formatter (Optional) The formatting strategy to use.\n *\n * @return {string} The stringified cipher params.\n *\n * @throws Error If neither the formatter nor the default formatter is set.\n *\n * @example\n *\n * var string = cipherParams + '';\n * var string = cipherParams.toString();\n * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n */\n toString(formatter) {\n return (formatter || this.formatter).stringify(this);\n }\n}\n\n/**\n * OpenSSL formatting strategy.\n */\nexport const OpenSSLFormatter = {\n /**\n * Converts a cipher params object to an OpenSSL-compatible string.\n *\n * @param {CipherParams} cipherParams The cipher params object.\n *\n * @return {string} The OpenSSL-compatible string.\n *\n * @static\n *\n * @example\n *\n * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n */\n stringify(cipherParams) {\n let wordArray;\n\n // Shortcuts\n const { ciphertext, salt } = cipherParams;\n\n // Format\n if (salt) {\n wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n } else {\n wordArray = ciphertext;\n }\n\n return wordArray.toString(Base64);\n },\n\n /**\n * Converts an OpenSSL-compatible string to a cipher params object.\n *\n * @param {string} openSSLStr The OpenSSL-compatible string.\n *\n * @return {CipherParams} The cipher params object.\n *\n * @static\n *\n * @example\n *\n * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n */\n parse(openSSLStr) {\n let salt;\n\n // Parse base64\n const ciphertext = Base64.parse(openSSLStr);\n\n // Shortcut\n const ciphertextWords = ciphertext.words;\n\n // Test for salt\n if (ciphertextWords[0] === 0x53616c74 && ciphertextWords[1] === 0x65645f5f) {\n // Extract salt\n salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n // Remove salt from ciphertext\n ciphertextWords.splice(0, 4);\n ciphertext.sigBytes -= 16;\n }\n\n return CipherParams.create({ ciphertext, salt });\n },\n};\n\n/**\n * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n */\nexport class SerializableCipher extends Base {\n /**\n * Encrypts a message.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher\n * .encrypt(CryptoJS.algo.AES, message, key);\n * var ciphertextParams = CryptoJS.lib.SerializableCipher\n * .encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n * var ciphertextParams = CryptoJS.lib.SerializableCipher\n * .encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n static encrypt(cipher, message, key, cfg) {\n // Apply config defaults\n const _cfg = Object.assign(new Base(), this.cfg, cfg);\n\n // Encrypt\n const encryptor = cipher.createEncryptor(key, _cfg);\n const ciphertext = encryptor.finalize(message);\n\n // Shortcut\n const cipherCfg = encryptor.cfg;\n\n // Create and return serializable cipher params\n return CipherParams.create({\n ciphertext,\n key,\n iv: cipherCfg.iv,\n algorithm: cipher,\n mode: cipherCfg.mode,\n padding: cipherCfg.padding,\n blockSize: encryptor.blockSize,\n formatter: _cfg.format,\n });\n }\n\n /**\n * Decrypts serialized ciphertext.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.SerializableCipher\n * .decrypt(CryptoJS.algo.AES, formattedCiphertext, key,\n * { iv: iv, format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.SerializableCipher\n * .decrypt(CryptoJS.algo.AES, ciphertextParams, key,\n * { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n static decrypt(cipher, ciphertext, key, cfg) {\n let _ciphertext = ciphertext;\n\n // Apply config defaults\n const _cfg = Object.assign(new Base(), this.cfg, cfg);\n\n // Convert string to CipherParams\n _ciphertext = this._parse(_ciphertext, _cfg.format);\n\n // Decrypt\n const plaintext = cipher.createDecryptor(key, _cfg).finalize(_ciphertext.ciphertext);\n\n return plaintext;\n }\n\n /**\n * Converts serialized ciphertext to CipherParams,\n * else assumed CipherParams already and returns ciphertext unchanged.\n *\n * @param {CipherParams|string} ciphertext The ciphertext.\n * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n *\n * @return {CipherParams} The unserialized ciphertext.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher\n * ._parse(ciphertextStringOrParams, format);\n */\n static _parse(ciphertext, format) {\n if (typeof ciphertext === 'string') {\n return format.parse(ciphertext, this);\n }\n return ciphertext;\n }\n}\n/**\n * Configuration options.\n *\n * @property {Formatter} format\n *\n * The formatting strategy to convert cipher param objects to and from a string.\n * Default: OpenSSL\n */\nSerializableCipher.cfg = Object.assign(\n new Base(),\n { format: OpenSSLFormatter },\n);\n\n/**\n * OpenSSL key derivation function.\n */\nexport const OpenSSLKdf = {\n /**\n * Derives a key and IV from a password.\n *\n * @param {string} password The password to derive from.\n * @param {number} keySize The size in words of the key to generate.\n * @param {number} ivSize The size in words of the IV to generate.\n * @param {WordArray|string} salt\n * (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n *\n * @return {CipherParams} A cipher params object with the key, IV, and salt.\n *\n * @static\n *\n * @example\n *\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n */\n execute(password, keySize, ivSize, salt) {\n let _salt = salt;\n\n // Generate random salt\n if (!_salt) {\n _salt = WordArray.random(64 / 8);\n }\n\n // Derive key and IV\n const key = EvpKDFAlgo.create({ keySize: keySize + ivSize }).compute(password, _salt);\n\n // Separate key and IV\n const iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n key.sigBytes = keySize * 4;\n\n // Return params\n return CipherParams.create({ key, iv, salt: _salt });\n },\n};\n\n/**\n * A serializable cipher wrapper that derives the key from a password,\n * and returns ciphertext as a serializable cipher params object.\n */\nexport class PasswordBasedCipher extends SerializableCipher {\n /**\n * Encrypts a message using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher\n * .encrypt(CryptoJS.algo.AES, message, 'password');\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher\n * .encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n */\n static encrypt(cipher, message, password, cfg) {\n // Apply config defaults\n const _cfg = Object.assign(new Base(), this.cfg, cfg);\n\n // Derive key and other params\n const derivedParams = _cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n // Add IV to config\n _cfg.iv = derivedParams.iv;\n\n // Encrypt\n const ciphertext = SerializableCipher.encrypt\n .call(this, cipher, message, derivedParams.key, _cfg);\n\n // Mix in derived params\n ciphertext.mixIn(derivedParams);\n\n return ciphertext;\n }\n\n /**\n * Decrypts serialized ciphertext using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.PasswordBasedCipher\n * .decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password',\n * { format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.PasswordBasedCipher\n * .decrypt(CryptoJS.algo.AES, ciphertextParams, 'password',\n * { format: CryptoJS.format.OpenSSL });\n */\n static decrypt(cipher, ciphertext, password, cfg) {\n let _ciphertext = ciphertext;\n\n // Apply config defaults\n const _cfg = Object.assign(new Base(), this.cfg, cfg);\n\n // Convert string to CipherParams\n _ciphertext = this._parse(_ciphertext, _cfg.format);\n\n // Derive key and other params\n const derivedParams = _cfg.kdf\n .execute(password, cipher.keySize, cipher.ivSize, _ciphertext.salt);\n\n // Add IV to config\n _cfg.iv = derivedParams.iv;\n\n // Decrypt\n const plaintext = SerializableCipher.decrypt\n .call(this, cipher, _ciphertext, derivedParams.key, _cfg);\n\n return plaintext;\n }\n}\n/**\n * Configuration options.\n *\n * @property {KDF} kdf\n * The key derivation function to use to generate a key and IV from a password.\n * Default: OpenSSL\n */\nPasswordBasedCipher.cfg = Object.assign(SerializableCipher.cfg, { kdf: OpenSSLKdf });\n","import {\n BlockCipher,\n} from './cipher-core.js';\n\n// Lookup tables\nconst _SBOX = [];\nconst INV_SBOX = [];\nconst _SUB_MIX_0 = [];\nconst _SUB_MIX_1 = [];\nconst _SUB_MIX_2 = [];\nconst _SUB_MIX_3 = [];\nconst INV_SUB_MIX_0 = [];\nconst INV_SUB_MIX_1 = [];\nconst INV_SUB_MIX_2 = [];\nconst INV_SUB_MIX_3 = [];\n\n// Compute lookup tables\n\n// Compute double table\nconst d = [];\nfor (let i = 0; i < 256; i += 1) {\n if (i < 128) {\n d[i] = i << 1;\n } else {\n d[i] = (i << 1) ^ 0x11b;\n }\n}\n\n// Walk GF(2^8)\nlet x = 0;\nlet xi = 0;\nfor (let i = 0; i < 256; i += 1) {\n // Compute sbox\n let sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n _SBOX[x] = sx;\n INV_SBOX[sx] = x;\n\n // Compute multiplication\n const x2 = d[x];\n const x4 = d[x2];\n const x8 = d[x4];\n\n // Compute sub bytes, mix columns tables\n let t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n _SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n _SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n _SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n _SUB_MIX_3[x] = t;\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n INV_SUB_MIX_3[sx] = t;\n\n // Compute next counter\n if (!x) {\n xi = 1;\n x = xi;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n}\n\n// Precomputed Rcon lookup\nconst RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n/**\n * AES block cipher algorithm.\n */\nexport class AESAlgo extends BlockCipher {\n _doReset() {\n let t;\n\n // Skip reset of nRounds has been set before and key did not change\n if (this._nRounds && this._keyPriorReset === this._key) {\n return;\n }\n\n // Shortcuts\n this._keyPriorReset = this._key;\n const key = this._keyPriorReset;\n const keyWords = key.words;\n const keySize = key.sigBytes / 4;\n\n // Compute number of rounds\n this._nRounds = keySize + 6;\n const nRounds = this._nRounds;\n\n // Compute number of key schedule rows\n const ksRows = (nRounds + 1) * 4;\n\n // Compute key schedule\n this._keySchedule = [];\n const keySchedule = this._keySchedule;\n for (let ksRow = 0; ksRow < ksRows; ksRow += 1) {\n if (ksRow < keySize) {\n keySchedule[ksRow] = keyWords[ksRow];\n } else {\n t = keySchedule[ksRow - 1];\n\n if (!(ksRow % keySize)) {\n // Rot word\n t = (t << 8) | (t >>> 24);\n\n // Sub word\n t = (_SBOX[t >>> 24] << 24)\n | (_SBOX[(t >>> 16) & 0xff] << 16)\n | (_SBOX[(t >>> 8) & 0xff] << 8)\n | _SBOX[t & 0xff];\n\n // Mix Rcon\n t ^= RCON[(ksRow / keySize) | 0] << 24;\n } else if (keySize > 6 && ksRow % keySize === 4) {\n // Sub word\n t = (_SBOX[t >>> 24] << 24)\n | (_SBOX[(t >>> 16) & 0xff] << 16)\n | (_SBOX[(t >>> 8) & 0xff] << 8)\n | _SBOX[t & 0xff];\n }\n\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n }\n }\n\n // Compute inv key schedule\n this._invKeySchedule = [];\n const invKeySchedule = this._invKeySchedule;\n for (let invKsRow = 0; invKsRow < ksRows; invKsRow += 1) {\n const ksRow = ksRows - invKsRow;\n\n if (invKsRow % 4) {\n t = keySchedule[ksRow];\n } else {\n t = keySchedule[ksRow - 4];\n }\n\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t;\n } else {\n invKeySchedule[invKsRow] = INV_SUB_MIX_0[_SBOX[t >>> 24]]\n ^ INV_SUB_MIX_1[_SBOX[(t >>> 16) & 0xff]]\n ^ INV_SUB_MIX_2[_SBOX[(t >>> 8) & 0xff]]\n ^ INV_SUB_MIX_3[_SBOX[t & 0xff]];\n }\n }\n }\n\n encryptBlock(M, offset) {\n this._doCryptBlock(\n M, offset, this._keySchedule, _SUB_MIX_0, _SUB_MIX_1, _SUB_MIX_2, _SUB_MIX_3, _SBOX,\n );\n }\n\n decryptBlock(M, offset) {\n const _M = M;\n\n // Swap 2nd and 4th rows\n let t = _M[offset + 1];\n _M[offset + 1] = _M[offset + 3];\n _M[offset + 3] = t;\n\n this._doCryptBlock(\n _M,\n offset,\n this._invKeySchedule,\n INV_SUB_MIX_0,\n INV_SUB_MIX_1,\n INV_SUB_MIX_2,\n INV_SUB_MIX_3,\n INV_SBOX,\n );\n\n // Inv swap 2nd and 4th rows\n t = _M[offset + 1];\n _M[offset + 1] = _M[offset + 3];\n _M[offset + 3] = t;\n }\n\n _doCryptBlock(M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n const _M = M;\n\n // Shortcut\n const nRounds = this._nRounds;\n\n // Get input, add round key\n let s0 = _M[offset] ^ keySchedule[0];\n let s1 = _M[offset + 1] ^ keySchedule[1];\n let s2 = _M[offset + 2] ^ keySchedule[2];\n let s3 = _M[offset + 3] ^ keySchedule[3];\n\n // Key schedule row counter\n let ksRow = 4;\n\n // Rounds\n for (let round = 1; round < nRounds; round += 1) {\n // Shift rows, sub bytes, mix columns, add round key\n const t0 = SUB_MIX_0[s0 >>> 24]\n ^ SUB_MIX_1[(s1 >>> 16) & 0xff]\n ^ SUB_MIX_2[(s2 >>> 8) & 0xff]\n ^ SUB_MIX_3[s3 & 0xff]\n ^ keySchedule[ksRow];\n ksRow += 1;\n const t1 = SUB_MIX_0[s1 >>> 24]\n ^ SUB_MIX_1[(s2 >>> 16) & 0xff]\n ^ SUB_MIX_2[(s3 >>> 8) & 0xff]\n ^ SUB_MIX_3[s0 & 0xff]\n ^ keySchedule[ksRow];\n ksRow += 1;\n const t2 = SUB_MIX_0[s2 >>> 24]\n ^ SUB_MIX_1[(s3 >>> 16) & 0xff]\n ^ SUB_MIX_2[(s0 >>> 8) & 0xff]\n ^ SUB_MIX_3[s1 & 0xff]\n ^ keySchedule[ksRow];\n ksRow += 1;\n const t3 = SUB_MIX_0[s3 >>> 24]\n ^ SUB_MIX_1[(s0 >>> 16) & 0xff]\n ^ SUB_MIX_2[(s1 >>> 8) & 0xff]\n ^ SUB_MIX_3[s2 & 0xff]\n ^ keySchedule[ksRow];\n ksRow += 1;\n\n // Update state\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n }\n\n // Shift rows, sub bytes, add round key\n const t0 = (\n (SBOX[s0 >>> 24] << 24)\n | (SBOX[(s1 >>> 16) & 0xff] << 16)\n | (SBOX[(s2 >>> 8) & 0xff] << 8)\n | SBOX[s3 & 0xff]\n ) ^ keySchedule[ksRow];\n ksRow += 1;\n const t1 = (\n (SBOX[s1 >>> 24] << 24)\n | (SBOX[(s2 >>> 16) & 0xff] << 16)\n | (SBOX[(s3 >>> 8) & 0xff] << 8)\n | SBOX[s0 & 0xff]\n ) ^ keySchedule[ksRow];\n ksRow += 1;\n const t2 = (\n (SBOX[s2 >>> 24] << 24)\n | (SBOX[(s3 >>> 16) & 0xff] << 16)\n | (SBOX[(s0 >>> 8) & 0xff] << 8)\n | SBOX[s1 & 0xff]\n ) ^ keySchedule[ksRow];\n ksRow += 1;\n const t3 = (\n (SBOX[s3 >>> 24] << 24)\n | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]\n ) ^ keySchedule[ksRow];\n ksRow += 1;\n\n // Set output\n _M[offset] = t0;\n _M[offset + 1] = t1;\n _M[offset + 2] = t2;\n _M[offset + 3] = t3;\n }\n}\nAESAlgo.keySize = 256 / 32;\n\n/**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n */\nexport const AES = BlockCipher._createHelper(AESAlgo);\n","/**\n * Counter block mode.\n */\nimport {\n BlockCipherMode,\n} from './cipher-core.js';\n\nexport class CTR extends BlockCipherMode {\n}\nCTR.Encryptor = class extends CTR {\n processBlock(words, offset) {\n const _words = words;\n\n // Shortcuts\n const cipher = this._cipher;\n const { blockSize } = cipher;\n const iv = this._iv;\n let counter = this._counter;\n\n // Generate keystream\n if (iv) {\n this._counter = iv.slice(0);\n counter = this._counter;\n\n // Remove IV for subsequent blocks\n this._iv = undefined;\n }\n const keystream = counter.slice(0);\n cipher.encryptBlock(keystream, 0);\n\n // Increment counter\n counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0;\n\n // Encrypt\n for (let i = 0; i < blockSize; i += 1) {\n _words[offset + i] ^= keystream[i];\n }\n }\n};\nCTR.Decryptor = CTR.Encryptor;\n","export class MediaError {\n constructor (msg, data) {\n this.type = 'file'\n this.message = msg\n this.data = data\n }\n}\n","export class Cache {\n _data = Object.create(null)\n\n set (id, data) {\n this._data[id] = data\n }\n\n get (id) {\n return this._data[id]\n }\n\n clear () {\n this._data = Object.create(null)\n }\n}\n","\nexport function moovToSegments (moov, duration) {\n const tracks = moov.trak\n if (!tracks || !tracks.length) return\n const videoTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'vide')\n const audioTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'soun')\n if (!videoTrack && !audioTrack) return\n\n let videoSegments = []\n let audioSegments = []\n\n let segmentDurations\n if (videoTrack) {\n const videoStbl = videoTrack.mdia?.minf?.stbl\n if (!videoStbl) return\n const timescale = videoTrack.mdia.mdhd?.timescale\n const { stts, stsc, stsz, stco, stss, ctts } = videoStbl\n if (!timescale || !stts || !stsc || !stsz || !stco || !stss) return\n videoSegments = getSegments(duration, timescale, stts, stsc, stsz, stco, stss, ctts)\n segmentDurations = videoSegments.map(x => x.duration)\n }\n if (audioTrack) {\n const audioStbl = audioTrack.mdia?.minf?.stbl\n if (!audioStbl) return\n const timescale = audioTrack.mdia.mdhd?.timescale\n const { stts, stsc, stsz, stco } = audioStbl\n if (!timescale || !stts || !stsc || !stsz || !stco) return\n audioSegments = getSegments(duration, timescale, stts, stsc, stsz, stco, null, null, segmentDurations)\n }\n\n return {\n videoSegments,\n audioSegments\n }\n}\n\nfunction getSegments (segDuration, timescale, stts, stsc, stsz, stco, stss, ctts, segmentDurations) {\n const frames = []\n const gop = []\n const gopDuration = []\n const stscEntries = stsc.entries\n const stcoEntries = stco.entries\n const stszEntrySizes = stsz.entrySizes\n const stssEntries = stss?.entries\n const cttsEntries = ctts?.entries\n let cttsArr\n if (cttsEntries) {\n cttsArr = []\n cttsEntries.forEach(({ count, offset }) => {\n for (let i = 0; i < count; i++) {\n cttsArr.push(offset)\n }\n })\n }\n let keyframeMap\n if (stssEntries) {\n keyframeMap = {}\n stssEntries.forEach(x => { keyframeMap[x - 1] = true })\n }\n\n let frame\n let duration\n let startTime = 0\n let pos = 0\n let chunkIndex = 0\n let chunkRunIndex = 0\n let offsetInChunk = 0\n let lastSampleInChunk = stscEntries[0].samplesPerChunk\n let lastChunkInRun = stscEntries[1] ? stscEntries[1].firstChunk - 1 : Infinity\n let dts = 0\n let gopId = -1\n stts.entries.forEach(({ count, delta }) => {\n duration = delta // / timescale\n for (let i = 0; i < count; i++) {\n frame = {\n dts,\n startTime,\n duration,\n size: stszEntrySizes[pos] || stsz.sampleSize,\n offset: stcoEntries[chunkIndex] + offsetInChunk,\n index: pos\n }\n if (stssEntries) {\n frame.keyframe = keyframeMap[pos]\n if (frame.keyframe) {\n gopId++\n gop.push([frame])\n gopDuration.push(frame.duration)\n } else {\n gop[gop.length - 1].push(frame)\n gopDuration[gop.length - 1] += frame.duration\n }\n frame.gopId = gopId\n }\n if (cttsArr && pos < cttsArr.length) {\n frame.pts = dts + cttsArr[pos]\n }\n if (pos === 0) {\n frame.pts = 0\n }\n frames.push(frame)\n startTime += duration\n dts += delta\n pos++\n\n if (pos < lastSampleInChunk) {\n offsetInChunk += frame.size\n } else {\n chunkIndex++\n offsetInChunk = 0\n if (chunkIndex >= lastChunkInRun) {\n chunkRunIndex++\n lastChunkInRun = stscEntries[chunkRunIndex + 1] ? stscEntries[chunkRunIndex + 1].firstChunk - 1 : Infinity\n }\n lastSampleInChunk += stscEntries[chunkRunIndex].samplesPerChunk\n }\n }\n })\n\n const l = frames.length\n if (!l || (stss && !frames[0].keyframe)) return\n\n const segments = []\n let segFrames = []\n let time = 0\n let lastFrame\n let adjust = 0\n const pushSegment = (duration) => {\n lastFrame = segFrames[segFrames.length - 1]\n segments.push({\n index: segments.length,\n startTime: (segments[segments.length - 1]?.endTime || segFrames[0].startTime / timescale),\n endTime: (lastFrame.startTime + lastFrame.duration) / timescale,\n duration: duration,\n range: [segFrames[0].offset, lastFrame.offset + lastFrame.size],\n frames: segFrames\n })\n time = 0\n segFrames = []\n }\n\n if (stss) {\n const duration = segDuration * timescale\n for (let i = 0, l = gop.length; i < l; i++) {\n time += gopDuration[i]\n segFrames.push(...gop[i])\n if (i + 1 < l) {\n if (i === 0 || time > duration) {\n pushSegment(time / timescale)\n }\n } else {\n pushSegment(time / timescale)\n }\n }\n } else {\n segmentDurations = segmentDurations || []\n let duration = segmentDurations[0] || segDuration\n for (let i = 0; i < l; i++) {\n segFrames.push(frames[i])\n time += frames[i].duration\n const curTime = time / timescale\n if (i + 1 >= l || curTime + adjust >= duration) {\n adjust += curTime - duration\n pushSegment(curTime)\n duration = segmentDurations[segments.length] || segDuration\n }\n }\n }\n\n return segments\n}\n\nexport function moovToMeta (moov) {\n let videoCodec = ''\n let audioCodec = ''\n let width = 0\n let height = 0\n let audioChannelCount = 0\n let audioSampleRate = 0\n let duration = 0\n let videoTimescale = 0\n let audioTimescale = 0\n if (moov.mvhd) {\n duration = moov.mvhd.duration / moov.mvhd.timescale\n }\n\n const tracks = moov.trak\n\n if (tracks) {\n const videoTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'vide')\n const audioTrack = tracks.find(t => t.mdia?.hdlr?.handlerType === 'soun')\n let e1 = null\n let defaultKID\n if (videoTrack) {\n e1 = videoTrack.mdia?.minf?.stbl?.stsd.entries[0]\n if (e1) {\n width = e1.width\n height = e1.height\n videoTimescale = videoTrack.mdia?.mdhd?.timescale\n videoCodec = (e1.avcC || e1.hvcC)?.codec\n if (e1.type === 'encv') {\n defaultKID = e1.sinf?.schi?.tenc.default_KID\n }\n }\n }\n if (audioTrack) {\n e1 = audioTrack.mdia?.minf?.stbl?.stsd.entries[0]\n if (e1) {\n audioChannelCount = e1.channelCount\n audioSampleRate = e1.sampleRate\n audioCodec = e1.esds?.codec\n audioTimescale = audioTrack.mdia?.mdhd?.timescale\n if (e1.type === 'enca') {\n defaultKID = defaultKID || e1.sinf?.schi?.tenc.default_KID\n }\n }\n }\n return {\n kid: defaultKID ? defaultKID.join('') : null,\n videoCodec,\n audioCodec,\n width,\n height,\n videoTimescale,\n audioChannelCount,\n audioSampleRate,\n duration,\n audioTimescale,\n moov\n }\n }\n}\n\nexport function isNumber (n) {\n return typeof n === 'number' && !Number.isNaN(n)\n}\n","import { NetLoader, concatUint8Array, Logger, EVENT } from 'xgplayer-streaming-shared'\nimport { MP4Parser } from 'xgplayer-transmuxer'\nimport { getConfig } from './config'\nimport { MediaError } from './error'\nimport { Cache } from './cache'\nimport { isNumber, moovToMeta, moovToSegments } from './utils'\nimport EventEmitter from 'eventemitter3'\n\nexport class MP4Loader extends EventEmitter {\n vid = ''\n url = ''\n meta = {}\n downloadInfo = []\n videoSegments = []\n audioSegments = []\n cache = null\n _currentSegmentIndex = -1\n _currentLoadingSegmentIndex = -1\n buffer\n _error\n\n constructor (config) {\n super()\n this._config = getConfig(config)\n const {\n vid,\n cache,\n ...rest\n } = this._config\n this.cache = cache || new Cache()\n this.vid = vid || rest.url\n this.url = rest.url\n rest.transformError = this._transformError\n this.logger = new Logger('MP4Loader_' + this.vid)\n !!config.openLog && Logger.enable()\n rest.logger = this.logger\n\n this._loader = new NetLoader(rest)\n this._loader.on(EVENT.REAL_TIME_SPEED, (data) => {\n this.emit(EVENT.REAL_TIME_SPEED, data)\n })\n }\n\n get isMetaLoaded () {\n return this.videoSegments.length || this.audioSegments.length\n }\n\n setCurrentSegment (segIndex) {\n if (isNumber(segIndex)) {\n this._currentSegmentIndex = segIndex\n }\n }\n\n isLastSegment (segIndex) {\n if (isNumber(segIndex)) {\n const lastIndex = this.videoSegments[this.videoSegments.length - 1]?.index || this.audioSegments[this.audioSegments.length - 1]?.index || 0\n return segIndex >= lastIndex\n }\n\n return false\n }\n\n isSegmentLoading (segIndex) {\n return segIndex === this._currentLoadingSegmentIndex\n }\n\n async changeUrl (url, vid = url, moovEnd, notCancelLoader) {\n await this.reset(notCancelLoader)\n if (url) this.url = url\n if (vid) this.vid = vid\n if (moovEnd) this._config.moovEnd = moovEnd\n }\n\n async getOrLoadMeta (cache) {\n if (!this.isMetaLoaded) await this.loadMeta(cache)\n return this.meta\n }\n\n async loadMetaProcess (cache, [moovStart, moovEnd], onProgress, config) {\n this._error = false\n this.logger.debug('[loadMetaProcess start], range,', [moovStart, moovEnd])\n const OnProgressHandle = async (data, state, options) => {\n if (this.meta && options?.range && options.range.length > 0 && options.range[1] >= moovEnd) {\n state = true\n this.logger.debug('[loadMetaProcess],data done,setstate true,[', moovStart, moovEnd, ']')\n }\n if (state && options?.range && options.range.length > 0 && options.range[1] < moovEnd) {\n state = false // 为了修复state为true但数据还么全部返回的问题\n this.logger.debug('[loadMetaProcess],data not done,setstate false,[', moovStart, moovEnd, ']')\n }\n this.logger.debug('[loadMetaProcess],task,[', moovStart, moovEnd, '], range,', options.range, ',dataLen,', (data ? data.byteLength : undefined), ', state,', state, ',err,',this._error)\n !this._error && data && data.byteLength > 0 && onProgress(data, state, options)\n if (this.meta.moov || this._error) return\n if (data && data.byteLength > 0) {\n this.buffer = concatUint8Array(this.buffer, data)\n let moov = MP4Parser.findBox(this.buffer, ['moov'])[0]\n if (!moov) {\n const mdat = MP4Parser.findBox(this.buffer, ['mdat'])[0]\n if (state) {\n if (!mdat) {\n this._error = true\n onProgress(null, state, options, {err:'cannot find moov or mdat box'})\n return\n // throw new MediaError('cannot find moov or mdat box')\n } else {\n const moovStart = mdat.start + mdat.size\n const res = await this.loadData([moovStart, ''], cache, config)\n if (res) {\n moov = MP4Parser.findBox(res.data, ['moov'])[0]\n }\n }\n }\n }\n if (moov && state && moov.size > moov.data.length) {\n this.logger.debug('[loadMetaProcess],moov not all, range,', options.range[1], ',dataLen,', this.buffer.byteLength, ', state,', state)\n await this.loadMetaProcess(cache, [options.range[1], moov.start + moov.size - 1], onProgress)\n }\n if (moov && moov.size <= moov.data.length && !this.meta.moov) {\n const parsedMoov = MP4Parser.moov(moov)\n if (!parsedMoov) {\n this._error = true\n onProgress(null, state, options, {err:'cannot parse moov box'})\n return\n // throw new MediaError('cannot parse moov box', moov.data)\n }\n\n const segments = moovToSegments(parsedMoov, this._config.segmentDuration)\n if (!segments) {\n this._error = true\n onProgress(null, state, options, {err:'cannot parse segments'})\n return\n // throw new MediaError('cannot parse segments', moov.data)\n }\n\n this.meta = moovToMeta(parsedMoov)\n const { videoSegments, audioSegments } = segments\n this.videoSegments = videoSegments\n this.audioSegments = audioSegments\n this.logger.debug('[loadMetaProcess] moov ok')\n onProgress(undefined, state, {\n meta: {\n meta: this.meta,\n videoSegments,\n audioSegments\n }\n })\n }\n }\n }\n await this.loadData([moovStart, moovEnd || this._config.moovEnd], cache, { onProgress: OnProgressHandle, ...config})\n }\n\n async loadMeta (cache, moovEnd, config) {\n const responses = []\n this.logger.debug('[loadMeta start]')\n let res = await this.loadData([0, moovEnd || this._config.moovEnd], cache, config)\n if (!res) return\n responses.push(res)\n let moov = MP4Parser.findBox(res.data, ['moov'])[0]\n if (!moov) {\n const mdat = MP4Parser.findBox(res.data, ['mdat'])[0]\n if (!mdat) {\n throw new MediaError('cannot find moov or mdat box', res.data)\n }\n const moovStart = mdat.start + mdat.size\n res = await this.loadData([moovStart], cache, config)\n if (!res) return\n responses.push(res)\n moov = MP4Parser.findBox(res.data, ['moov'], moovStart)[0]\n if (!moov) {\n throw new MediaError('cannot find moov box', res.data)\n }\n }\n if (moov.size > moov.data.length) {\n res = await this.loadData([res.data.length, moov.start + moov.size - 1], cache, config)\n if (!res) return\n responses.push(res)\n moov.data = concatUint8Array(moov.data, res.data)\n }\n const parsedMoov = MP4Parser.moov(moov)\n if (!parsedMoov) {\n throw new MediaError('cannot parse moov box', moov.data)\n }\n\n const segments = moovToSegments(parsedMoov, this._config.segmentDuration)\n if (!segments) {\n throw new MediaError('cannot parse segments', moov.data)\n }\n\n this.meta = moovToMeta(parsedMoov)\n const { videoSegments, audioSegments } = segments\n this.videoSegments = videoSegments\n this.audioSegments = audioSegments\n this.logger.debug('[load moov end!!!!!]')\n return {\n meta: this.meta,\n videoSegments,\n audioSegments,\n responses\n }\n }\n\n loadCacheMeta (meta, segmentIndex){\n const { moov } = meta\n const segments = moovToSegments(moov, this._config.segmentDuration)\n const { videoSegments, audioSegments } = segments\n this.videoSegments = videoSegments\n this.audioSegments = audioSegments\n this._currentSegmentIndex = segmentIndex\n this.meta = meta\n }\n\n getSegmentByTime (time) {\n let video\n let audio\n if (!this.videoSegments.length) {\n audio = this.audioSegments.find(x => x.startTime <= time && x.endTime > time)\n } else {\n video = this.videoSegments.find(x => x.startTime <= time && x.endTime > time)\n if (video) {\n audio = this.audioSegments[video.index]\n }\n }\n\n return {\n video,\n audio\n }\n }\n\n async loadSegmentByTime (time, cache, changeCurrent = true, config = {}) {\n if (!this.isMetaLoaded) {\n await this.loadMeta(cache)\n }\n const { video, audio } = this.getSegmentByTime(time)\n return this._loadSegment(video, audio, cache, changeCurrent, config)\n }\n\n async loadNextSegment (cache, changeCurrent = true, config = {}) {\n if (!this.isMetaLoaded) {\n await this.loadMeta()\n }\n const video = this.videoSegments[this._currentSegmentIndex + 1]\n const audio = this.audioSegments[this._currentSegmentIndex + 1]\n return this._loadSegment(video, audio, cache, changeCurrent, config)\n }\n\n async preload (time) {\n if (!this.isMetaLoaded) {\n await this.loadMeta(true)\n }\n if (!time || time < 0) return\n const { video, audio } = this.getSegmentByTime(time)\n const index = Math.max(video?.index || 0, audio?.index || 0)\n if (!index) return\n\n const videos = this.videoSegments.slice(0, index)\n const audios = this.audioSegments.slice(0, index)\n\n const load = async (i) => {\n if (i > index) return\n await this._loadSegment(videos[i], audios[i], true, false)\n await load(i + 1)\n }\n\n await load(0)\n }\n\n cancel () {\n return this._loader.cancel()\n }\n\n async reset (notCancelLoader = false) {\n if (!notCancelLoader) {\n this.logger.debug('[MP4loader reset func call loader.cancel]')\n await this._loader.cancel()\n }\n this.vid = this.url = ''\n this.meta = {}\n this.downloadInfo = []\n this.videoSegments = []\n this.audioSegments = []\n this._currentSegmentIndex = -1\n this._currentLoadingSegmentIndex = -1\n }\n\n async destroy () {\n await this.reset()\n // await this.cancel()\n this.cache.clear()\n }\n\n async _loadSegment (video, audio, cache, changeCurrent, config) {\n if (!video && !audio) return\n const segIndex = video?.index || audio?.index || 0\n this._currentLoadingSegmentIndex = segIndex\n let res\n try {\n res = await this.loadData([\n Math.min(video?.range[0] || Infinity, audio?.range[0] || Infinity),\n Math.max(video?.range[1] || 0, audio?.range[1] || 0)\n ], cache, config)\n } finally {\n this._currentLoadingSegmentIndex = -1\n }\n if (!res) return\n\n if (changeCurrent) {\n this._currentSegmentIndex = segIndex\n }\n\n res.video = video\n res.audio = audio\n\n return res\n }\n\n async loadData (range, cache, config) {\n const cacheKey = this._getCacheKey(range)\n const data = await this.cache.get(cacheKey)\n let res\n if (!data) {\n const url = config && config.url ? config.url : this.url\n res = await this._loader.load(url, { range, vid: this.vid, ...config })\n } else {\n res = { data, state: true, options: { fromCache: true, range, vid: this.vid } }\n }\n if (!res) return\n if (!data) {\n res.data && this.downloadInfo.push({\n startTime: res.startTime,\n endTime: res.endTime,\n size: res.data.byteLength,\n range\n })\n if (this.downloadInfo && this.downloadInfo.length > this._config.maxDownloadInfoSize) {\n this.downloadInfo = this.downloadInfo.slice(-this._config.maxDownloadInfoSize)\n }\n }\n\n if (!data && cache) {\n // this.cache.set(cacheKey, res.data)\n }\n\n // res.range = range\n return res\n }\n\n _transformError = (error) => {\n // error.type = 'network'\n return error\n }\n\n _getCacheKey (range) {\n return (this.vid || this.url) + ':' + range\n }\n}\n","export function getConfig (cfg) {\n return {\n vid: '',\n moovEnd: 80000,\n segmentDuration: 2,\n maxDownloadInfoSize: 30,\n responseType: 'arraybuffer',\n cache: null,\n // ...xgplayer-streaming-shared/src/net/config\n ...cfg\n }\n}\n"],"names":["createPublicPromise","res","rej","promise","Promise","resolve","reject","used","apply","arguments","nowTime","parseInt","performance","now","e","Date","getTime","Buffer","_classCallCheck","key","value","buf","length","end","start","b","buffered","error","maxHole","buffers","i","l","bufLen","last","lastEnd","push","reduce","a","c","pos","undefined","index","nextStart","nextEnd","prevStart","prevEnd","item","currentTime","behind","remaining","totalLength","ERR","FLV","HLS","MP4","FMP4","MSE_ADD_SB","MSE_APPEND_BUFFER","MSE_OTHER","MSE_FULL","OPTION","DASH","LICENSE","CUSTOM_LICENSE","MSE_HIJACK","EME_HIJACK","SIDX","NO_CANPLAY_ERROR","BUFFERBREAK_ERROR","MEDIA_ERR_ABORTED","MEDIA_ERR_NETWORK","MEDIA_ERR_DECODE","MEDIA_ERR_SRC_NOT_SUPPORTED","MEDIA_ERR_CODEC_NOT_SUPPORTED","MEDIA_ERR_URL_EMPTY","ERR_CODE","_defineProperty","_ERR_CODE","StreamingError","_Error","_inherits","_super","_createSuper","type","subType","origin","payload","msg","_this","call","message","errorType","originError","ext","errorCode","errorMessage","Error","_error$response","isTimeout","url","response","httpCode","status","isBrowser","window","LogCacheLevel","DEBUG","LOG","WARN","ERROR","SIMPLE_TYPE","Logger","name","config","this","_prefix","concat","disabled","logCacheLevel","logMaxSize","logSize","logTextArray","_createClass","_console","_len","args","Array","_key","logCache","console","debug","_console2","_len2","_key2","log","_console3","_len3","_key3","warn","_console4","_len4","_key4","text","_len5","logText","_key5","finLogText","map","logable","JSON","stringify","delLog","shift","join","reset","_console5","group","table","groupEnd","val","toLocaleString","reduceDepth","_typeof","objType","Object","prototype","toString","slice","obj","maxDepth","depth","result","includes","hasOwnProperty","MediaSource","getMediaSource","OP_NAME","MSE","media","_this2","create","queue","_queue","op","costtime","_opst","_logger","opName","context","_startQueue","event","_config","assign","getDefaultConfig","bindMedia","openLog","enable","_enqueueBlockingOp2","_unbindMedia","_bindMedia","get","_this$mediaSource","mediaSource","readyState","_url","_this$mediaSource2","duration","_mseFullFlag","VIDEO","_this3","_enqueueBlockingOp","isEnded","_this4","_openPromise","isOpened","ms","addEventListener","onOpen","_st","removeEventListener","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_this5","wrap","_context","prev","next","unbindMedia","revokeObjectURL","src","URL","createObjectURL","abrupt","stop","_x","_callee2","hasMetadata","mseOpen","_this6","_context2","keys","forEach","t","x","endOfStream","_sourceBuffer","k","removeSourceBuffer","removeAttribute","load","mimeType","sb","addSourceBuffer","_onSBUpdateEnd","bind","_onSBUpdateError","_this7","changeType","_enqueueOp","createSource","buffer","_this8","byteLength","_this8$_sourceBuffer$","appendBuffer","startTime","endTime","_this9","isInsertHead","remove","p","_this10","_this11","_this$_queue$type","initOpque","isinit","reason","_this12","setLiveSeekableRange","exec","_this13","splice","then","_callee3","types","waiters","_this14","_context3","prom","all","updating","_x2","_x3","indexOf","timestampOffset","_this15","_this16","abort","mime","isTypeSupported","LoaderType","ResponseType","NetError","request","_assertThisInitialized","isPlainObject","getPrototypeOf","getRangeValue","ret","encode","encodeURIComponent","replace","setUrlParams","params","v","str","isArray","toISOString","isObject","filter","Boolean","hashIndex","createResponse","data","done","contentLength","age","firstByteTime","range","vid","priOptions","parseFloat","Number","isNaN","option","calculateSpeed","byteLen","millisec","Math","round","EVENT","has","prefix","Events","EE","fn","once","addListener","emitter","TypeError","listener","evt","_events","_eventsCount","clearEvent","EventEmitter","__proto__","eventNames","names","events","getOwnPropertySymbols","listeners","handlers","ee","listenerCount","emit","a1","a2","a3","a4","a5","len","removeListener","j","on","removeAllListeners","off","prefixed","module","exports","CACHESIZE","FetchLoader","_EventEmitter","_cancel","_ref","_this$_abortControlle","timeout","responseType","onProgress","onTimeout","onCancel","transformResponse","logger","method","headers","body","mode","credentials","cache","redirect","referrer","referrerPolicy","onProcessMinLen","_aborted","_onProcessMinLen","_onCancel","_abortController","AbortController","_running","_index","_range","_vid","_priOptions","init","signal","clearTimeout","_timeoutTimer","rangeValue","Headers","append","Range","setTimeout","cancel","fetch","_ref2","costTime","speed","_response","ok","sent","json","_loadChunk","arrayBuffer","Uint8Array","time","catch","_error","options","_reader","t0","st","getReader","err","_cache","_writeIdx","reader","pump","_ref3","_this3$_range","startRange","startByte","curLen","retData","temp","read","_receivedLength","set","XhrLoader","req","_onProgress","_headers","_withCredentials","_body","_method","_timeout","_runing","_responseType","_firstRtt","_onTimeout","_request","_loadCompleteResolve","_loadCompleteReject","_startLoad","chunkSize","_currentChunkSizeKB","from","to","_internalOpen","_startTime","xhr","_xhr","XMLHttpRequest","open","withCredentials","onload","_onLoad","onreadystatechange","_onReadyStatechange","onerror","errorEvent","_errorEvent$currentTa","_errorEvent$currentTa2","_errorEvent$currentTa3","currentTarget","statusText","ontimeout","setRequestHeader","send","target","_this$_range","_objectSpread","byteStart","_this$_range2","chunk","responseURL","_getHeaders","_transformResponse","_getPrototypeOf","_step","_iterator","_createForOfIteratorHelper","getAllResponseHeaders","trim","split","s","n","parts","toLowerCase","f","Task","alive","_loaderType","_loader","_retryCount","_retryTimer","_canceled","_retryCheckFunc","retryCheckFunc","_this$_config","retry","retryDelay","onRetryError","transformError","rest","_objectWithoutProperties","_excluded","isRetry","running","loaderType","retryCount","concatUint8Array","arr","prevLen","d","sleep","NetLoader","cfg","transformRequest","integrity","getConfig","isSupported","task","loader","_currentTask","_processTask","cancels","_alive","finally","_this3$_currentTask","_this3$_alive","TrackType","VideoCodecType","AudioCodecType","WarningType","VideoTrack","sequenceNumber","width","height","fpsDen","fpsNum","baseMediaDecodeTime","timescale","codec","present","pid","pps","sps","vps","sarRatio","samples","warnings","hvcC","isVideoEncryption","AudioTrack","sampleDuration","sampleRate","channelCount","codecType","isAudioEncryption","VideoSample","pts","dts","units","originPts","originDts","keyframe","flag","dependsOn","isNonSyncSample","AudioSample","sampleOffset","size","Sample","FlvScriptSample","_Sample","SeiSample","_Sample2","_super2","MetadataTrack","flvScriptSamples","seiSamples","ExpGolomb","_data","_bytesAvailable","_loadWord","position","availableBytes","min","workingBytes","subarray","_word","DataView","getUint32","_bitsAvailable","count","skipBytes","floor","bits","readBits","leadingZeroCount","skipLZ","skipBits","clz","readUEG","lastScale","nextScale","readEG","UTF8","uint8array","out","input","String","fromCharCode","_checkContinuation","ucs4","_ucs2","checkLength","array","ua","navigator","userAgent","toLocaleLowerCase","isSafari","test","isFirefox","isAndroid","MAX_SIZE","pow","readBig16","readBig32","readBig64","getAvcCodec","codecs","h","parse","NALu","offset","dataLen","unit","isHevc","uuid","uint","emulationPreventionBytesPositions","newLength","newData","sourceIndex","AVC","nalUnitSize","spsParsed","spsSize","spsArr","ppsArr","spsCount","parseSPS","removeEPB","ppsSize","ppsCount","eg","readUByte","profileIdc","profileCompatibility","levelIdc","skipUEG","chromaFormat","chromaFormatIdc","readBool","scalingListCount","skipScalingList","picOrderCntType","numRefFramesInPicOrderCntCycle","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","fixedFrame","fps","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","aspectRatioIdc","numUnitsInTick","timeScale","ceil","AAC","rate","FREQ","skip","frames","samplingFrequencyIndex","protectionSkipBytes","frameLength","objectType","_AAC$_getConfig","_getConfig","frameIndex","getFrameDuration","originCodec","_AAC$_getConfig2","samplingIndex","originObjectType","extensionSamplingIndex","HEVC","vpsParsed","nalUnitType","numNalus","nalSize","vpsArr","numOfArrays","parseVPS","vpsMaxSubLayersMinus1","numTemporalLayers","max","_parseProfileTierLevel","spsMaxSubLayersMinus1","temporalIdNested","separateColourPlaneFlag","confWinLeftOffset","confWinRightOffset","confWinTopOffset","confWinBottomOffset","conformanceWindowFlag","bitDepthLumaMinus8","bitDepthChromaMinus8","subWidthC","subHeightC","maxSubLayersMinus1","generalTierFlag","generalProfileSpace","generalProfileIdc","generalProfileCompatibilityFlags","generalConstraintIndicatorFlags","generalLevelIdc","subLayerProfilePresentFlag","subLayerLevelPresentFlag","MAX_SILENT_FRAME_DURATION","AUDIO_EXCETION_LOG_EMIT_DURATION","FlvFixer","videoTrack","audioTrack","metadataTrack","_baseDts","_baseDtsInited","_audioNextPts","_videoNextDts","_audioTimestampBreak","_videoTimestampBreak","_lastVideoDuration","_lastAudioExceptionGapDot","Infinity","_lastAudioExceptionOverlapDot","_lastAudioExceptionLargeGapDot","_lastVideoExceptionLargeGapDot","_lastVideoExceptionChunkFirstDtsDot","discontinuity","contiguous","_videoLastSample","_calculateBaseDts","resetBaseDts","exist","_resetBaseDtsWhenStreamBreaked","_fixAudio","_fixVideo","refSampleDurationInt","first","lastSample","pop","unshift","samp0","firstSample","vDelta","abs","_samples$","nextDts","firstSampleDts","nextSampleDts","nextSample","refSampleDuration","_doFixAudioInternal","audioSamps","videoSamps","audioBasePts","videoBaseDts","baseDts","delta","isFinite","_getG711Duration","sampleDurationInSampleRate","nextPts","sample","silentFrame","_getSilentFrame","silentSample","track","sampleSize","getSilentFrame","AMF","_parseValue","byteOffset","view","isEnd","getUint8","getFloat64","_AMF$_parseString","_parseString","terminal","_AMF$_parseObject","_parseObject","_terminal","_AMF$_parseObject2","strictArrayLength","_AMF$_parseValue","timestamp","getInt16","decode","getUint16","FlvDemuxer","_fixer","_remainingData","_headerParsed","probe","tagType","dataSize","bodyData","prevTagSize","_parseAudio","_parseVideo","_parseScript","formatTimescale","hasSample","fix","demux","format","soundRate","soundSize","soundType","AUDIO_RATE","_parseAac","_parseG711","parseAudioSpecificConfig","sampleRateIndex","frameType","codecId","packetType","cts","configData","parseHEVCDecoderConfigurationRecord","parseAVCDecoderConfigurationRecord","parseAvcC","_checkAddMetaNalToUnits","setToKeyframe","parseSEI","_gopId","gopId","hevc","_needAddMetaBeforeKeyFrameNal","MP4Parser","headerSize","subData","findBox","box","parseBox","trackId","baseDataOffsetPresent","flags","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","baseDataOffset","sampleDescriptionIndex","defaultSampleDuration","defaultSampleSize","defaultSampleFlags","reference_ID","version","earliest_presentation_time","first_offset","references","ref","tmp32","reference_type","referenced_size","subsegment_duration","starts_with_SAP","SAP_type","SAP_delta_time","mvhd","trak","pssh","nextTrackId","tkhd","mdia","mdhd","hdlr","minf","lang","language","handlerType","vmhd","smhd","stbl","graphicsmode","opcolor","balance","_ret$stsd$entries$","_ret$stsd$entries$$si","_ret$stsd$entries$$si2","stsd","stts","ctts","stsc","stsz","stco","co64","default_IV_size","entries","sinf","schi","tenc","stss","senc","iv","sampleCount","InitializationVector","subsamples","subsampleCount","subsample","BytesOfClearData","BytesOfProtectedData","keyIds","systemId","toHex","numKeyIds","keyId","data_size","kid","system_id","entryCount","avc1","hvc1","mp4a","alaw","samplesize","esds","horizresolution","vertresolution","avcC","pasp","default_IsEncrypted","default_KID","frma","data_format","bodyStart","parseVisualSampleEntry","configurationVersion","AVCProfileIndication","AVCLevelIndication","lengthSizeMinusOne","spsLength","ppsLength","tmp","generalProfileCompatibility","avgFrameRate","_ret$vps","nalus","_ret$sps","_ret$pps","hSpacing","vSpacing","parseAudioSampleEntry","byteRead","tag","substring","padStart","firstChunk","samplesPerChunk","entrySizes","mfhd","traf","tfhd","tfdt","trun","dataOffset","firstSampleFlags","isLeading","isDependedOn","hasRedundancy","paddingValue","degradationPriority","moov","_e$esds","_e$esds2","tracks","vTrack","find","_t$mdia","_t$mdia$hdlr","aTrack","_t$mdia2","_t$mdia2$hdlr","_vTrack$tkhd","_vTrack$mdia","_vTrack$mdia$minf","_vTrack$mdia$minf$stb","_vTrack$mdia2","_vTrack$mdia2$minf","_vTrack$mdia2$minf$st","_vTrackId","id","tkhdDuration","mvhdDurtion","mvhdTimecale","_e1$sinf","_e1$sinf$schi","_e1$sinf2","_e1$sinf2$schi","_e1$sinf3","_e1$sinf3$schi","_e1$sinf4","_e1$sinf4$frma","e1","videoSenc","useEME","kidValue","encv","_aTrack$tkhd","_e$esds3","_e$esds4","_aTrack$mdia","_aTrack$mdia$minf","_aTrack$mdia$minf$stb","_aTrack$mdia2","_aTrack$mdia2$minf","_aTrack$mdia2$minf$st","_aTrackId","_e$sinf","_e$sinf$frma","_e$sinf2","_e$sinf2$schi","_e$sinf3","_e$sinf3$schi","_e$sinf4","_e$sinf4$schi","getRateIndexByRate","audioSenc","enca","_videoTrack$encv","_audioTrack$enca","vkid","akid","videoSampleCount","_audioTrack$samples","audioSampleCount","moof","defaultSize","defaultDuration","evaluateDefaultDuration","_t$mdia3","_t$mdia3$hdlr","_t$mdia4","_t$mdia4$hdlr","videoSamples","audioSamples","_vTrack$mdia3","_vTrack$mdia3$minf","videoStbl","getSamples","_aTrack$mdia3","_aTrack$mdia3$minf","_aTrack$mdia$mdhd","audioStbl","keyframeMap","cttsArr","cttsEntries","stscEntries","stcoEntries","stszEntrySizes","stssEntries","chunkIndex","chunkRunIndex","offsetInChunk","lastSampleInChunk","lastChunkInRun","dataReferenceIndex","frameCount","isFullBox","readBig24","pad","charstr","maxlen","chars","r","hex","Concat","ResultConstructor","arrays","self","UINT32_MAX","FTYPHEV1","FTYPAVC1","ftyp","content","mvex","_toConsumableArray","HDLR_TYPES","VMHD","SMHD","DINF","extBox","STTS","STSC","STSZ","STCO","avc1hev1","_concat$concat","avcc","btrt","charCodeAt","schm","typ","boxes","fiel","_concat$concat2","ArrayBuffer","pcf","cif","write","_ref4","_slicedToArray","trex","sencLength","isVideo","videoSencLength","saiz","saio","trun1","sbgp","sdtp","extension","writeUint32","samplesLength","writeUint16","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","sampleLen","_samples$i","_samples$i$flag","_samples$i$cts","trackMP4","mdiaMP4","minfMP4","stblMP4","_ref5","_ref6","sampleDescIndex","samplesSizes","offsets","keyframeIndexes","_ref7","styp","durationCount","earliestTime","mdatSize","sidx","mdat","video","audio","dinf","dref","StblTable","Base","properties","clone","constructor","_construct","WordArray","_Base","words","sigBytes","typedArray","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","typedArrayByteLength","_words","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","_get","nBytes","rcache","m_w","_m_w","_m_z","mask","random","_r","hexChars","bite","hexStr","hexStrLength","substr","Latin1","latin1Str","latin1StrLength","Utf8","utf8Str","unescape","BufferedBlockAlgorithm","_Base2","_minBufferSize","_nDataBytes","m_data","doFlush","processedWords","blockSize","dataWords","dataSigBytes","nBlocksReady","nWordsReady","nBytesReady","_doProcessBlock","Hasher","_BufferedBlockAlgorit","_super3","_doReset","messageUpdate","_append","_process","hash","_doFinalize","SubHasher","finalize","HMAC","_Base3","_super4","hasher","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","update","innerHash","hmac","Base64","_map","base64Chars","triplet","charAt","paddingChar","base64Str","base64StrLength","reverseMap","_reverseMap","paddingIndex","parseLoop","bits1","bitsCombined","T","sin","FF","GG","HH","II","MD5Algo","_Hasher","_hash","M","_M","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","_createHelper","_createHmacHelper","EvpKDFAlgo","keySize","iterations","password","salt","derivedKeyWords","block","derivedKey","Cipher","xformMode","_xformMode","dataUpdate","finalProcessedData","_ENC_XFORM_MODE","_DEC_XFORM_MODE","SubCipher","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","encrypt","decrypt","ciphertext","ivSize","BlockCipherMode","cipher","_cipher","_iv","Encryptor","Decryptor","xorBlock","_prevBlock","CBC","_BlockCipherMode","_CBC","_class","_super5","encryptBlock","_CBC2","_class2","_super6","thisBlock","decryptBlock","Pkcs7","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","padding","unpad","BlockCipher","_Cipher2","_super7","modeCreator","createEncryptor","createDecryptor","_mode","__creator","processBlock","finalProcessedBlocks","CipherParams","_super8","cipherParams","mixIn","formatter","OpenSSLFormatter","openSSLStr","ciphertextWords","_super9","_cfg","encryptor","cipherCfg","algorithm","_ciphertext","plaintext","_parse","OpenSSLKdf","execute","_salt","compute","_SerializableCipher","_super10","derivedParams","kdf","_SBOX","INV_SBOX","_SUB_MIX_0","_SUB_MIX_1","_SUB_MIX_2","_SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x2","x4","x8","RCON","AESAlgo","_BlockCipher","_nRounds","_keyPriorReset","keyWords","ksRows","_keySchedule","keySchedule","ksRow","_invKeySchedule","invKeySchedule","invKsRow","_doCryptBlock","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","SBOX","nRounds","s0","s1","s2","s3","t1","t2","t3","CTR","_CTR","counter","_counter","keystream","MediaError","Cache","moovToSegments","segmentDurations","videoSegments","audioSegments","_videoTrack$mdia","_videoTrack$mdia$minf","_videoTrack$mdia$mdhd","getSegments","_audioTrack$mdia","_audioTrack$mdia$minf","_audioTrack$mdia$mdhd","segDuration","frame","gop","gopDuration","lastFrame","segments","segFrames","adjust","pushSegment","_segments","_segFrames","curTime","moovToMeta","videoCodec","audioCodec","audioChannelCount","audioSampleRate","videoTimescale","audioTimescale","defaultKID","_videoTrack$mdia2","_videoTrack$mdia2$min","_videoTrack$mdia2$min2","_videoTrack$mdia3","_videoTrack$mdia3$mdh","_audioTrack$mdia2","_audioTrack$mdia2$min","_audioTrack$mdia2$min2","_e1$esds","_audioTrack$mdia3","_audioTrack$mdia3$mdh","isNumber","MP4Loader","_loadData","_loadSegment2","_destroy","_reset","_preload","_loadNextSegment","_loadSegmentByTime","_loadMeta","_loadMetaProcess","_getOrLoadMeta","_changeUrl","moovEnd","segmentDuration","maxDownloadInfoSize","_transformError","segIndex","_currentSegmentIndex","_this$videoSegments","_this$audioSegments","_currentLoadingSegmentIndex","notCancelLoader","_args","isMetaLoaded","loadMeta","meta","_callee4","moovStart","OnProgressHandle","_context4","state","_moovStart","parsedMoov","loadData","loadMetaProcess","_x7","_x8","_x9","_x4","_x5","_x6","_callee5","responses","_context5","_x10","_x11","_x12","segmentIndex","_callee6","changeCurrent","_this$getSegmentByTim","_args6","_context6","getSegmentByTime","_loadSegment","loadSegmentByTime","_x13","_x14","_callee7","_args7","_context7","_x15","_callee9","_this$getSegmentByTim2","videos","audios","_context9","_callee8","_context8","_x17","_x16","_callee10","_args10","_context10","downloadInfo","_callee11","_context11","clear","_callee12","_context12","finish","_x18","_x19","_x20","_x21","_x22","_callee13","cacheKey","_context13","_getCacheKey","fromCache","_x23","_x24","_x25"],"mappings":"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"}