{"version":3,"sources":["../node_modules/@log4js2/core/dist/const/log.level.js","../node_modules/@log4js2/core/dist/appender/index.js","../node_modules/@log4js2/core/dist/util/utility.js","../node_modules/@log4js2/core/dist/appender/log.appender.js","../node_modules/path-browserify/index.js","../node_modules/@log4js2/core/dist/logger/logger.js","../node_modules/@log4js2/core/dist/decorator/filter.js","../node_modules/@log4js2/core/dist/filter/log.filter.js","../node_modules/reflect-metadata/Reflect.js","../node_modules/@log4js2/core/dist/filter/index.js","../node_modules/@log4js2/core/dist/filter/log.filter.action.js","../node_modules/@log4js2/core/dist/appender/console.appender.js","../node_modules/@log4js2/core/dist/decorator/appender.js","../node_modules/@log4js2/core/dist/util/virtual.console.js","../node_modules/@log4js2/core/dist/marker.js","../node_modules/@log4js2/core/dist/log4js.js","../node_modules/@log4js2/core/dist/appender/appender.wrapper.js","../node_modules/@log4js2/core/dist/layout/formatter.js","../node_modules/@log4js2/core/dist/layout/date.formatter.js","../node_modules/@log4js2/core/dist/logger/index.js","../node_modules/@log4js2/core/dist/decorator/log.js","../node_modules/@log4js2/core/dist/filter/marker.filter.js","../node_modules/@log4js2/core/dist/filter/threshold.filter.js","../node_modules/@luxottica/vm-devicedetection/node_modules/ua-parser-js/src/ua-parser.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@log4js2/core/dist/index.js","../../src/parser/UserAgentParser.ts","../../src/wasm/WasmDetection.ts","../../src/webgl/WebGlDetection.ts","../../src/webrtc/WebRtcDetection.ts","../../src/DeviceDetection.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js"],"names":["Object","defineProperty","exports","value","LogLevel","utility_1","require","appender_wrapper_1","log_appender_1","_appenderMethods","Set","add","_appenders","Map","_registeredLoggerAppenders","getAppenderName","appender","name","getFunctionName","addAppender","LogAppender","forEach","element","prototype","Function","Error","_validateAppender","appenderName","has","set","registerAppender","getAppender","get","getLoggerAppenderInstances","appenders","length","map","appenderConfig","AppenderWrapper","result_1","push","setLoggerAppenderConfig","config","func","name_1","toString","substring","indexOf","trim","isArray","Array","formatter_1","isActive","this","active","append","logEvent","getLogLevel","logLevel","setLogLevel","setLayout","layout","getLayout","format","normalizeArray","parts","allowAboveRoot","up","i","last","splice","unshift","filter","xs","f","res","resolve","resolvedPath","resolvedAbsolute","arguments","path","process","cwd","TypeError","charAt","split","p","join","normalize","isAbsolute","trailingSlash","substr","paths","slice","call","index","relative","from","to","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","code","charCodeAt","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","__1","marker_1","Logger","context","_logContext","_logSequence","_relative","Date","getTime","log","level","marker","_this","args","_i","passed","_constructLogEvent","fatal","FATAL","error","ERROR","warn","WARN","info","INFO","debug","DEBUG","trace","TRACE","offset","logTime","e","date","logErrorStack","file","lineNumber","logger","message","method","_isNotStrict","callee","caller","properties","undefined","sequence","regex","Marker","exec","replace","filter_1","Filter","target","addFilter","LogFilter","configuration","Reflect","factory","root","global","self","exporter","makeExporter","previous","key","configurable","writable","hasOwn","hasOwnProperty","supportsSymbol","Symbol","toPrimitiveSymbol","toPrimitive","iteratorSymbol","iterator","supportsCreate","create","supportsProto","__proto__","downLevel","HashMap","MakeDictionary","functionPrototype","getPrototypeOf","usePolyfill","_Map","entries","CreateMapPolyfill","_Set","CreateSetPolyfill","Metadata","WeakMap","CreateWeakMapPolyfill","decorate","decorators","propertyKey","attributes","IsUndefined","IsArray","IsConstructor","DecorateConstructor","IsObject","IsNull","DecorateProperty","ToPropertyKey","metadata","metadataKey","metadataValue","decorator","IsPropertyKey","OrdinaryDefineOwnMetadata","defineMetadata","hasMetadata","OrdinaryHasMetadata","hasOwnMetadata","OrdinaryHasOwnMetadata","getMetadata","OrdinaryGetMetadata","getOwnMetadata","OrdinaryGetOwnMetadata","getMetadataKeys","OrdinaryMetadataKeys","getOwnMetadataKeys","OrdinaryOwnMetadataKeys","deleteMetadata","metadataMap","GetOrCreateMetadataMap","delete","size","targetMetadata","decorated","descriptor","O","P","Create","MetadataKey","parent","OrdinaryGetPrototypeOf","ToBoolean","MetadataValue","ownKeys","parentKeys","keys","ownKeys_1","_a","parentKeys_1","GetIterator","k","next","IteratorStep","nextValue","IteratorValue","IteratorClose","Type","x","IsSymbol","ToPrimitive","input","PreferredType","hint","exoticToPrim","GetMethod","result","OrdinaryToPrimitive","toString_1","IsCallable","valueOf","toString_2","argument","ToString","V","obj","iterResult","done","proto","prototypeProto","constructor","cacheSentinel","arraySentinel","MapIterator","values","selector","_index","_keys","_values","_selector","throw","return","_cacheKey","_cacheIndex","enumerable","_find","clear","getKey","getValue","getEntry","insert","_","_map","UUID_SIZE","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","CreateUUID","FillRandomBytes","buffer","random","GenRandomBytes","Uint8Array","crypto","getRandomValues","msCrypto","data","byte","toLowerCase","__","_filterMethods","_filters","filterObj","_validateFilter","getFilter","LogFilterAction","__extends","extendStatics","d","b","setPrototypeOf","__decorate","desc","c","r","getOwnPropertyDescriptor","log_level_1","appender_1","virtual_console_1","ConsoleAppender","_super","apply","_appendToConsole","getVirtualConsole","Appender","_virtualConsole","_isUseVirtualConsole","useVirtualConsole","state","console","Log4JConsole","isVirtual","memory","assert","condition","count","label","dir","optionalParams","dirxml","group","groupTitle","groupCollapsed","groupEnd","markTimeline","msIsIndependentlyComposed","profile","reportName","profileEnd","tabularData","time","timeEnd","timeStamp","timeline","timelineEnd","exception","countReset","timeLog","_parents","_name","getMarker","_markers","getParents","hasParents","remove","setParents","markers","__assign","assign","t","s","n","console_appender_1","logger_1","logger_2","_DEFAULT_APPENDERS","_DEFAULT_PATTERN_LAYOUT","_DEFAULT_CONFIG","loggers","_configuration","_getAppendersForLogger","logConfig","appenderList","appenderWrapper","configure","hasMain","tag","MAIN_LOGGER","addLogger","mainLoggerConfig","_configureLoggers","_configureAppenders","virtualConsole","getLogger","_getLoggerConfiguration","logContext","_determineContext","loggerConfig","log_filter_action_1","_config","_appender","_isPassThrough","filters","onMatch","onMismatch","event","isMatch","_isMatch","item","DENY","ALLOW","date_formatter_1","formatter","response","params","_formatLogEvent","_compiledLayouts","formatArray","match","formatString","_getFormatterFunction","command","_getFormatterObject","_compileLayout","_getCompiledLayout","_formatters","formatDate","DateTimeFormat","stack","stacks","reduce","accumulator","_getFileDetails","column","_formatMarkerFromEvent","formatted","RegExp","fileParts","location","host","pop","appDir","filename","startsWith","TIMEZONE","TIMEZONE_CLIP","padLeft","character","strValue","String","_i18n","m","_maskStore","_flags","getDate","dd","ddd","getDay","dddd","M","getMonth","MM","MMM","MMMM","yy","isUTC","getFullYear","getUTCFullYear","yyyy","h","getHours","hh","H","HH","getMinutes","mm","getSeconds","ss","S","getMilliseconds","a","aa","A","AA","Z","o","getTimezoneOffset","floor","abs","mask","DEFAULT","formatMap","maskStr","_createMask","_loggers","logMarker","LogMarker","Log","options","originalMethod","MarkerFilter","_isParentMarkerMatch","every","ThresholdFilter","window","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SONY","XIAOMI","ZEBRA","FACEBOOK","enumerize","enums","toUpperCase","str1","str2","lowerize","rgxMapper","ua","arrays","j","q","matches","props","test","strMapper","windowsVersionMap","regexes","browser","CHROME","cpu","device","engine","EDGE","os","UAParser","extensions","getResult","_ua","navigator","userAgent","_rgxmap","mergedRegexes","extend","getBrowser","version","_browser","major","getCPU","_cpu","getDevice","_device","getEngine","_engine","getOS","_os","getUA","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","module","define","$","jQuery","Zepto","parser","prop","_createForOfIteratorHelper","allowArrayLike","it","F","_e","err","normalCompletion","didErr","step","_e2","__export","log_1","log_filter_1","marker_filter_1","threshold_filter_1","UserAgentParser","userAgentData","instance","WasmDetection","simplewasm","of","supported","WebAssembly","instantiate","Module","Instance","WebGlDetection","canvas","document","createElement","setAttribute","tmpCanvasElementId","getWebglContext","elementToRemove","getElementById","outerHTML","webglContext","webglRenderingContext","contextName","getContext","webglCtxAttributes","depth","premultipliedAlpha","WebRtcDetection","isMediaDeviceAvailable","isNativeBridgePresent","videoInputDeviceAvailability","mediaDevices","enumerateDevices","then","devices","some","kind","Promise","getUserMedia","webkit","messageHandlers","startNativeCam","DeviceDetection","uaData","getInstance","getUserAgentData","isIOS13","isiPadOS","osName","iPadOS","orientation","isWebView","isWebViewBrowser","isWebAssemblySupported","isUserMediaSupported","isVideoInputDeviceAvailable","isWebGlSupported","Parent","Class","isNativeReflectConstruct","construct","bind","_cache","fn","Wrapper"],"mappings":"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","file":"0.chunk.js","sourcesContent":["Object.defineProperty(exports, \"__esModule\", { value: true });\nvar LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"OFF\"] = 0] = \"OFF\";\n LogLevel[LogLevel[\"FATAL\"] = 100] = \"FATAL\";\n LogLevel[LogLevel[\"ERROR\"] = 200] = \"ERROR\";\n LogLevel[LogLevel[\"WARN\"] = 300] = \"WARN\";\n LogLevel[LogLevel[\"INFO\"] = 400] = \"INFO\";\n LogLevel[LogLevel[\"DEBUG\"] = 500] = \"DEBUG\";\n LogLevel[LogLevel[\"TRACE\"] = 600] = \"TRACE\";\n LogLevel[LogLevel[\"ALL\"] = 2147483647] = \"ALL\";\n})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));\n","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar utility_1 = require(\"../util/utility\");\nvar appender_wrapper_1 = require(\"./appender.wrapper\");\nvar log_appender_1 = require(\"./log.appender\");\nvar _appenderMethods = new Set();\n_appenderMethods.add('append');\n_appenderMethods.add('isActive');\n_appenderMethods.add('setLogLevel');\n_appenderMethods.add('setLayout');\n_appenderMethods.add('getLayout');\n_appenderMethods.add('format');\nvar _appenders = new Map();\nvar _registeredLoggerAppenders = new Map();\n/**\n * Validates that the appender\n *\n * @private\n * @function\n *\n * @params {APPENDER} appender\n * @throws {Error} if the appender is invalid\n */\nvar _validateAppender = function (appender) {\n // if we are running ES6, we can make sure it extends LogAppender\n // otherwise, it must be a function\n if (!(appender instanceof log_appender_1.LogAppender)) {\n return;\n }\n // ensure that the appender methods are present (and are functions)\n _appenderMethods.forEach(function (element) {\n if (!appender.prototype[element] || !(appender.prototype[element] instanceof Function)) {\n throw new Error(\"Invalid appender: missing/invalid method: \" + element);\n }\n });\n};\nexports.getAppenderName = function (appender) { return appender.name || utility_1.getFunctionName(appender); };\n/**\n * Adds an appender to the appender queue\n *\n * @function\n *\n * @param {LogAppender} appender\n * @param {string} name\n */\nexports.addAppender = function (appender, name) {\n _validateAppender(appender);\n var appenderName = name || exports.getAppenderName(appender);\n // only put the appender into the set if it doesn't exist already\n if (!_appenders.has(appenderName)) {\n _appenders.set(appenderName, appender);\n }\n return appender;\n};\n/**\n * Registers an appender\n *\n * @param {Newable} appender\n */\nexports.registerAppender = function (appender) {\n var name = exports.getAppenderName(appender);\n if (_appenders.has(name)) {\n exports.addAppender(appender);\n }\n _appenders.set(name, appender);\n return appender;\n};\n/**\n * Gets the appender with the specified name\n *\n * @param name\n */\nexports.getAppender = function (name) { return _appenders.get(name); };\n/**\n * Gets the appender instances. If the appenders parameter is set, then it will only fetch those within the array, otherwise return all\n *\n * @param {string[]} appenders\n */\nexports.getLoggerAppenderInstances = function (appenders) {\n if (appenders && appenders.length > 0) {\n return appenders.map(function (value) {\n if (_registeredLoggerAppenders.has(value)) {\n var appenderConfig = _registeredLoggerAppenders.get(value);\n return new appender_wrapper_1.AppenderWrapper(appenderConfig.appender, appenderConfig);\n }\n throw new Error(\"Invalid appender reference '\" + value + \"'\");\n });\n }\n else {\n var result_1 = [];\n _registeredLoggerAppenders.forEach(function (appenderConfig) {\n return result_1.push(new appender_wrapper_1.AppenderWrapper(appenderConfig.appender, appenderConfig));\n });\n return result_1;\n }\n};\n/**\n * Sets the appender configuration for a specified appender name\n *\n * @param {string} appenderName\n * @param {IAppenderConfiguration} config\n */\nexports.setLoggerAppenderConfig = function (appenderName, config) {\n _registeredLoggerAppenders.set(appenderName, config);\n};\n","Object.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Gets the function name of the specified function\n *\n * @function\n * @param {Function} func\n *\n * @returns {string}\n */\nexports.getFunctionName = function (func) {\n if (func.name !== '') {\n return func.name;\n }\n else {\n // get the name of the function\n var name_1 = func.toString().substring('function '.length);\n name_1 = name_1.substring(0, name_1.indexOf('('));\n // if the string is not empty\n return (name_1 && name_1.trim()) ? name_1 : 'anonymous';\n }\n};\n/**\n * Determines whether or not the value is an array. Return false is null\n *\n * @param {any} value\n * @returns {boolean} true if non-null array, else false\n */\nexports.isArray = function (value) {\n return (typeof value === 'object' && value instanceof Array);\n};\n","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar formatter_1 = require(\"../layout/formatter\");\nvar LogAppender = /** @class */ (function () {\n function LogAppender(config) {\n // do nothing\n }\n /**\n * Returns whether or not the appender is active\n * @returns {boolean}\n */\n LogAppender.prototype.isActive = function () {\n return this.active === true;\n };\n /**\n * Appends the log\n * @param {ILogEvent} logEvent\n */\n LogAppender.prototype.append = function (logEvent) {\n // stub\n };\n /**\n * Gets the current log level\n * @returns {number}\n */\n LogAppender.prototype.getLogLevel = function () {\n return this.logLevel;\n };\n /**\n * Sets the log level of the appender\n * @param {LogLevel} logLevel\n */\n LogAppender.prototype.setLogLevel = function (logLevel) {\n this.logLevel = logLevel;\n };\n /**\n * Sets the layout of the appender\n * @param {string} layout\n */\n LogAppender.prototype.setLayout = function (layout) {\n this.layout = layout;\n };\n /**\n * Gets the layout associated with the appender\n * @returns {string}\n */\n LogAppender.prototype.getLayout = function () {\n return this.layout;\n };\n /**\n * Formats the log event using the layout provided\n * @param {ILogEvent} logEvent\n */\n LogAppender.prototype.format = function (logEvent) {\n return formatter_1.format(this.getLayout(), logEvent);\n };\n return LogAppender;\n}());\nexports.LogAppender = LogAppender;\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar __1 = require(\"..\");\nvar marker_1 = require(\"../marker\");\nvar Logger = /** @class */ (function () {\n function Logger(context, _appenders) {\n this._appenders = _appenders;\n this._logContext = context;\n this._logSequence = 0;\n this._relative = (new Date()).getTime();\n }\n Logger.prototype.log = function (level, marker) {\n var _this = this;\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var passed = arguments;\n this._appenders.forEach(function (appender) {\n return appender.append(_this._constructLogEvent(level, passed, 1));\n });\n };\n Logger.prototype.fatal = function (marker) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var passed = arguments;\n this._appenders.forEach(function (appender) {\n return appender.append(_this._constructLogEvent(__1.LogLevel.FATAL, passed));\n });\n };\n Logger.prototype.error = function (marker) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var passed = arguments;\n this._appenders.forEach(function (appender) {\n return appender.append(_this._constructLogEvent(__1.LogLevel.ERROR, passed));\n });\n };\n Logger.prototype.warn = function (marker) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var passed = arguments;\n this._appenders.forEach(function (appender) {\n return appender.append(_this._constructLogEvent(__1.LogLevel.WARN, passed));\n });\n };\n Logger.prototype.info = function (marker) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var passed = arguments;\n this._appenders.forEach(function (appender) {\n return appender.append(_this._constructLogEvent(__1.LogLevel.INFO, passed));\n });\n };\n Logger.prototype.debug = function (marker) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var passed = arguments;\n this._appenders.forEach(function (appender) {\n return appender.append(_this._constructLogEvent(__1.LogLevel.DEBUG, passed));\n });\n };\n Logger.prototype.trace = function (marker) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var passed = arguments;\n this._appenders.forEach(function (appender) {\n return appender.append(_this._constructLogEvent(__1.LogLevel.TRACE, passed));\n });\n };\n /**\n * @function\n *\n * @param {number} level\n * @param {Array.} args\n * @param {number} offset\n *\n * @return {ILogEvent}\n */\n Logger.prototype._constructLogEvent = function (level, args, offset) {\n if (offset === void 0) { offset = 0; }\n var logTime = new Date();\n var error = null;\n // this looks horrible, but this is the only way to catch the stack for IE to later parse the stack\n try {\n throw new Error();\n }\n catch (e) {\n error = e;\n }\n var logEvent = {\n date: logTime,\n error: null,\n logErrorStack: error,\n file: null,\n level: level,\n lineNumber: null,\n logger: this._logContext,\n message: '',\n method: this._isNotStrict() ? args.callee.caller : 0,\n properties: undefined,\n relative: logTime.getTime() - this._relative,\n sequence: this._logSequence++,\n };\n var regex = /\\{\\}/g;\n for (var i = offset; i < args.length; i++) {\n if (i === offset || (i === offset + 1 && logEvent.marker)) {\n if (args[i] instanceof marker_1.Marker) {\n logEvent.marker = args[i];\n }\n else {\n logEvent.message = args[i];\n }\n }\n else if (regex.exec(logEvent.message)) {\n logEvent.message = logEvent.message.replace(/\\{\\}/, args[i]);\n }\n else if (args[i] instanceof Error) {\n logEvent.error = args[i];\n }\n else {\n logEvent.properties = args[i];\n }\n }\n return logEvent;\n };\n /**\n * Returns whether or not the script is in strict mode\n *\n * @private\n * @function\n *\n * @returns {boolean}\n */\n Logger.prototype._isNotStrict = function () {\n var _this = this;\n return (function () { return !_this; })();\n };\n return Logger;\n}());\nexports.Logger = Logger;\n","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar filter_1 = require(\"../filter\");\n/**\n * @returns {(target: Newable) => void}\n * @constructor\n */\nfunction Filter(name) {\n return function (target) {\n filter_1.addFilter(target, name);\n return target;\n };\n}\nexports.Filter = Filter;\n","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar LogFilter = /** @class */ (function () {\n function LogFilter(configuration) {\n this.configuration = configuration;\n }\n return LogFilter;\n}());\nexports.LogFilter = LogFilter;\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","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar __1 = require(\"..\");\nvar _filterMethods = new Set();\n_filterMethods.add('isMatch');\nvar _filters = new Map();\n/**\n * Validates that the appender\n *\n * @private\n * @function\n *\n * @params {APPENDER} appender\n * @throws {Error} if the appender is invalid\n */\nvar _validateFilter = function (filter) {\n // if we are running ES6, we can make sure it extends LogAppender\n // otherwise, it must be a function\n if (!(filter instanceof __1.LogFilter)) {\n return;\n }\n // instantiate the appender function\n var filterObj = new filter();\n // ensure that the appender methods are present (and are functions)\n _filterMethods.forEach(function (element) {\n if (!filterObj[element] || !(filterObj[element] instanceof Function)) {\n throw new Error(\"Invalid filter: missing/invalid method: \" + element);\n }\n });\n};\nexports.addFilter = function (filter, name) {\n _validateFilter(filter);\n // only put the appender into the set if it doesn't exist already\n if (!_filters.has(name)) {\n _filters.set(name, filter);\n }\n return filter;\n};\nexports.getFilter = function (name) { return _filters.get(name); };\n","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar LogFilterAction;\n(function (LogFilterAction) {\n LogFilterAction[\"ALLOW\"] = \"ALLOW\";\n LogFilterAction[\"NEUTRAL\"] = \"NEUTRAL\";\n LogFilterAction[\"DENY\"] = \"DENY\";\n})(LogFilterAction = exports.LogFilterAction || (exports.LogFilterAction = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar log_level_1 = require(\"../const/log.level\");\nvar appender_1 = require(\"../decorator/appender\");\nvar virtual_console_1 = require(\"../util/virtual.console\");\nvar log_appender_1 = require(\"./log.appender\");\nvar ConsoleAppender = /** @class */ (function (_super) {\n __extends(ConsoleAppender, _super);\n function ConsoleAppender() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Appends the log event\n * @param {ILogEvent} logEvent\n */\n ConsoleAppender.prototype.append = function (logEvent) {\n if (logEvent.level <= this.getLogLevel()) {\n this._appendToConsole(logEvent);\n }\n };\n /**\n * @private\n * @function\n *\n * @param {ILogEvent} logEvent\n */\n ConsoleAppender.prototype._appendToConsole = function (logEvent) {\n var message = this.format(logEvent);\n switch (logEvent.level) {\n case log_level_1.LogLevel.FATAL:\n case log_level_1.LogLevel.ERROR: {\n if (logEvent.error) {\n virtual_console_1.getVirtualConsole().error(message, logEvent.error);\n }\n else {\n virtual_console_1.getVirtualConsole().error(message);\n }\n break;\n }\n case log_level_1.LogLevel.WARN: {\n virtual_console_1.getVirtualConsole().warn(message);\n break;\n }\n case log_level_1.LogLevel.INFO: {\n virtual_console_1.getVirtualConsole().info(message);\n break;\n }\n case log_level_1.LogLevel.DEBUG:\n case log_level_1.LogLevel.TRACE: {\n virtual_console_1.getVirtualConsole().debug(message);\n break;\n }\n default:\n break;\n }\n };\n ConsoleAppender = __decorate([\n appender_1.Appender('Console')\n ], ConsoleAppender);\n return ConsoleAppender;\n}(log_appender_1.LogAppender));\nexports.ConsoleAppender = ConsoleAppender;\n","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar appender_1 = require(\"../appender\");\n/**\n *\n * @returns {(target: Newable) => void}\n * @constructor\n */\nfunction Appender(name) {\n return function (target) {\n appender_1.addAppender(target, name);\n return target;\n };\n}\nexports.Appender = Appender;\n","Object.defineProperty(exports, \"__esModule\", { value: true });\n// tslint:disable:bool-param-default\nvar _virtualConsole;\nvar _isUseVirtualConsole = true;\nexports.useVirtualConsole = function (state) {\n _isUseVirtualConsole = state;\n};\nexports.getVirtualConsole = function (logger) {\n if (!_isUseVirtualConsole) {\n return console;\n }\n var Log4JConsole = /** @class */ (function () {\n function Log4JConsole() {\n this.isVirtual = true;\n this.memory = {};\n }\n Log4JConsole.prototype.assert = function (condition, message) {\n var data = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n data[_i - 2] = arguments[_i];\n }\n _virtualConsole.assert.call(arguments);\n };\n Log4JConsole.prototype.clear = function () {\n _virtualConsole.clear();\n };\n Log4JConsole.prototype.count = function (label) {\n _virtualConsole.count(label);\n };\n Log4JConsole.prototype.dir = function (value) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n _virtualConsole.dir.apply(_virtualConsole, [value].concat(optionalParams));\n };\n Log4JConsole.prototype.dirxml = function (value) {\n _virtualConsole.dirxml(value);\n };\n Log4JConsole.prototype.group = function (groupTitle) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n _virtualConsole.group.apply(_virtualConsole, [groupTitle].concat(optionalParams));\n };\n Log4JConsole.prototype.groupCollapsed = function (groupTitle) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n _virtualConsole.groupCollapsed.apply(_virtualConsole, [groupTitle].concat(optionalParams));\n };\n Log4JConsole.prototype.groupEnd = function () {\n _virtualConsole.groupEnd();\n };\n Log4JConsole.prototype.markTimeline = function (label) {\n if (typeof _virtualConsole.markTimeline === 'function') {\n _virtualConsole.markTimeline(label);\n }\n };\n Log4JConsole.prototype.msIsIndependentlyComposed = function (element) {\n if (typeof _virtualConsole.msIsIndependentlyComposed === 'function') {\n return _virtualConsole.msIsIndependentlyComposed(element);\n }\n };\n Log4JConsole.prototype.profile = function (reportName) {\n if (typeof _virtualConsole.profile === 'function') {\n _virtualConsole.profile(reportName);\n }\n };\n Log4JConsole.prototype.profileEnd = function () {\n if (typeof _virtualConsole.profileEnd === 'function') {\n _virtualConsole.profileEnd();\n }\n };\n Log4JConsole.prototype.table = function () {\n var tabularData = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tabularData[_i] = arguments[_i];\n }\n _virtualConsole.table.apply(_virtualConsole, tabularData);\n };\n Log4JConsole.prototype.time = function (label) {\n _virtualConsole.time(label);\n };\n Log4JConsole.prototype.timeEnd = function (label) {\n if (typeof _virtualConsole.timeEnd === 'function') {\n _virtualConsole.timeEnd(label);\n }\n };\n Log4JConsole.prototype.timeStamp = function (label) {\n if (typeof _virtualConsole.timeStamp === 'function') {\n _virtualConsole.timeStamp(label);\n }\n };\n Log4JConsole.prototype.timeline = function (label) {\n if (typeof _virtualConsole.timeline === 'function') {\n _virtualConsole.timeline(label);\n }\n };\n Log4JConsole.prototype.timelineEnd = function (label) {\n if (typeof _virtualConsole.timelineEnd === 'function') {\n _virtualConsole.timelineEnd(label);\n }\n };\n Log4JConsole.prototype.debug = function (message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n logger.debug.apply(logger, [message].concat(optionalParams));\n };\n Log4JConsole.prototype.error = function (message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n logger.error.apply(logger, [message].concat(optionalParams));\n };\n Log4JConsole.prototype.exception = function (message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n logger.error.apply(logger, [message].concat(optionalParams));\n };\n Log4JConsole.prototype.info = function (message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n logger.info.apply(logger, [message].concat(optionalParams));\n };\n Log4JConsole.prototype.log = function (message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n logger.debug.apply(logger, [message].concat(optionalParams));\n };\n Log4JConsole.prototype.trace = function (message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n logger.trace.apply(logger, [message].concat(optionalParams));\n };\n Log4JConsole.prototype.warn = function (message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n logger.warn.apply(logger, [message].concat(optionalParams));\n };\n Log4JConsole.prototype.countReset = function (label) {\n _virtualConsole.countReset(label);\n };\n Log4JConsole.prototype.timeLog = function (label) {\n var data = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n data[_i - 1] = arguments[_i];\n }\n _virtualConsole.timeLog.apply(_virtualConsole, [label].concat(data));\n };\n return Log4JConsole;\n }());\n if (!_virtualConsole) {\n _virtualConsole = console;\n console = new Log4JConsole();\n }\n return _virtualConsole;\n};\n","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar Marker = /** @class */ (function () {\n /**\n * Hide the constructor. We don't want people to arbitrarily make these without access to Marker#getMarker\n * @param {string} name\n */\n function Marker(name) {\n this._parents = new Set();\n this._name = name;\n }\n /**\n * Gets the marker for the specified name\n * @param {string} name\n * @returns {Marker}\n */\n Marker.getMarker = function (name) {\n if (!Marker._markers.hasOwnProperty(name)) {\n Marker._markers[name] = new Marker(name);\n }\n return Marker._markers[name];\n };\n Object.defineProperty(Marker.prototype, \"name\", {\n /**\n * The name of the marker\n * @returns {string}\n */\n get: function () {\n return this._name;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the parents of the marker. This converts the WeakSet into an array\n * @returns {Marker[]}\n */\n Marker.prototype.getParents = function () {\n var result = [];\n this._parents.forEach(function (marker) { return result.push(marker); });\n return result;\n };\n /**\n * Returns whether or not the marker has parents\n * @returns {boolean}\n */\n Marker.prototype.hasParents = function () {\n return this._parents.size > 0;\n };\n /**\n * Removes the specified marker as a parent\n * @param {Marker} marker\n */\n Marker.prototype.remove = function (marker) {\n this._parents.delete(marker);\n return this;\n };\n /**\n * Sets the parent markers by replacing the current set\n * @param {Marker} markers\n */\n Marker.prototype.setParents = function () {\n var markers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n markers[_i] = arguments[_i];\n }\n var index = markers.length;\n while (index--) {\n this._parents.add(markers[index]);\n }\n return this;\n };\n Marker._markers = {};\n return Marker;\n}());\nexports.Marker = Marker;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar appender_1 = require(\"./appender\");\nvar console_appender_1 = require(\"./appender/console.appender\");\nvar log_level_1 = require(\"./const/log.level\");\nvar logger_1 = require(\"./logger\");\nvar logger_2 = require(\"./logger/logger\");\nvar utility_1 = require(\"./util/utility\");\nvar virtual_console_1 = require(\"./util/virtual.console\");\n/**\n * The default appenders that should be included if no appenders are specified\n * @const\n */\nvar _DEFAULT_APPENDERS = (function () {\n return [console_appender_1.ConsoleAppender];\n})();\nvar _DEFAULT_PATTERN_LAYOUT = '%d [%p] %c - %m';\n/**\n * The default configuration for log4js2. If no configuration is specified, then this\n * configuration will be injected\n * @const\n */\nvar _DEFAULT_CONFIG = (function () { return ({\n appenders: _DEFAULT_APPENDERS,\n loggers: [{\n level: log_level_1.LogLevel.ERROR\n }],\n layout: '%d [%p] %c - %m'\n}); })();\n/** @type {?IConfiguration} */\nvar _configuration = null;\n/**\n * Gets the appenders for the level and layout\n *\n * @private\n * @function\n *\n * @param {ILoggerConfiguration} logConfig\n *\n * @returns {Array}\n */\nvar _getAppendersForLogger = function (logConfig) {\n var appenderList = [];\n appender_1.getLoggerAppenderInstances(logConfig.appenders).forEach(function (appenderWrapper) {\n appenderWrapper.appender.setLogLevel(logConfig.level);\n appenderWrapper.appender.setLayout(logConfig.layout);\n appenderList.push(appenderWrapper);\n });\n return appenderList;\n};\n/**\n * Configures the loggers\n *\n * @private\n * @function\n *\n * @param {IConfiguration} config\n */\nvar _configureLoggers = function (config) {\n var loggers = config.loggers;\n var hasMain = false;\n if (utility_1.isArray(loggers)) {\n loggers.forEach(function (logger) {\n logger.tag = logger.tag || logger_1.MAIN_LOGGER;\n hasMain = hasMain || logger.tag === logger_1.MAIN_LOGGER;\n if (!logger.layout || typeof logger.layout !== 'string') {\n logger.layout = config.layout;\n }\n logger.layout = logger.layout || _DEFAULT_PATTERN_LAYOUT;\n logger.level = logger.level || config.level || log_level_1.LogLevel.ERROR;\n logger_1.addLogger(logger.tag, new logger_2.Logger(logger.tag, _getAppendersForLogger(logger)));\n });\n }\n else {\n loggers = [];\n }\n if (!hasMain) {\n var mainLoggerConfig = {\n tag: logger_1.MAIN_LOGGER,\n level: config.level || log_level_1.LogLevel.ERROR,\n layout: config.layout || _DEFAULT_PATTERN_LAYOUT,\n };\n loggers.push(mainLoggerConfig);\n logger_1.addLogger(logger_1.MAIN_LOGGER, new logger_2.Logger(logger_1.MAIN_LOGGER, _getAppendersForLogger(mainLoggerConfig)));\n }\n return __assign({}, config, { loggers: loggers });\n};\n/**\n * Configures appenders\n *\n * @private\n * @function\n *\n * @param {IConfiguration} config\n */\nvar _configureAppenders = function (config) {\n var appenders = config.appenders;\n if (!utility_1.isArray(appenders)) {\n appenders = _DEFAULT_APPENDERS;\n }\n var result = appenders\n .map(function (value) {\n var appender;\n var appenderConfig;\n if (typeof value === 'string') {\n appender = appender_1.getAppender(value);\n appenderConfig = {\n name: appender_1.getAppenderName(appender),\n appender: appender\n };\n }\n else if (value.appender) {\n if (typeof value.appender === 'string') {\n appender = appender_1.getAppender(value.appender);\n }\n else {\n appender = appender_1.registerAppender(value.appender);\n }\n appenderConfig = __assign({}, value, { name: value.name || appender_1.getAppenderName(appender), appender: appender });\n }\n else if (value.prototype.append) {\n appender = appender_1.registerAppender(value);\n appenderConfig = {\n name: appender_1.getAppenderName(appender),\n appender: appender\n };\n }\n else {\n throw new Error('Invalid appender: \\'' + value + '\\'');\n }\n appender_1.setLoggerAppenderConfig(appenderConfig.name, appenderConfig);\n return appenderConfig;\n });\n return __assign({}, config, { appenders: result });\n};\n/**\n * Configures the logger\n *\n * @function\n * @params {IConfiguration} config\n */\nfunction configure(config) {\n // set the default layout\n if (!config.layout) {\n config.layout = _DEFAULT_PATTERN_LAYOUT;\n }\n // configure the appenders\n config = _configureAppenders(config);\n // configure the loggers\n config = _configureLoggers(config);\n _configuration = config;\n if (config.virtualConsole !== false) {\n virtual_console_1.getVirtualConsole(logger_1.getLogger(logger_1.MAIN_LOGGER, _getLoggerConfiguration(logger_1.MAIN_LOGGER)));\n }\n else {\n virtual_console_1.useVirtualConsole(false);\n }\n}\nexports.configure = configure;\nexports.getLogger = function (context) {\n if (!_configuration) {\n configure(_DEFAULT_CONFIG);\n }\n var logContext = _determineContext(context);\n var loggerConfig = _getLoggerConfiguration(logContext) || _getLoggerConfiguration(logger_1.MAIN_LOGGER);\n return logger_1.getLogger(logContext, loggerConfig);\n};\nfunction _getLoggerConfiguration(context) {\n return _configuration.loggers.filter(function (value) { return value.tag === context; })[0];\n}\nfunction _determineContext(context) {\n // determine the context\n if (typeof context === 'string') {\n return context;\n }\n if (typeof context === 'function') {\n return utility_1.getFunctionName(context);\n }\n else if (typeof context === 'object') {\n context = utility_1.getFunctionName(context.constructor);\n if (context === 'Object') {\n return 'anonymous';\n }\n else {\n return context;\n }\n }\n else {\n return logger_1.MAIN_LOGGER;\n }\n}\n","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar filter_1 = require(\"../filter\");\nvar log_filter_action_1 = require(\"../filter/log.filter.action\");\nvar AppenderWrapper = /** @class */ (function () {\n function AppenderWrapper(appender, _config) {\n this._config = _config;\n this._appender = new appender(_config.config);\n this._appender.setLayout(_config.layout);\n this._isPassThrough = (!_config || !_config.filters || _config.filters.length === 0);\n if (!this._isPassThrough) {\n this._filters = _config.filters.map(function (value) {\n return {\n filter: (value.filter instanceof Function) ? new value.filter(value.config) :\n new (filter_1.getFilter(value.filter))(value.config),\n config: value.config,\n onMatch: value.onMatch,\n onMismatch: value.onMismatch\n };\n });\n }\n else {\n this._filters = [];\n }\n }\n Object.defineProperty(AppenderWrapper.prototype, \"appender\", {\n get: function () {\n return this._appender;\n },\n enumerable: true,\n configurable: true\n });\n AppenderWrapper.prototype.append = function (event) {\n if (this.isMatch(event)) {\n this._appender.append(event);\n }\n };\n AppenderWrapper.prototype.isMatch = function (event) {\n return this._isPassThrough || this._isMatch(event);\n };\n AppenderWrapper.prototype._isMatch = function (event) {\n var item;\n var count = this._filters.length;\n for (var i = 0; i < count; i++) {\n item = this._filters[i];\n if (!item.filter.isMatch(event)) {\n if (item.onMismatch === log_filter_action_1.LogFilterAction.DENY) {\n return false;\n }\n else if (item.onMismatch === log_filter_action_1.LogFilterAction.ALLOW) {\n return true;\n }\n }\n else {\n if (item.onMatch === log_filter_action_1.LogFilterAction.DENY) {\n return false;\n }\n else if (item.onMatch === log_filter_action_1.LogFilterAction.ALLOW) {\n return true;\n }\n }\n }\n return true;\n };\n return AppenderWrapper;\n}());\nexports.AppenderWrapper = AppenderWrapper;\n","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar log_level_1 = require(\"../const/log.level\");\nvar utility_1 = require(\"../util/utility\");\nvar date_formatter_1 = require(\"./date.formatter\");\n/**\n * @function\n * @memberOf formatter\n *\n * @param {string} layout\n * @param {ILogEvent} logEvent\n *\n * @return {string}\n */\nfunction format(layout, logEvent) {\n return _formatLogEvent(_getCompiledLayout(layout), logEvent);\n}\nexports.format = format;\n/** @type {Map} */\nvar _compiledLayouts = new Map();\nvar _formatters = {\n 'c|logger': _formatLogger,\n 'd|date': _formatDate,\n 'ex|exception|throwable': _formatException,\n 'F|file': _formatFile,\n 'K|map|MAP': _formatMapMessage,\n 'L|line': _formatLineNumber,\n 'column': _formatColumn,\n 'm|msg|message': _formatLogMessage,\n 'M|method': _formatMethodName,\n 'marker': _formatMarker,\n 'markerSimpleName': _formatMarkerSimple,\n 'n': _formatLineSeparator,\n 'p|level': _formatLevel,\n 'r|relative': _formatRelative,\n 'sn|sequenceNumber': _formatSequenceNumber\n};\n/**\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n *\n * @return {string}\n */\nfunction _formatLogger(logEvent) {\n return logEvent.logger;\n}\n/**\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n * @param {Array.} params\n *\n * @return {string}\n */\nfunction _formatDate(logEvent, params) {\n return date_formatter_1.formatDate(logEvent.date, date_formatter_1.DateTimeFormat[params[0]] || params[0]);\n}\n/**\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n *\n * @return {string}\n */\nfunction _formatException(logEvent) {\n var message = '';\n if (logEvent.error != null) {\n if (logEvent.error.stack) {\n var stacks = logEvent.error.stack.split(/\\n/g);\n message += stacks.reduce(function (accumulator, value) { return accumulator + (\"\\t\" + value + \"\\n\"); });\n }\n else if (logEvent.error.message != null && logEvent.error.message !== '') {\n message += \"\\t\" + logEvent.error.name + \": \" + logEvent.error.message + \"\\n\";\n }\n }\n return message;\n}\n/**\n * Formats the file (e.g. test.js) to the file\n *\n * @private\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n */\nfunction _formatFile(logEvent) {\n if (!logEvent.file) {\n _getFileDetails(logEvent);\n }\n return logEvent.file;\n}\n/**\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n *\n * @return {string}\n */\nfunction _formatLineNumber(logEvent) {\n if (!logEvent.lineNumber) {\n _getFileDetails(logEvent);\n }\n return \"\" + logEvent.lineNumber;\n}\n/**\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n *\n * @return {string}\n */\nfunction _formatColumn(logEvent) {\n if (!logEvent.column) {\n _getFileDetails(logEvent);\n }\n return \"\" + logEvent.column;\n}\n/**\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n * @param {Array.} params\n *\n * @return {string}\n */\nfunction _formatMapMessage(logEvent, params) {\n var message = null;\n if (logEvent.properties) {\n message = [];\n for (var key in logEvent.properties) {\n if (params[0]) {\n if (params[0] === key) {\n message.push(logEvent.properties[key]);\n }\n }\n else {\n message.push('{' + key + ',' + logEvent.properties[key] + '}');\n }\n }\n return '{' + message.join(',') + '}';\n }\n return message;\n}\n/**\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n *\n * @return {string}\n */\nfunction _formatLogMessage(logEvent) {\n return logEvent.message;\n}\nfunction _formatMarkerFromEvent(marker) {\n if (marker.hasParents()) {\n var formatted = marker.getParents().map(function (parent) { return _formatMarkerFromEvent(parent); });\n return marker.name + \"[ \" + formatted + \" ]\";\n }\n else {\n return \"\" + marker.name;\n }\n}\n/**\n *\n * @private\n *\n * @param {ILogEvent} logEvent\n * @return {string}\n */\nfunction _formatMarker(logEvent) {\n return (logEvent.marker) ? _formatMarkerFromEvent(logEvent.marker) : '';\n}\n/**\n * Formats just the marker name (no parents)\n *\n * @private\n *\n * @param {ILogEvent} logEvent\n * @return {string}\n */\nfunction _formatMarkerSimple(logEvent) {\n return (logEvent.marker) ? logEvent.marker.name : '';\n}\n/**\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n *\n * @return {string}\n */\nfunction _formatMethodName(logEvent) {\n return utility_1.getFunctionName(logEvent.method);\n}\n/**\n * @private\n * @function\n * @memberOf formatter\n */\nfunction _formatLineSeparator() {\n return '\\n';\n}\n/**\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n *\n * @return {string}\n */\nfunction _formatLevel(logEvent) {\n switch (logEvent.level) {\n case log_level_1.LogLevel.FATAL:\n return 'FATAL';\n case log_level_1.LogLevel.ERROR:\n return 'ERROR';\n case log_level_1.LogLevel.WARN:\n return 'WARN';\n case log_level_1.LogLevel.INFO:\n return 'INFO';\n case log_level_1.LogLevel.DEBUG:\n return 'DEBUG';\n case log_level_1.LogLevel.TRACE:\n default:\n return 'TRACE';\n }\n}\n/**\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n *\n * @return {string}\n */\nfunction _formatRelative(logEvent) {\n return '' + logEvent.relative;\n}\n/**\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n *\n * @return {string}\n */\nfunction _formatSequenceNumber(logEvent) {\n return '' + logEvent.sequence;\n}\n/**\n * Get the compiled layout for the specified layout string. If the compiled layout does not\n * exist, then we want to create it.\n *\n * @function\n * @memberOf formatter\n *\n * @param {string} layout\n *\n * @return {Array.}\n */\nfunction _getCompiledLayout(layout) {\n if (_compiledLayouts.has(layout)) {\n return _compiledLayouts.get(layout);\n }\n return _compileLayout(layout);\n}\n/**\n * Compiles a layout into an array. The array contains functions\n *\n * @function\n * @memberOf formatter\n *\n * @param {string} layout\n *\n * @return {Array.}\n */\nfunction _compileLayout(layout) {\n var formatArray = layout.match(/(%\\w+({[\\w-]+}|)|.)/g)\n .map(function (value) { return _getFormatterObject(value); });\n // set the format array to the specified compiled layout\n _compiledLayouts.set(layout, formatArray);\n return formatArray;\n}\n/**\n * @function\n * @memberOf formatter\n *\n * @param {string} formatString\n *\n * @return {Object|string}\n */\nfunction _getFormatterObject(formatString) {\n var result = /%(\\w+)(?:{([\\w-]+)})*/g.exec(formatString);\n if (result == null) {\n return formatString;\n }\n else if (result.length < 3) {\n return {\n formatter: _getFormatterFunction(result[1]),\n params: []\n };\n }\n else {\n var formatter = _getFormatterFunction(result[1]);\n if (!formatter) {\n return null;\n }\n var params = _getLayoutTagParams(result[2]);\n return {\n formatter: formatter,\n params: params\n };\n }\n}\n/**\n * Determines what formatter function has been configured\n *\n * @function\n * @memberOf formatter\n *\n * @param {string} command\n *\n * @return {?string}\n */\nfunction _getFormatterFunction(command) {\n var regex;\n for (var key in _formatters) {\n if (_formatters.hasOwnProperty(key)) {\n regex = new RegExp('^(' + key + ')$');\n if (regex.exec(command)) {\n return _formatters[key];\n }\n }\n }\n return null;\n}\n/**\n * Gets the layout tag params associated with the layout tag. So, for example, '%d{yyyy-MM-dd}`\n * would output an array of ['yyyy-MM-dd']\n *\n * @private\n * @function\n *\n * @param {string} command\n *\n * @return {Array.}\n */\nfunction _getLayoutTagParams(command) {\n return (command) ? command.split(',') : [];\n}\n/**\n * Handles formatting the log event using the specified formatter array\n *\n * @private\n * @function\n *\n * @param {Array.} formatter\n * @param {ILogEvent} logEvent\n *\n * @return {string}\n */\nfunction _formatLogEvent(formatter, logEvent) {\n var response;\n var message = '';\n var count = formatter.length;\n for (var i = 0; i < count; i++) {\n if (formatter[i] !== null) {\n if (formatter[i] instanceof Object) {\n response = formatter[i].formatter(logEvent, formatter[i].params);\n if (response != null) {\n message += response;\n }\n }\n else {\n message += formatter[i];\n }\n }\n }\n return message.trim();\n}\n/**\n *\n * @private\n * @function\n * @memberOf formatter\n *\n * @param {ILogEvent} logEvent\n */\nfunction _getFileDetails(logEvent) {\n if (logEvent.logErrorStack) {\n var parts = logEvent.logErrorStack.stack.split(/\\n/g);\n var file = parts[3];\n file = file.replace(/at (.*\\(|)(file|http|https|)(:|)(\\/|)*/, '');\n file = file.replace(')', '');\n file = file.replace((typeof location !== 'undefined') ? location.host : '', '').trim();\n var fileParts = file.split(/:/g);\n logEvent.column = fileParts.pop();\n logEvent.lineNumber = fileParts.pop();\n if (typeof define !== 'undefined') {\n var path = require('path');\n var appDir = path.dirname(require.main.filename);\n if (!fileParts[0] || !fileParts[0].startsWith(appDir)) {\n appDir = '';\n }\n logEvent.filename = fileParts.join(':').replace(appDir, '').replace(/^([\\\\\\/])/, '');\n }\n else {\n logEvent.filename = fileParts.join(':');\n }\n }\n else {\n logEvent.column = '?';\n logEvent.filename = 'anonymous';\n logEvent.lineNumber = '?';\n }\n logEvent.file = logEvent.filename;\n}\n","// tslint:disable:bool-param-default\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// tslint:disable-next-line\nvar TIMEZONE = /\\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\\d{4})?)\\b/g;\nvar TIMEZONE_CLIP = /[^-+\\dA-Z]/g;\n/**\n * Pads numbers in the date format\n *\n * @param {string|number} value\n * @param {number} length\n * @param {string} character\n *\n * @returns {string} the padded string\n */\nexports.padLeft = function (value, length, character) {\n if (character === void 0) { character = ' '; }\n var strValue = String(value);\n while (strValue.length < length) {\n strValue = character + strValue;\n }\n return strValue;\n};\nvar DateTimeFormat;\n(function (DateTimeFormat) {\n DateTimeFormat[\"DEFAULT\"] = \"yyyy-MM-dd HH:mm:ss,S\";\n DateTimeFormat[\"ABSOLUTE\"] = \"HH:mm:ss,S\";\n DateTimeFormat[\"COMPACT\"] = \"yyyyMMddHHmmssS\";\n DateTimeFormat[\"DATE\"] = \"dd MMM yyyy HH:mm:ss,S\";\n DateTimeFormat[\"ISO8601\"] = \"yyyy-MM-ddTHH:mm:ss,S\";\n DateTimeFormat[\"ISO8601_BASIC\"] = \"yyyyMMddTHHmmss,S\";\n})(DateTimeFormat = exports.DateTimeFormat || (exports.DateTimeFormat = {}));\nvar _i18n = {\n d: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sunday', 'Monday',\n 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n m: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec', 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar _maskStore = {};\nvar _flags = {\n d: function (date) { return date.getDate(); },\n dd: function (date) { return exports.padLeft(date.getDate(), 2, '0'); },\n ddd: function (date) { return _i18n.d[date.getDay()]; },\n dddd: function (date) { return _i18n.d[date.getDay() + 7]; },\n M: function (date) { return date.getMonth() + 1; },\n MM: function (date) { return exports.padLeft(date.getMonth() + 1, 2, '0'); },\n MMM: function (date) { return _i18n.m[date.getMonth()]; },\n MMMM: function (date) { return _i18n.m[date.getMonth() + 12]; },\n yy: function (date, isUTC) { return String(isUTC ? date.getFullYear() : date.getUTCFullYear()).slice(2); },\n yyyy: function (date, isUTC) { return isUTC ? date.getFullYear() : date.getUTCFullYear(); },\n h: function (date) { return date.getHours() % 12 || 12; },\n hh: function (date) { return exports.padLeft(date.getHours() % 12 || 12, 2, '0'); },\n H: function (date) { return date.getHours(); },\n HH: function (date) { return exports.padLeft(date.getHours(), 2, '0'); },\n m: function (date) { return date.getMinutes(); },\n mm: function (date) { return exports.padLeft(date.getMinutes(), 2, '0'); },\n s: function (date) { return date.getSeconds(); },\n ss: function (date) { return exports.padLeft(date.getSeconds(), 2, '0'); },\n S: function (date) { return exports.padLeft(date.getMilliseconds(), 1); },\n a: function (date) { return date.getHours() < 12 ? 'a' : 'p'; },\n aa: function (date) { return date.getHours() < 12 ? 'am' : 'pm'; },\n A: function (date) { return date.getHours() < 12 ? 'A' : 'P'; },\n AA: function (date) { return date.getHours() < 12 ? 'AM' : 'PM'; },\n Z: function (date, isUTC) { return isUTC ? 'UTC' : (String(date).match(TIMEZONE)).pop().replace(TIMEZONE_CLIP, ''); },\n o: function (date, isUTC) {\n var offset = isUTC ? 0 : date.getTimezoneOffset();\n return (offset > 0 ? '-' : '+') + exports.padLeft(Math.floor(Math.abs(offset) / 60) * 100 + Math.abs(offset) % 60, 4, '0');\n }\n};\nfunction _createMask(mask) {\n if (_maskStore[mask] instanceof Array) {\n return _maskStore[mask];\n }\n var formatMap = [];\n var regex = /(.)\\1+|(.)/;\n var maskStr = mask;\n var match;\n var value;\n // tslint:disable-next-line:no-conditional-assignment\n while (match = maskStr.match(regex)) {\n value = match[0];\n formatMap.push(_flags[value] || value);\n maskStr = maskStr.substring(value.length);\n }\n _maskStore[mask] = formatMap;\n return formatMap;\n}\n/**\n * Converts a date to a formatted string\n * @param {Date | string | number} date\n * @param {string} mask\n * @returns {string}\n */\nexports.formatDate = function (date, mask) {\n if (!(date instanceof Date)) {\n date = new Date(date);\n }\n mask = String(mask || DateTimeFormat.DEFAULT);\n var isUTC = (mask.slice(0, 4) === 'UTC:');\n if (isUTC) {\n mask = mask.slice(4);\n }\n return _createMask(mask).map(function (value) {\n return value instanceof Function ? value(date, isUTC) : value;\n }).join('');\n};\n","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar appender_1 = require(\"../appender\");\nvar logger_1 = require(\"./logger\");\n/**\n * The name of the main logger. We use this in case no logger is specified\n * @const\n */\nexports.MAIN_LOGGER = 'main';\n/**\n *\n */\nvar _loggers = new Map();\nexports.addLogger = function (tag, logger) {\n _loggers.set(tag, logger);\n};\n/**\n * Handles creating the logger and returning it\n *\n * @function\n *\n * @param {function|string=} context\n * @param {ILoggerConfiguration} config\n * @return {Logger}\n */\nexports.getLogger = function (context, config) {\n if (_loggers.has(context)) {\n return _loggers.get(context);\n }\n else {\n var appenders = appender_1.getLoggerAppenderInstances(config.appenders)\n .map(function (appenderWrapper) {\n appenderWrapper.appender.setLogLevel(config.level);\n appenderWrapper.appender.setLayout(config.layout);\n return appenderWrapper;\n });\n return new logger_1.Logger(context, appenders);\n }\n};\n","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar __1 = require(\"../\");\nrequire(\"reflect-metadata\");\nvar logMarker = Symbol('logMarker');\n/**\n * Sets the marker for the @Log decorator\n *\n * @constructor\n *\n * @param {Marker} marker\n */\nfunction LogMarker(marker) {\n return function (target, key) {\n Reflect.defineMetadata(logMarker, marker, target, key);\n };\n}\nexports.LogMarker = LogMarker;\n/**\n * Log an error on function entry\n *\n * @constructor\n *\n * @param {LogLevel} level\n * @param {string} message\n * @param {any[]} options\n *\n * @returns {Function}\n */\nfunction Log(level, message) {\n var options = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n options[_i - 2] = arguments[_i];\n }\n return function (target, key, descriptor) {\n var originalMethod = descriptor.value;\n descriptor.value = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var marker = Reflect.getOwnMetadata(logMarker, target, key);\n var logger = __1.getLogger(target);\n if (marker) {\n logger.log.apply(logger, [level, marker, message].concat(options));\n }\n else {\n logger.log.apply(logger, [level, message].concat(options));\n }\n return originalMethod.call(this, args);\n };\n return descriptor;\n };\n}\nexports.Log = Log;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar filter_1 = require(\"../decorator/filter\");\nvar log_filter_1 = require(\"./log.filter\");\nvar MarkerFilter = /** @class */ (function (_super) {\n __extends(MarkerFilter, _super);\n function MarkerFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Checks to see if the marker matches the filter configuration\n *\n * @param {ILogEvent} logEvent\n */\n MarkerFilter.prototype.isMatch = function (logEvent) {\n if (!logEvent.marker) {\n return false;\n }\n else {\n return logEvent.marker.name === this.configuration.marker || this._isParentMarkerMatch(logEvent.marker);\n }\n };\n /**\n * Checks if the parent markers match the filter criteria\n *\n * @private\n *\n * @param {Marker} marker\n * @return {boolean}\n */\n MarkerFilter.prototype._isParentMarkerMatch = function (marker) {\n var _this = this;\n if (!marker.hasParents()) {\n return false;\n }\n else {\n return marker.getParents().every(function (parent) {\n return (parent.name === _this.configuration.marker || _this._isParentMarkerMatch(parent));\n });\n }\n };\n MarkerFilter = __decorate([\n filter_1.Filter('Marker')\n ], MarkerFilter);\n return MarkerFilter;\n}(log_filter_1.LogFilter));\nexports.MarkerFilter = MarkerFilter;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar filter_1 = require(\"../decorator/filter\");\nvar log_filter_1 = require(\"./log.filter\");\nvar ThresholdFilter = /** @class */ (function (_super) {\n __extends(ThresholdFilter, _super);\n function ThresholdFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ThresholdFilter.prototype.isMatch = function (logEvent) {\n return logEvent.level <= this.configuration.level;\n };\n ThresholdFilter = __decorate([\n filter_1.Filter('Threshold')\n ], ThresholdFilter);\n return ThresholdFilter;\n}(log_filter_1.LogFilter));\nexports.ThresholdFilter = ThresholdFilter;\n","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v0.7.31\n Copyright © 2012-2021 Faisal Salman \n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.31',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 255;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /\\bqbcore\\/([\\w\\.]+)/i // WeChat Desktop for Windows Built-in Browser\n ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /yabrowser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 '+BROWSER]], [\n /(oculus|samsung|sailfish)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish Browser\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/Baidu App/2345 Browser\n ], [NAME, VERSION], [\n /(metasr)[\\/ ]?([\\w\\.]+)/i, // SouGouBrowser\n /(lbbrowser)/i // LieBao Browser\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(chromium|instagram)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w\\.]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, VERSION]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n // Ordered by popularity\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[pt]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /\\((ip(?:hone|od)[\\w ]*);/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}-[atu]?[ln][01259x][012359][an]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+)(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[12]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ ([c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi)( bui|\\))/i, // Kindle Fire without Silk\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w ]*; *(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( 2)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows) nt 6\\.2; (arm)/i, // Windows RT\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i, // Windows Phone\n /(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+ ([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _ua = ua || ((typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser.major = majorize(_browser.version);\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","import unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","function __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"reflect-metadata\");\n__export(require(\"./log4js\"));\nvar logger_1 = require(\"./logger/logger\");\nexports.Logger = logger_1.Logger;\nvar log_level_1 = require(\"./const/log.level\");\nexports.LogLevel = log_level_1.LogLevel;\nvar log_appender_1 = require(\"./appender/log.appender\");\nexports.LogAppender = log_appender_1.LogAppender;\nvar console_appender_1 = require(\"./appender/console.appender\");\nexports.ConsoleAppender = console_appender_1.ConsoleAppender;\nvar marker_1 = require(\"./marker\");\nexports.Marker = marker_1.Marker;\nvar appender_1 = require(\"./decorator/appender\");\nexports.Appender = appender_1.Appender;\nvar filter_1 = require(\"./decorator/filter\");\nexports.Filter = filter_1.Filter;\nvar log_1 = require(\"./decorator/log\");\nexports.Log = log_1.Log;\nexports.LogMarker = log_1.LogMarker;\nvar log_filter_action_1 = require(\"./filter/log.filter.action\");\nexports.LogFilterAction = log_filter_action_1.LogFilterAction;\nvar log_filter_1 = require(\"./filter/log.filter\");\nexports.LogFilter = log_filter_1.LogFilter;\nvar marker_filter_1 = require(\"./filter/marker.filter\");\nexports.MarkerFilter = marker_filter_1.MarkerFilter;\nvar threshold_filter_1 = require(\"./filter/threshold.filter\");\nexports.ThresholdFilter = threshold_filter_1.ThresholdFilter;\n","import { UAParser } from \"ua-parser-js\";\n\nclass UserAgentParser {\n\n public static getInstance() {\n if (!UserAgentParser.instance) {\n UserAgentParser.instance = new UserAgentParser();\n }\n return UserAgentParser.instance;\n }\n\n private static instance: UserAgentParser;\n private userAgentData: IUAParser.IResult;\n\n private constructor() {\n this.userAgentData = new UAParser().getResult();\n }\n\n public getUserAgentData(): IUAParser.IResult {\n return this.userAgentData;\n }\n\n}\n\nexport { UserAgentParser };\n","\nclass WasmDetection {\n\n public static getInstance() {\n if (!WasmDetection.instance) {\n WasmDetection.instance = new WasmDetection();\n }\n return WasmDetection.instance;\n }\n\n private static instance: WasmDetection;\n\n private simplewasm = Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00);\n\n public isWebAssemblySupported(): boolean {\n let supported = false;\n try {\n if (typeof WebAssembly === \"object\" && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(this.simplewasm);\n supported = module instanceof WebAssembly.Module\n && new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {\n supported = false;\n }\n return supported;\n }\n\n}\n\nexport { WasmDetection };\n","\nclass WebGlDetection {\n\n public static getInstance() {\n if (!WebGlDetection.instance) {\n WebGlDetection.instance = new WebGlDetection();\n }\n return WebGlDetection.instance;\n }\n\n private static instance: WebGlDetection;\n\n private static tmpCanvasElementId = \"canvas-for-webgl-check\";\n private static webglCtxAttributes: WebGLContextAttributes = { depth: true, premultipliedAlpha: false };\n\n public isWebGlSupported(): boolean {\n let supported = false;\n try {\n const canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"id\", WebGlDetection.tmpCanvasElementId);\n if (canvas) {\n const webglContext = this.getWebglContext(canvas, [\"webgl2\", \"webgl\", \"experimental-webgl\"]);\n if (webglContext) {\n supported = true;\n }\n }\n } catch (e) {\n supported = false;\n } finally {\n if (document) {\n const elementToRemove = document.getElementById(WebGlDetection.tmpCanvasElementId);\n if (elementToRemove) {\n elementToRemove.outerHTML = \"\";\n }\n }\n }\n return supported;\n }\n\n private getWebglContext(canvas: HTMLCanvasElement, webglContext: string[]): WebGLRenderingContext {\n let webglRenderingContext: any;\n for (const contextName of webglContext) {\n webglRenderingContext = canvas.getContext(contextName, WebGlDetection.webglCtxAttributes);\n if (webglRenderingContext) {\n break;\n }\n }\n return webglRenderingContext;\n }\n\n}\n\nexport { WebGlDetection };\n","declare global {\n // tslint:disable-next-line:interface-name\n interface Window { webkit: any; }\n}\n\nclass WebRtcDetection {\n\n public static getInstance() {\n if (!WebRtcDetection.instance) {\n WebRtcDetection.instance = new WebRtcDetection();\n }\n return WebRtcDetection.instance;\n }\n\n private static instance: WebRtcDetection;\n\n public isUserMediaSupported(): boolean {\n return this.isMediaDeviceAvailable() || this.isNativeBridgePresent();\n }\n\n public isVideoInputDeviceAvailable() {\n let videoInputDeviceAvailability: Promise;\n try {\n if (this.isMediaDeviceAvailable()) {\n videoInputDeviceAvailability = navigator.mediaDevices.enumerateDevices()\n .then((devices) => devices.some((device) => device.kind === \"videoinput\"));\n } else if (this.isNativeBridgePresent()) {\n videoInputDeviceAvailability = Promise.resolve(true);\n } else {\n videoInputDeviceAvailability = Promise.resolve(false);\n }\n } catch (e) {\n videoInputDeviceAvailability = Promise.resolve(false);\n }\n return videoInputDeviceAvailability;\n }\n\n private isMediaDeviceAvailable(): boolean {\n return (typeof navigator.mediaDevices === \"object\") && (typeof navigator.mediaDevices.getUserMedia === \"function\");\n }\n\n private isNativeBridgePresent(): boolean {\n return (\n // TODO do we need to create a vm-nativebridge module in order to centralise this check?\n typeof window.webkit === \"object\" &&\n typeof(window.webkit.messageHandlers) === \"object\" &&\n typeof(window.webkit.messageHandlers.startNativeCam) === \"object\"\n );\n }\n}\n\nexport { WebRtcDetection };\n","import { UserAgentParser } from \"./parser/UserAgentParser\";\nimport { WasmDetection } from \"./wasm/WasmDetection\";\nimport { WebGlDetection } from \"./webgl/WebGlDetection\";\nimport { WebRtcDetection } from \"./webrtc/WebRtcDetection\";\n\nclass DeviceDetection {\n\n private uaData: IUAParser.IResult;\n\n constructor() {\n this.uaData = UserAgentParser.getInstance().getUserAgentData();\n }\n\n public isAppleiOS13() {\n let isIOS13 = false;\n if (this.uaData.os && this.uaData.os.name && this.uaData.os.name === \"iOS\") {\n if (this.uaData.os.version && this.uaData.os.version.startsWith(\"13\")) {\n isIOS13 = true;\n // tslint:disable-next-line: no-console\n console.info(\"--- detected iOS 13 ---\");\n }\n } else if (this.isiPadOS()) {\n isIOS13 = true;\n // tslint:disable-next-line: no-console\n console.info(\"--- detected iPad 13 ---\");\n // tslint:disable-next-line: no-console\n console.warn(\"iPad OS detection is still a workaround, Apple does not use a specific UA for iPad\");\n }\n return isIOS13;\n }\n\n public isiOS(): boolean {\n return ((this.uaData.os && this.uaData.os.name && this.uaData.os.name === \"iOS\") || this.isiPadOS());\n }\n\n // Workaround for iPadOS which is currently not detectable via UA\n // https://github.com/faisalman/ua-parser-js/issues/387#issuecomment-579147248\n public isiPadOS() {\n const osName = (this.uaData.os && this.uaData.os.name && this.uaData.os.name) || undefined;\n const iPadOS = window.orientation !== undefined && osName === \"Mac OS\";\n return osName === \"iOS\" || iPadOS;\n }\n\n public getUserAgentData(): IUAParser.IResult {\n return this.uaData;\n }\n\n public isWebView(): boolean {\n let isWebView = false;\n if (this.uaData.os && this.uaData.os.name && this.uaData.os.name === \"iOS\") {\n if (this.uaData.engine && this.uaData.engine.name && this.uaData.engine.name === \"WebKit\") {\n if (this.uaData.browser && this.uaData.browser.name && this.uaData.browser.name === \"WebKit\") {\n isWebView = true;\n }\n }\n }\n return isWebView;\n }\n\n public isWebViewBrowser(): boolean {\n let isWebViewBrowser = false;\n if (this.uaData.os && this.uaData.os.name && this.uaData.os.name === \"iOS\") {\n if (this.uaData.engine && this.uaData.engine.name && this.uaData.engine.name === \"WebKit\") {\n if (this.uaData.browser && this.uaData.browser.name && this.uaData.browser.name !== \"Mobile Safari\") {\n isWebViewBrowser = true;\n }\n }\n }\n return isWebViewBrowser;\n }\n\n public isWebAssemblySupported(): boolean {\n return WasmDetection.getInstance().isWebAssemblySupported();\n }\n\n public isUserMediaSupported(): boolean {\n return WebRtcDetection.getInstance().isUserMediaSupported();\n }\n\n public isVideoInputDeviceAvailable() {\n return WebRtcDetection.getInstance().isVideoInputDeviceAvailable();\n }\n\n public isWebGlSupported() {\n return WebGlDetection.getInstance().isWebGlSupported();\n }\n\n}\n\nexport { DeviceDetection };\n","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeFunction from \"@babel/runtime/helpers/esm/isNativeFunction\";\nimport construct from \"@babel/runtime/helpers/esm/construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}"],"sourceRoot":""}