{"version":3,"sources":["libs/bowser.js"],"names":["name","definition","module","exports","define","amd","this","detect","ua","getFirstMatch","regex","match","length","getSecondMatch","result","iosdevice","toLowerCase","likeAndroid","test","android","nexusMobile","nexusTablet","chromeos","silk","sailfish","tizen","webos","windowsphone","windows","mac","linux","edgeVersion","versionIdentifier","tablet","mobile","xbox","opera","t","version","samsungBrowser","coast","yandexbrowser","ucbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","msedge","msie","chromeBook","chrome","vivaldi","seamonkey","firefox","firefoxos","phantom","slimer","blackberry","touchpad","bada","qupzilla","chromium","safari","googlebot","blink","webkit","gecko","ios","osVersion","replace","osversion","osMajorVersion","split","a","c","x","getVersionPrecision","map","arr","iterator","i","Array","prototype","call","push","compareVersions","versions","precision","Math","max","chunks","delta","join","chunk","reverse","isUnsupportedBrowser","minVersions","strictMode","_bowser","bowser","browser","hasOwnProperty","check","navigator","userAgent","browserList","browserItem","_detect"],"mappings":"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","file":"libs/bowser.min.js","sourcesContent":["/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n\n!function (name, definition) {\n if (typeof module != 'undefined' && module.exports) module.exports = definition()\n else if (typeof define == 'function' && define.amd) define(name, definition)\n else this[name] = definition()\n}('bowser', function () {\n /**\n * See useragents.js for examples of navigator.userAgent\n */\n\n var t = true\n\n function detect(ua) {\n\n function getFirstMatch(regex) {\n var match = ua.match(regex);\n return (match && match.length > 1 && match[1]) || '';\n }\n\n function getSecondMatch(regex) {\n var match = ua.match(regex);\n return (match && match.length > 1 && match[2]) || '';\n }\n\n var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase()\n , likeAndroid = /like android/i.test(ua)\n , android = !likeAndroid && /android/i.test(ua)\n , nexusMobile = /nexus\\s*[0-6]\\s*/i.test(ua)\n , nexusTablet = !nexusMobile && /nexus\\s*[0-9]+/i.test(ua)\n , chromeos = /CrOS/.test(ua)\n , silk = /silk/i.test(ua)\n , sailfish = /sailfish/i.test(ua)\n , tizen = /tizen/i.test(ua)\n , webos = /(web|hpw)os/i.test(ua)\n , windowsphone = /windows phone/i.test(ua)\n , samsungBrowser = /SamsungBrowser/i.test(ua)\n , windows = !windowsphone && /windows/i.test(ua)\n , mac = !iosdevice && !silk && /macintosh/i.test(ua)\n , linux = !android && !sailfish && !tizen && !webos && /linux/i.test(ua)\n , edgeVersion = getFirstMatch(/edge\\/(\\d+(\\.\\d+)?)/i)\n , versionIdentifier = getFirstMatch(/version\\/(\\d+(\\.\\d+)?)/i)\n , tablet = /tablet/i.test(ua)\n , mobile = !tablet && /[^-]mobi/i.test(ua)\n , xbox = /xbox/i.test(ua)\n , result\n\n if (/opera|opr|opios/i.test(ua)) {\n result = {\n name: 'Opera'\n , opera: t\n , version: versionIdentifier || getFirstMatch(/(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/SamsungBrowser/i.test(ua)) {\n result = {\n name: 'Samsung Internet for Android'\n , samsungBrowser: t\n , version: versionIdentifier || getFirstMatch(/(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/coast/i.test(ua)) {\n result = {\n name: 'Opera Coast'\n , coast: t\n , version: versionIdentifier || getFirstMatch(/(?:coast)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/yabrowser/i.test(ua)) {\n result = {\n name: 'Yandex Browser'\n , yandexbrowser: t\n , version: versionIdentifier || getFirstMatch(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/ucbrowser/i.test(ua)) {\n result = {\n name: 'UC Browser'\n , ucbrowser: t\n , version: getFirstMatch(/(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/mxios/i.test(ua)) {\n result = {\n name: 'Maxthon'\n , maxthon: t\n , version: getFirstMatch(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/epiphany/i.test(ua)) {\n result = {\n name: 'Epiphany'\n , epiphany: t\n , version: getFirstMatch(/(?:epiphany)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/puffin/i.test(ua)) {\n result = {\n name: 'Puffin'\n , puffin: t\n , version: getFirstMatch(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)\n }\n }\n else if (/sleipnir/i.test(ua)) {\n result = {\n name: 'Sleipnir'\n , sleipnir: t\n , version: getFirstMatch(/(?:sleipnir)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/k-meleon/i.test(ua)) {\n result = {\n name: 'K-Meleon'\n , kMeleon: t\n , version: getFirstMatch(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (windowsphone) {\n result = {\n name: 'Windows Phone'\n , windowsphone: t\n }\n if (edgeVersion) {\n result.msedge = t\n result.version = edgeVersion\n }\n else {\n result.msie = t\n result.version = getFirstMatch(/iemobile\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/msie|trident/i.test(ua)) {\n result = {\n name: 'Internet Explorer'\n , msie: t\n , version: getFirstMatch(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)\n }\n } else if (chromeos) {\n result = {\n name: 'Chrome'\n , chromeos: t\n , chromeBook: t\n , chrome: t\n , version: getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)\n }\n } else if (/chrome.+? edge/i.test(ua)) {\n result = {\n name: 'Microsoft Edge'\n , msedge: t\n , version: edgeVersion\n }\n }\n else if (/vivaldi/i.test(ua)) {\n result = {\n name: 'Vivaldi'\n , vivaldi: t\n , version: getFirstMatch(/vivaldi\\/(\\d+(\\.\\d+)?)/i) || versionIdentifier\n }\n }\n else if (sailfish) {\n result = {\n name: 'Sailfish'\n , sailfish: t\n , version: getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/seamonkey\\//i.test(ua)) {\n result = {\n name: 'SeaMonkey'\n , seamonkey: t\n , version: getFirstMatch(/seamonkey\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/firefox|iceweasel|fxios/i.test(ua)) {\n result = {\n name: 'Firefox'\n , firefox: t\n , version: getFirstMatch(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)\n }\n if (/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(ua)) {\n result.firefoxos = t\n }\n }\n else if (silk) {\n result = {\n name: 'Amazon Silk'\n , silk: t\n , version : getFirstMatch(/silk\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/phantom/i.test(ua)) {\n result = {\n name: 'PhantomJS'\n , phantom: t\n , version: getFirstMatch(/phantomjs\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/slimerjs/i.test(ua)) {\n result = {\n name: 'SlimerJS'\n , slimer: t\n , version: getFirstMatch(/slimerjs\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/blackberry|\\bbb\\d+/i.test(ua) || /rim\\stablet/i.test(ua)) {\n result = {\n name: 'BlackBerry'\n , blackberry: t\n , version: versionIdentifier || getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (webos) {\n result = {\n name: 'WebOS'\n , webos: t\n , version: versionIdentifier || getFirstMatch(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)\n };\n /touchpad\\//i.test(ua) && (result.touchpad = t)\n }\n else if (/bada/i.test(ua)) {\n result = {\n name: 'Bada'\n , bada: t\n , version: getFirstMatch(/dolfin\\/(\\d+(\\.\\d+)?)/i)\n };\n }\n else if (tizen) {\n result = {\n name: 'Tizen'\n , tizen: t\n , version: getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i) || versionIdentifier\n };\n }\n else if (/qupzilla/i.test(ua)) {\n result = {\n name: 'QupZilla'\n , qupzilla: t\n , version: getFirstMatch(/(?:qupzilla)[\\s\\/](\\d+(?:\\.\\d+)+)/i) || versionIdentifier\n }\n }\n else if (/chromium/i.test(ua)) {\n result = {\n name: 'Chromium'\n , chromium: t\n , version: getFirstMatch(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i) || versionIdentifier\n }\n }\n else if (/chrome|crios|crmo/i.test(ua)) {\n result = {\n name: 'Chrome'\n , chrome: t\n , version: getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (android) {\n result = {\n name: 'Android'\n , version: versionIdentifier\n }\n }\n else if (/safari|applewebkit/i.test(ua)) {\n result = {\n name: 'Safari'\n , safari: t\n }\n if (versionIdentifier) {\n result.version = versionIdentifier\n }\n }\n else if (iosdevice) {\n result = {\n name : iosdevice == 'iphone' ? 'iPhone' : iosdevice == 'ipad' ? 'iPad' : 'iPod'\n }\n // WTF: version is not part of user agent in web apps\n if (versionIdentifier) {\n result.version = versionIdentifier\n }\n }\n else if(/googlebot/i.test(ua)) {\n result = {\n name: 'Googlebot'\n , googlebot: t\n , version: getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i) || versionIdentifier\n }\n }\n else {\n result = {\n name: getFirstMatch(/^(.*)\\/(.*) /),\n version: getSecondMatch(/^(.*)\\/(.*) /)\n };\n }\n\n // set webkit or gecko flag for browsers based on these engines\n if (!result.msedge && /(apple)?webkit/i.test(ua)) {\n if (/(apple)?webkit\\/537\\.36/i.test(ua)) {\n result.name = result.name || \"Blink\"\n result.blink = t\n } else {\n result.name = result.name || \"Webkit\"\n result.webkit = t\n }\n if (!result.version && versionIdentifier) {\n result.version = versionIdentifier\n }\n } else if (!result.opera && /gecko\\//i.test(ua)) {\n result.name = result.name || \"Gecko\"\n result.gecko = t\n result.version = result.version || getFirstMatch(/gecko\\/(\\d+(\\.\\d+)?)/i)\n }\n\n // set OS flags for platforms that have multiple browsers\n if (!result.msedge && (android || result.silk)) {\n result.android = t\n } else if (iosdevice) {\n result[iosdevice] = t\n result.ios = t\n } else if (mac) {\n result.mac = t\n } else if (xbox) {\n result.xbox = t\n } else if (windows) {\n result.windows = t\n } else if (linux) {\n result.linux = t\n }\n\n // OS version extraction\n var osVersion = '';\n if (result.windowsphone) {\n osVersion = getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i);\n } else if (iosdevice) {\n osVersion = getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i);\n osVersion = osVersion.replace(/[_\\s]/g, '.');\n } else if (android) {\n osVersion = getFirstMatch(/android[ \\/-](\\d+(\\.\\d+)*)/i);\n } else if (result.webos) {\n osVersion = getFirstMatch(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i);\n } else if (result.blackberry) {\n osVersion = getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i);\n } else if (result.bada) {\n osVersion = getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i);\n } else if (result.tizen) {\n osVersion = getFirstMatch(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i);\n }\n if (osVersion) {\n result.osversion = osVersion;\n }\n\n // device type extraction\n var osMajorVersion = osVersion.split('.')[0];\n if (\n tablet\n || nexusTablet\n || iosdevice == 'ipad'\n || (android && (osMajorVersion == 3 || (osMajorVersion >= 4 && !mobile)))\n || result.silk\n ) {\n result.tablet = t\n } else if (\n mobile\n || iosdevice == 'iphone'\n || iosdevice == 'ipod'\n || android\n || nexusMobile\n || result.blackberry\n || result.webos\n || result.bada\n ) {\n result.mobile = t\n }\n\n // Graded Browser Support\n // http://developer.yahoo.com/yui/articles/gbs\n if (result.msedge ||\n (result.msie && result.version >= 10) ||\n (result.yandexbrowser && result.version >= 15) ||\n\t\t (result.vivaldi && result.version >= 1.0) ||\n (result.chrome && result.version >= 20) ||\n (result.samsungBrowser && result.version >= 4) ||\n (result.firefox && result.version >= 20.0) ||\n (result.safari && result.version >= 6) ||\n (result.opera && result.version >= 10.0) ||\n (result.ios && result.osversion && result.osversion.split(\".\")[0] >= 6) ||\n (result.blackberry && result.version >= 10.1)\n || (result.chromium && result.version >= 20)\n ) {\n result.a = t;\n }\n else if ((result.msie && result.version < 10) ||\n (result.chrome && result.version < 20) ||\n (result.firefox && result.version < 20.0) ||\n (result.safari && result.version < 6) ||\n (result.opera && result.version < 10.0) ||\n (result.ios && result.osversion && result.osversion.split(\".\")[0] < 6)\n || (result.chromium && result.version < 20)\n ) {\n result.c = t\n } else result.x = t\n\n return result\n }\n\n var bowser = detect(typeof navigator !== 'undefined' ? navigator.userAgent || '' : '')\n\n bowser.test = function (browserList) {\n for (var i = 0; i < browserList.length; ++i) {\n var browserItem = browserList[i];\n if (typeof browserItem=== 'string') {\n if (browserItem in bowser) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * Get version precisions count\n *\n * @example\n * getVersionPrecision(\"1.10.3\") // 3\n *\n * @param {string} version\n * @return {number}\n */\n function getVersionPrecision(version) {\n return version.split(\".\").length;\n }\n\n /**\n * Array::map polyfill\n *\n * @param {Array} arr\n * @param {Function} iterator\n * @return {Array}\n */\n function map(arr, iterator) {\n var result = [], i;\n if (Array.prototype.map) {\n return Array.prototype.map.call(arr, iterator);\n }\n for (i = 0; i < arr.length; i++) {\n result.push(iterator(arr[i]));\n }\n return result;\n }\n\n /**\n * Calculate browser version weight\n *\n * @example\n * compareVersions(['1.10.2.1', '1.8.2.1.90']) // 1\n * compareVersions(['1.010.2.1', '1.09.2.1.90']); // 1\n * compareVersions(['1.10.2.1', '1.10.2.1']); // 0\n * compareVersions(['1.10.2.1', '1.0800.2']); // -1\n *\n * @param {Array} versions versions to compare\n * @return {Number} comparison result\n */\n function compareVersions(versions) {\n // 1) get common precision for both versions, for example for \"10.0\" and \"9\" it should be 2\n var precision = Math.max(getVersionPrecision(versions[0]), getVersionPrecision(versions[1]));\n var chunks = map(versions, function (version) {\n var delta = precision - getVersionPrecision(version);\n\n // 2) \"9\" -> \"9.0\" (for precision = 2)\n version = version + new Array(delta + 1).join(\".0\");\n\n // 3) \"9.0\" -> [\"000000000\"\", \"000000009\"]\n return map(version.split(\".\"), function (chunk) {\n return new Array(20 - chunk.length).join(\"0\") + chunk;\n }).reverse();\n });\n\n // iterate in reverse order by reversed chunks array\n while (--precision >= 0) {\n // 4) compare: \"000000009\" > \"000000010\" = false (but \"9\" > \"10\" = true)\n if (chunks[0][precision] > chunks[1][precision]) {\n return 1;\n }\n else if (chunks[0][precision] === chunks[1][precision]) {\n if (precision === 0) {\n // all version chunks are same\n return 0;\n }\n }\n else {\n return -1;\n }\n }\n }\n\n /**\n * Check if browser is unsupported\n *\n * @example\n * bowser.isUnsupportedBrowser({\n * msie: \"10\",\n * firefox: \"23\",\n * chrome: \"29\",\n * safari: \"5.1\",\n * opera: \"16\",\n * phantom: \"534\"\n * });\n *\n * @param {Object} minVersions map of minimal version to browser\n * @param {Boolean} [strictMode = false] flag to return false if browser wasn't found in map\n * @param {String} [ua] user agent string\n * @return {Boolean}\n */\n function isUnsupportedBrowser(minVersions, strictMode, ua) {\n var _bowser = bowser;\n\n // make strictMode param optional with ua param usage\n if (typeof strictMode === 'string') {\n ua = strictMode;\n strictMode = void(0);\n }\n\n if (strictMode === void(0)) {\n strictMode = false;\n }\n if (ua) {\n _bowser = detect(ua);\n }\n\n var version = \"\" + _bowser.version;\n for (var browser in minVersions) {\n if (minVersions.hasOwnProperty(browser)) {\n if (_bowser[browser]) {\n // browser version and min supported version.\n return compareVersions([version, minVersions[browser]]) < 0;\n }\n }\n }\n\n return strictMode; // not found\n }\n\n /**\n * Check if browser is supported\n *\n * @param {Object} minVersions map of minimal version to browser\n * @param {Boolean} [strictMode = false] flag to return false if browser wasn't found in map\n * @param {String} [ua] user agent string\n * @return {Boolean}\n */\n function check(minVersions, strictMode, ua) {\n return !isUnsupportedBrowser(minVersions, strictMode, ua);\n }\n\n bowser.isUnsupportedBrowser = isUnsupportedBrowser;\n bowser.compareVersions = compareVersions;\n bowser.check = check;\n\n /*\n * Set our detect method to the main bowser object so we can\n * reuse it to test other user agents.\n * This is needed to implement future tests.\n */\n bowser._detect = detect;\n\n return bowser\n});\n"],"sourceRoot":"/source/"}