detect-features
Version:
Detect and report browser and hardware features.
1 lines • 29.6 kB
JavaScript
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define("DetectFeatures",[],r):"object"==typeof exports?exports.DetectFeatures=r():e.DetectFeatures=r()}("undefined"!=typeof self?self:this,function(){return function(e){function r(t){if(i[t])return i[t].exports;var n=i[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,r),n.l=!0,n.exports}var i={};return r.m=e,r.c=i,r.d=function(e,i,t){r.o(e,i)||Object.defineProperty(e,i,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(i,"a",i),i},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=0)}([function(e,r,i){"use strict";function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.log=!1,this.element=null,a(this,e);var r=Object(n.a)();this.log&&console.log(r),this.element&&this.element.appendChild(document.createTextNode(JSON.stringify(r,null,2)))}Object.defineProperty(r,"__esModule",{value:!0}),r.register=t;var n=i(1),a=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var i=arguments[r];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t])}return e}},function(e,r,i){"use strict";i.d(r,"a",function(){return v});var t=i(2),n=i(7),a=i(8),o=i(9),s=i(10),d=i(11),c=i(12),u=i(13),m=i(14),l=i(15),E=i(16),g=i(17),w=i(18),_=i(19),T=i(20),f=i(21),S=i(22),A=i(23),p=i(24),b=i(25),R=i(26),x=i(27),M=i(28),P=i(29),h=i(30),v=function(){return{browserFeatures:{browserType:t.a,isGamepadSupported:o.a,isIndexedDBSupported:s.a,isLocalStorageSupported:d.a,isPerformanceSupported:c.a,isRequestIdleCallbackSupported:u.a,isServiceWorkerSupported:m.a,isWebAssemblySupported:l.a,isWebAudioSupported:E.a,isWebGL2Supported:g.a,isWebGLSupported:w.a,isWebRTCSupported:_.a,isWebSocketSupported:T.a,isWebVRSupported:f.a,isWebWorkerSupported:S.a,isWebXRSupported:A.a,webGL2Features:n.a,webGLFeatures:a.a},browserSettings:{isCookieEnabled:p.a,isDoNotTrackEnabled:b.a},hardwareFeatures:{devicePixelRatio:R.a,endianness:x.a,screenSize:M.a.toString(),workerPoolSize:P.a,windowSize:h.a.toString()}}}},function(e,r,i){"use strict";var t=i(3),n=i.n(t);r.a=function(){var e=new n.a,r=e.getResult();return{browserEngineName:r.engine.name||"Unknown",browserEngineVersion:r.engine.version||"Unknown",browserName:r.browser.name||"Unknown",browserVersion:r.browser.version||"Unknown",deviceModel:r.device.model||"Unknown",deviceType:r.device.type||"Unknown",deviceVendor:r.device.vendor||"Unknown",operatingSystemName:r.os.name||"Unknown",operatingSystemVersion:r.os.version||"Unknown"}}()},function(e,r,i){(function(e){var t,n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(a,o){"use strict";var s="model",d="name",c="type",u="vendor",m="version",l="mobile",E="tablet",g={extend:function(e,r){var i={};for(var t in e)r[t]&&r[t].length%2==0?i[t]=r[t].concat(e[t]):i[t]=e[t];return i},has:function(e,r){return"string"==typeof e&&-1!==r.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()},major:function(e){return"string"===(void 0===e?"undefined":n(e))?e.replace(/[^\d\.]/g,"").split(".")[0]:void 0},trim:function(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},w={rgx:function(e,r){for(var i,t,a,o,s,d,c=0;c<r.length&&!s;){var u=r[c],m=r[c+1];for(i=t=0;i<u.length&&!s;)if(s=u[i++].exec(e))for(a=0;a<m.length;a++)d=s[++t],o=m[a],"object"===(void 0===o?"undefined":n(o))&&o.length>0?2==o.length?"function"==n(o[1])?this[o[0]]=o[1].call(this,d):this[o[0]]=o[1]:3==o.length?"function"!==n(o[1])||o[1].exec&&o[1].test?this[o[0]]=d?d.replace(o[1],o[2]):void 0:this[o[0]]=d?o[1].call(this,d,o[2]):void 0:4==o.length&&(this[o[0]]=d?o[3].call(this,d.replace(o[1],o[2])):void 0):this[o]=d||void 0;c+=2}},str:function(e,r){for(var i in r)if("object"===n(r[i])&&r[i].length>0){for(var t=0;t<r[i].length;t++)if(g.has(r[i][t],e))return"?"===i?void 0:i}else if(g.has(r[i],e))return"?"===i?void 0:i;return e}},_={browser:{oldsafari:{version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}}},device:{amazon:{model:{"Fire Phone":["SD","KF"]}},sprint:{model:{"Evo Shift 4G":"7373KT"},vendor:{HTC:"APA",Sprint:"Sprint"}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2000:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"}}}},T={browser:[[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],[d,m],[/(opios)[\/\s]+([\w\.]+)/i],[[d,"Opera Mini"],m],[/\s(opr)\/([\w\.]+)/i],[[d,"Opera"],m],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser)\/([\w\.-]+)/i],[d,m],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[[d,"IE"],m],[/(edge)\/((\d+)?[\w\.]+)/i],[d,m],[/(yabrowser)\/([\w\.]+)/i],[[d,"Yandex"],m],[/(puffin)\/([\w\.]+)/i],[[d,"Puffin"],m],[/((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i],[[d,"UCBrowser"],m],[/(comodo_dragon)\/([\w\.]+)/i],[[d,/_/g," "],m],[/(micromessenger)\/([\w\.]+)/i],[[d,"WeChat"],m],[/(QQ)\/([\d\.]+)/i],[d,m],[/m?(qqbrowser)[\/\s]?([\w\.]+)/i],[d,m],[/xiaomi\/miuibrowser\/([\w\.]+)/i],[m,[d,"MIUI Browser"]],[/;fbav\/([\w\.]+);/i],[m,[d,"Facebook"]],[/headlesschrome(?:\/([\w\.]+)|\s)/i],[m,[d,"Chrome Headless"]],[/\swv\).+(chrome)\/([\w\.]+)/i],[[d,/(.+)/,"$1 WebView"],m],[/((?:oculus|samsung)browser)\/([\w\.]+)/i],[[d,/(.+(?:g|us))(.+)/,"$1 $2"],m],[/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i],[m,[d,"Android Browser"]],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i],[d,m],[/(dolfin)\/([\w\.]+)/i],[[d,"Dolphin"],m],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[[d,"Chrome"],m],[/(coast)\/([\w\.]+)/i],[[d,"Opera Coast"],m],[/fxios\/([\w\.-]+)/i],[m,[d,"Firefox"]],[/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],[m,[d,"Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],[m,d],[/webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[[d,"GSA"],m],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[d,[m,w.str,_.browser.oldsafari.version]],[/(konqueror)\/([\w\.]+)/i,/(webkit|khtml)\/([\w\.]+)/i],[d,m],[/(navigator|netscape)\/([\w\.-]+)/i],[[d,"Netscape"],m],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i,/(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]+)*/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],[d,m]],cpu:[[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i],[["architecture","amd64"]],[/(ia32(?=;))/i],[["architecture",g.lowerize]],[/((?:i[346]|x)86)[;\)]/i],[["architecture","ia32"]],[/windows\s(ce|mobile);\sppc;/i],[["architecture","arm"]],[/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i],[["architecture",/ower/,"",g.lowerize]],[/(sun4\w)[;\)]/i],[["architecture","sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+;))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i],[["architecture",g.lowerize]]],device:[[/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i],[s,u,[c,E]],[/applecoremedia\/[\w\.]+ \((ipad)/],[s,[u,"Apple"],[c,E]],[/(apple\s{0,1}tv)/i],[[s,"Apple TV"],[u,"Apple"]],[/(archos)\s(gamepad2?)/i,/(hp).+(touchpad)/i,/(hp).+(tablet)/i,/(kindle)\/([\w\.]+)/i,/\s(nook)[\w\s]+build\/(\w+)/i,/(dell)\s(strea[kpr\s\d]*[\dko])/i],[u,s,[c,E]],[/(kf[A-z]+)\sbuild\/[\w\.]+.*silk\//i],[s,[u,"Amazon"],[c,E]],[/(sd|kf)[0349hijorstuw]+\sbuild\/[\w\.]+.*silk\//i],[[s,w.str,_.device.amazon.model],[u,"Amazon"],[c,l]],[/\((ip[honed|\s\w*]+);.+(apple)/i],[s,u,[c,l]],[/\((ip[honed|\s\w*]+);/i],[s,[u,"Apple"],[c,l]],[/(blackberry)[\s-]?(\w+)/i,/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]+)*/i,/(hp)\s([\w\s]+\w)/i,/(asus)-?(\w+)/i],[u,s,[c,l]],[/\(bb10;\s(\w+)/i],[s,[u,"BlackBerry"],[c,l]],[/android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone)/i],[s,[u,"Asus"],[c,E]],[/(sony)\s(tablet\s[ps])\sbuild\//i,/(sony)?(?:sgp.+)\sbuild\//i],[[u,"Sony"],[s,"Xperia Tablet"],[c,E]],[/android.+\s([c-g]\d{4}|so[-l]\w+)\sbuild\//i],[s,[u,"Sony"],[c,l]],[/\s(ouya)\s/i,/(nintendo)\s([wids3u]+)/i],[u,s,[c,"console"]],[/android.+;\s(shield)\sbuild/i],[s,[u,"Nvidia"],[c,"console"]],[/(playstation\s[34portablevi]+)/i],[s,[u,"Sony"],[c,"console"]],[/(sprint\s(\w+))/i],[[u,w.str,_.device.sprint.vendor],[s,w.str,_.device.sprint.model],[c,l]],[/(lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i],[u,s,[c,E]],[/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i,/(zte)-(\w+)*/i,/(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]+)*/i],[u,[s,/_/g," "],[c,l]],[/(nexus\s9)/i],[s,[u,"HTC"],[c,E]],[/d\/huawei([\w\s-]+)[;\)]/i,/(nexus\s6p)/i],[s,[u,"Huawei"],[c,l]],[/(microsoft);\s(lumia[\s\w]+)/i],[u,s,[c,l]],[/[\s\(;](xbox(?:\sone)?)[\s\);]/i],[s,[u,"Microsoft"],[c,"console"]],[/(kin\.[onetw]{3})/i],[[s,/\./g," "],[u,"Microsoft"],[c,l]],[/\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?(:?\s4g)?)[\w\s]+build\//i,/mot[\s-]?(\w+)*/i,/(XT\d{3,4}) build\//i,/(nexus\s6)/i],[s,[u,"Motorola"],[c,l]],[/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i],[s,[u,"Motorola"],[c,E]],[/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i],[[u,g.trim],[s,g.trim],[c,"smarttv"]],[/hbbtv.+maple;(\d+)/i],[[s,/^/,"SmartTV"],[u,"Samsung"],[c,"smarttv"]],[/\(dtv[\);].+(aquos)/i],[s,[u,"Sharp"],[c,"smarttv"]],[/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i,/((SM-T\w+))/i],[[u,"Samsung"],s,[c,E]],[/smart-tv.+(samsung)/i],[u,[c,"smarttv"],s],[/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i,/(sam[sung]*)[\s-]*(\w+-?[\w-]*)*/i,/sec-((sgh\w+))/i],[[u,"Samsung"],s,[c,l]],[/sie-(\w+)*/i],[s,[u,"Siemens"],[c,l]],[/(maemo|nokia).*(n900|lumia\s\d+)/i,/(nokia)[\s_-]?([\w-]+)*/i],[[u,"Nokia"],s,[c,l]],[/android\s3\.[\s\w;-]{10}(a\d{3})/i],[s,[u,"Acer"],[c,E]],[/android.+([vl]k\-?\d{3})\s+build/i],[s,[u,"LG"],[c,E]],[/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i],[[u,"LG"],s,[c,E]],[/(lg) netcast\.tv/i],[u,s,[c,"smarttv"]],[/(nexus\s[45])/i,/lg[e;\s\/-]+(\w+)*/i,/android.+lg(\-?[\d\w]+)\s+build/i],[s,[u,"LG"],[c,l]],[/android.+(ideatab[a-z0-9\-\s]+)/i],[s,[u,"Lenovo"],[c,E]],[/linux;.+((jolla));/i],[u,s,[c,l]],[/((pebble))app\/[\d\.]+\s/i],[u,s,[c,"wearable"]],[/android.+;\s(oppo)\s?([\w\s]+)\sbuild/i],[u,s,[c,l]],[/crkey/i],[[s,"Chromecast"],[u,"Google"]],[/android.+;\s(glass)\s\d/i],[s,[u,"Google"],[c,"wearable"]],[/android.+;\s(pixel c)\s/i],[s,[u,"Google"],[c,E]],[/android.+;\s(pixel xl|pixel)\s/i],[s,[u,"Google"],[c,l]],[/android.+(\w+)\s+build\/hm\1/i,/android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i,/android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d\w)?)\s+build/i,/android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+)?)\s+build/i],[[s,/_/g," "],[u,"Xiaomi"],[c,l]],[/android.+(mi[\s\-_]*(?:pad)?(?:[\s_]*[\w\s]+)?)\s+build/i],[[s,/_/g," "],[u,"Xiaomi"],[c,E]],[/android.+;\s(m[1-5]\snote)\sbuild/i],[s,[u,"Meizu"],[c,E]],[/android.+a000(1)\s+build/i],[s,[u,"OnePlus"],[c,l]],[/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i],[s,[u,"RCA"],[c,E]],[/android.+[;\/]\s*(Venue[\d\s]*)\s+build/i],[s,[u,"Dell"],[c,E]],[/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i],[s,[u,"Verizon"],[c,E]],[/android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i],[[u,"Barnes & Noble"],s,[c,E]],[/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i],[s,[u,"NuVision"],[c,E]],[/android.+[;\/]\s*(zte)?.+(k\d{2})\s+build/i],[[u,"ZTE"],s,[c,E]],[/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i],[s,[u,"Swiss"],[c,l]],[/android.+[;\/]\s*(zur\d{3})\s+build/i],[s,[u,"Swiss"],[c,E]],[/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i],[s,[u,"Zeki"],[c,E]],[/(android).+[;\/]\s+([YR]\d{2}x?.*)\s+build/i,/android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(.+)\s+build/i],[[u,"Dragon Touch"],s,[c,E]],[/android.+[;\/]\s*(NS-?.+)\s+build/i],[s,[u,"Insignia"],[c,E]],[/android.+[;\/]\s*((NX|Next)-?.+)\s+build/i],[s,[u,"NextBook"],[c,E]],[/android.+[;\/]\s*(Xtreme\_?)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i],[[u,"Voice"],s,[c,l]],[/android.+[;\/]\s*(LVTEL\-?)?(V1[12])\s+build/i],[[u,"LvTel"],s,[c,l]],[/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i],[s,[u,"Envizen"],[c,E]],[/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(.*\b)\s+build/i],[u,s,[c,E]],[/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i],[s,[u,"MachSpeed"],[c,E]],[/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i],[u,s,[c,E]],[/android.+[;\/]\s*TU_(1491)\s+build/i],[s,[u,"Rotor"],[c,E]],[/android.+(KS(.+))\s+build/i],[s,[u,"Amazon"],[c,E]],[/android.+(Gigaset)[\s\-]+(Q.+)\s+build/i],[u,s,[c,E]],[/\s(tablet|tab)[;\/]/i,/\s(mobile)(?:[;\/]|\ssafari)/i],[[c,g.lowerize],u,s],[/(android.+)[;\/].+build/i],[s,[u,"Generic"]]],engine:[[/windows.+\sedge\/([\w\.]+)/i],[m,[d,"EdgeHTML"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[d,m],[/rv\:([\w\.]+).*(gecko)/i],[m,d]],os:[[/microsoft\s(windows)\s(vista|xp)/i],[d,m],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s]+\w)*/i,/(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],[d,[m,w.str,_.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[d,"Windows"],[m,w.str,_.os.windows.version]],[/\((bb)(10);/i],[[d,"BlackBerry"],m],[/(blackberry)\w*\/?([\w\.]+)*/i,/(tizen)[\/\s]([\w\.]+)/i,/(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i,/linux;.+(sailfish);/i],[d,m],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[[d,"Symbian"],m],[/\((series40);/i],[d],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[d,"Firefox OS"],m],[/(nintendo|playstation)\s([wids34portablevu]+)/i,/(mint)[\/\s\(]?(\w+)*/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],[d,m],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[d,"Chromium OS"],m],[/(sunos)\s?([\w\.]+\d)*/i],[[d,"Solaris"],m],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],[d,m],[/(haiku)\s(\w+)/i],[d,m],[/cfnetwork\/.+darwin/i,/ip[honead]+(?:.*os\s([\w]+)\slike\smac|;\sopera)/i],[[m,/_/g,"."],[d,"iOS"]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i,/(macintosh|mac(?=_powerpc)\s)/i],[[d,"Mac OS"],[m,/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]+)*/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i,/(unix)\s?([\w\.]+)*/i],[d,m]]},f=function e(r,i){if("object"===(void 0===r?"undefined":n(r))&&(i=r,r=void 0),!(this instanceof e))return new e(r,i).getResult();var t=r||(a&&a.navigator&&a.navigator.userAgent?a.navigator.userAgent:""),o=i?g.extend(T,i):T;return this.getBrowser=function(){var e={name:void 0,version:void 0};return w.rgx.call(e,t,o.browser),e.major=g.major(e.version),e},this.getCPU=function(){var e={architecture:void 0};return w.rgx.call(e,t,o.cpu),e},this.getDevice=function(){var e={vendor:void 0,model:void 0,type:void 0};return w.rgx.call(e,t,o.device),e},this.getEngine=function(){var e={name:void 0,version:void 0};return w.rgx.call(e,t,o.engine),e},this.getOS=function(){var e={name:void 0,version:void 0};return w.rgx.call(e,t,o.os),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return t},this.setUA=function(e){return t=e,this},this};f.VERSION="0.7.17",f.BROWSER={NAME:d,MAJOR:"major",VERSION:m},f.CPU={ARCHITECTURE:"architecture"},f.DEVICE={MODEL:s,VENDOR:u,TYPE:c,CONSOLE:"console",MOBILE:l,SMARTTV:"smarttv",TABLET:E,WEARABLE:"wearable",EMBEDDED:"embedded"},f.ENGINE={NAME:d,VERSION:m},f.OS={NAME:d,VERSION:m},"undefined"!==n(r)?("undefined"!==n(e)&&e.exports&&(r=e.exports=f),r.UAParser=f):"function"===n(i(5))&&i(6)?void 0!==(t=function(){return f}.call(r,i,r,e))&&(e.exports=t):a&&(a.UAParser=f);var S=a&&(a.jQuery||a.Zepto);if("undefined"!==(void 0===S?"undefined":n(S))){var A=new f;S.ua=A.getResult(),S.ua.get=function(){return A.getUA()},S.ua.set=function(e){A.setUA(e);var r=A.getResult();for(var i in r)S.ua[i]=r[i]}}}("object"===("undefined"==typeof window?"undefined":n(window))?window:this)}).call(r,i(4)(e))},function(e,r){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,r){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,r){(function(r){e.exports=r}).call(r,{})},function(e,r,i){"use strict";function t(e,r,i){return r in e?Object.defineProperty(e,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[r]=i,e}var n=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var i=arguments[r];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t])}return e};r.a=function(){var e={stencil:!0},r=document.createElement("canvas"),i=r.getContext("webgl2",e);if(!(i&&i instanceof WebGL2RenderingContext))return!1;var a=i.getExtension("WEBGL_debug_renderer_info");i.enable(i.STENCIL_TEST);var o=i.getExtension("EXT_texture_filter_anisotropic")||i.getExtension("WEBKIT_EXT_texture_filter_anisotropic")||i.getExtension("MOZ_EXT_texture_filter_anisotropic");return{base:{shaderVersion:i.getParameter(i.SHADING_LANGUAGE_VERSION),renderer:i.getParameter(i.RENDERER),rendererUnmasked:a&&i.getParameter(a.UNMASKED_RENDERER_WEBGL),vendor:i.getParameter(i.VENDOR),vendorUnmasked:a&&i.getParameter(a.UNMASKED_VENDOR_WEBGL),version:i.getParameter(i.VERSION)},general:{aliasedLineWidthRange:i.getParameter(i.ALIASED_LINE_WIDTH_RANGE).toString(),aliasedPointSizeRange:i.getParameter(i.ALIASED_POINT_SIZE_RANGE).toString(),alphaBits:i.getParameter(i.ALPHA_BITS),antialias:!!i.getContextAttributes().antialias,blueBits:i.getParameter(i.BLUE_BITS),depthBits:i.getParameter(i.DEPTH_BITS),greenBits:i.getParameter(i.GREEN_BITS),maxCombinedTextureImageUnits:i.getParameter(i.MAX_COMBINED_TEXTURE_IMAGE_UNITS),maxCubeMapTextureSize:i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE),maxFragmentUniformVectors:i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS),maxRenderBufferSize:i.getParameter(i.MAX_RENDERBUFFER_SIZE),maxTextureImageUnits:i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS),maxTextureSize:i.getParameter(i.MAX_TEXTURE_SIZE),maxVaryingVectors:i.getParameter(i.MAX_VARYING_VECTORS),maxVertexAttributes:i.getParameter(i.MAX_VERTEX_ATTRIBS),maxVertexTextureImageUnits:i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS),maxVertexUniformVectors:i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS),maxViewportDimensions:i.getParameter(i.MAX_VIEWPORT_DIMS).toString(),precision:{fragmentShaderHighPrecision:[i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).rangeMin,i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).rangeMax,i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision].toString(),fragmentShaderLowPrecision:[i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT).rangeMin,i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT).rangeMax,i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT).precision].toString(),fragmentShaderMediumPrecision:[i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).rangeMin,i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).rangeMax,i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).precision].toString(),vertexShaderHighPrecision:[i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT).rangeMin,i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT).rangeMax,i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT).precision].toString(),vertexShaderLowPrecision:[i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT).rangeMin,i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT).rangeMax,i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT).precision].toString(),vertexShaderMediumPrecision:[i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).rangeMin,i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).rangeMax,i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).precision].toString()},redBits:i.getParameter(i.RED_BITS),stencilBits:i.getParameter(i.STENCIL_BITS),subPixelBits:i.getParameter(i.SUBPIXEL_BITS)},extensions:{maxAnisotropy:o?i.getParameter(o.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,supportedExtensions:i.getSupportedExtensions().reduce(function(e,r){return n({},e,t({},r,!0))},{})},specific:{max3DTextureSize:i.getParameter(i.MAX_3D_TEXTURE_SIZE),maxArrayTextureLayers:i.getParameter(i.MAX_ARRAY_TEXTURE_LAYERS),maxClientWaitTimeout:i.getParameter(i.MAX_CLIENT_WAIT_TIMEOUT_WEBGL),maxColorAttachments:i.getParameter(i.MAX_COLOR_ATTACHMENTS),maxCombinedFragmentUniformComponents:i.getParameter(i.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS),maxCombinedVertexUniformComponents:i.getParameter(i.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS),maxCombinedUniformBlocks:i.getParameter(i.MAX_COMBINED_UNIFORM_BLOCKS),maxDrawBuffers:i.getParameter(i.MAX_DRAW_BUFFERS),maxElementIndex:i.getParameter(i.MAX_ELEMENT_INDEX),maxElementsIndices:i.getParameter(i.MAX_ELEMENTS_INDICES),maxElementsVertices:i.getParameter(i.MAX_ELEMENTS_VERTICES),maxFragmentInputComponents:i.getParameter(i.MAX_FRAGMENT_INPUT_COMPONENTS),maxFragmentUniformBlocks:i.getParameter(i.MAX_FRAGMENT_UNIFORM_BLOCKS),maxFragmentUniformComponents:i.getParameter(i.MAX_FRAGMENT_UNIFORM_COMPONENTS),maxProgramTexelOffset:i.getParameter(i.MAX_PROGRAM_TEXEL_OFFSET),maxSamples:i.getParameter(i.MAX_SAMPLES),maxServerWaitTimeout:i.getParameter(i.MAX_SERVER_WAIT_TIMEOUT),maxTextureLODBias:i.getParameter(i.MAX_TEXTURE_LOD_BIAS),maxTransformFeedbackInterleavedComponents:i.getParameter(i.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS),maxTransformFeedbackSeparateAttribs:i.getParameter(i.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS),maxTransformFeedbackSeparateComponents:i.getParameter(i.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS),maxUniformBlockSize:i.getParameter(i.MAX_UNIFORM_BLOCK_SIZE),maxUniformBufferBindings:i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS),maxVaryingComponents:i.getParameter(i.MAX_VARYING_COMPONENTS),maxVertexUniformBlocks:i.getParameter(i.MAX_VERTEX_UNIFORM_BLOCKS),maxVertexOutputComponents:i.getParameter(i.MAX_VERTEX_OUTPUT_COMPONENTS),maxVertexUniformComponents:i.getParameter(i.MAX_VERTEX_UNIFORM_COMPONENTS),minProgramTexelOffset:i.getParameter(i.MIN_PROGRAM_TEXEL_OFFSET),uniformBufferOffsetAlignment:i.getParameter(i.UNIFORM_BUFFER_OFFSET_ALIGNMENT)}}}()},function(e,r,i){"use strict";function t(e,r,i){return r in e?Object.defineProperty(e,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[r]=i,e}var n=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var i=arguments[r];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t])}return e};r.a=function(){var e={stencil:!0},r=document.createElement("canvas"),i=r.getContext("webgl",e)||r.getContext("experimental-webgl",e);if(!(i&&i instanceof WebGLRenderingContext))return!1;var a=i.getExtension("WEBGL_debug_renderer_info");i.enable(i.STENCIL_TEST);var o=i.getExtension("EXT_texture_filter_anisotropic")||i.getExtension("WEBKIT_EXT_texture_filter_anisotropic")||i.getExtension("MOZ_EXT_texture_filter_anisotropic"),s=i.getExtension("WEBGL_draw_buffers");return{base:{shaderVersion:i.getParameter(i.SHADING_LANGUAGE_VERSION),renderer:i.getParameter(i.RENDERER),rendererUnmasked:a&&i.getParameter(a.UNMASKED_RENDERER_WEBGL),vendor:i.getParameter(i.VENDOR),vendorUnmasked:a&&i.getParameter(a.UNMASKED_VENDOR_WEBGL),version:i.getParameter(i.VERSION)},general:{aliasedLineWidthRange:i.getParameter(i.ALIASED_LINE_WIDTH_RANGE).toString(),aliasedPointSizeRange:i.getParameter(i.ALIASED_POINT_SIZE_RANGE).toString(),alphaBits:i.getParameter(i.ALPHA_BITS),antialias:!!i.getContextAttributes().antialias,blueBits:i.getParameter(i.BLUE_BITS),depthBits:i.getParameter(i.DEPTH_BITS),greenBits:i.getParameter(i.GREEN_BITS),maxCombinedTextureImageUnits:i.getParameter(i.MAX_COMBINED_TEXTURE_IMAGE_UNITS),maxCubeMapTextureSize:i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE),maxFragmentUniformVectors:i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS),maxRenderBufferSize:i.getParameter(i.MAX_RENDERBUFFER_SIZE),maxTextureImageUnits:i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS),maxTextureSize:i.getParameter(i.MAX_TEXTURE_SIZE),maxVaryingVectors:i.getParameter(i.MAX_VARYING_VECTORS),maxVertexAttributes:i.getParameter(i.MAX_VERTEX_ATTRIBS),maxVertexTextureImageUnits:i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS),maxVertexUniformVectors:i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS),maxViewportDimensions:i.getParameter(i.MAX_VIEWPORT_DIMS).toString(),precision:{fragmentShaderHighPrecision:[i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).rangeMin,i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).rangeMax,i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision].toString(),fragmentShaderLowPrecision:[i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT).rangeMin,i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT).rangeMax,i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.LOW_FLOAT).precision].toString(),fragmentShaderMediumPrecision:[i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).rangeMin,i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).rangeMax,i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).precision].toString(),vertexShaderHighPrecision:[i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT).rangeMin,i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT).rangeMax,i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT).precision].toString(),vertexShaderLowPrecision:[i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT).rangeMin,i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT).rangeMax,i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.LOW_FLOAT).precision].toString(),vertexShaderMediumPrecision:[i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).rangeMin,i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).rangeMax,i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).precision].toString()},redBits:i.getParameter(i.RED_BITS),stencilBits:i.getParameter(i.STENCIL_BITS),subPixelBits:i.getParameter(i.SUBPIXEL_BITS)},extensions:{maxAnisotropy:o?i.getParameter(o.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,maxDrawBuffers:s?i.getParameter(s.MAX_DRAW_BUFFERS_WEBGL):0,supportedExtensions:i.getSupportedExtensions().reduce(function(e,r){return n({},e,t({},r,!0))},{})}}}()},function(e,r,i){"use strict";r.a=function(){return!!window.Gamepad||!1}()},function(e,r,i){"use strict";r.a=function(){return!!window.indexedDB||!1}()},function(e,r,i){"use strict";r.a=function(){return!!window.localStorage||!1}()},function(e,r,i){"use strict";r.a=function(){return!(!window.performance||!window.performance.now)||!1}()},function(e,r,i){"use strict";r.a=function(){return!!window.requestIdleCallback||!1}()},function(e,r,i){"use strict";r.a=function(){return!!navigator.serviceWorker||!1}()},function(e,r,i){"use strict";r.a=function(){return!!window.WebAssembly||!1}()},function(e,r,i){"use strict";r.a=function(){return!!window.AudioContext||!!window.webkitAudioContext||!1}()},function(e,r,i){"use strict";r.a=function(){var e=document.createElement("canvas"),r=e.getContext("webgl2");return r&&r instanceof WebGL2RenderingContext||!1}()},function(e,r,i){"use strict";r.a=function(){var e=document.createElement("canvas"),r=e.getContext("webgl")||e.getContext("experimental-webgl");return r&&r instanceof WebGLRenderingContext||!1}()},function(e,r,i){"use strict";r.a=function(){return!((!window.RTCPeerConnection||!window.RTCDataChannelEvent)&&!window.webkitRTCPeerConnection&&!window.mozRTCPeerConnection&&!window.msRTCPeerConnection&&!window.oRTCPeerConnection)}()},function(e,r,i){"use strict";r.a=function(){return!!window.WebSocket||!1}()},function(e,r,i){"use strict";r.a=function(){return!!navigator.getVRDisplays||!1}()},function(e,r,i){"use strict";r.a=function(){return!!window.Worker||!1}()},function(e,r,i){"use strict";r.a=function(){return!!navigator.xr||!1}()},function(e,r,i){"use strict";r.a=function(){return!!navigator.cookieEnabled||!1}()},function(e,r,i){"use strict";r.a=function(){var e=navigator.doNotTrack||!1;return!e&&"unspecified"!==e}()},function(e,r,i){"use strict";r.a=function(){return window.devicePixelRatio||1}()},function(e,r,i){"use strict";r.a=function(){if(null!==window.ArrayBuffer){var e=new ArrayBuffer(4),r=new Uint32Array(e),i=new Uint8Array(e);return r[0]=1,1===i[0]?"little":"big"}return"Unknown"}()},function(e,r,i){"use strict";r.a=function(){return[window.screen.width,window.screen.height]||[0,0]}()},function(e,r,i){"use strict";r.a=function(){return navigator.hardwareConcurrency||0}()},function(e,r,i){"use strict";r.a=function(){return[window.innerWidth,window.innerHeight]||[0,0]}()}])});