UNPKG

useragent-ng

Version:

Fast & effecient user agent string parser. Uses uap-core (Browserscope) data for parsing. Drop-in replacement for useragent

633 lines (626 loc) 99.9 kB
"use strict"; /** * TL;DR: Don't touch this. * * DO NOT EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND COMPILED FROM AN * EXTERNAL REGEXPS DATABASE. TO UPDATE THIS FILE MANUALLY PLEASE RUN: * * ``` * npm run build * ``` * * FROM THE ROOT OF THIS REPOSITORY. * * IF YOU FIND A REGULAR EXPRESSION THAT IS BROKEN OR MISSING, PLEASE MAKE A PULL REQUEST TO  * https://github.com/ua-parser/uap-core * */ exports.browser = [ [/(Rival IQ, rivaliq.com)/, "Rival IQ"], [/(GeoEvent Server) (\d+)(?:\.(\d+)(?:\.(\d+)|)|)/, 0], [/(ArcGIS Pro)(?: (\d+)\.(\d+)\.([^ ]+)|)/, 0], [/ArcGIS Client Using WinInet/, "ArcMap"], [/(OperationsDashboard)-(?:Windows)-(\d+)\.(\d+)\.(\d+)/, "Operations Dashboard for ArcGIS"], [/(arcgisearth)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "ArcGIS Earth"], [/com.esri.(earth).phone\/(\d+)\.(\d+)(?:\.(\d+)|)/, "ArcGIS Earth"], [/(arcgis-explorer)\/(\d+)\.(\d+)\.(\d+)/, "Explorer for ArcGIS"], [/arcgis-(collector|aurora)\/(\d+)\.(\d+)\.(\d+)/, "Collector for ArcGIS"], [/(arcgis-workforce)\/(\d+)\.(\d+)\.(\d+)/, "Workforce for ArcGIS"], [/(Collector|Explorer|Workforce)-(?:Android|iOS)-(\d+)\.(\d+)(?:\.(\d+)|)/, "$1 for ArcGIS"], [/(Explorer|Collector)\/(\d+) CFNetwork/, "$1 for ArcGIS"], [/ArcGISRuntime-(Android|iOS|NET|Qt)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "ArcGIS Runtime SDK for $1"], [/ArcGIS\.?(iOS|Android|NET|Qt)(?:-|\.)(\d+)\.(\d+)(?:\.(\d+)|)/, "ArcGIS Runtime SDK for $1"], [/ArcGIS\.Runtime\.(Qt)\.(\d+)\.(\d+)(?:\.(\d+)|)/, "ArcGIS Runtime SDK for $1"], [/^(Luminary)[Stage]+\/(\d+) CFNetwork/, 0], [/(ESPN)[%20| ]+Radio\/(\d+)\.(\d+)\.(\d+) CFNetwork/, 0], [/(Antenna)\/(\d+) CFNetwork/, "AntennaPod"], [/(TopPodcasts)Pro\/(\d+) CFNetwork/, 0], [/(MusicDownloader)Lite\/(\d+)\.(\d+)\.(\d+) CFNetwork/, 0], [/^(.{0,200})-iPad\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork/, 0], [/^(.{0,200})-iPhone\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork/, 0], [/^(.{0,200})\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork/, 0], [/^(Luminary)\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0], [/(espn\.go)/, "ESPN"], [/(espnradio\.com)/, "ESPN"], [/ESPN APP$/, "ESPN"], [/(audioboom\.com)/, "AudioBoom"], [/ (Rivo) RHYTHM/, 0], [/(CFNetwork)(?:\/(\d+)\.(\d+)(?:\.(\d+)|)|)/, "CFNetwork"], [/(Pingdom\.com_bot_version_)(\d+)\.(\d+)/, "PingdomBot"], [/(PingdomTMS)\/(\d+)\.(\d+)\.(\d+)/, "PingdomBot"], [/ (PTST)\/(\d+)(?:\.(\d+)|)$/, "WebPageTest.org bot"], [/X11; (Datanyze); Linux/, 0], [/(NewRelicPinger)\/(\d+)\.(\d+)/, "NewRelicPingerBot"], [/(Tableau)\/(\d+)\.(\d+)/, "Tableau"], [/AppleWebKit\/\d{1,10}\.\d{1,10}.{0,200} Safari.{0,200} (CreativeCloud)\/(\d+)\.(\d+).(\d+)/, "Adobe CreativeCloud"], [/(Salesforce)(?:.)\/(\d+)\.(\d?)/, 0], [/(\(StatusCake\))/, "StatusCakeBot"], [/(facebookexternalhit)\/(\d+)\.(\d+)/, "FacebookBot"], [/Google.{0,50}\/\+\/web\/snippet/, "GooglePlusBot"], [/via ggpht\.com GoogleImageProxy/, "GmailImageProxy"], [/YahooMailProxy; https:\/\/help\.yahoo\.com\/kb\/yahoo-mail-proxy-SLN28749\.html/, "YahooMailProxy"], [/(Twitterbot)\/(\d+)\.(\d+)/, "Twitterbot"], [/\/((?:Ant-|)Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \-](\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0], [/\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|OgScrper|Pandora|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0], [/(MSIE) (\d+)\.(\d+)([a-z]\d|[a-z]|);.{0,200} MSIECrawler/, "MSIECrawler"], [/(DAVdroid)\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0], [/(Google-HTTP-Java-Client|Apache-HttpClient|PostmanRuntime|Go-http-client|scalaj-http|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp|aihttp|reqwest|axios|unirest-(?:java|python|ruby|nodejs|php|net))(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)/, 0], [/(Pinterest(?:bot|))\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)[;\s(]+\+https:\/\/www.pinterest.com\/bot.html/, "Pinterestbot"], [/(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\/\$BotVersion|123metaspider-Bot|1470\.net crawler|50\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\b\w{0,30}favicon\w{0,30}\b|\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\(S\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:\/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PHPCrawl|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\.almaden\.ibm\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\.ze\.bz|ZooShot|ZyBorg|ArcGIS Hub Indexer)(?:[ /]v?(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)/, 0], [/\b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|java|nodejs|ruby2?|dotnet-(?:\d{1,2}|core)))|s3fs)\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0], [/(FME)\/(\d+\.\d+)\.(\d+)\.(\d+)/, 0], [/(QGIS)\/(\d)\.?0?(\d{1,2})\.?0?(\d{1,2})/, 0], [/(JOSM)\/(\d+)\.(\d+)/, 0], [/(Tygron Platform) \((\d+)\.(\d+)\.(\d+(?:\.\d+| RC \d+\.\d+))/, 0], [/\[(FBAN\/MessengerForiOS|FB_IAB\/MESSENGER);FBAV\/(\d+)(?:\.(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)/, "Facebook Messenger"], [/\[FB.{0,300};(FBAV)\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, "Facebook"], [/\[FB.{0,300};/, "Facebook"], [/^.{0,200}?(?:\/[A-Za-z0-9\.]{0,50}|) {0,2}([A-Za-z0-9 \-_\!\[\]:]{0,50}(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]{0,50}))[/ ](\d+)(?:\.(\d+)(?:\.(\d+)|)|)/, 0], [/^.{0,200}?((?:[A-Za-z][A-Za-z0-9 -]{0,50}|)[^C][^Uu][Bb]ot)\b(?:(?:[ /]| v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)/, 0], [/^.{0,200}?((?:[A-z0-9]{1,50}|[A-z\-]{1,50} ?|)(?: the |)(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]{0,50})(?:(?:[ /]| v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)/, 0], [/(HbbTV)\/(\d+)\.(\d+)\.(\d+) \(/, 0], [/(Chimera|SeaMonkey|Camino|Waterfox)\/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*|)/, 0], [/(SailfishBrowser)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Sailfish Browser"], [/\[(Pinterest)\/[^\]]{1,50}\]/, 0], [/(Pinterest)(?: for Android(?: Tablet|)|)\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0], [/Mozilla.{1,200}Mobile.{1,100}(Instagram).(\d+)\.(\d+)\.(\d+)/, 0], [/Mozilla.{1,200}Mobile.{1,100}(Flipboard).(\d+)\.(\d+)\.(\d+)/, 0], [/Mozilla.{1,200}Mobile.{1,100}(Flipboard-Briefing).(\d+)\.(\d+)\.(\d+)/, 0], [/Mozilla.{1,200}Mobile.{1,100}(Onefootball)\/Android.(\d+)\.(\d+)\.(\d+)/, 0], [/(Snapchat)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, 0], [/(Twitter for (?:iPhone|iPad)|TwitterAndroid)(?:\/(\d+)\.(\d+)|)/, "Twitter"], [/Mozilla.{1,200}Mobile.{1,100}(Phantom\/ios|android).(\d+)\.(\d+)\.(\d+)/, "Phantom"], [/Mozilla.{1,100}Mobile.{1,100}AspiegelBot/, "Spider"], [/AspiegelBot/, "Spider"], [/(Firefox)\/(\d+)\.(\d+) Basilisk\/(\d+)/, "Basilisk"], [/(PaleMoon)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Pale Moon"], [/(Fennec)\/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)/, "Firefox Mobile"], [/(Fennec)\/(\d+)\.(\d+)(pre)/, "Firefox Mobile"], [/(Fennec)\/(\d+)\.(\d+)/, "Firefox Mobile"], [/(?:Mobile|Tablet);.{0,200}(Firefox)\/(\d+)\.(\d+)/, "Firefox Mobile"], [/(Namoroka|Shiretoko|Minefield)\/(\d+)\.(\d+)\.(\d+(?:pre|))/, "Firefox ($1)"], [/(Firefox)\/(\d+)\.(\d+)(a\d+[a-z]*)/, "Firefox Alpha"], [/(Firefox)\/(\d+)\.(\d+)(b\d+[a-z]*)/, "Firefox Beta"], [/(Firefox)-(?:\d+\.\d+|)\/(\d+)\.(\d+)(a\d+[a-z]*)/, "Firefox Alpha"], [/(Firefox)-(?:\d+\.\d+|)\/(\d+)\.(\d+)(b\d+[a-z]*)/, "Firefox Beta"], [/(Namoroka|Shiretoko|Minefield)\/(\d+)\.(\d+)([ab]\d+[a-z]*|)/, "Firefox ($1)"], [/(Firefox).{0,200}Tablet browser (\d+)\.(\d+)\.(\d+)/, "MicroB"], [/(MozillaDeveloperPreview)\/(\d+)\.(\d+)([ab]\d+[a-z]*|)/, 0], [/(FxiOS)\/(\d+)\.(\d+)(\.(\d+)|)(\.(\d+)|)/, "Firefox iOS"], [/(Flock)\/(\d+)\.(\d+)(b\d+?)/, 0], [/(RockMelt)\/(\d+)\.(\d+)\.(\d+)/, 0], [/(Navigator)\/(\d+)\.(\d+)\.(\d+)/, "Netscape"], [/(Navigator)\/(\d+)\.(\d+)([ab]\d+)/, "Netscape"], [/(Netscape6)\/(\d+)\.(\d+)\.?([ab]?\d+|)/, "Netscape"], [/(MyIBrow)\/(\d+)\.(\d+)/, "My Internet Browser"], [/(UC? ?Browser|UCWEB|U3)[ /]?(\d+)\.(\d+)\.(\d+)/, "UC Browser"], [/(Opera Tablet).{0,200}Version\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0], [/(Opera Mini)(?:\/att|)\/?(\d+|)(?:\.(\d+)|)(?:\.(\d+)|)/, 0], [/(Opera)\/.{1,100}Opera Mobi.{1,100}Version\/(\d+)\.(\d+)/, "Opera Mobile"], [/(Opera)\/(\d+)\.(\d+).{1,100}Opera Mobi/, "Opera Mobile"], [/Opera Mobi.{1,100}(Opera)(?:\/|\s+)(\d+)\.(\d+)/, "Opera Mobile"], [/Opera Mobi/, "Opera Mobile"], [/(Opera)\/9.80.{0,200}Version\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0], [/(?:Mobile Safari).{1,300}(OPR)\/(\d+)\.(\d+)\.(\d+)/, "Opera Mobile"], [/(?:Chrome).{1,300}(OPR)\/(\d+)\.(\d+)\.(\d+)/, "Opera"], [/(Coast)\/(\d+).(\d+).(\d+)/, "Opera Coast"], [/(OPiOS)\/(\d+).(\d+).(\d+)/, "Opera Mini"], [/Chrome\/.{1,200}( MMS)\/(\d+).(\d+).(\d+)/, "Opera Neon"], [/(hpw|web)OS\/(\d+)\.(\d+)(?:\.(\d+)|)/, "webOS Browser"], [/(luakit)/, "LuaKit"], [/(Snowshoe)\/(\d+)\.(\d+).(\d+)/, 0], [/Gecko\/\d+ (Lightning)\/(\d+)\.(\d+)\.?((?:[ab]?\d+[a-z]*)|(?:\d*))/, 0], [/(Firefox)\/(\d+)\.(\d+)\.(\d+(?:pre|)) \(Swiftfox\)/, "Swiftfox"], [/(Firefox)\/(\d+)\.(\d+)([ab]\d+[a-z]*|) \(Swiftfox\)/, "Swiftfox"], [/(rekonq)\/(\d+)\.(\d+)(?:\.(\d+)|) Safari/, "Rekonq"], [/rekonq/, "Rekonq"], [/(conkeror|Conkeror)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Conkeror"], [/(konqueror)\/(\d+)\.(\d+)\.(\d+)/, "Konqueror"], [/(WeTab)-Browser/, 0], [/(Comodo_Dragon)\/(\d+)\.(\d+)\.(\d+)/, "Comodo Dragon"], [/(Symphony) (\d+).(\d+)/, 0], [/PLAYSTATION 3.{1,200}WebKit/, "NetFront NX"], [/PLAYSTATION 3/, "NetFront"], [/(PlayStation Portable)/, "NetFront"], [/(PlayStation Vita)/, "NetFront NX"], [/AppleWebKit.{1,200} (NX)\/(\d+)\.(\d+)\.(\d+)/, "NetFront NX"], [/(Nintendo 3DS)/, "NetFront NX"], [/(Silk)\/(\d+)\.(\d+)(?:\.([0-9\-]+)|)/, "Amazon Silk"], [/(Puffin)\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0], [/Windows Phone .{0,200}(Edge)\/(\d+)\.(\d+)/, "Edge Mobile"], [/(EdgiOS|EdgA)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Edge Mobile"], [/(SamsungBrowser)\/(\d+)\.(\d+)/, "Samsung Internet"], [/(SznProhlizec)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Seznam prohlížeč"], [/(coc_coc_browser)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Coc Coc"], [/(baidubrowser)[/\s](\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, "Baidu Browser"], [/(FlyFlow)\/(\d+)\.(\d+)/, "Baidu Explorer"], [/(MxBrowser)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Maxthon"], [/(Crosswalk)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, 0], [/(Line)\/(\d+)\.(\d+)\.(\d+)/, "LINE"], [/(MiuiBrowser)\/(\d+)\.(\d+)\.(\d+)/, "MiuiBrowser"], [/(Mint Browser)\/(\d+)\.(\d+)\.(\d+)/, "Mint Browser"], [/(TopBuzz)\/(\d+).(\d+).(\d+)/, "TopBuzz"], [/Mozilla.{1,200}Android.{1,200}(GSA)\/(\d+)\.(\d+)\.(\d+)/, "Google"], [/(MQQBrowser\/Mini)(?:(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)/, "QQ Browser Mini"], [/(MQQBrowser)(?:\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)/, "QQ Browser Mobile"], [/(QQBrowser)(?:\/(\d+)(?:\.(\d+)\.(\d+)(?:\.(\d+)|)|)|)/, "QQ Browser"], [/Mobile.{0,200}(DuckDuckGo)\/(\d+)/, "DuckDuckGo Mobile"], [/(Tenta\/)(\d+)\.(\d+)\.(\d+)/, "Tenta Browser"], [/Version\/.{1,300}(Chrome)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Chrome Mobile WebView"], [/; wv\).{1,300}(Chrome)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Chrome Mobile WebView"], [/(CrMo)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Chrome Mobile"], [/(CriOS)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Chrome Mobile iOS"], [/(Chrome)\/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$)/, "Chrome Mobile"], [/ Mobile .{1,300}(Chrome)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Chrome Mobile"], [/(chromeframe)\/(\d+)\.(\d+)\.(\d+)/, "Chrome Frame"], [/(SLP Browser)\/(\d+)\.(\d+)/, "Tizen Browser"], [/(SE 2\.X) MetaSr (\d+)\.(\d+)/, "Sogou Explorer"], [/(Rackspace Monitoring)\/(\d+)\.(\d+)/, "RackspaceBot"], [/(PRTG Network Monitor)/, 0], [/(PyAMF)\/(\d+)\.(\d+)\.(\d+)/, 0], [/(YaBrowser)\/(\d+)\.(\d+)\.(\d+)/, "Yandex Browser"], [/(Chrome)\/(\d+)\.(\d+)\.(\d+).{0,100} MRCHROME/, "Mail.ru Chromium Browser"], [/(AOL) (\d+)\.(\d+); AOLBuild (\d+)/, 0], [/(PodCruncher|Downcast)[ /]?(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)/, 0], [/ (BoxNotes)\/(\d+)\.(\d+)\.(\d+)/, 0], [/(Whale)\/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$)/, "Whale"], [/(Whale)\/(\d+)\.(\d+)\.(\d+)/, "Whale"], [/(1Password)\/(\d+)\.(\d+)\.(\d+)/, 0], [/(Ghost)\/(\d+)\.(\d+)\.(\d+)/, 0], [/PAN (GlobalProtect)\/(\d+)\.(\d+)\.(\d+) .{1,100} \(X11; Linux x86_64\)/, 0], [/^(surveyon)\/(\d+)\.(\d+)\.(\d+)/, "Surveyon"], [/(Slack_SSB)\/(\d+)\.(\d+)\.(\d+)/, "Slack Desktop Client"], [/(HipChat)\/?(\d+|)/, "HipChat Desktop Client"], [/\b(MobileIron|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Spotify|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave|MacOutlook|Electron|OktaMobile)\/(\d+)\.(\d+)\.(\d+)/, 0], [/Microsoft Office Outlook 12\.\d+\.\d+|MSOffice 12/, "Outlook", "2007"], [/Microsoft Outlook 14\.\d+\.\d+|MSOffice 14/, "Outlook", "2010"], [/Microsoft Outlook 15\.\d+\.\d+/, "Outlook", "2013"], [/Microsoft Outlook (?:Mail )?16\.\d+\.\d+|MSOffice 16/, "Outlook", "2016"], [/Microsoft Office (Word) 2014/, 0], [/Outlook-Express\/7\.0/, "Windows Live Mail"], [/(Airmail) (\d+)\.(\d+)(?:\.(\d+)|)/, 0], [/(Thunderbird)\/(\d+)\.(\d+)(?:\.(\d+(?:pre|))|)/, "Thunderbird"], [/(Postbox)\/(\d+)\.(\d+)\.(\d+)/, "Postbox"], [/(Barca(?:Pro)?)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Barca"], [/(Lotus-Notes)\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Lotus Notes"], [/Superhuman/, "Superhuman"], [/(Vivaldi)\/(\d+)\.(\d+)\.(\d+)/, 0], [/(Edge?)\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)/, "Edge"], [/(brave)\/(\d+)\.(\d+)\.(\d+) Chrome/, "Brave"], [/(Chrome)\/(\d+)\.(\d+)\.(\d+)[\d.]{0,100} Iron[^/]/, "Iron"], [/\b(Dolphin)(?: |HDCN\/|\/INT\-)(\d+)\.(\d+)(?:\.(\d+)|)/, 0], [/(HeadlessChrome)(?:\/(\d+)\.(\d+)\.(\d+)|)/, 0], [/(Evolution)\/(\d+)\.(\d+)\.(\d+\.\d+)/, 0], [/(RCM CardDAV plugin)\/(\d+)\.(\d+)\.(\d+(?:-dev|))/, 0], [/(bingbot|Bolt|AdobeAIR|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|iTunes|MacAppStore|NetNewsWire|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE Browser|mDolphin|qutebrowser|Otter|QupZilla|MailBar|kmail2|YahooMobileMail|ExchangeWebServices|ExchangeServicesClient|Dragon|Outlook-iOS-Android)\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0], [/(Chromium|Chrome)\/(\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0], [/(IEMobile)[ /](\d+)\.(\d+)/, "IE Mobile"], [/(BacaBerita App)\/(\d+)\.(\d+)\.(\d+)/, 0], [/^(bPod|Pocket Casts|Player FM)$/, 0], [/^(AlexaMediaPlayer|VLC)\/(\d+)\.(\d+)\.([^.\s]+)/, 0], [/^(AntennaPod|WMPlayer|Zune|Podkicker|Radio|ExoPlayerDemo|Overcast|PocketTunes|NSPlayer|okhttp|DoggCatcher|QuickNews|QuickTime|Peapod|Podcasts|GoldenPod|VLC|Spotify|Miro|MediaGo|Juice|iPodder|gPodder|Banshee)\/(\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0], [/^(Peapod|Liferea)\/([^.\s]+)\.([^.\s]+|)\.?([^.\s]+|)/, 0], [/^(bPod|Player FM) BMID\/(\S+)/, 0], [/^(Podcast ?Addict)\/v(\d+) /, 0], [/^(Podcast ?Addict) /, "PodcastAddict"], [/(Replay) AV/, 0], [/(VOX) Music Player/, 0], [/(CITA) RSS Aggregator\/(\d+)\.(\d+)/, 0], [/(Pocket Casts)$/, 0], [/(Player FM)$/, 0], [/(LG Player|Doppler|FancyMusic|MediaMonkey|Clementine) (\d+)\.(\d+)\.?([^.\s]+|)\.?([^.\s]+|)/, 0], [/(philpodder)\/(\d+)\.(\d+)\.?([^.\s]+|)\.?([^.\s]+|)/, 0], [/(Player FM|Pocket Casts|DoggCatcher|Spotify|MediaMonkey|MediaGo|BashPodder)/, 0], [/(QuickTime)\.(\d+)\.(\d+)\.(\d+)/, 0], [/(Kinoma)(\d+)/, 0], [/(Fancy) Cloud Music (\d+)\.(\d+)/, "FancyMusic"], [/EspnDownloadManager/, "ESPN"], [/(ESPN) Radio (\d+)\.(\d+)(?:\.(\d+)|) ?(?:rv:(\d+)|) /, 0], [/(podracer|jPodder) v ?(\d+)\.(\d+)(?:\.(\d+)|)/, 0], [/(ZDM)\/(\d+)\.(\d+)[; ]?/, 0], [/(Zune|BeyondPod) (\d+)(?:\.(\d+)|)[\);]/, 0], [/(WMPlayer)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, 0], [/^(Lavf)/, "WMPlayer"], [/^(RSSRadio)[ /]?(\d+|)/, 0], [/(RSS_Radio) (\d+)\.(\d+)/, "RSSRadio"], [/(Podkicker) \S+\/(\d+)\.(\d+)\.(\d+)/, "Podkicker"], [/^(HTC) Streaming Player \S+ \/ \S+ \/ \S+ \/ (\d+)\.(\d+)(?:\.(\d+)|)/, 0], [/^(Stitcher)\/iOS/, 0], [/^(Stitcher)\/Android/, 0], [/^(VLC) .{0,200}version (\d+)\.(\d+)\.(\d+)/, 0], [/ (VLC) for/, 0], [/(vlc)\/(\d+)\.(\d+)\.(\d+)/, "VLC"], [/^(foobar)\S{1,10}\/(\d+)\.(\d+|)\.?([\da-z]+|)/, 0], [/^(Clementine)\S{1,10} (\d+)\.(\d+|)\.?(\d+|)/, 0], [/(amarok)\/(\d+)\.(\d+|)\.?(\d+|)/, "Amarok"], [/(Custom)-Feed Reader/, 0], [/(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\d+)\.(\d+)\.(\d+)/, 0], [/(iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The Bat!) (\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0], [/(Kindle)\/(\d+)\.(\d+)/, 0], [/(Android) Donut/, 0, "1", "2"], [/(Android) Eclair/, 0, "2", "1"], [/(Android) Froyo/, 0, "2", "2"], [/(Android) Gingerbread/, 0, "2", "3"], [/(Android) Honeycomb/, 0, "3"], [/(MSIE) (\d+)\.(\d+).{0,100}XBLWP7/, "IE Large Screen"], [/(Nextcloud)/, 0], [/(mirall)\/(\d+)\.(\d+)\.(\d+)/, 0], [/(ownCloud-android)\/(\d+)\.(\d+)\.(\d+)/, "Owncloud"], [/(OC)\/(\d+)\.(\d+)\.(\d+)\.(\d+) \(Skype for Business\)/, "Skype"], [/(OpenVAS)(?:-VT)?(?:[ \/](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)/, "OpenVAS Scanner"], [/(AnyConnect)\/(\d+)(?:\.(\d+)(?:\.(\d+)|)|)/, 0], [/compatible; monitis/, "Monitis"], [/(Obigo)InternetBrowser/, 0], [/(Obigo)\-Browser/, 0], [/(Obigo|OBIGO)[^\d]*(\d+)(?:.(\d+)|)/, "Obigo"], [/(MAXTHON|Maxthon) (\d+)\.(\d+)/, "Maxthon"], [/(Maxthon|MyIE2|Uzbl|Shiira)/, 0, "0"], [/(BrowseX) \((\d+)\.(\d+)\.(\d+)/, 0], [/(NCSA_Mosaic)\/(\d+)\.(\d+)/, "NCSA Mosaic"], [/(POLARIS)\/(\d+)\.(\d+)/, "Polaris"], [/(Embider)\/(\d+)\.(\d+)/, "Polaris"], [/(BonEcho)\/(\d+)\.(\d+)\.?([ab]?\d+|)/, "Bon Echo"], [/(TopBuzz) com.alex.NewsMaster\/(\d+).(\d+).(\d+)/, "TopBuzz"], [/(TopBuzz) com.mobilesrepublic.newsrepublic\/(\d+).(\d+).(\d+)/, "TopBuzz"], [/(TopBuzz) com.topbuzz.videoen\/(\d+).(\d+).(\d+)/, "TopBuzz"], [/(iPod|iPhone|iPad).{1,200}GSA\/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|) Mobile/, "Google"], [/(iPod|iPhone|iPad).{1,200}Version\/(\d+)\.(\d+)(?:\.(\d+)|).{1,200}[ +]Safari/, "Mobile Safari"], [/(iPod|iPod touch|iPhone|iPad);.{0,30}CPU.{0,30}OS[ +](\d+)_(\d+)(?:_(\d+)|).{0,30} AppleNews\/\d+\.\d+(?:\.\d+|)/, "Mobile Safari UI/WKWebView"], [/(iPod|iPhone|iPad).{1,200}Version\/(\d+)\.(\d+)(?:\.(\d+)|)/, "Mobile Safari UI/WKWebView"], [/(iPod|iPod touch|iPhone|iPad).{0,200} Safari/, "Mobile Safari"], [/(iPod|iPod touch|iPhone|iPad)/, "Mobile Safari UI/WKWebView"], [/(Watch)(\d+),(\d+)/, "Apple $1 App"], [/(Outlook-iOS)\/\d+\.\d+\.prod\.iphone \((\d+)\.(\d+)\.(\d+)\)/, 0], [/(AvantGo) (\d+).(\d+)/, 0], [/(OneBrowser)\/(\d+).(\d+)/, "ONE Browser"], [/(Avant)/, 0, "1"], [/(QtCarBrowser)/, 0, "1"], [/^(iBrowser\/Mini)(\d+).(\d+)/, "iBrowser Mini"], [/^(iBrowser|iRAPP)\/(\d+).(\d+)/, 0], [/^(Nokia)/, "Nokia Services (WAP) Browser"], [/(NokiaBrowser)\/(\d+)\.(\d+).(\d+)\.(\d+)/, "Nokia Browser"], [/(NokiaBrowser)\/(\d+)\.(\d+).(\d+)/, "Nokia Browser"], [/(NokiaBrowser)\/(\d+)\.(\d+)/, "Nokia Browser"], [/(BrowserNG)\/(\d+)\.(\d+).(\d+)/, "Nokia Browser"], [/(Series60)\/5\.0/, "Nokia Browser", "7", "0"], [/(Series60)\/(\d+)\.(\d+)/, "Nokia OSS Browser"], [/(S40OviBrowser)\/(\d+)\.(\d+)\.(\d+)\.(\d+)/, "Ovi Browser"], [/(Nokia)[EN]?(\d+)/, 0], [/(PlayBook).{1,200}RIM Tablet OS (\d+)\.(\d+)\.(\d+)/, "BlackBerry WebKit"], [/(Black[bB]erry|BB10).{1,200}Version\/(\d+)\.(\d+)\.(\d+)/, "BlackBerry WebKit"], [/(Black[bB]erry)\s?(\d+)/, "BlackBerry"], [/(OmniWeb)\/v(\d+)\.(\d+)/, 0], [/(Blazer)\/(\d+)\.(\d+)/, "Palm Blazer"], [/(Pre)\/(\d+)\.(\d+)/, "Palm Pre"], [/(ELinks)\/(\d+)\.(\d+)/, 0], [/(ELinks) \((\d+)\.(\d+)/, 0], [/(Links) \((\d+)\.(\d+)/, 0], [/(QtWeb) Internet Browser\/(\d+)\.(\d+)/, 0], [/(PhantomJS)\/(\d+)\.(\d+)\.(\d+)/, 0], [/(AppleWebKit)\/(\d+)(?:\.(\d+)|)\+ .{0,200} Safari/, "WebKit Nightly"], [/(Version)\/(\d+)\.(\d+)(?:\.(\d+)|).{0,100}Safari\//, "Safari"], [/(Safari)\/\d+/, 0], [/(OLPC)\/Update(\d+)\.(\d+)/, 0], [/(OLPC)\/Update()\.(\d+)/, 0, "0"], [/(SEMC\-Browser)\/(\d+)\.(\d+)/, 0], [/(Teleca)/, "Teleca Browser"], [/(Phantom)\/V(\d+)\.(\d+)/, "Phantom Browser"], [/(Trident)\/(7|8)\.(0)/, "IE", "11"], [/(Trident)\/(6)\.(0)/, "IE", "10"], [/(Trident)\/(5)\.(0)/, "IE", "9"], [/(Trident)\/(4)\.(0)/, "IE", "8"], [/(Espial)\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)/, 0], [/(AppleWebKit)\/(\d+)\.(\d+)\.(\d+)/, "Apple Mail"], [/(Firefox)\/(\d+)\.(\d+)\.(\d+)/, 0], [/(Firefox)\/(\d+)\.(\d+)(pre|[ab]\d+[a-z]*|)/, 0], [/([MS]?IE) (\d+)\.(\d+)/, "IE"], [/(python-requests)\/(\d+)\.(\d+)/, "Python Requests"], [/\b(Windows-Update-Agent|WindowsPowerShell|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|wget2|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got|CloudCockpitBackend|ReactorNetty|axios|Jersey|Vert.x-WebClient|Apache-CXF|Go-CF-client|go-resty|AHC)(?:[ /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)/, 0], [/^(cf)\/(\d+)\.(\d+)\.(\S+)/, "CloudFoundry"], [/^(sap-leonardo-iot-sdk-nodejs) \/ (\d+)\.(\d+)\.(\d+)/, 0], [/^(SAP NetWeaver Application Server) \(1.0;(\d{1})(\d{2})\)/, 0], [/^(\w+-HTTPClient)\/(\d+)\.(\d+)-(\S+)/, "HTTPClient"], [/^(go-cli)\s(\d+)\.(\d+).(\S+)/, 0], [/^(Java-EurekaClient|Java-EurekaClient-Replication|HTTPClient|lua-resty-http)\/v?(\d+)\.(\d+)\.?(\d*)/, 0], [/^(ping-service|sap xsuaa|Node-oauth|Site24x7|SAP CPI|JAEGER_SECURITY)/, 0], [/(Python\/3\.\d{1,3} aiohttp)\/(\d+)\.(\d+)\.(\d+)/, "Python aiohttp"], [/(Java)[/ ]?\d+\.(\d+)\.(\d+)[_-]*([a-zA-Z0-9]+|)/, 0], [/(minio-go)\/v(\d+)\.(\d+)\.(\d+)/, 0], [/^(ureq)[/ ](\d+)\.(\d+).(\d+)/, 0], [/^(http\.rb)\/(\d+)\.(\d+).(\d+)/, 0], [/^(GuzzleHttp)\/(\d+)\.(\d+).(\d+)/, 0], [/^(grab)\b/, 0], [/^(Cyberduck)\/(\d+)\.(\d+)\.(\d+)(?:\.\d+|)/, 0], [/^(S3 Browser) (\d+)[.-](\d+)[.-](\d+)(?:\s*https?:\/\/s3browser\.com|)/, 0], [/(S3Gof3r)/, 0], [/\b(ibm-cos-sdk-(?:core|java|js|python))\/(\d+)\.(\d+)(?:\.(\d+)|)/, 0], [/^(rusoto)\/(\d+)\.(\d+)\.(\d+)/, 0], [/^(rclone)\/v(\d+)\.(\d+)/, 0], [/^(Roku)\/DVP-(\d+)\.(\d+)/, 0], [/(Kurio)\/(\d+)\.(\d+)\.(\d+)/, "Kurio App"], [/^(Box(?: Sync)?)\/(\d+)\.(\d+)\.(\d+)/, 0], [/^(ViaFree|Viafree)-(?:tvOS-)?[A-Z]{2}\/(\d+)\.(\d+)\.(\d+)/, "ViaFree"], [/(Transmit)\/(\d+)\.(\d+)\.(\d+)/, 0], [/(Download Master)/, 0], [/\b(HTTrack) (\d+)\.(\d+)(?:[\.\-](\d+)|)/, 0], [/SerenityOS/, "SerenityOS Browser"], [/(Wget)\/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)/, 0], [/(curl)\/(\d+)\.(\d+)\.(\d+)/, "cURL"] ]; exports.device = [ [/(Rival IQ, rivaliq.com)/, "Spider"], [/^.{0,100}?(?:(?:iPhone|Windows CE|Windows Phone|Android).{0,300}(?:(?:Bot|Yeti)-Mobile|YRSpider|BingPreview|bots?\/\d|(?:bot|spider)\.html)|AdsBot-Google-Mobile.{0,200}iPhone)/i, "Spider", "Spider", "Smartphone"], [/^.{0,100}?(?:DoCoMo|\bMOT\b|\bLG\b|Nokia|Samsung|SonyEricsson).{0,200}(?:(?:Bot|Yeti)-Mobile|bots?\/\d|(?:bot|crawler)\.html|(?:jump|google|Wukong)bot|ichiro\/mobile|\/spider|YahooSeeker)/i, "Spider", "Spider", "Feature Phone"], [/ PTST\/\d+(?:\.\d+|)$/, "Spider", "Spider"], [/X11; Datanyze; Linux/, "Spider", "Spider"], [/Mozilla.{1,100}Mobile.{1,100}AspiegelBot/, "Spider", "Spider", "Smartphone"], [/Mozilla.{0,200}AspiegelBot/, "Spider", "Spider", "Desktop"], [/\bSmartWatch {0,2}\( {0,2}([^;]{1,200}) {0,2}; {0,2}([^;]{1,200}) {0,2};/, "$1 $2", "$1", "$2"], [/Android Application[^\-]{1,300} - (Sony) ?(Ericsson|) (.{1,200}) \w{1,20} - /, "$1 $2", "$1$2", "$3"], [/Android Application[^\-]{1,300} - (?:HTC|HUAWEI|LGE|LENOVO|MEDION|TCT) (HTC|HUAWEI|LG|LENOVO|MEDION|ALCATEL)[ _\-](.{1,200}) \w{1,20} - /i, "$1 $2", "$1", "$2"], [/Android Application[^\-]{1,300} - ([^ ]+) (.{1,200}) \w{1,20} - /, "$1 $2", "$1", "$2"], [/; {0,2}([BLRQ]C\d{4}[A-Z]{1,100}?)(?: Build|\) AppleWebKit)/, "3Q $1", "3Q", "$1"], [/; {0,2}(?:3Q_)([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "3Q $1", "3Q", "$1"], [/Android [34].{0,200}; {0,2}(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700(?: Lite| 3G|)|A701|B1-A71|A1-\d{3}|B1-\d{3}|V360|V370|W500|W500P|W501|W501P|W510|W511|W700|Slider SL101|DA22[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Acer", "$1"], [/; {0,2}Acer Iconia Tab ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Acer", "$1"], [/; {0,2}(Z1[1235]0|E320[^/]{0,10}|S500|S510|Liquid[^;/]{0,30}|Iconia A\d+)(?: Build|\) AppleWebKit)/, "$1", "Acer", "$1"], [/; {0,2}(Acer |ACER )([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1$2", "Acer", "$2"], [/; {0,2}(Advent |)(Vega(?:Bean|Comb|)).{0,200}?(?: Build|\) AppleWebKit)/, "$1$2", "Advent", "$2"], [/; {0,2}(Ainol |)((?:NOVO|[Nn]ovo)[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1$2", "Ainol", "$2"], [/; {0,2}AIRIS[ _\-]?([^/;\)]+) {0,2}(?:;|\)|Build)/i, "$1", "Airis", "$1"], [/; {0,2}(OnePAD[^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "$1", "Airis", "$1"], [/; {0,2}Airpad[ \-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Airpad $1", "Airpad", "$1"], [/; {0,2}(one ?touch) (EVO7|T10|T20)(?: Build|\) AppleWebKit)/, "Alcatel One Touch $2", "Alcatel", "One Touch $2"], [/; {0,2}(?:alcatel[ _]|)(?:(?:one[ _]?touch[ _])|ot[ \-])([^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "Alcatel One Touch $1", "Alcatel", "One Touch $1"], [/; {0,2}(TCL)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "$1", "$2"], [/; {0,2}(Vodafone Smart II|Optimus_Madrid)(?: Build|\) AppleWebKit)/, "Alcatel $1", "Alcatel", "$1"], [/; {0,2}BASE_Lutea_3(?: Build|\) AppleWebKit)/, "Alcatel One Touch 998", "Alcatel", "One Touch 998"], [/; {0,2}BASE_Varia(?: Build|\) AppleWebKit)/, "Alcatel One Touch 918D", "Alcatel", "One Touch 918D"], [/; {0,2}((?:FINE|Fine)\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Allfine", "$1"], [/; {0,2}(ALLVIEW[ _]?|Allview[ _]?)((?:Speed|SPEED).{0,200}?)(?: Build|\) AppleWebKit)/, "$1$2", "Allview", "$2"], [/; {0,2}(ALLVIEW[ _]?|Allview[ _]?|)(AX1_Shine|AX2_Frenzy)(?: Build|\) AppleWebKit)/, "$1$2", "Allview", "$2"], [/; {0,2}(ALLVIEW[ _]?|Allview[ _]?)([^;/]*?)(?: Build|\) AppleWebKit)/, "$1$2", "Allview", "$2"], [/; {0,2}(A13-MID)(?: Build|\) AppleWebKit)/, "$1", "Allwinner", "$1"], [/; {0,2}(Allwinner)[ _\-]?([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Allwinner", "$1"], [/; {0,2}(A651|A701B?|A702|A703|A705|A706|A707|A711|A712|A713|A717|A722|A785|A801|A802|A803|A901|A902|A1002|A1003|A1006|A1007|A9701|A9703|Q710|Q80)(?: Build|\) AppleWebKit)/, "$1", "Amaway", "$1"], [/; {0,2}(?:AMOI|Amoi)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Amoi $1", "Amoi", "$1"], [/^(?:AMOI|Amoi)[ _]([^;/]{1,100}?) Linux/, "Amoi $1", "Amoi", "$1"], [/; {0,2}(MW(?:0[789]|10)[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Aoc", "$1"], [/; {0,2}(G7|M1013|M1015G|M11[CG]?|M-?12[B]?|M15|M19[G]?|M30[ACQ]?|M31[GQ]|M32|M33[GQ]|M36|M37|M38|M701T|M710|M712B|M713|M715G|M716G|M71(?:G|GS|T|)|M72[T]?|M73[T]?|M75[GT]?|M77G|M79T|M7L|M7LN|M81|M810|M81T|M82|M92|M92KS|M92S|M717G|M721|M722G|M723|M725G|M739|M785|M791|M92SK|M93D)(?: Build|\) AppleWebKit)/, "Aoson $1", "Aoson", "$1"], [/; {0,2}Aoson ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "Aoson $1", "Aoson", "$1"], [/; {0,2}[Aa]panda[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Apanda $1", "Apanda", "$1"], [/; {0,2}(?:ARCHOS|Archos) ?(GAMEPAD.{0,200}?)(?: Build|\) AppleWebKit)/, "Archos $1", "Archos", "$1"], [/ARCHOS; GOGI; ([^;]{1,200});/, "Archos $1", "Archos", "$1"], [/(?:ARCHOS|Archos)[ _]?(.{0,200}?)(?: Build|[;/\(\)\-]|$)/, "Archos $1", "Archos", "$1"], [/; {0,2}(AN(?:7|8|9|10|13)[A-Z0-9]{1,4})(?: Build|\) AppleWebKit)/, "Archos $1", "Archos", "$1"], [/; {0,2}(A28|A32|A43|A70(?:BHT|CHT|HB|S|X)|A101(?:B|C|IT)|A7EB|A7EB-WK|101G9|80G9)(?: Build|\) AppleWebKit)/, "Archos $1", "Archos", "$1"], [/; {0,2}(PAD-FMD[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Arival", "$1"], [/; {0,2}(BioniQ) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Arival", "$1 $2"], [/; {0,2}(AN\d[^;/]{1,100}|ARCHM\d+)(?: Build|\) AppleWebKit)/, "Arnova $1", "Arnova", "$1"], [/; {0,2}(?:ARNOVA|Arnova) ?([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Arnova $1", "Arnova", "$1"], [/; {0,2}(?:ASSISTANT |)(AP)-?([1789]\d{2}[A-Z]{0,2}|80104)(?: Build|\) AppleWebKit)/, "Assistant $1-$2", "Assistant", "$1-$2"], [/; {0,2}(ME17\d[^;/]*|ME3\d{2}[^;/]{1,100}|K00[A-Z]|Nexus 10|Nexus 7(?: 2013|)|PadFone[^;/]*|Transformer[^;/]*|TF\d{3}[^;/]*|eeepc)(?: Build|\) AppleWebKit)/, "Asus $1", "Asus", "$1"], [/; {0,2}ASUS[ _]{0,10}([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Asus $1", "Asus", "$1"], [/; {0,2}Garmin-Asus ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Garmin-Asus $1", "Garmin-Asus", "$1"], [/; {0,2}(Garminfone)(?: Build|\) AppleWebKit)/, "Garmin $1", "Garmin-Asus", "$1"], [/; (@TAB-[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Attab", "$1"], [/; {0,2}(T-(?:07|[^0]\d)[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Audiosonic", "$1"], [/; {0,2}(?:Axioo[ _\-]([^;/]{1,100}?)|(picopad)[ _\-]([^;/]{1,100}?))(?: Build|\) AppleWebKit)/i, "Axioo $1$2 $3", "Axioo", "$1$2 $3"], [/; {0,2}(V(?:100|700|800)[^;/]*)(?: Build|\) AppleWebKit)/, "$1", "Azend", "$1"], [/; {0,2}(IBAK\-[^;/]*)(?: Build|\) AppleWebKit)/i, "$1", "Bak", "$1"], [/; {0,2}(HY5001|HY6501|X12|X21|I5)(?: Build|\) AppleWebKit)/, "Bedove $1", "Bedove", "$1"], [/; {0,2}(JC-[^;/]*)(?: Build|\) AppleWebKit)/, "Benss $1", "Benss", "$1"], [/; {0,2}(BB) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Blackberry", "$2"], [/; {0,2}(BlackBird)[ _](I8.{0,200}?)(?: Build|\) AppleWebKit)/, "$1 $2", "$1", "$2"], [/; {0,2}(BlackBird)[ _](.{0,200}?)(?: Build|\) AppleWebKit)/, "$1 $2", "$1", "$2"], [/; {0,2}([0-9]+BP[EM][^;/]*|Endeavour[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Blaupunkt $1", "Blaupunkt", "$1"], [/; {0,2}((?:BLU|Blu)[ _\-])([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1$2", "Blu", "$2"], [/; {0,2}(?:BMOBILE )?(Blu|BLU|DASH [^;/]{1,100}|VIVO 4\.3|TANK 4\.5)(?: Build|\) AppleWebKit)/, "$1", "Blu", "$1"], [/; {0,2}(TOUCH\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Blusens", "$1"], [/; {0,2}(AX5\d+)(?: Build|\) AppleWebKit)/, "$1", "Bmobile", "$1"], [/; {0,2}([Bb]q) ([^;/]{1,100}?);?(?: Build|\) AppleWebKit)/, "$1 $2", "bq", "$2"], [/; {0,2}(Maxwell [^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "bq", "$1"], [/; {0,2}((?:B-Tab|B-TAB) ?\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Braun", "$1"], [/; {0,2}(Broncho) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "$1", "$2"], [/; {0,2}CAPTIVA ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Captiva $1", "Captiva", "$1"], [/; {0,2}(C771|CAL21|IS11CA)(?: Build|\) AppleWebKit)/, "$1", "Casio", "$1"], [/; {0,2}(?:Cat|CAT) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Cat $1", "Cat", "$1"], [/; {0,2}(?:Cat)(Nova.{0,200}?)(?: Build|\) AppleWebKit)/, "Cat $1", "Cat", "$1"], [/; {0,2}(INM8002KP|ADM8000KP_[AB])(?: Build|\) AppleWebKit)/, "$1", "Cat", "Tablet PHOENIX 8.1J0"], [/; {0,2}(?:[Cc]elkon[ _\*]|CELKON[ _\*])([^;/\)]+) ?(?:Build|;|\))/, "$1", "Celkon", "$1"], [/Build\/(?:[Cc]elkon)+_?([^;/_\)]+)/, "$1", "Celkon", "$1"], [/; {0,2}(CT)-?(\d+)(?: Build|\) AppleWebKit)/, "$1$2", "Celkon", "$1$2"], [/; {0,2}(A19|A19Q|A105|A107[^;/\)]*) ?(?:Build|;|\))/, "$1", "Celkon", "$1"], [/; {0,2}(TPC[0-9]{4,5})(?: Build|\) AppleWebKit)/, "$1", "ChangJia", "$1"], [/; {0,2}(Cloudfone)[ _](Excite)([^ ][^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2 $3", "Cloudfone", "$1 $2 $3"], [/; {0,2}(Excite|ICE)[ _](\d+[^;/]{0,100}?)(?: Build|\) AppleWebKit)/, "Cloudfone $1 $2", "Cloudfone", "Cloudfone $1 $2"], [/; {0,2}(Cloudfone|CloudPad)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Cloudfone", "$1 $2"], [/; {0,2}((?:Aquila|Clanga|Rapax)[^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "$1", "Cmx", "$1"], [/; {0,2}(?:CFW-|Kyros )?(MID[0-9]{4}(?:[ABC]|SR|TV)?)(\(3G\)-4G| GB 8K| 3G| 8K| GB)? {0,2}(?:Build|[;\)])/, "CobyKyros $1$2", "CobyKyros", "$1$2"], [/; {0,2}([^;/]{0,50})Coolpad[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1$2", "Coolpad", "$1$2"], [/; {0,2}(CUBE[ _])?([KU][0-9]+ ?GT.{0,200}?|A5300)(?: Build|\) AppleWebKit)/i, "$1$2", "Cube", "$2"], [/; {0,2}CUBOT ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "$1", "Cubot", "$1"], [/; {0,2}(BOBBY)(?: Build|\) AppleWebKit)/i, "$1", "Cubot", "$1"], [/; {0,2}(Dslide [^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Danew", "$1"], [/; {0,2}(XCD)[ _]?(28|35)(?: Build|\) AppleWebKit)/, "Dell $1$2", "Dell", "$1$2"], [/; {0,2}(001DL)(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "Streak"], [/; {0,2}(?:Dell|DELL) (Streak)(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "Streak"], [/; {0,2}(101DL|GS01|Streak Pro[^;/]{0,100})(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "Streak Pro"], [/; {0,2}([Ss]treak ?7)(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "Streak 7"], [/; {0,2}(Mini-3iX)(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "$1"], [/; {0,2}(?:Dell|DELL)[ _](Aero|Venue|Thunder|Mini.{0,200}?|Streak[ _]Pro)(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "$1"], [/; {0,2}Dell[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Dell $1", "Dell", "$1"], [/; {0,2}(TA[CD]-\d+[^;/]{0,100})(?: Build|\) AppleWebKit)/, "$1", "Denver", "$1"], [/; {0,2}(iP[789]\d{2}(?:-3G)?|IP10\d{2}(?:-8GB)?)(?: Build|\) AppleWebKit)/, "$1", "Dex", "$1"], [/; {0,2}(AirTab)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "DNS", "$1 $2"], [/; {0,2}(F\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Fujitsu", "$1"], [/; {0,2}(HT-03A)(?: Build|\) AppleWebKit)/, "$1", "HTC", "Magic"], [/; {0,2}(HT\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "HTC", "$1"], [/; {0,2}(L\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "LG", "$1"], [/; {0,2}(N\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Nec", "$1"], [/; {0,2}(P\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Panasonic", "$1"], [/; {0,2}(SC\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Samsung", "$1"], [/; {0,2}(SH\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Sharp", "$1"], [/; {0,2}(SO\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "SonyEricsson", "$1"], [/; {0,2}(T\-0[12][^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Toshiba", "$1"], [/; {0,2}(DOOV)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "DOOV", "$2"], [/; {0,2}(Enot|ENOT)[ -]?([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Enot", "$2"], [/; {0,2}[^;/]{1,100} Build\/(?:CROSS|Cross)+[ _\-]([^\)]+)/, "CROSS $1", "Evercoss", "Cross $1"], [/; {0,2}(CROSS|Cross)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Evercoss", "Cross $2"], [/; {0,2}Explay[_ ](.{1,200}?)(?:[\)]| Build)/, "$1", "Explay", "$1"], [/; {0,2}(IQ.{0,200}?)(?: Build|\) AppleWebKit)/, "$1", "Fly", "$1"], [/; {0,2}(Fly|FLY)[ _](IQ[^;]{1,100}?|F[34]\d+[^;]{0,100}?);?(?: Build|\) AppleWebKit)/, "$1 $2", "Fly", "$2"], [/; {0,2}(M532|Q572|FJL21)(?: Build|\) AppleWebKit)/, "$1", "Fujitsu", "$1"], [/; {0,2}(G1)(?: Build|\) AppleWebKit)/, "$1", "Galapad", "$1"], [/; {0,2}(Geeksphone) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "$1", "$2"], [/; {0,2}(G[^F]?FIVE) ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Gfive", "$2"], [/; {0,2}(Gionee)[ _\-]([^;/]{1,100}?)(?:\/[^;/]{1,100}|)(?: Build|\) AppleWebKit)/i, "$1 $2", "Gionee", "$2"], [/; {0,2}(GN\d+[A-Z]?|INFINITY_PASSION|Ctrl_V1)(?: Build|\) AppleWebKit)/, "Gionee $1", "Gionee", "$1"], [/; {0,2}(E3) Build\/JOP40D/, "Gionee $1", "Gionee", "$1"], [/\sGIONEE[-\s_](\w*)/i, "Gionee $1", "Gionee", "$1"], [/; {0,2}((?:FONE|QUANTUM|INSIGNIA) \d+[^;/]{0,100}|PLAYTAB)(?: Build|\) AppleWebKit)/, "GoClever $1", "GoClever", "$1"], [/; {0,2}GOCLEVER ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "GoClever $1", "GoClever", "$1"], [/; {0,2}(Glass \d+)(?: Build|\) AppleWebKit)/, "$1", "Google", "$1"], [/; {0,2}([g|G]oogle)? (Pixel[ a-zA-z0-9]{1,100});(?: Build|.{0,50}\) AppleWebKit)/, "$2", "Google", "$2"], [/; {0,2}([g|G]oogle)? (Pixel.{0,200}?)(?: Build|\) AppleWebKit)/, "$2", "Google", "$2"], [/; {0,2}(GSmart)[ -]([^/]{1,50})(?: Build|\) AppleWebKit)/, "$1 $2", "Gigabyte", "$1 $2"], [/; {0,2}(imx5[13]_[^/]{1,50})(?: Build|\) AppleWebKit)/, "Freescale $1", "Freescale", "$1"], [/; {0,2}Haier[ _\-]([^/]{1,50})(?: Build|\) AppleWebKit)/, "Haier $1", "Haier", "$1"], [/; {0,2}(PAD1016)(?: Build|\) AppleWebKit)/, "Haipad $1", "Haipad", "$1"], [/; {0,2}(M701|M7|M8|M9)(?: Build|\) AppleWebKit)/, "Haipad $1", "Haipad", "$1"], [/; {0,2}(SN\d+T[^;\)/]*)(?: Build|[;\)])/, "Hannspree $1", "Hannspree", "$1"], [/Build\/HCL ME Tablet ([^;\)]{1,3})[\);]/, "HCLme $1", "HCLme", "$1"], [/; {0,2}([^;\/]+) Build\/HCL/, "HCLme $1", "HCLme", "$1"], [/; {0,2}(MID-?\d{4}C[EM])(?: Build|\) AppleWebKit)/, "Hena $1", "Hena", "$1"], [/; {0,2}(EG\d{2,}|HS-[^;/]{1,100}|MIRA[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Hisense $1", "Hisense", "$1"], [/; {0,2}(andromax[^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "Hisense $1", "Hisense", "$1"], [/; {0,2}(?:AMAZE[ _](S\d+)|(S\d+)[ _]AMAZE)(?: Build|\) AppleWebKit)/, "AMAZE $1$2", "hitech", "AMAZE $1$2"], [/; {0,2}(PlayBook)(?: Build|\) AppleWebKit)/, "HP $1", "HP", "$1"], [/; {0,2}HP ([^/]{1,50})(?: Build|\) AppleWebKit)/, "HP $1", "HP", "$1"], [/; {0,2}([^/]{1,30}_tenderloin)(?: Build|\) AppleWebKit)/, "HP TouchPad", "HP", "TouchPad"], [/; {0,2}(HUAWEI |Huawei-|)([UY][^;/]{1,100}) Build\/(?:Huawei|HUAWEI)([UY][^\);]+)\)/, "$1$2", "Huawei", "$2"], [/; {0,2}([^;/]{1,100}) Build[/ ]Huawei(MT1-U06|[A-Z]{1,50}\d+[^\);]{1,50})\)/, "$1", "Huawei", "$2"], [/; {0,2}(S7|M860) Build/, "$1", "Huawei", "$1"], [/; {0,2}((?:HUAWEI|Huawei)[ \-]?)(MediaPad) Build/, "$1$2", "Huawei", "$2"], [/; {0,2}((?:HUAWEI[ _]?|Huawei[ _]|)Ascend[ _])([^;/]{1,100}) Build/, "$1$2", "Huawei", "$2"], [/; {0,2}((?:HUAWEI|Huawei)[ _\-]?)((?:G700-|MT-)[^;/]{1,100}) Build/, "$1$2", "Huawei", "$2"], [/; {0,2}((?:HUAWEI|Huawei)[ _\-]?)([^;/]{1,100}) Build/, "$1$2", "Huawei", "$2"], [/; {0,2}(MediaPad[^;]{1,200}|SpringBoard) Build\/Huawei/, "$1", "Huawei", "$1"], [/; {0,2}([^;]{1,200}) Build\/(?:Huawei|HUAWEI)/, "$1", "Huawei", "$1"], [/; {0,2}([Uu])([89]\d{3}) Build/, "$1$2", "Huawei", "U$2"], [/; {0,2}(?:Ideos |IDEOS )(S7) Build/, "Huawei Ideos$1", "Huawei", "Ideos$1"], [/; {0,2}(?:Ideos |IDEOS )([^;/]{1,50}\s{0,5}|\s{0,5})Build/, "Huawei Ideos$1", "Huawei", "Ideos$1"], [/; {0,2}(Orange Daytona|Pulse|Pulse Mini|Vodafone 858|C8500|C8600|C8650|C8660|Nexus 6P|ATH-.{1,200}?) Build[/ ]/, "Huawei $1", "Huawei", "$1"], [/; {0,2}((?:[A-Z]{3})\-L[A-Za0-9]{2})[\)]/, "Huawei $1", "Huawei", "$1"], [/; {0,2}([^;]{1,200}) Build\/(HONOR|Honor)/, "Huawei Honor $1", "Huawei", "Honor $1"], [/; {0,2}HTC[ _]([^;]{1,200}); Windows Phone/, "HTC $1", "HTC", "$1"], [/; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[/\\]1\.0 | V|\/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))/, "HTC $1", "HTC", "$1"], [/; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)|)(?:[/\\]1\.0 | V|\/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))/, "HTC $1 $2", "HTC", "$1 $2"], [/; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)|)|)(?:[/\\]1\.0 | V|\/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))/, "HTC $1 $2 $3", "HTC", "$1 $2 $3"], [/; {0,2}(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)|)|)|)(?:[/\\]1\.0 | V|\/| +)\d+\.\d[\d\.]*(?: {0,2}Build|\))/, "HTC $1 $2 $3 $4", "HTC", "$1 $2 $3 $4"], [/; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/;]+)(?: {0,2}Build|[;\)]| - )/, "HTC $1", "HTC", "$1"], [/; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/;\)]+)|)(?: {0,2}Build|[;\)]| - )/, "HTC $1 $2", "HTC", "$1 $2"], [/; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/;\)]+)|)|)(?: {0,2}Build|[;\)]| - )/, "HTC $1 $2 $3", "HTC", "$1 $2 $3"], [/; {0,2}(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ /;]+)|)|)|)(?: {0,2}Build|[;\)]| - )/, "HTC $1 $2 $3 $4", "HTC", "$1 $2 $3 $4"], [/HTC Streaming Player [^\/]{0,30}\/[^\/]{0,10}\/ htc_([^/]{1,10}) \//, "HTC $1", "HTC", "$1"], [/(?:[;,] {0,2}|^)(?:htccn_chs-|)HTC[ _-]?([^;]{1,200}?)(?: {0,2}Build|clay|Android|-?Mozilla| Opera| Profile| UNTRUSTED|[;/\(\)]|$)/i, "HTC $1", "HTC", "$1"], [/; {0,2}(A6277|ADR6200|ADR6300|ADR6350|ADR6400[A-Z]*|ADR6425[A-Z]*|APX515CKT|ARIA|Desire[^_ ]*|Dream|EndeavorU|Eris|Evo|Flyer|HD2|Hero|HERO200|Hero CDMA|HTL21|Incredible|Inspire[A-Z0-9]*|Legend|Liberty|Nexus ?(?:One|HD2)|One|One S C2|One[ _]?(?:S|V|X\+?)\w*|PC36100|PG06100|PG86100|S31HT|Sensation|Wildfire)(?: Build|[/;\(\)])/i, "HTC $1", "HTC", "$1"], [/; {0,2}(ADR6200|ADR6400L|ADR6425LVW|Amaze|DesireS?|EndeavorU|Eris|EVO|Evo\d[A-Z]+|HD2|IncredibleS?|Inspire[A-Z0-9]*|Inspire[A-Z0-9]*|Sensation[A-Z0-9]*|Wildfire)[ _-](.{1,200}?)(?:[/;\)]|Build|MIUI|1\.0)/i, "HTC $1 $2", "HTC", "$1 $2"], [/; {0,2}HYUNDAI (T\d[^/]{0,10})(?: Build|\) AppleWebKit)/, "Hyundai $1", "Hyundai", "$1"], [/; {0,2}HYUNDAI ([^;/]{1,10}?)(?: Build|\) AppleWebKit)/, "Hyundai $1", "Hyundai", "$1"], [/; {0,2}(X700|Hold X|MB-6900)(?: Build|\) AppleWebKit)/, "Hyundai $1", "Hyundai", "$1"], [/; {0,2}(?:iBall[ _\-]|)(Andi)[ _]?(\d[^;/]*)(?: Build|\) AppleWebKit)/i, "$1 $2", "iBall", "$1 $2"], [/; {0,2}(IBall)(?:[ _]([^;/]{1,100}?)|)(?: Build|\) AppleWebKit)/i, "$1 $2", "iBall", "$2"], [/; {0,2}(NT-\d+[^ ;/]{0,50}|Net[Tt]AB [^;/]{1,50}|Mercury [A-Z]{1,50}|iconBIT)(?: S\/N:[^;/]{1,50}|)(?: Build|\) AppleWebKit)/, "$1", "IconBIT", "$1"], [/; {0,2}(IMO)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "$1 $2", "IMO", "$2"], [/; {0,2}i-?mobile[ _]([^/]{1,50})(?: Build|\) AppleWebKit)/i, "i-mobile $1", "imobile", "$1"], [/; {0,2}(i-(?:style|note)[^/]{0,10})(?: Build|\) AppleWebKit)/i, "i-mobile $1", "imobile", "$1"], [/; {0,2}(ImPAD) ?(\d+(?:.){0,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Impression", "$1 $2"], [/; {0,2}(Infinix)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Infinix", "$2"], [/; {0,2}(Informer)[ \-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Informer", "$2"], [/; {0,2}(TAB) ?([78][12]4)(?: Build|\) AppleWebKit)/, "Intenso $1", "Intenso", "$1 $2"], [/; {0,2}(?:Intex[ _]|)(AQUA|Aqua)([ _\.\-])([^;/]{1,100}?) {0,2}(?:Build|;)/, "$1$2$3", "Intex", "$1 $3"], [/; {0,2}(?:INTEX|Intex)(?:[_ ]([^\ _;/]+))(?:[_ ]([^\ _;/]+)|) {0,2}(?:Build|;)/, "$1 $2", "Intex", "$1 $2"], [/; {0,2}([iI]Buddy)[ _]?(Connect)(?:_|\?_| |)([^;/]{0,50}) {0,2}(?:Build|;)/, "$1 $2 $3", "Intex", "iBuddy $2 $3"], [/; {0,2}(I-Buddy)[ _]([^;/]{1,100}?) {0,2}(?:Build|;)/, "$1 $2", "Intex", "iBuddy $2"], [/; {0,2}(iOCEAN) ([^/]{1,50})(?: Build|\) AppleWebKit)/i, "$1 $2", "iOCEAN", "$2"], [/; {0,2}(TP\d+(?:\.\d+|)\-\d[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "ionik $1", "ionik", "$1"], [/; {0,2}(M702pro)(?: Build|\) AppleWebKit)/, "$1", "Iru", "$1"], [/; {0,2}itel ([^;/]*)(?: Build|\) AppleWebKit)/, "Itel $1", "Itel", "$1"], [/; {0,2}(DE88Plus|MD70)(?: Build|\) AppleWebKit)/, "$1", "Ivio", "$1"], [/; {0,2}IVIO[_\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Ivio", "$1"], [/; {0,2}(TPC-\d+|JAY-TECH)(?: Build|\) AppleWebKit)/, "$1", "Jaytech", "$1"], [/; {0,2}(JY-[^;/]{1,100}|G[234]S?)(?: Build|\) AppleWebKit)/, "$1", "Jiayu", "$1"], [/; {0,2}(JXD)[ _\-]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "JXD", "$2"], [/; {0,2}Karbonn[ _]?([^;/]{1,100}) {0,2}(?:Build|;)/i, "$1", "Karbonn", "$1"], [/; {0,2}([^;]{1,200}) Build\/Karbonn/, "$1", "Karbonn", "$1"], [/; {0,2}(A11|A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2|Titanium S\d) +Build/, "$1", "Karbonn", "$1"], [/; {0,2}(IS01|IS03|IS05|IS\d{2}SH)(?: Build|\) AppleWebKit)/, "$1", "Sharp", "$1"], [/; {0,2}(IS04)(?: Build|\) AppleWebKit)/, "$1", "Regza", "$1"], [/; {0,2}(IS06|IS\d{2}PT)(?: Build|\) AppleWebKit)/, "$1", "Pantech", "$1"], [/; {0,2}(IS11S)(?: Build|\) AppleWebKit)/, "$1", "SonyEricsson", "Xperia Acro"], [/; {0,2}(IS11CA)(?: Build|\) AppleWebKit)/, "$1", "Casio", "GzOne $1"], [/; {0,2}(IS11LG)(?: Build|\) AppleWebKit)/, "$1", "LG", "Optimus X"], [/; {0,2}(IS11N)(?: Build|\) AppleWebKit)/, "$1", "Medias", "$1"], [/; {0,2}(IS11PT)(?: Build|\) AppleWebKit)/, "$1", "Pantech", "MIRACH"], [/; {0,2}(IS12F)(?: Build|\) AppleWebKit)/, "$1", "Fujitsu", "Arrows ES"], [/; {0,2}(IS12M)(?: Build|\) AppleWebKit)/, "$1", "Motorola", "XT909"], [/; {0,2}(IS12S)(?: Build|\) AppleWebKit)/, "$1", "SonyEricsson", "Xperia Acro HD"], [/; {0,2}(ISW11F)(?: Build|\) AppleWebKit)/, "$1", "Fujitsu", "Arrowz Z"], [/; {0,2}(ISW11HT)(?: Build|\) AppleWebKit)/, "$1", "HTC", "EVO"], [/; {0,2}(ISW11K)(?: Build|\) AppleWebKit)/, "$1", "Kyocera", "DIGNO"], [/; {0,2}(ISW11M)(?: Build|\) AppleWebKit)/, "$1", "Motorola", "Photon"], [/; {0,2}(ISW11SC)(?: Build|\) AppleWebKit)/, "$1", "Samsung", "GALAXY S II WiMAX"], [/; {0,2}(ISW12HT)(?: Build|\) AppleWebKit)/, "$1", "HTC", "EVO 3D"], [/; {0,2}(ISW13HT)(?: Build|\) AppleWebKit)/, "$1", "HTC", "J"], [/; {0,2}(ISW?[0-9]{2}[A-Z]{0,2})(?: Build|\) AppleWebKit)/, "$1", "KDDI", "$1"], [/; {0,2}(INFOBAR [^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "KDDI", "$1"], [/; {0,2}(JOYPAD|Joypad)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1 $2", "Kingcom", "$1 $2"], [/; {0,2}(Vox|VOX|Arc|K080)(?: Build|\) AppleWebKit)/i, "$1", "Kobo", "$1"], [/\b(Kobo Touch)\b/, "$1", "Kobo", "$1"], [/; {0,2}(K-Touch)[ _]([^;/]{1,100}?)(?: Build|\) AppleWebKit)/i, "$1 $2", "Ktouch", "$2"], [/; {0,2}((?:EV|KM)-S\d+[A-Z]?)(?: Build|\) AppleWebKit)/i, "$1", "KTtech", "$1"], [/; {0,2}(Zio|Hydro|Torque|Event|EVENT|Echo|Milano|Rise|URBANO PROGRESSO|WX04K|WX06K|WX10K|KYL21|101K|C5[12]\d{2})(?: Build|\) AppleWebKit)/, "$1", "Kyocera", "$1"], [/; {0,2}(?:LAVA[ _]|)IRIS[ _\-]?([^/;\)]+) {0,2}(?:;|\)|Build)/i, "Iris $1", "Lava", "Iris $1"], [/; {0,2}LAVA[ _]([^;/]{1,100}) Build/, "$1", "Lava", "$1"], [/; {0,2}(?:(Aspire A1)|(?:LEMON|Lemon)[ _]([^;/]{1,100}))_?(?: Build|\) AppleWebKit)/, "Lemon $1$2", "Lemon", "$1$2"], [/; {0,2}(TAB-1012)(?: Build|\) AppleWebKit)/, "Lenco $1", "Lenco", "$1"], [/; Lenco ([^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "Lenco $1", "Lenco", "$1"], [/; {0,2}(A1_07|A2107A-H|S2005A-H|S1-37AH0) Build/, "$1", "Lenovo", "$1"], [/; {0,2}(Idea[Tp]ab)[ _]([^;/]{1,100});? Build/, "Lenovo $1 $2", "Lenovo", "$1 $2"], [/; {0,2}(Idea(?:Tab|pad)) ?([^;/]{1,100}) Build/, "Lenovo $1 $2", "Lenovo", "$1 $2"], [/; {0,2}(ThinkPad) ?(Tablet) Build\//, "Lenovo $1 $2", "Lenovo", "$1 $2"], [/; {0,2}(?:LNV-|)(?:=?[Ll]enovo[ _\-]?|LENOVO[ _])(.{1,200}?)(?:Build|[;/\)])/, "Lenovo $1", "Lenovo", "$1"], [/[;,] (?:Vodafone |)(SmartTab) ?(II) ?(\d+) Build\//, "Lenovo $1 $2 $3", "Lenovo", "$1 $2 $3"], [/; {0,2}(?:Ideapad |)K1 Build\//, "Lenovo Ideapad K1", "Lenovo", "Ideapad K1"], [/; {0,2}(3GC101|3GW10[01]|A390) Build\//, "$1", "Lenovo", "$1"], [/\b(?:Lenovo|LENOVO)+[ _\-]?([^,;:/ ]+)/, "Lenovo $1", "Lenovo", "$1"], [/; {0,2}(MFC\d+)[A-Z]{2}([^;,/]*),?(?: Build|\) AppleWebKit)/, "$1$2", "Lexibook", "$1$2"], [/; {0,2}(E[34][0-9]{2}|LS[6-8][0-9]{2}|VS[6-9][0-9]+[^;/]{1,30}|Nexus 4|Nexus 5X?|GT540f?|Optimus (?:2X|G|4X HD)|OptimusX4HD) {0,2}(?:Build|;)/, "$1", "LG", "$1"], [/[;:] {0,2}(L-\d+[A-Z]|LGL\d+[A-Z]?)(?:\/V\d+|) {0,2}(?:Build|[;\)])/, "$1", "LG", "$1"], [/; {0,2}(LG-)([A-Z]{1,2}\d{2,}[^,;/\)\(]*?)(?:Build| V\d+|[,;/\)\(]|$)/, "$1$2", "LG", "$2"], [/; {0,2}(LG[ \-]|LG)([^;/]{1,100})[;/]? Build/, "$1$2", "LG", "$2"], [/^(LG)-([^;/]{1,100})\/ Mozilla\/.{0,200}; Android/, "$1 $2", "LG", "$2"], [/(Web0S); Linux\/(SmartTV)/, "LG $1 $2", "LG", "$1 $2"], [/; {0,2}((?:SMB|smb)[^;/]{1,100}?)(?: Build|\) AppleWebKit)/, "$1", "Malata", "$1"], [/; {0,2}(?:Malata