{"version":3,"file":"index.browser.local.min.js","sources":["node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_has.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/library/modules/_cof.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_to-object.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_core.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_ctx.js","node_modules/core-js/library/modules/_is-object.js","node_modules/core-js/library/modules/_an-object.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_hide.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_uid.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/core-js/library/modules/_object-gops.js","node_modules/core-js/library/modules/_object-pie.js","node_modules/core-js/library/modules/_object-assign.js","node_modules/core-js/library/modules/es6.object.assign.js","node_modules/@babel/runtime-corejs2/core-js/object/assign.js","node_modules/core-js/library/fn/object/assign.js","node_modules/@babel/runtime-corejs2/helpers/extends.js","node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js","node_modules/core-js/library/fn/object/define-property.js","node_modules/core-js/library/modules/es6.object.define-property.js","node_modules/@babel/runtime-corejs2/core-js/object/define-property.js","node_modules/@babel/runtime-corejs2/helpers/createClass.js","node_modules/core-js/library/modules/_object-dps.js","node_modules/core-js/library/fn/object/define-properties.js","node_modules/core-js/library/modules/es6.object.define-properties.js","node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js","node_modules/core-js/library/modules/_object-gopn.js","node_modules/core-js/library/modules/_own-keys.js","node_modules/core-js/library/modules/_object-gopd.js","node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js","node_modules/core-js/library/modules/_create-property.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/core-js/library/modules/_wks-define.js","node_modules/core-js/library/modules/_object-create.js","node_modules/core-js/library/modules/es6.symbol.js","node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js","node_modules/core-js/library/fn/object/get-own-property-descriptors.js","node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","node_modules/core-js/library/fn/object/get-own-property-descriptor.js","node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js","node_modules/core-js/library/modules/_redefine.js","node_modules/core-js/library/modules/_meta.js","node_modules/core-js/library/modules/_wks.js","node_modules/core-js/library/modules/_set-to-string-tag.js","node_modules/core-js/library/modules/_wks-ext.js","node_modules/core-js/library/modules/_enum-keys.js","node_modules/core-js/library/modules/_is-array.js","node_modules/core-js/library/modules/_html.js","node_modules/core-js/library/modules/_object-gopn-ext.js","node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js","node_modules/core-js/library/fn/object/get-own-property-symbols.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/@babel/runtime-corejs2/core-js/object/keys.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/modules/web.dom.iterable.js","node_modules/@babel/runtime-corejs2/helpers/defineProperty.js","node_modules/core-js/library/modules/_string-at.js","node_modules/core-js/library/modules/_iterators.js","node_modules/core-js/library/modules/_iter-create.js","node_modules/core-js/library/modules/_object-gpo.js","node_modules/core-js/library/modules/_iter-define.js","node_modules/core-js/library/modules/es6.string.iterator.js","node_modules/core-js/library/modules/_iter-step.js","node_modules/core-js/library/modules/es6.array.iterator.js","node_modules/core-js/library/fn/symbol/iterator.js","node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js","node_modules/core-js/library/modules/es7.symbol.async-iterator.js","node_modules/core-js/library/modules/es7.symbol.observable.js","node_modules/core-js/library/modules/_classof.js","node_modules/core-js/library/modules/_species-constructor.js","node_modules/core-js/library/modules/_invoke.js","node_modules/core-js/library/modules/_task.js","node_modules/@babel/runtime-corejs2/core-js/symbol.js","node_modules/core-js/library/fn/symbol/index.js","node_modules/@babel/runtime-corejs2/helpers/typeof.js","node_modules/core-js/library/modules/_is-array-iter.js","node_modules/core-js/library/modules/core.get-iterator-method.js","node_modules/core-js/library/modules/_for-of.js","node_modules/core-js/library/modules/_iter-call.js","node_modules/core-js/library/modules/_microtask.js","node_modules/core-js/library/modules/_new-promise-capability.js","node_modules/core-js/library/modules/_promise-resolve.js","node_modules/core-js/library/modules/_perform.js","node_modules/core-js/library/modules/_user-agent.js","node_modules/core-js/library/modules/_set-species.js","node_modules/core-js/library/modules/_iter-detect.js","node_modules/core-js/library/modules/es6.promise.js","node_modules/core-js/library/modules/_an-instance.js","node_modules/core-js/library/modules/_redefine-all.js","node_modules/core-js/library/modules/_library.js","node_modules/core-js/library/modules/es7.promise.finally.js","node_modules/core-js/library/modules/es7.promise.try.js","node_modules/core-js/library/fn/promise.js","node_modules/reflect-metadata/Reflect.js","node_modules/@babel/runtime-corejs2/core-js/promise.js","node_modules/core-js/library/modules/_bind.js","node_modules/core-js/library/modules/es6.reflect.construct.js","node_modules/core-js/library/modules/_set-proto.js","node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js","node_modules/core-js/library/fn/reflect/construct.js","node_modules/core-js/library/fn/object/create.js","node_modules/core-js/library/modules/es6.object.create.js","node_modules/@babel/runtime-corejs2/core-js/object/create.js","node_modules/core-js/library/modules/es6.object.set-prototype-of.js","node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js","node_modules/core-js/library/fn/object/set-prototype-of.js","node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js","node_modules/@babel/runtime-corejs2/helpers/inherits.js","node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js","node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js","node_modules/core-js/library/modules/es6.object.get-prototype-of.js","node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js","node_modules/core-js/library/fn/object/get-prototype-of.js","node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/GlobalUtil.ts","src/com/didichuxing/tracker/h5/envconfig/AH5EnvConfigSync.ts","node_modules/core-js/library/fn/json/stringify.js","node_modules/@babel/runtime-corejs2/core-js/json/stringify.js","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/app/WKWebviewOmegaSDK.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/AppUtil.ts","src/com/didichuxing/tracker/h5/envconfig/AppH5EnvConfig.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/UUID.ts","src/com/didichuxing/tracker/h5/envconfig/NormalH5EnvConfig.ts","src/com/didichuxing/tracker/h5/envconfig/UniqueH5EnvConfig.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/ReportCallbackUtil.ts","node_modules/core-js/library/modules/es6.reflect.get.js","node_modules/core-js/library/fn/reflect/get.js","node_modules/@babel/runtime-corejs2/core-js/reflect/get.js","node_modules/@babel/runtime-corejs2/helpers/superPropBase.js","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/EventStatus.ts","node_modules/@babel/runtime-corejs2/helpers/get.js","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/AEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/SequencedEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/PluginUtils.ts","src/com/didichuxing/tracker/PluginSet.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/NonH5Plugin.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/FailedEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/TimeoutEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/reportor/AppEventReportor.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/events/OMGH5PageInitEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/BlockedEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/AReportingStrategyPlugin.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugins/AOMGH5PageInitPlugin.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugins/OMGAppH5PageInitPlugin.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/reportor/DataQueueSet.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/reportor/AH5EventReportor.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/EncodeHash.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/reportor/PostEventReportor.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugins/OMGH5PageInitPlugin.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/events/OMGH5LogEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugins/AOMGH5LogPlugin.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugins/OMGH5LogPlugin.ts","src/com/didichuxing/tracker/h5/H5Tracker.ts","src/com/didichuxing/tracker/h5/OmegaTracker.ts","src/com/didichuxing/tracker/OmegaTrackerCDNLocal.js"],"sourcesContent":["module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","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 dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","exports.f = {}.propertyIsEnumerable;\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","module.exports = require(\"core-js/library/fn/object/assign\");","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","var _Object$assign = require(\"../core-js/object/assign\");\n\nfunction _extends() {\n module.exports = _extends = _Object$assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","module.exports = require(\"core-js/library/fn/object/define-property\");","var _Object$defineProperty = require(\"../core-js/object/define-property\");\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","require('../../modules/es6.object.define-properties');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperties(T, D) {\n return $Object.defineProperties(T, D);\n};\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","module.exports = require(\"core-js/library/fn/object/define-properties\");","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptors\");","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptor\");","module.exports = require('./_hide');\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","exports.f = require('./_wks');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","module.exports = require(\"core-js/library/fn/object/get-own-property-symbols\");","require('../../modules/es6.symbol');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertySymbols;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","module.exports = require(\"core-js/library/fn/object/keys\");","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","var _Object$defineProperty = require(\"../core-js/object/define-property\");\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n _Object$defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","module.exports = {};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","module.exports = require(\"core-js/library/fn/symbol/iterator\");","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","module.exports = require(\"core-js/library/fn/symbol\");","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","var _Symbol$iterator = require(\"../core-js/symbol/iterator\");\n\nvar _Symbol = require(\"../core-js/symbol\");\n\nfunction _typeof2(obj) { if (typeof _Symbol === \"function\" && typeof _Symbol$iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof _Symbol === \"function\" && _typeof2(_Symbol$iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","module.exports = true;\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n","module.exports = require(\"core-js/library/fn/promise\");","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = require(\"core-js/library/fn/reflect/construct\");","require('../../modules/es6.reflect.construct');\nmodule.exports = require('../../modules/_core').Reflect.construct;\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","module.exports = require(\"core-js/library/fn/object/create\");","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","module.exports = require(\"core-js/library/fn/object/set-prototype-of\");","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","var _Object$setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nfunction _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var _Object$create = require(\"../core-js/object/create\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","module.exports = require(\"core-js/library/fn/object/get-prototype-of\");","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","var _Object$getPrototypeOf = require(\"../core-js/object/get-prototype-of\");\n\nvar _Object$setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nfunction _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of GlobalUtil\n */\n\nexport default abstract class GlobalUtil {\n /**\n * 当前页面是否加载完成\n * @returns {boolean}\n */\n public static isLoaded(): boolean {\n if (window.performance && window.performance.timing) { // 现代浏览器\n return !!window.performance.timing.loadEventEnd;\n } else { // 老式浏览器\n return window.document.readyState === 'complete';\n }\n }\n\n /**\n * 是否空字符串\n * @param str{string}\n * @returns {boolean}\n */\n public static isEmptyString(str: string | undefined): boolean {\n if (!str) {\n return false;\n }\n let result = true;\n if (Object.prototype.toString.call(str) !== '[object String]') {\n result = false;\n }\n // \\s 小写的s是,匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \\f\\n\\r\\t\\v]。\n if (str.replace(/(^\\s*)|(\\s*$)/g, '').length === 0) {\n result = false;\n }\n return result;\n }\n\n /**\n * 设置OMG的日志\n * @param str\n */\n public static dispatchOmgLog(str: string): void {\n const mesageEvent: MessageEvent = document.createEvent('MessageEvent');\n mesageEvent.initMessageEvent('omglog', false, false, str, '', '', window);\n window.dispatchEvent(mesageEvent);\n }\n\n /**\n * 判断当前应用的 scheme 是否为桌面环境\n * @returns {boolean}\n */\n public static isDesktop(): boolean {\n return window.location && window.location.protocol === 'file:';\n }\n\n /**\n * 获取当前应使用的 protocol\n * @returns {string}\n */\n public static getProtocol(): string {\n // 20190618 lincal:应安全部要求,全面启用 https 协议\n return 'https://';\n // return GlobalUtil.isDesktop() ? 'https://' : '//';\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AH5EnvConfigSync\n */\n\nimport { IPlugin } from 'com/didichuxing/plugin/IPlugin';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport { IEnvConfigurationItemSync } from 'com/didichuxing/tracker/config/IEnvConfigurationItemSync';\nimport {\n IReportingStrategyPluginConstr\n} from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\n\nexport default abstract class AH5EnvConfigSync implements IEnvConfigurationItemSync {\n\n private pluginConstrs: IReportingStrategyPluginConstr[];\n\n private plugins: IPlugin[] | undefined;\n\n private tracker: ITracker;\n\n constructor(tracker: ITracker, pluginConstrs: IReportingStrategyPluginConstr[]) {\n this.pluginConstrs = pluginConstrs;\n this.tracker = tracker;\n }\n\n /**\n * @abstract\n * @param {ITrackerContext} context\n * @returns {boolean}\n */\n public abstract validate(context: ITrackerContext): boolean;\n\n /**\n * @abstract\n * @param {ITracker} tracker\n * @returns {Promise}\n */\n public abstract beforeDeliver(tracker: ITracker): Promise;\n\n /**\n * @override\n * @inheritDoc\n * @returns {IPlugin[]}\n */\n public getPlugins(): IPlugin[] {\n if (!this.plugins) {\n this.plugins = this.pluginConstrs.map((pluginConstr: IReportingStrategyPluginConstr): IPlugin => {\n return new pluginConstr(this.tracker);\n });\n }\n return this.plugins;\n }\n\n /**\n * 获取额外插件url。\n * @returns {string}\n */\n public getExtraPluginsUrl(): string {\n let host: string = '{{cdnHost}}';\n let cdnNamespace: string = '{{cdnNamespace}}';\n if (/global/.test((this.tracker.getContext() as ITrackerContext).uploadHost || '')) { // 国际化\n host = '{{cdnGlobalHost}}';\n cdnNamespace = 'tracker_global';\n }\n if (/omgup-ru\\.didiglobal\\.com/.test((this.tracker.getContext() as ITrackerContext).uploadHost || '')) { // 俄罗斯\n host = '{{cdnDeHost}}';\n cdnNamespace = 'tracker_de';\n }\n if (/omgup-de\\.didiglobal\\.com/.test((this.tracker.getContext() as ITrackerContext).uploadHost || '')) { // 欧洲\n host = '{{cdnDeHost}}';\n cdnNamespace = 'tracker_de';\n }\n if ((this.tracker.getContext() as ITrackerContext).uploadHost === 'omgup.1meal.net') { // rlab\n host = '{{cdnRlabHost}}';\n cdnNamespace = 'falcon_public/tracker';\n }\n\n const proto = GlobalUtil.getProtocol();\n return `${ proto }${ host }/static/${ cdnNamespace }/{{version}}/${ this.getExtraPluginsUrlName() }`;\n }\n\n /**\n * 额外插件url名称。\n * @returns {string}\n */\n protected getExtraPluginsUrlName(): string {\n return 'omega.default.extra.plugins.min.js';\n }\n}\n","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","module.exports = require(\"core-js/library/fn/json/stringify\");","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of WKWebviewOmegaSDK\n */\n\nimport { IPlanObject } from 'com/didichuxing/IPlanObject';\nimport { IOmegaSDK, IAppSdkInfo } from 'com/didichuxing/tracker/plugin/app/IOmegaSDK';\n\nexport default class WKWebviewOmegaSDK implements IOmegaSDK {\n\n /**\n * 往WKWebview派发信息。\n * @param {string} methodName\n * @param {string} params\n */\n private postMessage(methodName: string, params: string): void {\n (window as any).webkit.messageHandlers[methodName].postMessage(params);\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} tel\n * @param {string} countryCallingCode\n */\n public setTelephone(tel: string, countryCallingCode?: string): void {\n this.postMessage('setTelephone', JSON.stringify({\n tel: tel\n }));\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} userId\n */\n public setUserId(userId: string): void {\n this.postMessage('setUserId', JSON.stringify({\n userId: userId\n }));\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {number} cityId\n */\n public setCityId(cityId: number): void {\n this.postMessage('setCityId', JSON.stringify({\n cityId: cityId\n }));\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} eventId\n * @param {string} eventLabel\n * @param {string} attrJson\n * @param {string} sysJson\n * @param {string} exJson\n */\n public trackEventEx(eventId: string, eventLabel: string, attrJson: string, sysJson: string, exJson: string): void {\n this.postMessage('trackEventEx', JSON.stringify({\n eventId: eventId,\n eventLabel: eventLabel,\n attrJson: attrJson,\n sysJson: sysJson,\n exJson: exJson\n }));\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getInfo(): string;\n public getInfo(cb: (info: IAppSdkInfo) => void): void;\n public getInfo(cb?: (info: IAppSdkInfo) => void): any {\n const callback = function(res: IAppSdkInfo) {\n window.postMessage((res as IPlanObject).info, location.href);\n };\n this.postMessage('getInfo', JSON.stringify({\n getInfo: callback.toString()\n }));\n const getInfoHandler = (evt: MessageEvent): void => {\n if (evt && evt.data && evt.data.oid) {\n window.removeEventListener('message', getInfoHandler);\n cb && cb(evt.data);\n }\n };\n window.addEventListener('message', getInfoHandler);\n return '';\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AppBuilder\n */\n\nimport { IBasicTrackerContext } from 'com/didichuxing/tracker/context/IBasicTrackerContext';\nimport { IOmegaSDK, IAppSdkInfo } from 'com/didichuxing/tracker/plugin/app/IOmegaSDK';\nimport WKWebviewOmegaSDK from 'com/didichuxing/tracker/plugin/app/WKWebviewOmegaSDK';\n\nexport default abstract class AppUtil {\n\n /**\n * 当前在安卓或iOS环境里\n * @returns {boolean}\n */\n public static inEnv(): boolean {\n return !!(window as any).OmegaSDK || AppUtil.inWKWebview();\n }\n\n /**\n * 当前在iOS的WKWebview环境中。\n * @returns {boolean}\n */\n public static inWKWebview(): boolean {\n return (window as any).webkit\n && (window as any).webkit.messageHandlers\n && (window as any).webkit.messageHandlers.getInfo;\n }\n\n /**\n * 获取APP桥接omega SDK对象。\n * @returns {IOmegaSDK}\n */\n public static getOmegaSDK(): IOmegaSDK | undefined {\n const omegaSDK: IOmegaSDK = (window as any).OmegaSDK;\n if (omegaSDK) {\n return omegaSDK;\n } else if ((window as any).webkit && (window as any).webkit.messageHandlers\n && (window as any).webkit.messageHandlers.getInfo) { // ios下采用WKWebview\n return new WKWebviewOmegaSDK();\n }\n return undefined;\n }\n\n /**\n * 获取App中的omega id\n * @param {IBasicTrackerContext} context\n * @returns {Promise}\n */\n public static fetchAppOmgId(context?: IBasicTrackerContext): Promise {\n return new Promise((resolve: (oid: string) => void): void => {\n const appOmegaSDK = AppUtil.getOmegaSDK();\n if (appOmegaSDK) {\n if (AppUtil.inWKWebview()) {\n appOmegaSDK.getInfo((info: IAppSdkInfo): void => {\n if (info && info.oid) {\n resolve(info.oid);\n }\n });\n } else {\n // resolve((JSON.parse(appOmegaSDK.getInfo()) as IAppSdkInfo).oid);\n // 加入异常拦截发现部分场景oid端内获取异常\n try {\n const str = appOmegaSDK.getInfo();\n if (str) {\n const info: IAppSdkInfo = JSON.parse(str);\n if (info && info.oid) {\n resolve(info.oid);\n }\n }\n } catch (error) {\n // console.error(error);\n }\n }\n }\n });\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AppH5EnvConfig\n */\n\nimport { IH5Context } from '../IH5Tracker';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport AH5EnvConfigSync from 'com/didichuxing/tracker/h5/envconfig/AH5EnvConfigSync';\nimport AppUtil from 'com/didichuxing/tracker/plugin/utils/AppUtil';\n/**\n * 端内H5环境配置\n *\n * @class\n * @implements {IEnvConfigurationItem}\n */\nexport default class AppH5EnvConfig extends AH5EnvConfigSync {\n\n private context: IH5Context | undefined;\n\n /**\n * window.OmegaSDK存在,则说明在端内。\n * @override\n * @inheritDoc\n * @param {IH5Context} context\n * @returns {boolean}\n */\n public validate(context: IH5Context): boolean {\n this.context = context;\n // 当禁止桥接的时候\n if (this.context.disableBridge === true) {\n // 仅同步oid\n if (AppUtil.inEnv()) {\n this.syncNativeOid();\n }\n return false;\n }\n return AppUtil.inEnv();\n }\n\n /**\n * 同步端上的oid\n */\n private syncNativeOid(resolve?: () => void) {\n const context = this.context;\n // 将context的标记在端内\n if (context) {\n context.isInNative = true;\n }\n AppUtil.fetchAppOmgId().then((oid: string): void => {\n Object.assign(context, {\n // 设置oid\n omgId: oid,\n nativeDone: true\n });\n resolve && resolve();\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITracker} tracker\n * @returns {Promise}\n */\n public beforeDeliver(tracker: ITracker): Promise {\n return new Promise((resolve: () => void): void => {\n if (this.context) {\n this.syncNativeOid(resolve);\n }\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n protected getExtraPluginsUrlName(): string {\n return 'omega.default.app.extra.plugins.min.js';\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of UUID\n */\n\nexport default abstract class UUID {\n\n /**\n *\n * @returns {string[]}\n */\n public static getByte2Hex(): string[] {\n const byteToHex: string[] = [];\n for (let i: number = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n }\n return byteToHex;\n }\n\n /**\n * bytes to uuid\n * @param {number[]} buf\n * @param {number} offset\n * @returns {string}\n */\n public static bytesToUuid(buf: number[], offset?: number): string {\n let i: number = offset || 0;\n const bth: string[] = UUID.getByte2Hex();\n // join used to fix memory issue caused by concatenation:\n // https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]]).join('');\n }\n\n /**\n * 生成伪UUID\n * @returns {string}\n */\n public static get v4(): string {\n const rnds: number[] = new Array(16);\n let r: number = 0;\n for (let i: number = 0; i < 16; ++i) {\n if ((i & 0x03) === 0) {\n r = Math.random() * 0x100000000;\n }\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n return UUID.bytesToUuid(rnds);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of NormalH5EnvConfig\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport AH5EnvConfigSync from 'com/didichuxing/tracker/h5/envconfig/AH5EnvConfigSync';\nimport UUID from 'com/didichuxing/tracker/plugin/utils/UUID';\nconst OMEGA_ID: string = '_OMGID';\n\n/**\n * H5 normal 容器。\n *\n * @class\n * @implements {IEnvConfigurationItem}\n */\nexport default class NormalH5EnvConfig extends AH5EnvConfigSync {\n\n private context: ITrackerContext | undefined;\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackerContext} context\n * @returns {boolean}\n */\n public validate(context: ITrackerContext): boolean {\n this.context = context;\n return true;\n }\n\n /**\n * 从cookie中读取omgid\n * @returns {string | undefined}\n */\n private getOmgIdFromCookie(): string | undefined {\n const items: string[] = document.cookie.split(';');\n for (let i: number = 0, j: number = items.length; i < j; ++i) {\n if (items[i].trim().indexOf(`${ OMEGA_ID }=`) === 0) {\n return items[i].split('=')[1].trim();\n }\n }\n return;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITracker} tracker\n * @returns {Promise}\n */\n public beforeDeliver(tracker: ITracker): Promise {\n if (this.context) {\n let omgId: string | undefined = this.context.omgId;\n if (!omgId) {\n // cookie和local中都进行取值\n omgId = this.getOmgIdFromCookie() || this.getOidFromLocal();\n }\n if (!omgId) {\n omgId = UUID.v4;\n // 存储进行区分\n if (this.context.useLocalOid) {\n this.saveOidToLocal(omgId);\n } else {\n this.saveOidToCookie(omgId);\n }\n }\n Object.assign(this.context, {\n omgId: omgId\n });\n }\n return Promise.resolve();\n }\n\n private getOidFromLocal(): string | undefined {\n const id = localStorage.getItem(OMEGA_ID);\n if (id) {\n return id;\n }\n return undefined;\n }\n private saveOidToLocal(oid: string) {\n localStorage.setItem(OMEGA_ID, oid);\n }\n private saveOidToCookie(omgId: string) {\n const expiredDate: Date = new Date();\n expiredDate.setFullYear(expiredDate.getFullYear() + 10);\n document.cookie = `${ OMEGA_ID }=${ omgId }; expires=${ expiredDate }; path=/`;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of UniqueH5EnvConfig\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport AH5EnvConfigSync from 'com/didichuxing/tracker/h5/envconfig/AH5EnvConfigSync';\nimport UUID from 'com/didichuxing/tracker/plugin/utils/UUID';\n\nconst OMEGA_ID: string = '_OMGID';\n\nexport default class UniqueH5EnvConfig extends AH5EnvConfigSync {\n\n private context: ITrackerContext | undefined;\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackerContext} context\n * @returns {boolean}\n */\n public validate(context: ITrackerContext): boolean {\n this.context = context;\n return !!context.unique;\n }\n\n /**\n * 从cookie中读取omgid\n * @returns {string | undefined}\n */\n private getOmgIdFromCookie(): string | undefined {\n const items: string[] = document.cookie.split(';');\n for (let i: number = 0, j: number = items.length; i < j; ++i) {\n if (items[i].trim().indexOf(`${ OMEGA_ID }=`) === 0) {\n return items[i].split('=')[1].trim();\n }\n }\n return;\n }\n\n // /**\n // * @override\n // * @inheritDoc\n // * @returns {Promise}\n // */\n // public beforeDeliver(tracker: ITracker): Promise {\n // return new Promise((resolve: () => void): void => {\n // if (this.context) {\n // let omgId: string | undefined = this.context.omgId || this.getOmgIdFromCookie();\n // if (omgId) {\n // Object.assign(this.context, {\n // omgId: omgId\n // });\n // resolve();\n // } else {\n // const setOpenIdHandler: (openid: string) => void = tracker.setOpenId;\n // tracker.setOpenId = (openid: string): void => {\n // setOpenIdHandler.call(tracker, openid);\n // if (openid) {\n // omgId = openid;\n // const expiredDate: Date = new Date();\n // expiredDate.setFullYear(expiredDate.getFullYear() + 10);\n // document.cookie = `${ OMEGA_ID }=${ omgId }; expires=${ expiredDate }; path=/`;\n // Object.assign(this.context, {\n // omgId: omgId\n // });\n // resolve();\n // }\n // };\n // }\n // }\n // });\n // }\n\n /**\n * @override\n * @inheritDoc\n * @returns {Promise}\n */\n public beforeDeliver(tracker: ITracker): Promise {\n if (this.context) {\n let omgId = this.context.omgId || this.getOmgIdFromCookie();\n if (!omgId) {\n omgId = UUID.v4;\n const expiredDate: Date = new Date();\n expiredDate.setFullYear(expiredDate.getFullYear() + 10);\n document.cookie = `${ OMEGA_ID }=${ omgId }; expires=${ expiredDate }; path=/`;\n }\n Object.assign(this.context, { omgId: omgId });\n }\n\n // promise 实例单独作为一个变量,是为了尽可能同步执行\n let thisResolve: any;\n const prom = new Promise(resolve => {\n thisResolve = resolve;\n });\n const setOpenIdHandler = tracker.setOpenId;\n tracker.setOpenId = (openid: string): void => {\n setOpenIdHandler.call(tracker, openid);\n if (openid) {\n thisResolve && thisResolve();\n }\n };\n\n return prom;\n }\n}\n","export interface IReportCallbackArg {\n\n /**\n * 上报事件的名单。\n * @readonly\n */\n readonly eventid: IReportableEventList | null;\n}\n\nexport interface IReportableEventList {\n\n /**\n * 上报事件id\n * 0为禁止上报,1为允许上报。\n * @readonly\n */\n readonly [eventid: string]: number;\n}\n\nexport default abstract class ReportCallbackUtil {\n\n /**\n * response回调方法挂载的对象名称。\n * @type {string}\n */\n public static readonly OMG_CALLBACK_OBJ_NAME: string = '__OMG_CBKS__';\n\n /**\n * omega事件黑名单列表对象名称。\n * @type {string}\n */\n public static readonly OMG_EVENT_BLACKLIST_NAME: string = '__OMG_EVENT_BLACKLIST__';\n\n public static reportCallbackName(rawSerialized: string): string {\n const cbObjName: string = ReportCallbackUtil.OMG_CALLBACK_OBJ_NAME;\n const cbkMethodName: string = `_cbk${ new Date().getTime() }`;\n rawSerialized = `${rawSerialized}&cbk=${ cbObjName }.${ cbkMethodName }`;\n const self = this;\n if ((window as any)[cbObjName]) {\n (window as any)[cbObjName][cbkMethodName] = function() {\n delete (window as any)[cbObjName][cbkMethodName];\n self.reportCallback.apply(self, arguments);\n };\n } else {\n (window as any)[cbObjName] = {\n [cbkMethodName]: function() {\n delete (window as any)[cbObjName][cbkMethodName];\n self.reportCallback.apply(self, arguments);\n }\n };\n }\n return rawSerialized;\n }\n /**\n * 上报后的回调。\n * @param {IReportCallbackArg} cbArg\n */\n public static reportCallback(cbArg?: IReportCallbackArg): void {\n const bn: string = ReportCallbackUtil.OMG_EVENT_BLACKLIST_NAME;\n if (cbArg && cbArg.eventid) {\n if (!(window as any)[bn]) {\n (window as any)[bn] = [];\n }\n for (const prop in cbArg.eventid) {\n if (cbArg.eventid[prop] === 0) { // event black list\n if (((window as any)[bn] as string[]).indexOf(prop) < 0) {\n // not existed\n ((window as any)[bn] as string[]).push(prop);\n }\n } else { // event need to be removed from black list\n const index: number = ((window as any)[bn] as string[]).indexOf(prop);\n if (index >= 0) { // existed\n ((window as any)[bn] as string[]).splice(index, 1);\n }\n }\n }\n }\n }\n}\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","require('../../modules/es6.reflect.get');\nmodule.exports = require('../../modules/_core').Reflect.get;\n","module.exports = require(\"core-js/library/fn/reflect/get\");","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The enum class of EventStatus\n */\n\nexport enum EventStatus {\n\n /**\n * 正常状态的事件。\n */\n NORMAL = 'normal',\n\n /**\n * 被阻止上报的事件\n * @type {string}\n */\n BLOCKED = 'blocked',\n\n /**\n * 上报失败的事件。\n * @type {string}\n */\n FAILED = 'failed',\n\n /**\n * 上报超时的事件。\n * @type {string}\n */\n TIMEOUT = 'timeout'\n}\n","var _Object$getOwnPropertyDescriptor = require(\"../core-js/object/get-own-property-descriptor\");\n\nvar _Reflect$get = require(\"../core-js/reflect/get\");\n\nvar getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && _Reflect$get) {\n module.exports = _get = _Reflect$get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n\n var desc = _Object$getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AEvent\n */\n\nimport { IPlanObject } from 'com/didichuxing/IPlanObject';\nimport { IObjectMap } from 'com/didichuxing/IObjectMap';\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IContextContainer } from 'com/didichuxing/context/IContextContainer';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventData } from 'com/didichuxing/tracker/event/ITrackedEventData';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\n\nexport default abstract class AEvent implements ITrackedEvent, IContextContainer {\n\n /**\n * 事件生成的额外信息\n */\n private readonly info?: IAttrs;\n\n /**\n * 上报的上下文环境\n */\n private readonly context: IContext;\n\n /**\n * 事件的额外参数。\n */\n private readonly attrs: IAttrs;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n * @param {IAttrs} info\n */\n constructor(attrs: IAttrs, context: IContext, info?: IAttrs) {\n this.attrs = attrs;\n this.context = context;\n this.info = info;\n }\n\n /**\n * 获取版本号\n */\n private getVersion() {\n return {\n trackerVersion: this.getContext().version\n };\n }\n\n /**\n * @abstract\n * @returns {string}\n */\n public abstract getType(): string;\n\n /**\n * @override\n * @inheritDoc\n * @returns {ITrackedEventData}\n */\n public getData(): ITrackedEventData {\n const context: ITrackerContext = this.getContext() as ITrackerContext;\n let appKey = context.appKey || context.productName;\n let url: string = context.url || location.href;\n /**\n * 当配置appkey可修改的时候,将event生成的信息中的appkey进行填充\n */\n if ( context && context.modifyAppKey && this.info && this.info.appKey) {\n appKey = this.info.appKey;\n }\n /**\n * 当配置了url的解析则需要将url过滤\n * - noUrlParam 上报的时候不上报参数\n * - formatUrl 上报的时候进行url格式化\n */\n try {\n if (context && context.noUrlParam) {\n url = url.split('?')[0];\n } else if (context && context.formatUrl) {\n url = context.formatUrl(url);\n }\n } catch (error) {\n console.info('url解析异常', error);\n }\n return {\n eventId: this.getType(),\n timestamp: new Date().getTime(),\n viewportId: context.viewportId,\n appName: context.appName,\n appVersion: context.appVersion,\n omgId: context.omgId,\n url,\n userAgent: context.userAgent,\n osType: context.osType,\n osVersion: context.osVersion,\n appKey: appKey,\n userName: context.userName,\n userId: context.userId,\n // cityId: context.cityId,\n // telephone: context.telephone,\n // latitude: context.latitude,\n // longitude: context.longitude,\n bizId: context.bizId,\n locale: context.locale,\n countyId: context.countyId,\n countryCallingCode: context.countryCallingCode,\n utcOffset: context.utcOffset,\n attrs: this.getAttrs(),\n from: this.getFrom()\n };\n }\n\n /**\n * 将事件数据属性映射成上报的字段。\n * @returns {IObjectMap}\n */\n protected getDataKeyMap(): IObjectMap {\n return {\n eventId: 'e',\n timestamp: 'ts',\n viewportId: 'uwid',\n version: 'jv',\n appName: 'an',\n appVersion: 'av',\n omgId: 'oid',\n url: 'v',\n latitude: 'lat',\n longitude: 'lng',\n userAgent: 'ua',\n osType: 'ot',\n osVersion: 'ov',\n appKey: 'ak',\n userName: 'un',\n userId: 'uid',\n cityId: 'cityid',\n telephone: 'tel',\n bizId: 'bizId',\n locale: 'le',\n countyId: 'coi',\n countryCallingCode: 'dcc',\n utcOffset: 'uo',\n from: 'fr'\n };\n }\n\n /**\n * 将attrs属性映射成上报的字段。\n * @returns {IObjectMap}\n */\n protected getAttrsKeyMap(): IObjectMap {\n return {\n _label: 'l',\n trackerVersion: 'jv'\n };\n }\n\n /**\n * 把event data(去除attrs)序列化成json字符串。\n * @returns {string}\n */\n public serialize2JsonStrWithoutAttrs(): string {\n try {\n const eventData: ITrackedEventData = this.getData();\n const obj: IPlanObject = {};\n const dataKeyMap: IObjectMap = this.getDataKeyMap();\n for (const prop in eventData) {\n if (prop !== 'attrs' && !/Null|Undefined/.test(Object.prototype.toString.call(eventData[prop]))) {\n obj[dataKeyMap[prop] || prop] = eventData[prop];\n }\n }\n return JSON.stringify(obj);\n } catch (e) {\n GlobalUtil.dispatchOmgLog('serialize2JsonStrWithoutAttrs Error');\n return '';\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public serialize(): string {\n try {\n const eventData: ITrackedEventData = this.getData();\n // 先用Object内置类的keys方法获取要排序对象的属性名,再利用Array原型上的sort方法对获取的属性名进行排序,newkey是一个数组\n const newkeys = Object.keys(eventData).sort();\n const kvs: string[] = [];\n const dataKeyMap: IObjectMap = this.getDataKeyMap();\n // 要保证顺序 所以attrs也放进了循环\n newkeys.forEach((prop) => {\n if (prop !== 'attrs' && !/Null|Undefined/.test(Object.prototype.toString.call(eventData[prop]))) {\n kvs.push(`${ dataKeyMap[prop] || prop }=${ encodeURIComponent(eventData[prop]) }`);\n } else if (prop === 'attrs') {\n const attrsJsonStr: string = this.serializeAttrs2JsonStr(eventData.attrs || {});\n if (attrsJsonStr !== '{}') {\n kvs.push(`attrs=${ encodeURIComponent(attrsJsonStr) }`);\n }\n }\n });\n return kvs.join('&');\n } catch (e) {\n GlobalUtil.dispatchOmgLog('serialize Error');\n return '';\n }\n }\n\n /**\n * 格式化attrs\n * @param {IAttrs} attrs\n * @returns {string}\n */\n public serializeAttrs2JsonStr(attrs: IAttrs): string {\n try {\n const serializedAttrs: IPlanObject = {};\n const attrsKeyMap: IObjectMap = this.getAttrsKeyMap();\n for (const prop in attrs) {\n if (attrs.hasOwnProperty(prop)) {\n const key: string = attrsKeyMap[prop] || prop;\n if (/Object|Array/.test(Object.prototype.toString.call(attrs[prop]))) {\n serializedAttrs[key] = JSON.stringify(attrs[prop]);\n } else if (/String/.test(Object.prototype.toString.call(attrs[prop]))) {\n serializedAttrs[key] = attrs[prop];\n } else if (/Number/.test(Object.prototype.toString.call(attrs[prop]))) {\n serializedAttrs[key] = attrs[prop];\n } else if (/Boolean/.test(Object.prototype.toString.call(attrs[prop]))) {\n serializedAttrs[key] = attrs[prop] | 0;\n }\n }\n }\n return JSON.stringify(serializedAttrs);\n } catch (e) {\n GlobalUtil.dispatchOmgLog('serializeAttrs2JsonStr Error');\n return '';\n }\n\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IContext}\n */\n public getContext(): IContext {\n return this.context;\n }\n\n /**\n * 该事件的额外参数。\n * @returns {IAttrs}\n */\n protected getAttrs(): IAttrs {\n const thisAttrs: any = {};\n const context = this.getContext() as ITrackerContext;\n if (context.openId) {\n thisAttrs['_OMGPUID'] = context.openId;\n }\n\n return Object.assign(thisAttrs, context.attrs || {}, this.attrs, this.getVersion());\n }\n\n /**\n * 获取框架来源\n * 由业务方指定\n */\n protected getFrom(): string {\n const context: ITrackerContext = this.getContext() as ITrackerContext;\n if (GlobalUtil.isEmptyString(context.from)) {\n return `h5-${ context.from }`;\n } else {\n return 'h5';\n }\n }\n\n /**\n * 事件的状态。\n * {@link com/didichuxing/tracker/h5/plugins/events/EventStatus}\n * @returns {EventStatus}\n */\n public abstract get status(): EventStatus;\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of SequencedEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IObjectMap } from 'com/didichuxing/IObjectMap';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITrackedEventData } from 'com/didichuxing/tracker/event/ITrackedEventData';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\n\nexport default abstract class SequencedEvent extends AEvent {\n\n /**\n * Omega事件全局序列名称前缀。\n * @type {string}\n */\n public static readonly OMG_SEQUENCE_NAME_PREFIX: string = '__OMG_SEQUENCE_';\n\n /**\n * Omega事件全局序列名称后缀。\n * @type {string}\n */\n public static readonly OMG_SEQUENCE_NAME_SUFFIX: string = '__';\n\n /**\n * 事件的序列号。\n * 默认为-1,表示没有序列号。\n */\n private readonly sequence: number;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n * @param {IAttrs} info 事件生成的时候默认的一些属性信息\n */\n constructor(attrs: IAttrs, context: IContext, info?: IAttrs) {\n super(attrs, context, info);\n const prefix: string = SequencedEvent.OMG_SEQUENCE_NAME_PREFIX;\n const suffix: string = SequencedEvent.OMG_SEQUENCE_NAME_SUFFIX;\n if (!(window as any)[`${ prefix }${ (context as ITrackerContext).viewportId }${ suffix }`]) {\n (window as any)[`${ prefix }${ (context as ITrackerContext).viewportId }${ suffix }`] = 0;\n }\n this.sequence = (window as any)[`${ prefix }${ (context as ITrackerContext).viewportId }${ suffix }`]++;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {ITrackedEventData}\n */\n public getData(): ITrackedEventData {\n return {\n ...super.getData(),\n sequence: this.sequence\n };\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IObjectMap}\n */\n protected getDataKeyMap(): IObjectMap {\n return {\n ...super.getDataKeyMap(),\n sequence: 'seq'\n };\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {EventStatus}\n */\n public get status(): EventStatus {\n return EventStatus.NORMAL;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of PluginUtils\n */\n\nexport default abstract class PluginUtils {\n\n /**\n * page init上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_PAGE_INIT: string = 'OMGH5PageInit-reporting-strategy-plugin';\n\n /**\n * page init上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_OMGLOG: string = 'OMGH5Log-reporting-strategy-plugin';\n\n /**\n * page view上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_PAGE_VIEW: string = 'OMGH5PageView-reporting-strategy-plugin';\n\n /**\n * page leave上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_PAGE_LEAVE: string = 'OMGH5PageLeave-reporting-strategy-plugin';\n\n /**\n * received上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_RECEIVED: string = 'OMGH5Received-reporting-strategy-plugin';\n\n /**\n * click上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_CLICK: string = 'OMGH5Click-reporting-strategy-plugin';\n\n /**\n * js error上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_JS_ERROR: string = 'OMGH5JsError-reporting-strategy-plugin';\n\n /**\n * 用户自定义上报错误事件插件名\n * @type {string}\n */\n public static PLUGIN_NAME_ERROR: string = 'OMGH5Error-reporting-strategy-plugin';\n\n /**\n * 用户自定义埋点事件插件名\n * @type {string}\n */\n public static PLUGIN_NAME_CUSTOM: string = 'OMGH5Custom-reporting-strategy-plugin';\n\n /**\n * 性能上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_PERFORMANCE: string = 'OMGH5Performance-reporting-strategy-plugin';\n\n /**\n * 安全上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_SAFETYPING: string = 'OMGH5SafeTyping-reporting-strategy-plugin';\n\n /**\n * page init event id\n * @type {string}\n */\n public static EVENT_ID_PAGE_INIT: string = 'OMGH5PageInit';\n /**\n * page init event id\n * @type {string}\n */\n public static EVENT_ID_OMG_LOG: string = 'OMGH5Log';\n\n /**\n * page view event id\n * @type {string}\n */\n public static EVENT_ID_PAGE_VIEW: string = 'OMGH5PageView';\n\n /**\n * page leave event id\n * @type {string}\n */\n public static EVENT_ID_PAGE_LEAVE: string = 'OMGH5PageLeave';\n\n /**\n * received event id\n * @type {string}\n */\n public static EVENT_ID_RECEIVED: string = 'OMGH5Received';\n\n /**\n * click event id\n * @type {string}\n */\n public static EVENT_ID_CLICK: string = 'OMGH5Click';\n\n /**\n * js error event id\n * @type {string}\n */\n public static EVENT_ID_JS_ERROR: string = 'OMGH5JsError';\n\n /**\n * 用户自定义上报错误事件id\n * @type {string}\n */\n public static EVENT_ID_ERROR: string = 'OMGH5Error';\n\n /**\n * 性能数据上报 事件id\n * @type {string}\n */\n public static EVENT_ID_PERFORMANCE: string = 'OMGH5Performance';\n /**\n * 安全专项上报 事件id\n * @type {string}\n */\n public static EVENT_ID_SAFETYPING: string = 'OMGSafeTyping';\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of PluginSet\n */\n\nimport { IPlugin } from 'com/didichuxing/plugin/IPlugin';\nimport { IPluginCollection } from 'com/didichuxing/plugin/IPluginCollection';\n\nexport default class PluginSet implements IPluginCollection {\n\n /**\n * The plugins set\n */\n private plugins: IPlugin[];\n\n /**\n * @constructor\n */\n constructor() {\n this.plugins = [];\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {IPlugin} plugin\n * @returns {boolean}\n */\n public register(plugin: IPlugin): boolean {\n if (this.contains(plugin)) {\n return false;\n } else {\n plugin.install();\n this.plugins.push(plugin);\n return true;\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string | IPlugin} plugin\n * @returns {boolean}\n */\n public contains(plugin: string | IPlugin): boolean {\n if (typeof plugin === 'string') { // plugin name\n for (let i: number = 0, j: number = this.size(); i < j; ++i) {\n if (this.plugins[i].getName() === plugin) {\n return true;\n }\n }\n return false;\n } else { // plugin object\n for (let i: number = 0, j: number = this.size(); i < j; ++i) {\n if (this.plugins[i].getName() === plugin.getName()) {\n return true;\n }\n }\n return false;\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {number}\n */\n public size(): number {\n return this.plugins.length;\n }\n\n /**\n * 删除指定plugin对象。\n * @param {IPlugin} plugin\n * @returns {IPlugin | undefined}\n */\n private removePlugin(plugin: IPlugin): IPlugin | undefined {\n if (this.contains(plugin)) {\n this.plugins.splice(this.plugins.indexOf(plugin), 1);\n return plugin;\n }\n return;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string | IPlugin} plugin\n * @returns {IPlugin | null}\n */\n public unregister(plugin: string | IPlugin): IPlugin | null {\n if (this.contains(plugin)) { // contains\n if (typeof plugin === 'string') { // plugin name, delete plugin via plugin full name\n for (let i: number = 0, j: number = this.plugins.length; i < j; ++i) {\n const pluginItem: IPlugin = this.plugins[i];\n if (pluginItem.getName() === plugin) {\n return this.removePlugin(pluginItem) ? pluginItem : null;\n }\n }\n return null;\n } else if (this.removePlugin(plugin)) { // delete plugin object directly\n return plugin;\n }\n return null;\n }\n return null;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public unregisterAll(): void {\n while (this.plugins.length) {\n const plugin: IPlugin | undefined = this.plugins.pop();\n if (plugin) {\n plugin.uninstall();\n }\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IPlugin[]}\n */\n public toArray(): IPlugin[] {\n return this.plugins;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of NonH5Plugin\n */\n\nimport { IPlugin } from 'com/didichuxing/plugin/IPlugin';\nimport { IContext } from 'com/didichuxing/context/IContext';\n\nexport default class NonH5Plugin implements IPlugin {\n\n /**\n * test安装状态\n */\n private installed: boolean;\n\n /**\n * 上下文\n */\n private context: IContext;\n\n /**\n * @constructor\n */\n constructor(context: IContext) {\n this.installed = false;\n this.context = context;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getName(): string {\n return 'non-h5-plugin';\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IContext}\n */\n public getContext(): IContext {\n return this.context;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n this.installed = true;\n return this.installed;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public hasInstalled(): boolean {\n return this.installed;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n /* Nothing to execute */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n /* Nothing to exit */\n }\n\n /**\n * 插件卸载。\n * @returns {boolean}\n */\n public uninstall(): boolean {\n this.exit();\n this.installed = false;\n delete this.context;\n return true;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of FailedEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\n\nexport default class FailedEvent extends AEvent {\n\n /**\n * custom event id\n */\n private readonly eventId: string;\n\n /**\n * error event\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error}\n */\n private readonly error: Error;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n */\n constructor(error: Error, eventId: string, attrs: IAttrs, context: IContext) {\n super(attrs, context);\n this.error = error;\n this.eventId = eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return this.eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {EventStatus}\n */\n public get status(): EventStatus {\n return EventStatus.FAILED;\n }\n\n /**\n * 获取出错信息事件。\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error}\n * @returns {ErrorEvent}\n */\n public getError(): Error {\n return this.error;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of TimeoutEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\n\nexport default class TimeoutEvent extends AEvent {\n\n /**\n * custom event id\n */\n private readonly eventId: string;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n */\n constructor(eventId: string, attrs: IAttrs, context: IContext) {\n super(attrs, context);\n this.eventId = eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return this.eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {EventStatus}\n */\n public get status(): EventStatus {\n return EventStatus.TIMEOUT;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AppEventReportor\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport { IOmegaSDK } from 'com/didichuxing/tracker/plugin/app/IOmegaSDK';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventData } from 'com/didichuxing/tracker/event/ITrackedEventData';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\nimport FailedEvent from 'com/didichuxing/tracker/plugin/events/FailedEvent';\nimport TimeoutEvent from 'com/didichuxing/tracker/plugin/events/TimeoutEvent';\nimport AppUtil from 'com/didichuxing/tracker/plugin/utils/AppUtil';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\n\n/**\n * 上报超时默认时间,单位毫秒。\n * @type {number}\n */\nconst REPORT_TIMEOUT: number = 3000;\n\nexport default class AppEventReportor implements IEventReportor {\n\n private context: ITrackerContext;\n private event: ITrackedEvent;\n\n /**\n * @constructor\n * @param {ITrackerContext} context\n * @param {ITrackedEvent} event\n */\n constructor(context: ITrackerContext, event: ITrackedEvent) {\n this.context = context;\n this.event = event;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {Promise}\n */\n public reportEvent(): Promise {\n return new Promise((resolve: (evt: ITrackedEvent) => void,\n reject: (evt: ITrackedEvent) => void): void => {\n if (!GlobalUtil.isEmptyString(this.event.getData().appKey || '')) {\n GlobalUtil.dispatchOmgLog('[Omega]na appKey 参数 不可为空');\n throw new Error('[Omega]na appKey 参数 不可为空');\n reject(new FailedEvent(new Error('[Omega]na appKey 参数 不可为空'),\n this.event.getType(), this.event.getData().attrs || {}, this.context));\n }\n const omegaSDK = AppUtil.getOmegaSDK();\n if (omegaSDK) {\n const timeoutHandler: number = setTimeout((): void => {\n clearTimeout(timeoutHandler);\n reject(new TimeoutEvent(this.event.getType(), this.event.getData().attrs || {}, this.context));\n }, this.context.timeout || REPORT_TIMEOUT) as any;\n try {\n const eventData: ITrackedEventData = this.event.getData();\n if (eventData.userId && omegaSDK.setUserId) {\n omegaSDK.setUserId(eventData.userId);\n }\n if (eventData.telephone && omegaSDK.setTelephone) {\n omegaSDK.setTelephone(eventData.telephone);\n }\n if (eventData.cityId && omegaSDK.setCityId) {\n omegaSDK.setCityId(Number(eventData.cityId));\n }\n const attrs: IAttrs = eventData.attrs || {};\n omegaSDK.trackEventEx(eventData.eventId, attrs.label || '',\n (this.event as AEvent).serializeAttrs2JsonStr(attrs),\n (this.event as AEvent).serialize2JsonStrWithoutAttrs(), '{nt:1}');\n clearTimeout(timeoutHandler);\n resolve(this.event);\n } catch (error) {\n GlobalUtil.dispatchOmgLog('端上数据发送失败' + this.event.getType());\n clearTimeout(timeoutHandler);\n reject(new FailedEvent(error, this.event.getType(),\n this.event.getData().attrs || {}, this.context));\n }\n } else {\n GlobalUtil.dispatchOmgLog('na 未能找到omegaSDK');\n reject(new FailedEvent(new Error('[Omega]Cannot fetch the omegaSDK from the native omega sdk.'),\n this.event.getType(), this.event.getData().attrs || {}, this.context));\n }\n });\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5PageInitEvent\n */\n\nimport SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default class OMGH5PageInitEvent extends SequencedEvent {\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return PluginUtils.EVENT_ID_PAGE_INIT;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of BlockedEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\n\nexport default class BlockedEvent extends AEvent {\n\n /**\n * custom event id\n */\n private readonly eventId: string;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n */\n constructor(eventId: string, attrs: IAttrs, context: IContext) {\n super(attrs, context);\n this.eventId = eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n protected initSequence(): void {\n /* stop sequence */\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return this.eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {EventStatus}\n */\n public get status(): EventStatus {\n return EventStatus.BLOCKED;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AReportingStrategyPlugin\n */\n\nimport { IReportingStrategyPlugin, ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IDeviceInfo } from 'com/didichuxing/tracker/context/IDeviceInfo';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport ReportCallbackUtil from 'com/didichuxing/tracker/plugin/utils/ReportCallbackUtil';\nimport BlockedEvent from 'com/didichuxing/tracker/plugin/events/BlockedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n// 上报通道国内域名集合\nconst UPLOAD_DOMAIN_LOCAL: string[] = [\n 'omgup.xiaojukeji.com',\n 'omgup1.xiaojukeji.com',\n 'omgup2.xiaojukeji.com'\n];\n\n// 上报通道国际域名集合\nconst UPLOAD_DOMAIN_GLOBAL: string[] = [\n 'omgup.didiglobal.com'\n];\n\n// 上报通道国际域名集合\nconst UPLOAD_DOMAIN_RU: string[] = [\n 'omgup-ru.didiglobal.com'\n];\n\nconst UA_BROWSER_REGEXPS: IUaRegExpNameItem[] = [{\n uaRegExps: [/(miniProgram)\\/([\\w\\.]+)/i], // WeChatMiniProgram,ios的ua中无miniProgram,但有MicroMessenger(表示是微信浏览器)\n name: 'WeChatMiniProgram'\n }, {\n uaRegExps: [/(micromessenger)\\/([\\w\\.]+)/i], // WeChat\n name: 'WeChat'\n}, {\n uaRegExps: [/(alipayclient)\\/([\\w\\.]+)/i], // Alipay\n name: 'Alipay'\n}, {\n uaRegExps: [/(QQ)\\/([\\d\\.]+)/i], // QQ, aka ShouQ\n name: 'QQ'\n},\n{\n uaRegExps: [/(didi\\.sdk)\\/([\\w\\.]+)/i], // didi.sdk\n name: 'didi.sdk'\n}, {\n name: 'dingding',\n uaRegExps: [/dingtalk/i] // ding ding talk\n}, {\n name: 'didi.passenger',\n uaRegExps: [/didi\\.passenger/i] // didi乘客端\n}, {\n name: 'didi.lite',\n uaRegExps: [/didi\\.lite/i] // uber客户端\n}, {\n name: 'zhuankuai.driver',\n uaRegExps: [\n /didigsui/i, // didi专快司机端安卓版本\n /ddudriver/i // didi专快司机端ios版本\n ] // didi专快司机端\n}, {\n name: 'zhuanche.assistant.driver',\n uaRegExps: [/zhuanche\\.cici/i] // 专车司机助手\n}, {\n name: 'didi.galaxy',\n uaRegExps: [/didi\\.galaxy/i] // 滴滴哈勃效率工具\n}, {\n name: 'daijia.driver',\n uaRegExps: [/daijia\\.driver/i] // 代驾司机端\n}, {\n name: 'didi.driver.tw',\n uaRegExps: [/didi\\.driver\\.tw/i] // didi司机端台湾\n}, {\n name: 'didi.driver.hk',\n uaRegExps: [/didi\\.driver\\.hk/i] // didi司机端台湾\n}, {\n name: 'didi.global',\n uaRegExps: [/global/i] // didi国际化端\n}, {\n name: 'didi.mini',\n uaRegExps: [/mini/i] // didi乘客端极简版\n}, {\n name: 'didies',\n uaRegExps: [/didies/i] // 企业版APP\n},\n{\n name: 'hm',\n uaRegExps: [/hm\\.passenger/i] // 街兔app\n}, {\n name: 'weibo',\n uaRegExps: [/weibo/i] // weibo\n}];\n\nconst UA_OS_REGEXPS: IUaRegExpNameItem[] = [{\n uaRegExps: [/(android)[\\/\\s-]?([\\w\\.]*)/i], // WeChat\n name: 'Android'\n}, {\n uaRegExps: [\n /cfnetwork\\/.+darwin/i,\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i\n ], // iOS\n name: 'iOS'\n}, {\n uaRegExps: [\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n /(macintosh|mac(?=_powerpc)\\s)/i\n ], // Mac OS\n name: 'Mac OS'\n}, {\n uaRegExps: [\n /microsoft\\s(windows)\\s(vista|xp)/i, // Windows (iTunes)\n /(windows)\\snt\\s6\\.2;\\s(arm)/i // Windows RT\n ], // Windows\n name: 'Windows'\n}];\n\nexport interface IUaRegExpNameItem {\n /**\n * 正则表达式\n */\n readonly uaRegExps: RegExp[];\n\n /**\n * 正则表达式所对应的名称\n */\n readonly name: string;\n}\n\nexport interface INameVersion {\n readonly name: string;\n readonly version: string;\n}\n\nexport default abstract class AReportingStrategyPlugin implements IReportingStrategyPlugin {\n\n /**\n * 安装状态\n */\n private installed: boolean;\n\n /**\n * 插件所在的宿主对象。\n */\n private tracker: ITracker;\n\n /**\n * BreadcrumbList 名称\n */\n public breadcrumbListName: string;\n\n /**\n * @constructor\n */\n constructor(tracker: ITracker) {\n this.installed = false;\n this.tracker = tracker;\n // @ts-ignore\n const AppKey: string | undefined = this.tracker.getContext().appKey || this.tracker.getContext().productName;\n this.breadcrumbListName = this.getBreadcrumbListName(AppKey || 'Other');\n Object.assign(tracker.getContext(), this.initialzedContext);\n }\n\n /**\n * 获取BREADCRUMBS列表名称\n * @param appKey\n */\n private getBreadcrumbListName(appKey: string): string {\n appKey = appKey.replace(/\\./g, '_');\n return `____OMG_BREADCRUMBS_${appKey}__`;\n }\n\n private sliceBreadcrumbList(): void {\n const breadcrumbListName = (window as any)[this.breadcrumbListName] || [];\n if (breadcrumbListName.length > 10) {\n (window as any)[this.breadcrumbListName].length = 10;\n }\n }\n\n /**\n * 根据正则匹配UA,获取相应数据。\n * @returns {INameVersion | undefined}\n */\n private getInfo(uaRegExpNameItems: IUaRegExpNameItem[]): INameVersion | undefined {\n const ua: string = navigator.userAgent;\n for (let i: number = 0, j: number = uaRegExpNameItems.length; i < j; ++i) {\n const item: IUaRegExpNameItem = uaRegExpNameItems[i];\n let name: string = item.name;\n const uaRegExps: RegExp[] = item.uaRegExps;\n for (let idx: number = 0, len: number = uaRegExps.length; idx < len; ++idx) {\n const regExpExecArray: RegExpExecArray | null = uaRegExps[idx].exec(ua);\n if (regExpExecArray && regExpExecArray.length) {\n let version: string = regExpExecArray[2];\n if (name === 'iOS') {\n version = regExpExecArray[1].replace(/_/g, '.');\n } else if (name === 'Mac OS') {\n version = version.replace(/_/g, '.');\n // @ts-ignore\n // tslint:disable-next-line:max-line-length\n } else if (name === 'WeChat' && window.wx && wx && wx.miniProgram && wx.miniProgram.getEnv && typeof wx.miniProgram.getEnv === 'function') {\n // ios的ua中无miniProgram,但有MicroMessenger(表示是微信浏览器)\n // @ts-ignore\n wx.miniProgram.getEnv((res: any) => {\n if (res.miniprogram) {\n name = 'WeChatMiniProgram';\n }\n });\n // @ts-ignore\n // tslint:disable-next-line:max-line-length\n } else if (name === 'Alipay' && window.my && my && my.getEnv && typeof my.getEnv === 'function') {\n // @ts-ignore\n my.getEnv((res: any) => {\n if (res.miniprogram) {\n name = 'AlipayMiniProgram';\n }\n });\n }\n return {\n name: name,\n version: version\n };\n }\n }\n }\n return undefined;\n }\n\n /**\n * 获取设备信息。\n * @returns {IDeviceInfo}\n */\n protected getDeviceInfo(): IDeviceInfo {\n let appName: string = 'Others';\n let appVersion: string | undefined;\n let osType: string = 'Others';\n let osVersion: string | undefined;\n const appInfo: INameVersion | undefined = this.getInfo(this.getBrowserRegExpsInUA());\n if (appInfo) {\n appName = appInfo.name;\n appVersion = appInfo.version;\n }\n const osInfo: INameVersion | undefined = this.getInfo(this.getOSRegExpsInUA());\n if (osInfo) {\n osType = osInfo.name;\n osVersion = osInfo.version;\n }\n const context: ITrackerContext = this.getContext() as ITrackerContext;\n return {\n appName: context.appName || appName,\n appVersion: context.appVersion || appVersion,\n osType: context.osType || osType,\n osVersion: context.osVersion || osVersion\n };\n }\n\n /**\n * 浏览器名称正则\n * @returns {IUaRegExpNameItem[]}\n */\n protected getBrowserRegExpsInUA(): IUaRegExpNameItem[] {\n return UA_BROWSER_REGEXPS;\n }\n\n /**\n * 操作系统名称正则\n * @returns {IUaRegExpNameItem[]}\n */\n protected getOSRegExpsInUA(): IUaRegExpNameItem[] {\n return UA_OS_REGEXPS;\n }\n\n /**\n * 获取上报通道域名\n * @returns {string}\n */\n protected getUploadHost(): string {\n let uploadHost: string = (this.getContext() as ITrackerContext).uploadHost || 'omgup.xiaojukeji.com';\n if (/xiaojukeji\\.com/.test(uploadHost)) { // 国内域名\n if (UPLOAD_DOMAIN_LOCAL.indexOf(uploadHost) > -1) {\n uploadHost = UPLOAD_DOMAIN_LOCAL[Math.floor(Math.random() * UPLOAD_DOMAIN_LOCAL.length)];\n }\n } else if (/omgup-ru\\.didiglobal.com\\.com/.test(uploadHost)) { // 俄罗斯域名\n if (UPLOAD_DOMAIN_RU.indexOf(uploadHost) > -1) {\n uploadHost = UPLOAD_DOMAIN_RU[Math.floor(Math.random() * UPLOAD_DOMAIN_RU.length)];\n }\n } else if (/didiglobal\\.com/.test(uploadHost)) { // 国际域名\n if (UPLOAD_DOMAIN_GLOBAL.indexOf(uploadHost) > -1) {\n uploadHost = UPLOAD_DOMAIN_GLOBAL[Math.floor(Math.random() * UPLOAD_DOMAIN_GLOBAL.length)];\n }\n }\n return uploadHost;\n }\n\n /**\n * 初始化设置上下文信息。\n * @returns {IContext}\n */\n protected get initialzedContext(): IContext {\n return {\n ...this.getDeviceInfo(),\n uploadHost: this.getUploadHost()\n } as ITrackerContext;\n }\n\n /**\n * @abstract\n * @returns {string}\n */\n public abstract getName(): string;\n\n /**\n * @override\n * @inheritDoc\n * @returns {IContext}\n */\n public getContext(): IContext {\n return this.tracker.getContext();\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {ITracker}\n */\n public getTracker(): ITracker {\n return this.tracker;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n this.installed = true;\n return this.installed;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public hasInstalled(): boolean {\n return this.installed;\n }\n\n /**\n * @abstract\n */\n public abstract execute(): void;\n\n /**\n * @abstract\n */\n public abstract exit(): void;\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public uninstall(): boolean {\n this.exit();\n this.installed = false;\n delete this.tracker;\n return true;\n }\n\n /**\n * 兼容callback\n * @param {ITrackedEventArgs} eventArgs\n * @param {ITrackedEvent} event\n * @returns {ITrackedEvent}\n */\n private compatibleCallback(eventArgs: ITrackedEventArgs, event: ITrackedEvent): ITrackedEvent {\n if (eventArgs.cb) {\n eventArgs.cb(event);\n }\n return event;\n }\n\n /**\n * 添加TrackerEvent至Breadcrumb\n * @param event\n */\n private addTrackerEventToBreadcrumb(event: ITrackedEvent) {\n if (event.getType() === PluginUtils.EVENT_ID_CLICK) {\n if ((window as any)[this.breadcrumbListName]) {\n (window as any)[this.breadcrumbListName].push(event.serialize());\n } else {\n (window as any)[this.breadcrumbListName] = [];\n (window as any)[this.breadcrumbListName].push(event.serialize());\n }\n if ((window as any)[this.breadcrumbListName].length > 10) {\n (window as any)[this.breadcrumbListName].length = 10;\n }\n }\n\n }\n\n /**\n * 获取事件上报器。\n * @returns {IEventReportor}\n */\n protected abstract getEventReportor(event: ITrackedEvent): IEventReportor;\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {Promise}\n */\n public report(eventArgs: ITrackedEventArgs): Promise {\n this.sliceBreadcrumbList();\n const eventBlacklist: string[] = (window as any)[ReportCallbackUtil.OMG_EVENT_BLACKLIST_NAME] || [];\n if (eventBlacklist.some((eventid: string): boolean => eventid === eventArgs.eventId)) { // 命中黑名单\n const event: ITrackedEvent = new BlockedEvent(eventArgs.eventId, eventArgs.attrs, this.getContext());\n return Promise\n .resolve(this.compatibleCallback(eventArgs, event))\n .then((finalEvent: ITrackedEvent): ITrackedEvent => {\n this.dispatchTrackerEventUnderWindow(finalEvent);\n return finalEvent;\n });\n } else {\n const trackedEvent: ITrackedEvent = this.generateEvent(eventArgs);\n this.dispatchTrackerEventUnderWindow(trackedEvent);\n this.addTrackerEventToBreadcrumb(trackedEvent);\n return this.getEventReportor(trackedEvent).reportEvent()\n .then(\n (event: ITrackedEvent): ITrackedEvent => this.compatibleCallback(eventArgs, event),\n (event: ITrackedEvent): ITrackedEvent => this.compatibleCallback(eventArgs, event)\n );\n }\n }\n\n /**\n * 给window派发tarcker event。\n * 派发给window的事件名为omegatrack\n * @param {ITrackedEvent} event\n */\n protected dispatchTrackerEventUnderWindow(event: ITrackedEvent): void {\n const mesageEvent: MessageEvent = document.createEvent('MessageEvent');\n mesageEvent.initMessageEvent('omegatrack', false, false, event, '', '', window);\n window.dispatchEvent(mesageEvent);\n }\n\n /**\n * 生成当前插件需要上报的事件对象。\n * @abstract\n * @returns {ITrackedEvent}\n */\n protected abstract generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent;\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AOMGH5PageInitPlugin\n */\n\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport OMGH5PageInitEvent from 'com/didichuxing/tracker/events/OMGH5PageInitEvent';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default abstract class AOMGH5PageInitPlugin extends AReportingStrategyPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n const context: any = this.getContext();\n // 加入配置不发送请求\n if (context && context.disabledInit) {\n return super.install();\n }\n const attrs = {\n trackerVersion: this.getContext().version\n };\n /**\n * - 加入XSpm的参数\n */\n try {\n if (context && context.getXspmAttrs) {\n const xspmAttrs = context.getXspmAttrs();\n Object.assign(attrs, xspmAttrs);\n }\n } catch (error) {\n console.info('合并xspm参数失败');\n }\n this.report({\n eventId: PluginUtils.EVENT_ID_PAGE_INIT,\n attrs\n });\n return super.install();\n }\n\n /**\n * @override\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_PAGE_INIT;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n /* Nothing to exit */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n /* Nothing to exit */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n return new OMGH5PageInitEvent(eventArgs.attrs, this.getContext());\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGAppH5PageInitPlugin\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport AppEventReportor from 'com/didichuxing/tracker/plugin/reportor/AppEventReportor';\nimport AOMGH5PageInitPlugin from 'com/didichuxing/tracker/plugins/AOMGH5PageInitPlugin';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class OMGAppH5PageInitPlugin extends AOMGH5PageInitPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return new AppEventReportor(this.getContext() as ITrackerContext, event);\n }\n}\n","import { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class DataQueueSet {\n private static instance: DataQueueSet;\n private arr: ITrackedEvent[] = [];\n\n private constructor() {\n }\n\n public static getInstance(): DataQueueSet {\n if (!DataQueueSet.instance) {\n DataQueueSet.instance = new DataQueueSet();\n }\n return this.instance;\n }\n\n /**\n * 是否重复\n */\n private uniq(value: ITrackedEvent): boolean {\n let result = true;\n this.arr.forEach((item) => {\n if (value.getData().viewportId === item.getData().viewportId &&\n value.getData().sequence === item.getData().sequence) {\n result = false;\n }\n });\n return result;\n }\n\n /**\n * 添加\n */\n public add(value: ITrackedEvent): void {\n if (this.uniq(value)) {\n this.arr.push(value);\n }\n }\n\n /**\n * 是否为空\n */\n public empty(): boolean {\n return this.arr.length === 0;\n }\n\n /**\n * 删除所有\n */\n public removeAll(): void {\n this.arr = [];\n }\n\n /**\n * 返回数组\n */\n public getData(): ITrackedEvent[] {\n return this.arr;\n }\n\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AH5EventReportor\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\nimport DataQueueSet from 'com/didichuxing/tracker/plugin/reportor/DataQueueSet';\n\ninterface IUnreportedItem {\n\n /**\n * 未上报事件\n */\n event: ITrackedEvent;\n\n /**\n * 该事件上报成功后执行的方法。\n * @param {ITrackedEvent} evt\n */\n resolve(evt: ITrackedEvent): void;\n\n /**\n * 该事件上报失败后执行的方法。\n * @param {ITrackedEvent} evt\n */\n reject(evt: ITrackedEvent): void;\n}\n\nexport default abstract class AH5EventReportor implements IEventReportor {\n\n private context: ITrackerContext;\n private event: ITrackedEvent;\n\n /**\n * 待上报事件。\n * - 移除等待上报\n */\n private unreportedEvents: IUnreportedItem[];\n /**\n * 上报失败事件\n */\n protected readonly errorreportedEvents = DataQueueSet.getInstance();\n\n /**\n * @constructor\n * @param {ITrackerContext} context\n * @param {ITrackedEvent} event\n */\n constructor(context: ITrackerContext, event: ITrackedEvent) {\n this.event = event;\n this.context = context;\n this.unreportedEvents = [];\n this.reportEventsAfterLoad = this.reportEventsAfterLoad.bind(this);\n window.addEventListener('load', this.reportEventsAfterLoad);\n }\n\n /**\n * load之后,将未上报事件集中依次上报。\n */\n private reportEventsAfterLoad(): void {\n window.removeEventListener('load', this.reportEventsAfterLoad);\n while (this.unreportedEvents.length) {\n const unreportedItem: IUnreportedItem | undefined = this.unreportedEvents.shift();\n if (unreportedItem) {\n this.reportEventImmediately(unreportedItem.event).then(unreportedItem.resolve, unreportedItem.reject);\n }\n }\n }\n\n /**\n * 得到context信息\n * @returns {ITrackerContext}\n */\n protected getContext(): ITrackerContext {\n return this.context;\n }\n\n /**\n * 上报路径path\n * @returns {string}\n */\n protected get reportPath(): string {\n return '/api/web/stat';\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {Promise}\n */\n public reportEvent(): Promise {\n if (!GlobalUtil.isEmptyString(this.event.getData().appKey)) {\n GlobalUtil.dispatchOmgLog('[Omega] H5 appKey 参数 不可为空');\n throw new Error('[Omega] H5 appKey 参数 不可为空');\n return Promise.reject();\n }\n if (!this.errorreportedEvents.empty()) {\n this.errorreportedEvents.getData().forEach((value) => {\n this.reportEventImmediately(value);\n });\n }\n this.errorreportedEvents.removeAll();\n return this.reportEventImmediately(this.event);\n // 移除上报等待逻辑\n // if (GlobalUtil.isLoaded() || this.event.getType() === PluginUtils.EVENT_ID_PAGE_INIT ||\n // this.event.getType() === PluginUtils.EVENT_ID_OMG_LOG) {\n // // onload已经执行完或者当前事件为页面初始化事件\n // // 如果有上报错误的数据也去上报\n // if (!this.errorreportedEvents.empty()) {\n // this.errorreportedEvents.getData().forEach((value) => {\n // this.reportEventImmediately(value);\n // });\n // }\n // this.errorreportedEvents.removeAll();\n // return this.reportEventImmediately(this.event);\n // } else {\n // // load未完成,将事件聚集,等待集中上报。\n // return new Promise((resolve: (evt: ITrackedEvent) => void,\n // reject: (evt: ITrackedEvent) => void): void => {\n // this.unreportedEvents.push({\n // event: this.event,\n // resolve: resolve,\n // reject: reject\n // });\n // });\n // }\n }\n\n /**\n * 马上直接上报事件。\n * @param {ITrackedEvent} event\n * @returns {Promise}\n */\n protected abstract reportEventImmediately(event: ITrackedEvent): Promise;\n}\n","export default abstract class EncodeHash {\n /**\n * 对输入字符串进行Hash编码。\n * @param {string} str\n * @returns {number}\n */\n public static encodeHash(str: string): number {\n let hash: number = 1315423911;\n for (let i: number = 0, j: number = str.length; i < j; ++i) {\n hash ^= ((hash << 5) + str.charCodeAt(i) + (hash >> 2));\n }\n return hash & 0x7FFFFFFF;\n }\n\n /**\n * 输出增加tk的URL\n * @param str\n */\n public static encodeHashUrl(str: string): string {\n return `${ str }&tk=${ this.encodeHash(str) }`;\n }\n}\n","import AH5EventReportor from 'com/didichuxing/tracker/plugin/reportor/AH5EventReportor';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport FailedEvent from 'com/didichuxing/tracker/plugin/events/FailedEvent';\nimport TimeoutEvent from 'com/didichuxing/tracker/plugin/events/TimeoutEvent';\nimport ReportCallbackUtil from 'com/didichuxing/tracker/plugin/utils/ReportCallbackUtil';\nimport EncodeHash from 'com/didichuxing/tracker/plugin/utils/EncodeHash';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\n\n/**\n * 上报超时默认时间,单位毫秒。\n * @type {number}\n */\nconst REPORT_TIMEOUT: number = 1500;\n\nconst forbidReportEventListKey = '__OMG_FORBID_EVENTLIST__';\n\nexport default class PostEventReportor extends AH5EventReportor {\n\n /**\n * 标记\n * - 是否开始上报数据\n */\n private startForbidReport: boolean = false;\n\n /**\n * 将上报的数据存储到global中\n */\n private get forbidReportEventList(): ITrackedEvent[] {\n if (!(window as any)[forbidReportEventListKey]) {\n (window as any)[forbidReportEventListKey] = [];\n }\n return (window as any)[forbidReportEventListKey];\n }\n\n private addForbidEvent = (event: ITrackedEvent) => {\n if (this.forbidReportEventList.length > 50) {\n return;\n }\n this.forbidReportEventList.push(event);\n }\n /**\n * 修改禁止上报为开启上报\n */\n private onChangeForbidFalse = () => {\n // 若已经开始则return\n if (this.startForbidReport) {\n return;\n }\n this.startForbidReport = true;\n this.reportForBidEvent();\n }\n private reportForBidEvent = () => {\n const context = this.getContext();\n // 防止批量上报过程中禁止上报\n if (context.forbidReport) {\n return;\n }\n if (this.forbidReportEventList && this.forbidReportEventList.length) {\n const event = this.forbidReportEventList.pop();\n if (event) {\n // 防止一次请求过多一条条进行上报\n this.reportEventImmediately(event)\n .then(() => {\n this.reportForBidEvent();\n }).catch(() => {\n this.reportForBidEvent();\n });\n }\n }\n }\n /**\n * 根据当前的时间进行cityID的加密\n */\n private getOmgci(): string {\n if (this.getContext().cityId) {\n const cId = Number(this.getContext().cityId);\n /**\n * 确保当前值符合要求\n */\n if (!isNaN(cId)) {\n const len = String(cId).length;\n let ts = `${new Date().getTime()}`;\n ts = ts.slice(0, -(len + 1));\n ts = `${ts}${cId}${len}`;\n return ts;\n }\n }\n return '';\n }\n\n /**\n * @override\n * @param {ITrackedEvent} event\n * @returns {Promise}\n */\n protected reportEventImmediately(event: ITrackedEvent): Promise {\n const context = this.getContext();\n // 禁止上报则直接return\n if (context.forbidReport) {\n // 将上报标记设置为false\n this.startForbidReport = false;\n this.addForbidEvent(event);\n return Promise.resolve(event);\n } else {\n this.onChangeForbidFalse();\n }\n return new Promise((resolve: (evt: ITrackedEvent) => void,\n reject: (evt: ITrackedEvent) => void): void => {\n const URL = `${GlobalUtil.getProtocol()}${this.getContext().uploadHost}${this.reportPath}`;\n const xhr = new XMLHttpRequest();\n const eventData = event.getData();\n xhr.timeout = this.getContext().timeout || REPORT_TIMEOUT;\n xhr.ontimeout = () => {\n reject(new TimeoutEvent(event.getType(), eventData.attrs || {}, this.getContext()));\n };\n xhr.open('POST', URL + `?e=${event.getType()}`);\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');\n xhr.setRequestHeader('oid', eventData.omgId || '');\n xhr.setRequestHeader('seq', eventData.appKey || '');\n const cid = this.getOmgci();\n if (cid) {\n xhr.setRequestHeader('omgci', cid);\n }\n // 为请求设置为唯一值\n xhr.setRequestHeader(\n 'msgid',\n `${eventData.viewportId || ''}-${eventData.sequence || ''}-${eventData.timestamp || ''}`\n );\n xhr.send(EncodeHash.encodeHashUrl(event.serialize()));\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4 && xhr.status === 200) {\n try {\n const response = JSON.parse(xhr.responseText);\n if (response.state && response.state.code !== 200) {\n if (response.state.code === 500) {\n this.errorreportedEvents.add(event);\n }\n GlobalUtil.dispatchOmgLog(`POST 200 上报错误${event.getType()}_\n ${response.state.code || 0}_${response.state.msg || ''}`);\n }\n ReportCallbackUtil.reportCallback(response);\n resolve(event);\n } catch (error) {\n // 解析返回值失败但是不抛异常\n console.error(`上报成功后解析失败:${xhr.responseText}`);\n }\n }\n };\n xhr.onerror = () => {\n if (xhr.status === 500) {\n this.errorreportedEvents.add(event);\n } else {\n console.error('POST上报失败onerror' + xhr.status);\n }\n reject(new FailedEvent(new Error('POST Error'), event.getType(),\n eventData.attrs || {}, this.getContext()));\n };\n });\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5PageInitPlugin new\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport PostEventReportor from 'com/didichuxing/tracker/plugin/reportor/PostEventReportor';\nimport AOMGH5PageInitPlugin from 'com/didichuxing/tracker/plugins/AOMGH5PageInitPlugin';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class OMGH5PageInitPlugin extends AOMGH5PageInitPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return new PostEventReportor(this.getContext() as ITrackerContext, event);\n }\n}\n","import SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default class OMGH5LogEvent extends SequencedEvent {\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return PluginUtils.EVENT_ID_OMG_LOG;\n }\n}\n","import { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport OMGH5LogEvent from 'com/didichuxing/tracker/events/OMGH5LogEvent';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default abstract class AOMGH5LogPlugin extends AReportingStrategyPlugin {\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n window.addEventListener('omglog', (e) => {\n this.reportLog(e);\n });\n return super.install();\n }\n\n /**\n * @override\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_OMGLOG;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n /* Nothing to execute */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n window.removeEventListener('omglog', this.reportLog);\n }\n\n /**\n * 发送log\n * @param e\n */\n public reportLog(e: any): void {\n this.report({\n eventId: PluginUtils.EVENT_ID_OMG_LOG,\n attrs: {\n trackerVersion: this.getContext().version,\n log: '[Omega]' + (e.data || '')\n }\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n return new OMGH5LogEvent(eventArgs.attrs, this.getContext());\n }\n}\n","import { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport PostEventReportor from 'com/didichuxing/tracker/plugin/reportor/PostEventReportor';\nimport AOMGH5LogPlugin from 'com/didichuxing/tracker/plugins/AOMGH5LogPlugin';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class OMGH5LogPlugin extends AOMGH5LogPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return new PostEventReportor(this.getContext() as ITrackerContext, event);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of H5Tracker\n */\nimport 'reflect-metadata';\nimport {\n ITracker,\n TrackedSuccessfulCallback,\n GetOmgIdCallback,\n TrackedHandler\n} from 'com/didichuxing/tracker/ITracker';\nimport { IH5Context } from './IH5Tracker';\nimport { IPlanObject } from 'com/didichuxing/IPlanObject';\nimport {\n IReportingStrategyPlugin,\n IReportingStrategyPluginConstr,\n ITrackedEventArgs\n} from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport { IPlugin } from 'com/didichuxing/plugin/IPlugin';\nimport { IPluginCollection } from 'com/didichuxing/plugin/IPluginCollection';\nimport { ITrackerConfiguration } from 'com/didichuxing/tracker/config/ITrackerConfiguration';\nimport { IEnvConfigurationItem } from 'com/didichuxing/tracker/config/IEnvConfigurationItem';\nimport { IEnvConfigurationItemSync } from 'com/didichuxing/tracker/config/IEnvConfigurationItemSync';\nimport { IEnvConfigurationItemAsync } from 'com/didichuxing/tracker/config/IEnvConfigurationItemAsync';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventData } from 'com/didichuxing/tracker/event/ITrackedEventData';\nimport { IGeoLocation } from 'com/didichuxing/tracker/geography/IGeoLocation';\nimport { IAutoClickCover } from 'com/didichuxing/tracker/IAutoClickCover';\nimport { IClickFilter } from 'com/didichuxing/tracker/IClickFilter';\nimport AH5EnvConfigSync from 'com/didichuxing/tracker/h5/envconfig/AH5EnvConfigSync';\nimport AppH5EnvConfig from 'com/didichuxing/tracker/h5/envconfig/AppH5EnvConfig';\nimport NormalH5EnvConfig from 'com/didichuxing/tracker/h5/envconfig/NormalH5EnvConfig';\nimport UniqueH5EnvConfig from 'com/didichuxing/tracker/h5/envconfig/UniqueH5EnvConfig';\nimport ReportCallbackUtil from 'com/didichuxing/tracker/plugin/utils/ReportCallbackUtil';\nimport SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\nimport UUID from 'com/didichuxing/tracker/plugin/utils/UUID';\nimport PluginSet from 'com/didichuxing/tracker/PluginSet';\nimport NonH5Plugin from 'com/didichuxing/tracker/plugin/NonH5Plugin';\nimport OMGAppH5PageInitPlugin from 'com/didichuxing/tracker/plugins/OMGAppH5PageInitPlugin';\nimport OMGH5PageInitPlugin from 'com/didichuxing/tracker/plugins/OMGH5PageInitPlugin';\nimport OMGH5LogPlugin from 'com/didichuxing/tracker/plugins/OMGH5LogPlugin';\n\n/**\n * JS脚本加载超时时间,单位 1000 ms\n * config (约 7.4kb)\n * [0.1, 0.5, 0.8, 0.9, 0.95, 0.99, 0.999]\n * [0.0, 150.1, 422.1, 649.8, 916.8, 3519.4, 10834.7]\n *\n * plugin (约 20.4kb)\n * [0.1, 0.5, 0.8, 0.9, 0.95, 0.99, 0.999]\n * [0.0, 54.4, 226.3, 494.4, 878.9, 3935.1, 14520.9]\n * @type {number}\n */\nconst SCRIPT_LOAD_TIMEOUT: number = 1000;\nconst PROTO = GlobalUtil.getProtocol();\n\n/**\n * 默认的本地环境配置JS地址\n * @type {string}\n */\nconst DEFAULT_LOCAL_CONFIG_URL = PROTO + '{{cdnHost}}/static/{{cdnNamespace}}/{{version}}/omega.configs.min.js';\n\n/**\n * 默认的国际化环境配置JS地址\n * @type {string}\n */\nconst DEFAULT_GLOBAL_CONFIG_URL = PROTO + '{{cdnGlobalHost}}/static/tracker_global/{{version}}/omega.configs.min.js';\n/**\n * 欧洲环境配置地址\n */\nconst DEFAULT_DE_CONFIG_URL = PROTO + '{{cdnDeHost}}/static/tracker_de/{{version}}/omega.configs.min.js';\n/**\n * Rlab配置js地址\n */\nconst DEFAULT_RLAB_CONFIG_URL = PROTO +\n '{{cdnRlabHost}}/static/falcon_public/tracker/{{version}}/omega.configs.min.js'\n;\nconst OMG_VERSION: string = '{{version}}';\ntype ReportFucHandler = (eventArgs: ITrackedEventArgs) => Promise;\n\ntype MethodHandler = (...args: any[]) => any;\ntype ResolveHandler = MethodHandler;\ntype RejectHandler = (reason?: any) => void;\n\ninterface IMethodHolderItem {\n /**\n * @readonly\n * method handler\n */\n readonly method: MethodHandler;\n\n /**\n * @readonly\n * method 对应的参数。\n */\n readonly arguments: IArguments | any[];\n\n /**\n * @readonly\n * 异步回调方法。\n */\n readonly resolve?: ResolveHandler;\n\n /**\n * @readonly\n * 异步回调出错方法。\n */\n readonly reject?: RejectHandler;\n}\n\n/**\n * The MethodHold decorator\n * 针对返回void方法进行hold\n * @param {H5Tracker} target\n * @param {string} propertyName\n * @param {TypedPropertyDescriptor} descriptor\n */\nfunction MethodHold(target: H5Tracker, propertyName: string,\n descriptor: PropertyDescriptor): void {\n const method: MethodHandler = descriptor.value;\n descriptor.value = function(...args: any[]) {\n if ((this as H5Tracker).getPluginConllection().size() <= 2) { // 2为同步插件的数量 plugin 未加载,需要把方法都hold\n (this as H5Tracker).holdMethod(method, arguments);\n } else {\n method.apply(this, arguments as any);\n }\n };\n}\n\n/**\n * The async MethodHold decorator\n * 针对返回Promise方法进行hold\n * @param {H5Tracker} target\n * @param {string} propertyName\n * @param {PropertyDescriptor} descriptor\n */\nfunction MethodHoldAsync(target: H5Tracker, propertyName: string,\n descriptor: PropertyDescriptor): void {\n const method: MethodHandler = descriptor.value;\n descriptor.value = function(...args: any[]) {\n if ((this as H5Tracker).getPluginConllection().size() <= 2) { // 2为同步插件的数量 plugin 未加载,需要把方法都hold\n return new Promise(\n (resolve: (...args: any[]) => void, reject: (reason?: any) => void): void => {\n (this as H5Tracker).holdMethod(method, arguments, resolve, reject);\n }\n );\n } else {\n return method.apply(this, arguments as any);\n }\n };\n}\n\n/**\n * The tracker for h5\n * @class\n * @implements {ITracker}\n */\nexport default class H5Tracker implements ITracker {\n /**\n * Omega已经实例化过的对象APPKEY集合名称\n */\n public static readonly OMG_INSTANTIATION_NAME: string = '__OMG_INSTANTIATION__';\n\n /**\n * Omega版本号\n */\n public static readonly OMG_VERSION: string = OMG_VERSION;\n\n /**\n * Omega异步环境配置集合对象名称。\n * @type {string}\n */\n public static readonly OMG_ASYNC_CONFIGS_NAME: string = '__OMG_ASYNC_CONFIGS_{{TRACKER_VERSION}}__';\n\n /**\n * Omega异步插件类型集合对象名称。\n * @type {string}\n */\n public static readonly OMG_ASYNC_PLUGINS_CONSTRS_NAME: string = '__OMG_ASYNC_PLUGINS_CONSTRS_{{TRACKER_VERSION}}__';\n\n /**\n * Omega同步插件类型集合对象名称。\n * @type {string}\n */\n public static readonly OMG_PLUGINS_CONSTRS_NAME: string = '__OMG_PLUGINS_CONSTRS_{{TRACKER_VERSION}}__';\n /**\n * onload之前错误列表\n */\n public beforeErrorList: ErrorEvent[];\n\n /**\n * The tracker context.\n */\n private context: IH5Context;\n\n /**\n * The plugin collection.\n */\n private pluginCollection: IPluginCollection;\n\n /**\n * The method handler chain.\n */\n private methodHolderChain: IMethodHolderItem[];\n\n /**\n * The method handler chain.\n */\n private methodHolderChainIsDone: boolean = false;\n\n /**\n * 自动点击上报覆盖对象\n */\n private clickedCover: IAutoClickCover = { attr: 'auto-track-click' };\n /**\n * 自动点击上报覆盖对象是否遍历子节点\n */\n private clickedCoverIsChild: boolean | undefined;\n\n /**\n * 自动点击上报过滤对象\n */\n private clickedFilter: IClickFilter | undefined;\n\n /**\n * 额外环境配置文件地址。\n */\n private extraConfigsUrl: string;\n\n /**\n * 获取omgId的回调\n */\n private getOmgIdHandler: GetOmgIdCallback | undefined;\n /**\n * viewportId名称\n * 具体值每个SDK初始化时放在自己内部\n * 因为每个SDK的UUID不应该共享 所以不挂在全局\n */\n private OMG_UWID_NAME: string = '';\n /**\n * trackHandler向attrs里注入额外参数\n */\n private trackHandlers: any[] = [];\n\n /**\n * @constructor\n * @param {ITrackerConfiguration} config\n */\n constructor(config: ITrackerConfiguration = {}) {\n this.methodHolderChain = [];\n this.beforeErrorList = [];\n this.context = this.getDefaultContext();\n /**\n * 插件的地址\n */\n if (config.uploadHost === 'omgup.1meal.net') {\n // 国际化外卖的上报地址\n this.extraConfigsUrl = this.getRlabDefaultConfigUrl();\n } else if (/global/.test(config.uploadHost || '')) {\n // 俄罗斯环境\n if (/omgup-ru\\.didiglobal\\.com/.test(config.uploadHost || '')) {\n console.error('该机房已迁移为欧洲机房');\n this.extraConfigsUrl = this.getDeDefaultConfigUrl();\n } else if (/omgup-de\\.didiglobal\\.com/.test(config.uploadHost || '')) {\n // 欧洲法拉克福\n this.extraConfigsUrl = this.getDeDefaultConfigUrl();\n } else {\n // 默认美东\n this.extraConfigsUrl = this.getGlobalDefaultConfigUrl();\n }\n } else {\n // 国内\n this.extraConfigsUrl = this.getLocalDefaultConfigUrl();\n }\n this.pluginCollection = new PluginSet();\n this.pagehideHandler = this.pagehideHandler.bind(this);\n this.initAsyncPluginCollection = this.initAsyncPluginCollection.bind(this);\n this.initSyncPluginCollection = this.initSyncPluginCollection.bind(this);\n this.setBeforeError = this.setBeforeError.bind(this);\n this.setConfig(config);\n }\n\n /**\n * 获取默认配置\n * @returns {IH5Context}\n */\n protected getDefaultContext(): IH5Context {\n let viewportId: string = this.OMG_UWID_NAME || '';\n if (!viewportId) {\n viewportId = UUID.v4;\n this.OMG_UWID_NAME = viewportId;\n }\n return {\n viewportId: viewportId,\n version: OMG_VERSION,\n url: window.location.href,\n utcOffset: -new Date().getTimezoneOffset(),\n userAgent: window.navigator.userAgent,\n timeout: 4000,\n isFirstSw: true\n };\n\n }\n\n /**\n * hold method handler\n * @param {MethodHandler} method\n * @param {IArguments | any[]} args\n */\n public holdMethod(method: MethodHandler, args: IArguments | any[],\n resolve?: (...args: any[]) => void, reject?: (reason?: any) => void): void {\n this.methodHolderChain.push({\n method: method,\n arguments: args,\n resolve: resolve,\n reject: reject\n });\n }\n\n /**\n * pagehideHandler执行方法。\n */\n private pagehideHandler(): void {\n this.trackEvent(PluginUtils.EVENT_ID_PAGE_LEAVE);\n // 不进行销毁\n // setTimeout(() => {\n // this.destroy();\n // }, 0);\n }\n\n /**\n * @override {ITracker#init()}\n * @inheritDoc\n */\n public init(config?: ITrackerConfiguration): void {\n // 针对config中的cookie进行提前设置\n if (config && config.useLocalOid) {\n this.context.useLocalOid = true;\n }\n this.initSyncPluginCollection();\n window.addEventListener('error', this.setBeforeError);\n window.removeEventListener('load', this.setBeforeError);\n // 部分框架全局trycatch,通过console.error收集错误\n this.proxyConsoleError();\n /**\n * 如果参数中有直接加载插件\n */\n if (config && config.fastLoad) {\n this.initAsyncPluginCollection();\n } else if (GlobalUtil.isLoaded()) { // window loaded\n this.initAsyncPluginCollection();\n } else {\n window.addEventListener('load', this.initAsyncPluginCollection);\n }\n // 在内嵌页面中发现不能进行pagehide事件\n window.addEventListener('pagehide', this.pagehideHandler);\n }\n\n /**\n * 代理console.error\n */\n private proxyConsoleError() {\n const t = this;\n // 关闭的话不进行监听\n if (t.context.autoConsoleError === false) {\n return;\n }\n if (console && typeof console === 'object') {\n try {\n const fn = console.error;\n console.error = function() {\n try {\n const errEvent = arguments[0];\n if (errEvent && errEvent.message && errEvent.stack) {\n t.setBeforeError({\n type: 'error',\n error: errEvent,\n message: errEvent.message\n });\n }\n } catch (error) {\n console.info(`代理console.error失败,${error}`);\n }\n return fn.apply(this, arguments as any);\n };\n } catch (error) {\n console.info(`代理console.error失败,${error}`);\n }\n }\n }\n\n public setBeforeError(event: ErrorEvent | any): void {\n if (GlobalUtil.isLoaded()) {\n return;\n }\n if (event && event.type && event.type === 'error') {\n this.beforeErrorList.push(event);\n } else if (event && event.message && event.stack) {\n // 兼容console.error获取的错误信息\n this.beforeErrorList.push(event);\n }\n if (this.beforeErrorList.length > 15) {\n this.beforeErrorList.length = 10;\n }\n }\n\n /**\n * 本地默认配置url\n * @returns {string}\n */\n protected getLocalDefaultConfigUrl(): string {\n return DEFAULT_LOCAL_CONFIG_URL;\n }\n\n /**\n * 国际化默认配置url\n * @returns {string}\n */\n protected getGlobalDefaultConfigUrl(): string {\n return DEFAULT_GLOBAL_CONFIG_URL;\n }\n\n /**\n * 俄罗斯默认配置url\n * - 已经删除\n * @returns {string}\n */\n // protected getRussiaDefaultConfigUrl(): string {\n // return DEFAULT_RUSSIA_CONFIG_URL;\n // }\n\n /**\n * 欧洲法拉克福的默认配置url\n * @returns {string}\n */\n protected getDeDefaultConfigUrl(): string {\n return DEFAULT_DE_CONFIG_URL;\n }\n\n /**\n * 国际化外码的url\n */\n protected getRlabDefaultConfigUrl(): string {\n return DEFAULT_RLAB_CONFIG_URL;\n }\n\n /**\n * H5页面默认需要的插件。\n * | OMGH5CustomPlugin | OMGH5JsErrorPlugin | OMGH5ErrorPlugin)[]}\n * @returns {IReportingStrategyPluginConstr[]}\n */\n protected getH5DefaultPluginsConstrs(): IReportingStrategyPluginConstr[] {\n return [\n OMGH5PageInitPlugin,\n OMGH5LogPlugin\n ];\n }\n\n /**\n * App内嵌H5默认需要的插件\n * | OMGH5CustomPlugin | OMGH5JsErrorPlugin | OMGH5ErrorPlugin)[]}\n * @returns {IReportingStrategyPluginConstr[]}\n */\n protected getAppH5DefaultPluginsConstrs(): IReportingStrategyPluginConstr[] {\n return [\n OMGAppH5PageInitPlugin,\n OMGH5LogPlugin\n ];\n }\n\n /**\n * 载入javascript文件,并返回window[globalVarName]对象。\n * @param {string} url\n * @param {string} globalVarName\n * @returns {Promise}\n */\n protected loadScript(url: string, globalVarName: string, callback?: (val: T) => void): Promise {\n return new Promise((resolve, reject: () => void): void => {\n let value: T = (window as any)[globalVarName];\n if (value) { // 已经存在,则不去load。\n resolve(value);\n } else {\n let isTimeout = false;\n const timeoutHandler: number = setTimeout((): void => {\n clearTimeout(timeoutHandler);\n isTimeout = true;\n reject();\n }, SCRIPT_LOAD_TIMEOUT) as any;\n const scriptEle: HTMLScriptElement = document.createElement('script');\n document.documentElement.appendChild(scriptEle);\n scriptEle.onload = (event: Event): void => {\n clearTimeout(timeoutHandler);\n document.documentElement.removeChild(scriptEle);\n value = (window as any)[globalVarName];\n isTimeout ? callback && callback(value) : resolve(value);\n };\n scriptEle.onerror = (): void => {\n GlobalUtil.dispatchOmgLog('loadScript 失败' + url);\n clearTimeout(timeoutHandler);\n reject();\n };\n scriptEle.crossOrigin = 'anonymous';\n scriptEle.src = url;\n }\n });\n }\n\n /**\n * 获取默认配置项集合。\n * @returns {IEnvConfigurationItem[]}\n */\n protected getDefaultConfigs(): IEnvConfigurationItem[] {\n const h5DefaultPluginsConstrs: IReportingStrategyPluginConstr[] = this.getH5DefaultPluginsConstrs();\n const appH5DefaultPluginsConstrs: IReportingStrategyPluginConstr[] = this.getAppH5DefaultPluginsConstrs();\n return [\n new AppH5EnvConfig(this, appH5DefaultPluginsConstrs),\n new UniqueH5EnvConfig(this, h5DefaultPluginsConstrs),\n new NormalH5EnvConfig(this, h5DefaultPluginsConstrs)\n ];\n }\n\n /**\n * 通过url来加载plugin并实例化。\n * @param {string} pluginsUrl\n * @returns {Promise}\n */\n private loadPluginsByUrl(pluginsUrl: string): Promise {\n return new Promise((resolve: (plugins: IPlugin[]) => void): void => {\n this.loadScript(\n pluginsUrl,\n H5Tracker.OMG_ASYNC_PLUGINS_CONSTRS_NAME,\n /**\n * 即使 plugins 超时,依然补上执行逻辑 [2/2]\n */\n (pluginConstrs: IReportingStrategyPluginConstr[]) => {\n this.methodHolderChainIsDone = true;\n const plugins: IPlugin[] = (pluginConstrs || [])\n .map((PluginConstr: IReportingStrategyPluginConstr): IPlugin => {\n return new PluginConstr(this);\n });\n this.loadPluginsBefore(this.afterAsyncPluginsLoad.bind(this), plugins);\n }\n ).then((pluginConstrs: IReportingStrategyPluginConstr[] | undefined): void => {\n try {\n this.methodHolderChainIsDone = true;\n pluginConstrs = pluginConstrs || [];\n const plugins: IPlugin[] = pluginConstrs\n .map((PluginConstr: IReportingStrategyPluginConstr): IPlugin => {\n return new PluginConstr(this);\n });\n resolve(plugins);\n } catch (e) {\n console.error(e);\n GlobalUtil.dispatchOmgLog('通过url来加载plugin并实例化 失败' + pluginsUrl);\n resolve([new NonH5Plugin(this.getContext())]);\n }\n\n }, (): void => {\n resolve([new NonH5Plugin(this.getContext())]);\n });\n });\n }\n\n /**\n * 即使 plugins 超时,依然补上执行逻辑 [1/2]\n * @param callback\n * @param plugins\n */\n private loadPluginsBefore(callback: (extraPlugins: IPlugin[]) => void, plugins?: IPlugin[]) {\n const envConfig: IEnvConfigurationItem | undefined = (this.getContext() as IH5Context).envConfig;\n if (envConfig) { // 环境配置对象实例存在。\n // @ts-ignore\n if ((envConfig as IEnvConfigurationItemSync).getPlugins) {\n // 当前环境配置为IEnvConfigurationItemSync实例\n // @ts-ignore\n if ((envConfig as AH5EnvConfigSync).getExtraPluginsUrl) { // 为默认H5配置环境,加载额外的远程插件url\n const pluginsUrl: string = (envConfig as AH5EnvConfigSync).getExtraPluginsUrl();\n if (pluginsUrl) {\n plugins ?\n callback((envConfig as IEnvConfigurationItemSync).getPlugins().concat(plugins)) :\n this.loadPluginsByUrl(pluginsUrl).then((extraPlugins: IPlugin[]): void => {\n callback((envConfig as IEnvConfigurationItemSync).getPlugins().concat(extraPlugins));\n });\n } else {\n GlobalUtil.dispatchOmgLog('当前环境配置为IEnvConfigurationItemSync实例 pluginsUrl 不存在' + pluginsUrl);\n callback((envConfig as IEnvConfigurationItemSync).getPlugins());\n }\n } else {\n GlobalUtil.dispatchOmgLog('当前环境配置为IEnvConfigurationItemSync实例 getExtraPluginsUrl 不存在');\n callback((envConfig as IEnvConfigurationItemSync).getPlugins());\n }\n return;\n // @ts-ignore\n } else if ((envConfig as IEnvConfigurationItemAsync).getPluginsUrl) {\n // 当前环境配置为IEnvConfigurationItemASync实例\n const pluginsUrl: string = (envConfig as IEnvConfigurationItemAsync).getPluginsUrl();\n if (pluginsUrl) {\n plugins ? callback(plugins) : this.loadPluginsByUrl(pluginsUrl).then(callback);\n } else {\n GlobalUtil.dispatchOmgLog('当前环境配置为IEnvConfigurationItemASync实例 pluginsUrl 不存在' + pluginsUrl);\n }\n return;\n }\n }\n GlobalUtil.dispatchOmgLog('环境配置对象实例不存在 失败');\n callback([new NonH5Plugin(this.getContext())]);\n }\n\n /**\n * 加载插件实现库列表。\n * @returns {Promise}\n */\n private loadPlugins(): Promise {\n return new Promise((resolve: (plugins: IPlugin[]) => void): void => {\n this.loadPluginsBefore(resolve);\n });\n }\n\n /**\n * getCurrentEnvConfig: [1/2]\n * 获取当前环境配置信息。\n * @returns {Promise}\n */\n private getCurrentEnvConfig(): Promise {\n return new Promise((resolve) => {\n const defaultConfigs: IEnvConfigurationItem[] = this.getDefaultConfigs();\n this.loadScript(this.extraConfigsUrl, H5Tracker.OMG_ASYNC_CONFIGS_NAME,\n (configs: IEnvConfigurationItem[]) => {\n // 即使超时,依然补上执行逻辑\n this.afterAsyncConfigs1((configs || []).concat(defaultConfigs)); // 返回值暂无作用\n this.afterAsyncConfigs2();\n })\n .then((configs: IEnvConfigurationItem[] | undefined): void => {\n this.afterAsyncConfigs1((configs || []).concat(defaultConfigs));\n resolve();\n }, (): void => {\n this.afterAsyncConfigs1(defaultConfigs);\n resolve();\n });\n });\n }\n\n /**\n * getCurrentEnvConfig: [2/2]\n */\n private afterAsyncConfigs1(configs: IEnvConfigurationItem[]): void {\n for (let i: number = 0, j: number = configs.length; i < j; ++i) {\n const config: IEnvConfigurationItem = configs[i];\n try {\n if (config.validate(this.getContext() as IH5Context)) { // 验证成功,环境配置命中当前环境\n config.beforeDeliver(this).then((): void => { // 配置下发前执行。\n Object.assign(this.context, {\n envConfig: config\n });\n return;\n });\n break;\n }\n } catch (error) {\n GlobalUtil.dispatchOmgLog('获取当前环境配置信息 失败' + (error as ErrorEvent).message);\n console.error(error);\n }\n }\n }\n\n /**\n * 初始化同步插件\n */\n private initSyncPluginCollection(): void {\n const defaultConfigs: IEnvConfigurationItem[] = this.getDefaultConfigs();\n for (let i: number = 0, j: number = defaultConfigs.length; i < j; ++i) {\n const config: IEnvConfigurationItem = defaultConfigs[i];\n try {\n if (config.validate(this.getContext() as IH5Context)) { // 验证成功,环境配置命中当前环境\n config.beforeDeliver(this).then((): void => { // 配置下发前执行。\n Object.assign(this.context, {\n envConfig: config\n });\n const envConfig: IEnvConfigurationItem | undefined =\n (this.getContext() as IH5Context).envConfig;\n if ((envConfig as IEnvConfigurationItemSync) &&\n (envConfig as IEnvConfigurationItemSync).getPlugins) {\n const plugins = (envConfig as IEnvConfigurationItemSync).getPlugins() || [];\n plugins.forEach((plugin: IPlugin): void => {\n try {\n if (!this.pluginCollection.contains(plugin)) {\n this.pluginCollection.register(plugin);\n }\n } catch (e) {\n GlobalUtil.dispatchOmgLog('initSyncPluginCollection 注册插件 失败');\n console.error(e);\n }\n });\n }\n });\n }\n } catch (error) {\n GlobalUtil.dispatchOmgLog('获取当前环境配置信息 失败' + (error as ErrorEvent).message);\n console.error(error);\n }\n }\n\n }\n\n /**\n * initAsyncPluginCollection: [1/3]\n * 初始化插件库,先从远程获取环境配置信息,从对应的环境信息里再远程拉取插件库CDN。\n */\n\n protected initAsyncPluginCollection(): void {\n window.removeEventListener('load', this.initAsyncPluginCollection);\n this.getCurrentEnvConfig().then(this.afterAsyncConfigs2.bind(this));\n }\n\n /**\n * initAsyncPluginCollection: [2/3]\n */\n private afterAsyncConfigs2(): void {\n this.loadPlugins().then(this.afterAsyncPluginsLoad.bind(this));\n }\n\n /**\n * initAsyncPluginCollection: [3/3]\n * @param plugins\n */\n private afterAsyncPluginsLoad(plugins: IPlugin[]): void {\n if (!this.methodHolderChainIsDone) {\n return;\n }\n plugins.forEach((plugin: IPlugin): void => {\n try {\n if (!this.pluginCollection.contains(plugin)) {\n this.pluginCollection.register(plugin);\n }\n } catch (e) {\n GlobalUtil.dispatchOmgLog('initAsyncPluginCollection 注册插件 失败');\n console.error(e);\n }\n });\n\n const chain = this.methodHolderChain;\n\n chain.forEach((item: IMethodHolderItem): void => {\n const rtnValue: Promise | undefined = item.method.apply(this, item.arguments as any);\n if (rtnValue && rtnValue.then && item.resolve) { // 异步来做处理。\n rtnValue.then(item.resolve, item.reject);\n }\n });\n while (chain.length) {\n chain.pop();\n }\n if (this.getOmgIdHandler) {\n this.getOmgIdHandler(this.context.omgId || '');\n delete this.getOmgIdHandler;\n }\n }\n\n /**\n * @override\n * @inheritDoc\n */\n @MethodHold\n public execute(): void {\n this.getPluginConllection().toArray().forEach((plugin: IPlugin): void => {\n try {\n plugin.execute();\n } catch (e) {\n GlobalUtil.dispatchOmgLog('安装插件失败');\n console.error(e);\n }\n });\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public destroy(): void {\n // unregister all of plugins\n this.getPluginConllection().unregisterAll();\n\n // remove configs\n const configsName: string = H5Tracker.OMG_ASYNC_CONFIGS_NAME;\n const configs: IEnvConfigurationItem[] = (window as any)[configsName] || [];\n while (configs.length) {\n configs.pop();\n }\n (window as any)[configsName] = undefined;\n\n // remove constrs of plugins\n const pluginConstrsName: string = H5Tracker.OMG_ASYNC_PLUGINS_CONSTRS_NAME;\n const pluginsConstrs: IReportingStrategyPluginConstr[] = (window as any)[pluginConstrsName] || [];\n while (pluginsConstrs.length) {\n pluginsConstrs.pop();\n }\n (window as any)[pluginConstrsName] = undefined;\n\n // remove sequence under each viewport id.\n const prefix: string = SequencedEvent.OMG_SEQUENCE_NAME_PREFIX;\n const suffix: string = SequencedEvent.OMG_SEQUENCE_NAME_SUFFIX;\n (window as any)[`${ prefix }${ (this.getContext() as IH5Context).viewportId }${ suffix }`] = undefined;\n\n // remove event black list\n const bn: string = ReportCallbackUtil.OMG_EVENT_BLACKLIST_NAME;\n const eventBlacklist: string[] = (window as any)[bn] || [];\n while (eventBlacklist.length) {\n eventBlacklist.pop();\n }\n (window as any)[bn] = undefined;\n\n // remove all of response callbacks.\n (window as any)[ReportCallbackUtil.OMG_CALLBACK_OBJ_NAME] = undefined;\n\n // unbind 'pagehide' event listener\n window.removeEventListener('pagehide', this.pagehideHandler);\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IContext}\n */\n public getContext(): IH5Context {\n return this.context;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IPluginCollection}\n */\n public getPluginConllection(): IPluginCollection {\n return this.pluginCollection;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackerConfiguration} config\n */\n public setConfig(config: ITrackerConfiguration): void {\n if (config.hasOwnProperty('appKey')) {\n if (GlobalUtil.isEmptyString(config.appKey)) { // 设置app key\n if (!this.context.appKey) {\n this.init(config);\n }\n } else {\n GlobalUtil.dispatchOmgLog('setConfig appKey 参数 不可设置为空');\n console.error('[Omega]setConfig appKey 参数 不可设置为空');\n // @ts-ignore\n config.appKey = this.context.appKey;\n }\n }\n if (this.context.attrs && config.attrs) { // 当上下文中已经存在attrs时,又设置了全局attrs,则进行合并。\n // 现将 attrs 合并至 context.attrs\n Object.assign(this.context.attrs, config.attrs);\n // 再将 context.attrs 合并至 attrs,以防止 被覆盖\n Object.assign(config.attrs, this.context.attrs);\n }\n Object.assign(this.context, config);\n\n }\n\n /**\n * fix the track event args.\n * @param {string} eventId\n * @param {string | IAttrs | EventTarget | TrackedSuccessfulCallback} eventLabel\n * @param {IAttrs | EventTarget | TrackedSuccessfulCallback} attrs\n * @param {EventTarget | TrackedSuccessfulCallback} target\n * @param {TrackedSuccessfulCallback} cb\n * @returns {ITrackedEventArgs}\n */\n protected fixEventArgs(eventId: string, eventLabel?: string | IAttrs | EventTarget | TrackedSuccessfulCallback,\n attrs?: IAttrs | EventTarget | TrackedSuccessfulCallback,\n target?: EventTarget | TrackedSuccessfulCallback,\n cb?: TrackedSuccessfulCallback): ITrackedEventArgs {\n let newLabel: string = '';\n let newAttrs: IAttrs = {};\n let newCallback: TrackedSuccessfulCallback | undefined;\n for (let i: number = 1, j: number = arguments.length; i < j; ++i) { // 判断可选参数情况。\n const argValue: any = arguments[i];\n const argType: string = Object.prototype.toString.call(argValue);\n if (argType === '[object String]') { // event label\n newLabel = argValue;\n } else if (argType === '[object Object]') { // attrs\n newAttrs = argValue;\n } else if (argType === '[object Function]') { // callback\n newCallback = argValue;\n }\n }\n this.trackHandlers.length && this.mergeTrackHandler(eventId, newAttrs, target as EventTarget);\n return {\n eventId: eventId,\n attrs: {\n ...(newAttrs || {}),\n _label: `${ newLabel || '' }`\n },\n creatInfo: {\n appKey: this.context.appKey\n },\n cb: newCallback\n };\n }\n\n protected mergeTrackHandler(eventId: string, attrs: IAttrs, target: EventTarget) {\n this.trackHandlers.forEach((handler) => {\n const parsedAttr = handler.call(target, eventId, attrs, target);\n if (Object.prototype.toString.call(parsedAttr) === '[object Object]') {\n Object.assign(attrs, parsedAttr);\n }\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} eventId\n * @param {string} eventLabel\n * @param {IAttrs} attrs\n * @param {EventTarget} target\n * @param {TrackedSuccessfulCallback} cb\n * @returns {Promise}\n */\n public trackEvent(eventId: string,\n eventLabel?: string | IAttrs | EventTarget | TrackedSuccessfulCallback,\n attrs?: IAttrs | EventTarget | TrackedSuccessfulCallback,\n target?: EventTarget | TrackedSuccessfulCallback,\n cb?: TrackedSuccessfulCallback): Promise {\n // @ts-ignore\n if (eventLabel && eventLabel.err && Object.prototype.toString.call(eventLabel.err) === '[object Error]') {\n // @ts-ignore\n this.trackError(eventId, eventLabel.err!.code, eventLabel.err!.stack, { message: eventLabel.err.message });\n }\n const eventArgs = this.fixEventArgs(eventId, eventLabel, attrs, target, cb);\n return this.reportCustomEvent(eventArgs);\n }\n\n /**\n * 上报自定义事件\n */\n @MethodHoldAsync\n public reportCustomEvent(eventArgs: ITrackedEventArgs): Promise {\n return this.trackEventByPlugin(PluginUtils.PLUGIN_NAME_CUSTOM, eventArgs);\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {IAttrs} attrs\n * @returns {Promise}\n */\n @MethodHoldAsync\n public sendPageView(attrs?: IAttrs): Promise {\n this.setConfig({\n url: window.location.href\n });\n return this.trackEventByPlugin(\n PluginUtils.PLUGIN_NAME_PAGE_VIEW,\n this.fixEventArgs(PluginUtils.EVENT_ID_PAGE_VIEW, '', attrs, window)\n );\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} name\n * @param {string | number} code\n * @param {string} msg\n * @param {IAttrs} attrs\n * @returns {Promise}\n */\n @MethodHoldAsync\n public trackError(name: string, code: string | number, msg: string, attrs?: IAttrs): Promise {\n return this.trackEventByPlugin(\n PluginUtils.PLUGIN_NAME_ERROR,\n this.fixEventArgs(PluginUtils.EVENT_ID_ERROR, msg, {\n ...(attrs || {}),\n name: name,\n code: code\n })\n );\n }\n /**\n * 上报业务页面的完成时间\n * - 参数自定义\n */\n public trackPageCompleted(attrs?: IAttrs) {\n const offMode = this.getOffMode();\n this.trackEvent('pub_page_completed_load_sw', Object.assign({off_mode: offMode}, attrs));\n }\n private getOffMode(): string | undefined {\n let offMode: string|undefined;\n try {\n /**\n * app识别离线模式\n * 桥接方式识别\n */\n if (window && (window as any).FKConfig && (window as any)['FKConfig'].getOffMode) {\n offMode = (window as any)['FKConfig'].getOffMode();\n } else if (navigator.userAgent && navigator.userAgent.indexOf('OffMode/') !== -1) {\n // 通过userAgent识别\n const val: string = navigator.userAgent.split('OffMode/')[1] || '';\n offMode = val[0];\n }\n } catch (e) {\n console.info('off mode error', e);\n }\n return offMode;\n }\n /**\n * 根据指定的plugin上报相应的数据。\n * 多个相同plugin会分别实例化执行。\n * @param {string} pluginName\n * @param {ITrackedEventArgs} eventArgs\n * @returns {Promise}\n */\n private trackEventByPlugin(pluginName: string, eventArgs: ITrackedEventArgs): Promise {\n const pluginReports: Array<[IPlugin, ReportFucHandler, ITrackedEventArgs]> = [];\n this.getPluginConllection().toArray().forEach((plugin: IPlugin): void => {\n if (plugin.getName() === pluginName) {\n pluginReports.push([\n plugin,\n (plugin as IReportingStrategyPlugin).report,\n eventArgs\n ]);\n }\n });\n return Promise.all(pluginReports.map>(\n (pluginReportItem: [IPlugin, ReportFucHandler, ITrackedEventArgs]): Promise => {\n return pluginReportItem[1].call(pluginReportItem[0], pluginReportItem[2]);\n }\n )).then((events: ITrackedEvent[]): ITrackedEvent => events[0]);\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} userName\n */\n public setUserName(userName: string): void {\n this.setConfig({\n userName: userName\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} userId\n */\n public setUserId(userId: string): void {\n this.setConfig({\n userId: userId\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} tel\n * @param {string} countryCallingCode\n */\n public setTelephone(tel: string, countryCallingCode?: string): void {\n console.error('setTelephone API已移除');\n // if (countryCallingCode) {\n // this.setConfig({\n // telephone: tel,\n // countryCallingCode: countryCallingCode\n // });\n // } else {\n // this.setConfig({\n // telephone: tel\n // });\n // }\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} openid\n */\n public setOpenId(openid: string): void {\n if ((this.getContext() as IH5Context).unique) { // 只有unique为true时,才能够设置openid\n Object.assign(this.context, {\n openId: openid\n });\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {number} cityId\n */\n public setCityId(cityId: number): void {\n this.setConfig({ cityId: cityId });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {number} lng\n * @param {number} lat\n */\n public setLocation(lng: number, lat: number): void;\n\n /**\n * @override\n * @inheritDoc\n * @param {IGeoLocation} geoLocation\n */\n public setLocation(geoLocation: IGeoLocation): void;\n\n /**\n * override setLocation(lng: number, lat: number): void and\n * setLocation(geoLocation: IGeoLocation) :void\n * @param {number | IGeoLocation} arg1\n * @param {number} arg2\n */\n public setLocation(arg1: number | IGeoLocation, arg2?: number): void {\n console.error('setLocation API已删除');\n // if (typeof arg1 === 'number') { // the first arg is longitude\n // this.setConfig({\n // longitude: arg1,\n // latitude: arg2\n // });\n // } else { // the first arg is IGeoLocation\n // this.setConfig(arg1);\n // }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getOmgid(): string | undefined;\n\n /**\n * @override\n * @inheritDoc\n * @param {GetOmgIdCallback} cb\n */\n public getOmgid(cb: GetOmgIdCallback): void;\n\n /**\n * override methods getOmgid(): string and getOmgid(cb: GetOmgIdCallback): void\n * @param {GetOmgIdCallback} cb\n * @returns {void | string}\n */\n public getOmgid(cb?: GetOmgIdCallback): void | string | undefined {\n const omgId: string = (this.getContext() as IH5Context).omgId || '';\n if (cb) {\n if (omgId) {\n cb(omgId);\n } else {\n this.getOmgIdHandler = cb;\n }\n } else {\n return omgId;\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {GetOmgIdCallback} cb\n */\n public getClientId(cb: GetOmgIdCallback): void {\n this.getOmgid(cb);\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {IAutoClickCover} cover\n */\n public enableClickAutoTracker(cover: IAutoClickCover, ifChildNode?: boolean): void {\n this.clickedCover = cover;\n this.clickedCoverIsChild = ifChildNode || false;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {IAutoClickCover} cover\n */\n public enableTouchAutoTracker(cover: IAutoClickCover, ifChildNode?: boolean): void {\n this.enableClickAutoTracker(cover, ifChildNode);\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IAutoClickCover}\n */\n public getClickedCover(): IAutoClickCover | undefined {\n return this.clickedCover;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public getClickedCoverChild(): boolean | undefined {\n return this.clickedCoverIsChild;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {IClickFilter} filter\n */\n public enableClickFilterTracker(filter: IClickFilter): void {\n this.clickedFilter = filter;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {IClickFilter} filter\n */\n public enableTouchFilterTracker(filter: IClickFilter): void {\n this.enableClickFilterTracker(filter);\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IClickFilter | undefined}\n */\n public getClickedFilter(): IClickFilter | undefined {\n return this.clickedFilter;\n }\n\n /*======================================== deprecated methods as below ========================================*/\n\n /**\n * @override\n * @inheritDoc\n */\n public disableAutoClick(): void {\n this.setConfig({\n autoClick: false\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public sid(): string {\n return (this.getContext() as IH5Context).viewportId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} appKey\n */\n public setProduct(appKey: string): void {\n this.setConfig({ appKey: appKey });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} channel\n */\n public setChannel(channel: string): void {\n this.setConfig({ attrs: { channel: channel } });\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {boolean} mode\n */\n public enableDebugMode(mode: boolean): void {\n /* deprecated and blank method */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public trackPerformance(): void {\n /* deprecated and blank method */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} label\n * @param {number} time\n * @param {string} deprecatedVersion\n * @param {IAttrs} attrs\n * @param {number} sample\n * @returns {Promise}\n */\n public trackTiming(label: string, time: number, deprecatedVersion?: string,\n attrs?: IAttrs, sample?: number): Promise {\n /* deprecated and a simple implements */\n return this.trackEvent('OMGH5CustomTiming');\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string} markLabel\n */\n public markTimePoint(markLabel: string): void { /* deprecated and blank method */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {(errorMessage: string, defaultAttrs: ITrackedEventData, attrs: IAttrs) => void} handler\n */\n public onJsError(handler: (errorMessage: string, defaultAttrs: ITrackedEventData, attrs: IAttrs) => void): void {\n /* deprecated and blank method */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {string | number} state\n */\n public setState(state: string | number): void { /* deprecated and blank method */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {TrackedHandler} handler\n */\n public addTrackHandler(handler: TrackedHandler): () => void {\n /* deprecated and blank method */\n if (Object.prototype.toString.call(handler) !== '[object Function]') {\n return () => {\n //\n };\n }\n this.trackHandlers.push(handler);\n return () => {\n return this.trackHandlers.splice(this.trackHandlers.findIndex((item) => item === handler), 1);\n };\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @since v2.0\n * @file The class of OmegaTracker\n */\n\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport { ITrackerConfiguration } from 'com/didichuxing/tracker/config/ITrackerConfiguration';\nimport H5Tracker from 'com/didichuxing/tracker/h5/H5Tracker';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\nexport default class OmegaTracker {\n\n /**\n * 生成tracker对象。\n * 兼容v1.0\n * @param {ITrackerConfiguration} config\n * @returns {ITracker}\n */\n public static getTracker(config: ITrackerConfiguration): ITracker {\n if (!(config && config.appKey && GlobalUtil.isEmptyString(config.appKey))\n && (config && config.productName && GlobalUtil.isEmptyString(config.productName))) {\n Object.assign(config, {appKey: config.productName});\n }\n if (config && config.appKey && GlobalUtil.isEmptyString(config.appKey)) {\n // 避免小数点造成多层对象访问\n const appKeyVar = config.appKey.replace(/\\./g, '_');\n const OMG_INSTANTIATION_NAME_VAR = `${ H5Tracker.OMG_INSTANTIATION_NAME }_${appKeyVar}__`;\n\n if (!(window as any)[ `${ OMG_INSTANTIATION_NAME_VAR }` ]) {\n // 如果当前没有这个对象 说明 这个APPKEY的SDK实例没有被初始化 ,可以直接初始化并且返回实例。\n const h5Tracker: ITracker = new H5Tracker(config);\n h5Tracker.execute();\n (window as any)[ `${ OMG_INSTANTIATION_NAME_VAR }` ] = h5Tracker;\n h5Tracker.getTracker = this.getTracker;\n return h5Tracker;\n } else {\n if ((window as any)[ `${ OMG_INSTANTIATION_NAME_VAR }` ].getContext().version\n === H5Tracker.OMG_VERSION) {\n // 版本相同直接返回之前的实例\n return (window as any)[ `${ OMG_INSTANTIATION_NAME_VAR }` ];\n } else {\n // 版本不同做提示 并返回之前的实例\n console.warn('[Omega]相同appKey(' + config.appKey + ')实例化多个版本SDK,请检查!当前版本:' +\n (window as any)[ `${ OMG_INSTANTIATION_NAME_VAR }` ].getContext().version +\n '新实例化版本:' + H5Tracker.OMG_VERSION);\n return (window as any)[ `${ OMG_INSTANTIATION_NAME_VAR }` ];\n }\n }\n } else {\n throw new Error('[Omega]初始化必须带有appKey 参数');\n }\n\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The javascript of OmegaTrackerCDNLocal\n */\n\nimport OmegaTracker from 'com/didichuxing/tracker/h5/OmegaTracker';\n\n(function(global) {\n global.Omega = global.Omega || {};\n if (!global.Omega.trackEvent || typeof global.Omega.trackEvent !== 'function') { // 没有实例化前,Omega为配置。\n global.Omega = OmegaTracker.getTracker(global.Omega);\n }\n})(window);\n"],"names":["_fails","exec","e","_domCreate","it","is","document","createElement","_toPrimitive","S","isObject","fn","val","toString","call","valueOf","TypeError","_has","key","hasOwnProperty","$export","type","name","source","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","exports","core","expProto","PROTOTYPE","target","global","undefined","has","ctx","C","a","b","c","this","arguments","length","apply","Function","virtual","R","hide","_cof","slice","_toLength","min","toInteger","_sharedKey","shared","uid","_objectKeysInternal","object","names","O","toIObject","i","result","IE_PROTO","push","arrayIndexOf","_toObject","Object","defined","IS_INCLUDES","_global","commonjsHelpers.createCommonjsModule","module","window","Math","self","__g","_core","version","__e","_aFunction","_ctx","that","aFunction","_isObject","_anObject","_descriptors","require$$0","defineProperty","get","_ie8DomDefine","require$$1","require$$2","dP","_objectDp","f","Attributes","anObject","toPrimitive","IE8_DOM_DEFINE","value","_propertyDesc","bitmap","enumerable","configurable","writable","_hide","createDesc","_export","U","_iobject","propertyIsEnumerable","cof","split","_defined","_toIobject","IObject","ceil","floor","_toInteger","isNaN","max","_shared","SHARED","store","mode","copyright","id","px","random","_uid","concat","$this","el","fromIndex","toLength","index","_enumBugKeys","_objectKeys","keys","$keys","enumBugKeys","_objectGops","getOwnPropertySymbols","_objectPie","$assign","assign","_objectAssign","A","Symbol","K","forEach","k","join","T","toObject","aLen","getSymbols","gOPS","isEnum","pIE","getKeys","j","DESCRIPTORS","_extends_1","_extends","_Object$assign","prototype","classCallCheck","instance","Constructor","$Object","desc","_defineProperties","props","descriptor","_Object$defineProperty","createClass","protoProps","staticProps","_objectDps","defineProperties","Properties","D","hiddenKeys","_objectGopn","getOwnPropertyNames","Reflect","_ownKeys","ownKeys","gOPN","gOPD","getOwnPropertyDescriptor","_objectGopd","getOwnPropertyDescriptors","getDesc","$defineProperty","_objectSap","KEY","exp","fails","_wksDefine","$Symbol","charAt","wksExt","Empty","wrap","tag","sym","AllSymbols","_create","_k","$defineProperties","enumKeys","l","$propertyIsEnumerable","E","ObjectProto","OPSymbols","HIDDEN","$getOwnPropertyDescriptor","$getOwnPropertyNames","META","$getOwnPropertySymbols","IS_OP","_redefine","_meta","setMeta","setDesc","w","isExtensible","FREEZE","preventExtensions","meta","NEED","fastKey","create","getWeak","onFreeze","_wks","USE_SYMBOL","def","TAG","_setToStringTag","stat","_wksExt","_enumKeys","symbols","_isArray","Array","isArray","arg","_html","documentElement","createDict","iframe","style","display","appendChild","src","iframeDocument","contentWindow","open","write","lt","close","_objectCreate","dPs","windowNames","_objectGopnExt","$GOPD","$DP","gOPNExt","$JSON","JSON","_stringify","stringify","wks","TO_PRIMITIVE","SymbolRegistry","USE_NATIVE","$GOPS","QObject","setter","findChild","setSymbolDesc","$fails","protoDesc","isSymbol","iterator","redefine","$set","set","es6Symbols","wellKnownSymbols","wksDefine","for","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","args","require$$4","TO_STRING","obj","_iterators","IteratorPrototype","_objectGpo","getPrototypeOf","constructor","ITERATOR","BUGGY","VALUES","returnThis","_iterDefine","Base","NAME","next","DEFAULT","IS_SET","FORCED","getMethod","kind","proto","setToStringTag","methods","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","Iterators","values","$at","pos","s","String","charCodeAt","_iterStep","iterated","_t","_i","done","point","TO_STRING_TAG","step","Arguments","DOMIterables","Collection","_classof","tryGet","ARG","callee","_speciesConstructor","SPECIES","_invoke","un","run","queue","listener","event","data","defer","symbol","_typeof_1","_typeof2","_Symbol","_Symbol$iterator","_typeof","ArrayProto","core_getIteratorMethod","getIteratorMethod","classof","_forOf","BREAK","RETURN","iterable","iterFn","getIterFn","ret","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","ONREADYSTATECHANGE","_task","invoke","nextTick","now","port","channel","port2","port1","onmessage","postMessage","addEventListener","importScripts","cel","html","removeChild","setTimeout","clear","macrotask","Observer","MutationObserver","WebKitMutationObserver","Promise","isNode","PromiseCapability","resolve","reject","promise","$$resolve","$$reject","_promiseResolve","x","promiseCapability","newPromiseCapability","_newPromiseCapability","_perform","v","navigator","_userAgent","userAgent","SAFE_CLOSING","head","last","notify","toggle","node","task","microtask","flush","standalone","then","createTextNode","observe","characterData","parent","domain","exit","enter","empty","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","PROMISE","versions","v8","$Promise","newPromiseCapabilityModule","FakePromise","PromiseRejectionEvent","indexOf","isThenable","isReject","chain","_n","_c","_v","ok","_s","reaction","exited","handler","fail","_h","emit","onrejectionhandled","reason","console","unhandled","isUnhandled","perform","onunhandledrejection","error","_a","$reject","_d","_w","$resolve","wrapper","executor","anInstance","forbiddenField","err","safe","require$$3","onFulfilled","onRejected","speciesConstructor","catch","require$$6","r","capability","promiseResolve","skipClosing","arr","iter","require$$7","all","remaining","forOf","$index","alreadyCalled","race","finally","onFinally","isFunction","try","callbackfn","hasOwn","toPrimitiveSymbol","iteratorSymbol","HashMap","functionPrototype","usePolyfill","_Map","_Set","Metadata","root","commonjsHelpers.commonjsGlobal","exporter","makeExporter","GetOrCreateMetadataMap","Create","targetMetadata","IsUndefined","metadataMap","OrdinaryHasOwnMetadata","MetadataKey","OrdinaryGetOwnMetadata","OrdinaryDefineOwnMetadata","MetadataValue","OrdinaryOwnMetadataKeys","method","GetMethod","IsCallable","IsObject","GetIterator","IteratorStep","nextValue","Type","IsNull","ToPrimitive","input","PreferredType","hint","exoticToPrim","OrdinaryToPrimitive","toString_1","toString_2","ToPropertyKey","argument","IsArray","IsConstructor","V","func","OrdinaryGetPrototypeOf","prototypeProto","MakeDictionary","__","previous","supportsSymbol","supportsCreate","supportsProto","__proto__","downLevel","map","env","Map","cacheSentinel","arraySentinel","MapIterator","selector","_index","_keys","_values","_selector","throw","return","_cacheKey","_cacheIndex","_find","delete","size","getKey","getValue","getEntry","insert","_","CreateMapPolyfill","Set","_map","add","CreateSetPolyfill","WeakMap","UUID_SIZE","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","Uint8Array","FillRandomBytes","crypto","getRandomValues","msCrypto","GenRandomBytes","offset","byte","toLowerCase","CreateUUID","buffer","CreateWeakMapPolyfill","decorators","propertyKey","attributes","decorated","decorator","DecorateConstructor","DecorateProperty","metadataKey","metadataValue","IsPropertyKey","OrdinaryHasMetadata","OrdinaryGetMetadata","OrdinaryMetadataKeys","parentKeys","ownKeys_1","parentKeys_1","arraySlice","factories","_bind","bind","partArgs","bound","construct","len","n","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","check","_setProto","setPrototypeOf","test","buggy","_setPrototypeOf","o","p","_Object$setPrototypeOf","inherits","subClass","superClass","_Object$create","assertThisInitialized","ReferenceError","possibleConstructorReturn","$getPrototypeOf","_getPrototypeOf","_Object$getPrototypeOf","performance","timing","loadEventEnd","readyState","str","replace","mesageEvent","createEvent","initMessageEvent","dispatchEvent","location","protocol","tracker","pluginConstrs","plugins","pluginConstr","_this","host","cdnNamespace","getContext","uploadHost","GlobalUtil","getProtocol","getExtraPluginsUrlName","methodName","params","webkit","messageHandlers","tel","countryCallingCode","_JSON$stringify","userId","cityId","eventId","eventLabel","attrJson","sysJson","exJson","cb","getInfoHandler","evt","oid","removeEventListener","getInfo","res","info","href","OmegaSDK","AppUtil","inWKWebview","omegaSDK","WKWebviewOmegaSDK","context","appOmegaSDK","getOmegaSDK","parse","AH5EnvConfigSync","disableBridge","inEnv","syncNativeOid","isInNative","fetchAppOmgId","omgId","nativeDone","byteToHex","substr","buf","bth","UUID","getByte2Hex","rnds","bytesToUuid","OMEGA_ID","items","cookie","trim","getOmgIdFromCookie","getOidFromLocal","v4","useLocalOid","saveOidToLocal","saveOidToCookie","_Promise","localStorage","getItem","setItem","expiredDate","Date","setFullYear","getFullYear","unique","thisResolve","prom","setOpenIdHandler","setOpenId","openid","rawSerialized","cbObjName","ReportCallbackUtil","OMG_CALLBACK_OBJ_NAME","cbkMethodName","getTime","reportCallback","cbArg","bn","OMG_EVENT_BLACKLIST_NAME","eventid","prop","splice","receiver","EventStatus","superPropBase","property","_get","_Reflect$get","base","_Object$getOwnPropertyDescriptor","attrs","trackerVersion","appKey","productName","url","modifyAppKey","noUrlParam","formatUrl","getType","timestamp","viewportId","appName","appVersion","osType","osVersion","userName","bizId","locale","countyId","utcOffset","getAttrs","from","getFrom","latitude","longitude","telephone","_label","eventData","getData","dataKeyMap","getDataKeyMap","dispatchOmgLog","newkeys","_Object$keys","sort","kvs","attrsJsonStr","serializeAttrs2JsonStr","encodeURIComponent","serializedAttrs","attrsKeyMap","getAttrsKeyMap","thisAttrs","openId","getVersion","isEmptyString","AEvent","prefix","SequencedEvent","OMG_SEQUENCE_NAME_PREFIX","suffix","OMG_SEQUENCE_NAME_SUFFIX","sequence","NORMAL","PluginUtils","plugin","contains","install","getName","removePlugin","pluginItem","pop","uninstall","installed","FAILED","TIMEOUT","Error","timeoutHandler","clearTimeout","TimeoutEvent","timeout","setUserId","setTelephone","setCityId","Number","trackEventEx","label","serialize2JsonStrWithoutAttrs","FailedEvent","EVENT_ID_PAGE_INIT","BLOCKED","UPLOAD_DOMAIN_LOCAL","UPLOAD_DOMAIN_GLOBAL","UPLOAD_DOMAIN_RU","UA_BROWSER_REGEXPS","uaRegExps","UA_OS_REGEXPS","AppKey","breadcrumbListName","getBreadcrumbListName","initialzedContext","uaRegExpNameItems","ua","item","idx","regExpExecArray","wx","miniProgram","getEnv","miniprogram","my","appInfo","getBrowserRegExpsInUA","osInfo","getOSRegExpsInUA","getDeviceInfo","getUploadHost","eventArgs","EVENT_ID_CLICK","serialize","trackedEvent","sliceBreadcrumbList","some","BlockedEvent","compatibleCallback","finalEvent","dispatchTrackerEventUnderWindow","generateEvent","addTrackerEventToBreadcrumb","getEventReportor","reportEvent","AReportingStrategyPlugin","disabledInit","xspmAttrs","getXspmAttrs","report","PLUGIN_NAME_PAGE_INIT","OMGH5PageInitEvent","AOMGH5PageInitPlugin","AppEventReportor","uniq","DataQueueSet","getInstance","unreportedEvents","reportEventsAfterLoad","unreportedItem","shift","reportEventImmediately","errorreportedEvents","removeAll","hash","encodeHash","forbidReportEventListKey","AH5EventReportor","forbidReportEventList","startForbidReport","reportForBidEvent","forbidReport","ts","cId","addForbidEvent","onChangeForbidFalse","URL","_this2","reportPath","xhr","XMLHttpRequest","cid","ontimeout","setRequestHeader","getOmgci","send","EncodeHash","encodeHashUrl","onreadystatechange","status","response","responseText","state","code","msg","onerror","PostEventReportor","EVENT_ID_OMG_LOG","reportLog","PLUGIN_NAME_OMGLOG","log","OMGH5LogEvent","AOMGH5LogPlugin","PROTO","DEFAULT_LOCAL_CONFIG_URL","DEFAULT_GLOBAL_CONFIG_URL","DEFAULT_DE_CONFIG_URL","DEFAULT_RLAB_CONFIG_URL","propertyName","getPluginConllection","holdMethod","config","attr","methodHolderChain","beforeErrorList","getDefaultContext","extraConfigsUrl","getRlabDefaultConfigUrl","getDeDefaultConfigUrl","getGlobalDefaultConfigUrl","getLocalDefaultConfigUrl","pluginCollection","PluginSet","pagehideHandler","initAsyncPluginCollection","initSyncPluginCollection","setBeforeError","setConfig","OMG_UWID_NAME","getTimezoneOffset","isFirstSw","trackEvent","EVENT_ID_PAGE_LEAVE","proxyConsoleError","fastLoad","isLoaded","t","autoConsoleError","errEvent","message","stack","OMGH5PageInitPlugin","OMGH5LogPlugin","OMGAppH5PageInitPlugin","globalVarName","callback","isTimeout","scriptEle","onload","crossOrigin","h5DefaultPluginsConstrs","getH5DefaultPluginsConstrs","appH5DefaultPluginsConstrs","getAppH5DefaultPluginsConstrs","AppH5EnvConfig","UniqueH5EnvConfig","NormalH5EnvConfig","pluginsUrl","loadScript","H5Tracker","OMG_ASYNC_PLUGINS_CONSTRS_NAME","methodHolderChainIsDone","PluginConstr","loadPluginsBefore","afterAsyncPluginsLoad","NonH5Plugin","envConfig","getPlugins","getExtraPluginsUrl","loadPluginsByUrl","extraPlugins","getPluginsUrl","_this3","defaultConfigs","_this4","getDefaultConfigs","OMG_ASYNC_CONFIGS_NAME","configs","afterAsyncConfigs1","afterAsyncConfigs2","validate","_this5","beforeDeliver","_this6","register","getCurrentEnvConfig","loadPlugins","_this7","rtnValue","getOmgIdHandler","toArray","execute","unregisterAll","configsName","pluginConstrsName","pluginsConstrs","eventBlacklist","init","newCallback","newLabel","newAttrs","argValue","argType","trackHandlers","mergeTrackHandler","creatInfo","parsedAttr","trackError","fixEventArgs","reportCustomEvent","trackEventByPlugin","PLUGIN_NAME_CUSTOM","PLUGIN_NAME_PAGE_VIEW","EVENT_ID_PAGE_VIEW","PLUGIN_NAME_ERROR","EVENT_ID_ERROR","offMode","getOffMode","off_mode","FKConfig","pluginName","pluginReports","pluginReportItem","events","arg1","arg2","getOmgid","cover","ifChildNode","clickedCover","clickedCoverIsChild","enableClickAutoTracker","filter","clickedFilter","enableClickFilterTracker","autoClick","time","deprecatedVersion","sample","markLabel","_this8","findIndex","MethodHoldAsync","OMG_INSTANTIATION_NAME_VAR","appKeyVar","OMG_INSTANTIATION_NAME","OMG_VERSION","warn","h5Tracker","getTracker","Omega","OmegaTracker"],"mappings":"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"}