Ignore:
Timestamp:
11/25/21 22:08:24 (3 years ago)
Author:
Ema <ema_spirova@…>
Branches:
master
Children:
8d391a1
Parents:
59329aa
Message:

primeNG components

Location:
trip-planner-front/node_modules/ua-parser-js/test
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trip-planner-front/node_modules/ua-parser-js/test/browser-test.json

    r59329aa re29cc2e  
    161161    },
    162162    {
     163        "desc"    : "Camino on Mac",
     164        "ua"      : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Camino/2.2.1",
     165        "expect"  :
     166        {
     167            "name"    : "Camino",
     168            "version" : "2.2.1",
     169            "major"   : "2"
     170        }
     171    },
     172    {
    163173        "desc"    : "Chimera",
    164174        "ua"      : "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; pl-PL; rv:1.0.1) Gecko/20021111 Chimera/0.6",
     
    428438            "version" : "1.0a1",
    429439            "major"   : "1"
     440        }
     441    },
     442    {
     443        "desc"    : "Firefox for Maemo (Nokia N900)",
     444        "ua"      : "Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1",
     445        "expect"  :
     446        {
     447            "name"    : "Fennec",
     448            "version" : "10.0.1",
     449            "major"   : "10"
    430450        }
    431451    },
     
    730750    },
    731751    {
     752        "desc"    : "Netscape 6",
     753        "ua"      : "Mozilla/5.0 (Windows; U; Win95; de-DE; rv:0.9.2) Gecko/20010726 Netscape6/6.1",
     754        "expect"  :
     755        {
     756            "name"    : "Netscape",
     757            "version" : "6.1",
     758            "major"   : "6"
     759        }
     760    },
     761    {
    732762        "desc"    : "Nokia Browser",
    733763        "ua"      : "Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/025.007; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.37 Mobile Safari/533.4 3gpp-gba",
     
    740770    },
    741771    {
     772        "desc"    : "Obigo",
     773        "ua"      : "LG-GS290/V100 Obigo/WAP2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1",
     774        "expect"  :
     775        {
     776            "name"    : "Obigo",
     777            "version" : "WAP2.0",
     778            "major"   : "2"
     779        }
     780    },
     781    {
     782        "desc"    : "Obigo",
     783        "ua"      : "LG/KU990i/v10a Browser/Obigo-Q05A/3.6 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1",
     784        "expect"  :
     785        {
     786            "name"    : "Obigo",
     787            "version" : "Q05A",
     788            "major"   : "05"
     789        }
     790    },
     791    {
    742792        "desc"    : "Oculus Browser",
    743793        "ua"      : "Mozilla/5.0 (Linux; Android 7.0; SM-G920I Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/3.4.9 SamsungBrowser/4.0 Chrome/57.0.2987.146 Mobile VR Safari/537.36",
     
    750800    },
    751801    {
     802        "desc"    : "Oculus Browser",
     803        "ua"      : "Mozilla/5.0 (Linux; Android 10; Quest 2) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/15.0.0.0.22.280317669 SamsungBrowser/4.0 Chrome/89.0.4389.90 VR Safari/537.36",
     804        "expect"  :
     805        {
     806            "name"    : "Oculus Browser",
     807            "version" : "15.0.0.0.22.280317669",
     808            "major"   : "15"
     809        }
     810    },
     811    {
    752812        "desc"    : "OmniWeb",
    753813        "ua"      : "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85 (KHTML, like Gecko) OmniWeb/v558.48",
     
    9601020    },
    9611021    {
     1022        "desc"    : "SeaMonkey on Mac",
     1023        "ua"      : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1",
     1024        "expect"  :
     1025        {
     1026            "name"    : "SeaMonkey",
     1027            "version" : "2.7.1",
     1028            "major"   : "2"
     1029        }
     1030    },
     1031    {
    9621032        "desc"    : "Silk Browser",
    9631033        "ua"      : "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-84)",
     
    10901160    },
    10911161    {
     1162        "desc"    : "UPBrowser",
     1163        "ua"      : "BenQ-CF61/1.00/WAP2.0/MIDP2.0/CLDC1.0 UP.Browser/6.3.0.4.c.1.102 (GUI) MMP/2.0",
     1164        "expect"  :
     1165        {
     1166            "name"    : "UP.Browser",
     1167            "version" : "6.3.0.4.c.1.102",
     1168            "major"   : "6"
     1169        }
     1170    },
     1171    {
    10921172        "desc": "WeChat on iOS",
    10931173        "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H321 MicroMessenger/6.3.6 NetType/WIFI Language/zh_CN",
     
    12301310    },
    12311311    {
     1312        "desc"    : "Firefox iOS using iPad",
     1313        "ua"      : "Mozilla/5.0 (iPad; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4",
     1314        "expect"  :
     1315        {
     1316            "name"    : "Firefox",
     1317            "version" : "1.0",
     1318            "major"   : "1"
     1319        }
     1320    },
     1321    {
    12321322        "desc"    : "QQ on iOS",
    12331323        "ua"      : "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A456 QQ/6.5.3.410 V1_IPH_SQ_6.5.3_1_APP_A Pixel/1080 Core/UIWebView NetType/WIFI Mem/26",
  • trip-planner-front/node_modules/ua-parser-js/test/cpu-test.json

    r59329aa re29cc2e  
    8181    },
    8282    {
     83        "desc"    : "Nokia N900 Linux mobile",
     84        "ua"      : "Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0) Gecko/20100101 Firefox/10.0 Fennec/10.0",
     85        "expect"  :
     86        {
     87            "architecture"  : "arm"
     88        }
     89    },
     90    {
    8391        "desc"    : "ARMEABI",
    8492        "ua"      : "[FBAN/FB4A;FBAV/237.0.0.44.120;FBBV/170693408;FBDM/{density=1.75,width=720,height=1280};FBLC/en_US;FBRV/172067074;FBCR/ ;FBMF/samsung;FBBD/samsung;FBPN/com.facebook.katana;FBDV/SM-S367VL;FBSV/9;FBBK/1;FBOP/19;FBCA/armeabi-v7a:armeabi;]",
     
    105113    },
    106114    {
     115        "desc"    : "ARM64",
     116        "ua"      : "Mozilla/5.0 (Windows NT 10.0; ARM64; RM-1096) AppleWebKit/537.36 (KHTML like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393",
     117        "expect"  :
     118        {
     119            "architecture"  : "arm64"
     120        }
     121    },
     122    {
     123        "desc"    : "ARM64",
     124        "ua"      : "Mozilla/5.0 (Linux; arm_64; Android 9; HRY-LX1T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 YaBrowser/19.12.1.121.00 Mobile Safari/537.36",
     125        "expect"  :
     126        {
     127            "architecture"  : "arm64"
     128        }
     129    },
     130    {
    107131        "desc"    : "Pocket PC",
    108132        "ua"      : "Opera/9.7 (Windows Mobile; PPC; Opera Mobi/35166; U; en) Presto/2.2.1",
     
    131155        "desc"    : "Mac PowerPC",
    132156        "ua"      : "iCab/2.9.5 (Macintosh; U; PPC; Mac OS X)",
     157        "expect"  :
     158        {
     159            "architecture"  : "ppc"
     160        }
     161    },
     162    {
     163        "desc"    : "Mac OS X on PowerPC using Firefox",
     164        "ua"      : "Mozilla/5.0 (Macintosh; PPC Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0",
    133165        "expect"  :
    134166        {
  • trip-planner-front/node_modules/ua-parser-js/test/device-test.json

    r59329aa re29cc2e  
    9999    },
    100100    {
     101        "desc": "ASUS Zenfone Max Pro",
     102        "ua": "Mozilla/5.0 (Linux; Android 9; ZB602KL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
     103        "expect": {
     104            "vendor": "ASUS",
     105            "model": "ZB602KL",
     106            "type": "mobile"
     107        }
     108    },
     109    {
    101110        "desc": "ASUS Zenfone Max Pro (M1)",
    102111        "ua": "Mozilla/5.0 (Linux; Android 8.1; ASUS_X00TD Build/OPM1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.137 Mobile Safari/537.36",
     
    207216    },
    208217    {
     218        "desc": "Fairphone 2",
     219        "ua": "Mozilla/5.0 (Linux; Android 7.1.2; FP2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36",
     220        "expect": {
     221            "vendor": "Fairphone",
     222            "model": "FP2",
     223            "type": "mobile"
     224        }
     225    },
     226    {
     227        "desc": "Fairphone 3",
     228        "ua": "Mozilla/5.0 (Linux; Android 9; FP3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36",
     229        "expect": {
     230            "vendor": "Fairphone",
     231            "model": "FP3",
     232            "type": "mobile"
     233        }
     234    },
     235    {
    209236        "desc": "HTC Desire 820",
    210237        "ua": "Mozilla/5.0 (Linux; Android 6.0.1; HTC Desire 820 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36",
     
    266293            "vendor": "Huawei",
    267294            "model": "LUA-L03",
     295            "type": "mobile"
     296        }
     297    },
     298    {
     299        "desc": "HUAWEI MediaPad M3 Lite 10",
     300        "ua": "Mozilla/5.0 (Linux; Android 7.0; BAH-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Safari/537.36",
     301        "expect": {
     302            "vendor": "Huawei",
     303            "model": "BAH-L09",
     304            "type": "tablet"
     305        }
     306    },
     307    {
     308        "desc": "HUAWEI MediaPad M5 Lite",
     309        "ua": "Mozilla/5.0 (Linux; Android 8.0.0; BAH2-W19 Build/HUAWEIBAH2-W19; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Safari/537.36",
     310        "expect": {
     311            "vendor": "Huawei",
     312            "model": "BAH2-W19",
     313            "type": "tablet"
     314        }
     315    },
     316    {
     317        "desc": "HUAWEI MediaPad M5",
     318        "ua": "Mozilla/5.0 (Linux; Android 9; SHT-AL09 Build/HUAWEISHT-AL09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.90 Mobile Safari/537.36",
     319        "expect": {
     320            "vendor": "Huawei",
     321            "model": "SHT-AL09",
     322            "type": "tablet"
     323        }
     324    },
     325    {
     326        "desc": "HUAWEI MediaPad T5",
     327        "ua": "Mozilla/5.0 (Linux; Android 8.0.0; AGS2-L09 Build/HUAWEIAGS2-L09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/84.0.4147.125 Safari/537.36",
     328        "expect": {
     329            "vendor": "Huawei",
     330            "model": "AGS2-L09",
     331            "type": "tablet"
     332        }
     333    },
     334    {
     335        "desc": "HUAWEI MediaPad T10",
     336        "ua": "Mozilla/5.0 (Linux; Android 10; AGR-W09 Build/HUAWEIAGR-W09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Safari/537.36",
     337        "expect": {
     338            "vendor": "Huawei",
     339            "model": "AGR-W09",
     340            "type": "tablet"
     341        }
     342    },
     343    {
     344        "desc": "HUAWEI MediaPad T10s",
     345        "ua": "Mozilla/5.0 (Linux; Android 10; AGS3-W09 Build/HUAWEIAGS3-W09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Safari/537.36",
     346        "expect": {
     347            "vendor": "Huawei",
     348            "model": "AGS3-W09",
     349            "type": "tablet"
     350        }
     351    },
     352    {
     353        "desc": "Huawei MatePad T 10",
     354        "ua": "Mozilla/5.0 (Linux; Android 10; AGR-L09; HMSCore 5.0.4.301) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 HuaweiBrowser/11.0.3.304 Safari/537.36",
     355        "expect": {
     356            "vendor": "Huawei",
     357            "model": "AGR-L09",
     358            "type": "tablet"
     359        }
     360    },
     361    {
     362        "desc": "Huawei M3",
     363        "ua": "Mozilla/5.0 (Linux; Android 7.0; BTV-W09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
     364        "expect": {
     365            "vendor": "Huawei",
     366            "model": "BTV-W09",
     367            "type": "tablet"
     368        }
     369    },
     370    {
     371        "desc": "Huawei Mate 10 Pro",
     372        "ua": "Mozilla/5.0 (Linux; Android 8.0; BLA-L29 Build/HUAWEIBLA-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3236.6 Mobile Safari/537.36",
     373        "expect": {
     374            "vendor": "Huawei",
     375            "model": "BLA-L29",
     376            "type": "mobile"
     377        }
     378    },
     379    {
     380        "desc": "Huawei Mate X",
     381        "ua": "Mozilla/5.0 (Linux; Android 9; TAH-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.111 Safari/537.36",
     382        "expect": {
     383            "vendor": "Huawei",
     384            "model": "TAH-AN00",
     385            "type": "mobile"
     386        }
     387    },
     388    {
     389        "desc": "Huawei Mate X2",
     390        "ua": "Mozilla/5.0 (Linux; Android 10; TET-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
     391        "expect": {
     392            "vendor": "Huawei",
     393            "model": "TET-AN00",
     394            "type": "mobile"
     395        }
     396    },
     397    {
     398      "desc": "Huawei Mate 20 X",
     399      "ua": "Mozilla/5.0 (Linux; Android 9; EVR-L29 Build/HUAWEIEVR-L29; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36",
     400      "expect": {
     401          "vendor": "Huawei",
     402          "model": "EVR-L29",
     403          "type": "mobile"
     404      }
     405    },
     406    {
     407      "desc": "Huawei Mate 20 Pro",
     408      "ua": "Mozilla/5.0 (Linux; Android 9; LYA-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
     409      "expect": {
     410          "vendor": "Huawei",
     411          "model": "LYA-L09",
     412          "type": "mobile"
     413      }
     414    },
     415    {
     416      "desc": "Huawei Mate 20 Pro",
     417      "ua": "Mozilla/5.0 (Linux; Android 9; LYA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
     418      "expect": {
     419          "vendor": "Huawei",
     420          "model": "LYA-AL00",
     421          "type": "mobile"
     422      }
     423    },
     424    {
     425        "desc": "Huawei P20 Lite",
     426        "ua": "Mozilla/5.0 (Linux; Android 8.0.0; ANE-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36",
     427        "expect": {
     428            "vendor": "Huawei",
     429            "model": "ANE-LX1",
     430            "type": "mobile"
     431        }
     432    },
     433    {
     434      "desc": "Huawei P20",
     435      "ua": "Mozilla/5.0 (Linux; Android 8.1.0; EML-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36",
     436      "expect": {
     437          "vendor": "Huawei",
     438          "model": "EML-L29",
     439          "type": "mobile"
     440      }
     441    },
     442    {
     443        "desc": "Huawei P20 Pro",
     444        "ua": "Mozilla/5.0 (Linux; Android 9; CLT-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
     445        "expect": {
     446            "vendor": "Huawei",
     447            "model": "CLT-L29",
     448            "type": "mobile"
     449        }
     450    },
     451    {
     452        "desc": "Huawei P30",
     453        "ua": "Mozilla/5.0 (Linux; Android 9; ELE-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.90 Mobile Safari/537.36",
     454        "expect": {
     455            "vendor": "Huawei",
     456            "model": "ELE-L29",
     457            "type": "mobile"
     458        }
     459    },
     460    {
     461        "desc": "Huawei P30 Pro",
     462        "ua": "Mozilla/5.0 (Linux; Android 9; VOG-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36",
     463        "expect": {
     464            "vendor": "Huawei",
     465            "model": "VOG-L29",
     466            "type": "mobile"
     467        }
     468    },
     469    {
     470        "desc": "Huawei P40",
     471        "ua": "Mozilla/5.0 (Linux; Android 10; ANA-AN00 Build/HUAWEIANA-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/11.26 SP-engine/2.22.0 baiduboxapp/11.26.0.10 (Baidu; P1 10) NABar/1.0",
     472        "expect": {
     473            "vendor": "Huawei",
     474            "model": "ANA-AN00",
     475            "type": "mobile"
     476        }
     477    },
     478    {
     479        "desc": "Huawei P40 Pro",
     480        "ua": "Mozilla/5.0 (Linux; Android 10; ELS-AN00 Build/HUAWEIELS-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Mobile Safari/537.36 mailapp/6.0.0",
     481        "expect": {
     482            "vendor": "Huawei",
     483            "model": "ELS-AN00",
     484            "type": "mobile"
     485        }
     486    },
     487    {
     488        "desc": "Huawei 30 Pro+",
     489        "ua": "Mozilla/5.0 (Linux; Android 10; EBG-AN10 Build/HUAWEIEBG-AN10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.86 Mobile Safari/537.36 EdgA/42.0.0.2741",
     490        "expect": {
     491            "vendor": "Huawei",
     492            "model": "EBG-AN10",
     493            "type": "mobile"
     494        }
     495    },
     496    {
     497        "desc": "Huawei 30S",
     498        "ua": "Mozilla/5.0 (Linux; Android 10; CDY-AN90 Build/HUAWEICDY-AN90; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Mobile Safari/537.36 mailapp/5.8.0",
     499        "expect": {
     500            "vendor": "Huawei",
     501            "model": "CDY-AN90",
     502            "type": "mobile"
     503        }
     504    },
     505    {
     506        "desc": "Huawei Enjoy10e",
     507        "ua": "Dalvik/2.1.0 (Linux; U; Android 10; MED-AL00 Build/HUAWEIMED-AL00)",
     508        "expect": {
     509            "vendor": "Huawei",
     510            "model": "MED-AL00",
     511            "type": "mobile"
     512        }
     513    },
     514    {
     515        "desc": "Huawei Honor 6A",
     516        "ua": "Mozilla/5.0 (Linux; Android 7.0; DLI-L22 Build/HONORDLI-L22; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.116 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/252.0.0.22.355;]",
     517        "expect": {
     518            "vendor": "Huawei",
     519            "model": "DLI-L22",
     520            "type": "mobile"
     521        }
     522    },
     523    {
     524        "desc": "Huawei Honor 7",
     525        "ua": "Mozilla/5.0 (Linux; Android 6.0; PLK-L01 Build/HONORPLK-L01; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.116 Mobile Safari/537.36",
     526        "expect": {
     527            "vendor": "Huawei",
     528            "model": "PLK-L01",
     529            "type": "mobile"
     530        }
     531    },
     532    {
     533        "desc": "Huawei 10 Lite",
     534        "ua": "Mozilla/5.0 (Linux; Android 9; HRY-LX1 Build/HONORHRY-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36",
     535        "expect": {
     536            "vendor": "Huawei",
     537            "model": "HRY-LX1",
     538            "type": "mobile"
     539        }
     540    },
     541    {
     542        "desc": "Huawei Y7 2018",
     543        "ua": "Mozilla/5.0 (Linux; Android 8.0.0; LDN-L01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.62 Mobile Safari/537.36",
     544        "expect": {
     545            "vendor": "Huawei",
     546            "model": "LDN-L01",
     547            "type": "mobile"
     548        }
     549    },
     550    {
     551        "desc": "Huawei Honor 8X",
     552        "ua": "Mozilla/5.0 (Linux; Android 9; JSN-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Mobile Safari/537.36",
     553        "expect": {
     554            "vendor": "Huawei",
     555            "model": "JSN-L21",
     556            "type": "mobile"
     557        }
     558    },
     559    {
     560        "desc": "Huawei Y6 2019",
     561        "ua": "Mozilla/5.0 (Linux; Android 9; MRD-LX1N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36",
     562        "expect": {
     563            "vendor": "Huawei",
     564            "model": "MRD-LX1N",
     565            "type": "mobile"
     566        }
     567    },
     568    {
     569        "desc": "Huawei Y9 2019",
     570        "ua": "Mozilla/5.0 (Linux; Android 9; JKM-LX2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
     571        "expect": {
     572            "vendor": "Huawei",
     573            "model": "JKM-LX2",
     574            "type": "mobile"
     575        }
     576    },
     577    {
     578        "desc": "Huawei Y5",
     579        "ua": "Mozilla/5.0 (Linux; Android 9; AMN-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
     580        "expect": {
     581            "vendor": "Huawei",
     582            "model": "AMN-LX3",
     583            "type": "mobile"
     584        }
     585    },
     586    {
     587        "desc": "Huawei Y7p",
     588        "ua": "Mozilla/5.0 (Linux; Android 9; ART-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36",
     589        "expect": {
     590            "vendor": "Huawei",
     591            "model": "ART-L29",
     592            "type": "mobile"
     593        }
     594    },
     595    {
     596        "desc": "Huawei Mate 20 Lite",
     597        "ua": "Mozilla/5.0 (Linux; Android 8.1.0; SNE-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.116 Mobile Safari/537.36",
     598        "expect": {
     599            "vendor": "Huawei",
     600            "model": "SNE-LX1",
     601            "type": "mobile"
     602        }
     603    },
     604    {
     605        "desc": "Huawei P10 Lite",
     606        "ua": "Mozilla/5.0 (Linux; Android 8.0.0; WAS-LX1A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.90 Mobile Safari/537.36",
     607        "expect": {
     608            "vendor": "Huawei",
     609            "model": "WAS-LX1A",
     610            "type": "mobile"
     611        }
     612    },
     613    {
     614        "desc": "Huawei Y5 Lite 2018",
     615        "ua": "Mozilla/5.0 (Linux; Android 8.1.0; DRA-LX5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
     616        "expect": {
     617            "vendor": "Huawei",
     618            "model": "DRA-LX5",
     619            "type": "mobile"
     620        }
     621    },
     622    {
     623        "desc": "Huawei Honor 8C",
     624        "ua": "Mozilla/5.0 (Linux; Android 8.1.0; BKK-LX2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36",
     625        "expect": {
     626            "vendor": "Huawei",
     627            "model": "BKK-LX2",
    268628            "type": "mobile"
    269629        }
     
    369729    },
    370730    {
     731        "desc": "LG V40 ThinQ",
     732        "ua": "Mozilla/5.0 (Linux; Android 9; LM-V405) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
     733        "expect": {
     734            "vendor": "LG",
     735            "model": "LM-V405",
     736            "type": "mobile"
     737        }
     738    },
     739    {
     740        "desc": "LG K30",
     741        "ua": "Mozilla/5.0 (Linux; Android 8.1.0; LM-X410.F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
     742        "expect": {
     743            "vendor": "LG",
     744            "model": "LM-X410.F",
     745            "type": "mobile"
     746        }
     747    },
     748    {
     749        "desc": "LG K30",
     750        "ua": "Mozilla/5.0 (Linux; Android 9; LM-X410.FGN) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36",
     751        "expect": {
     752            "vendor": "LG",
     753            "model": "LM-X410.FGN",
     754            "type": "mobile"
     755        }
     756    },
     757    {
     758        "desc": "LG Stylo 5",
     759        "ua": "Mozilla/5.0 (Linux; Android 9; LM-Q720) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
     760        "expect": {
     761            "vendor": "LG",
     762            "model": "LM-Q720",
     763            "type": "mobile"
     764        }
     765    },
     766    {
     767        "desc": "LG G7 ThinQ",
     768        "ua": "Mozilla/5.0 (Linux; Android 9; LM-G710VM Build/PKQ1.181105.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.136 Mobile Safari/537.36",
     769        "expect": {
     770            "vendor": "LG",
     771            "model": "LM-G710VM",
     772            "type": "mobile"
     773        }
     774    },
     775    {
    371776        "desc": "LG K500",
    372777        "ua": "Mozilla/5.0 (Linux; Android 6.0.1; LG-K500 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36",
     
    425830        "desc": "LG Smart TV",
    426831        "ua": "Mozilla/5.0 (Linux; NetCast; U) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/53.0.2785 34 Safari/537.31 SmartTV/8.5",
     832        "expect": {
     833            "vendor": "LG",
     834            "model": "undefined",
     835            "type": "smarttv"
     836        }
     837    },
     838    {
     839        "desc": "LG Android TV",
     840        "ua": "Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; LG Android TV Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30",
    427841        "expect": {
    428842            "vendor": "LG",
     
    6411055    },
    6421056    {
     1057        "desc": "Oculus Quest",
     1058        "ua": "Mozilla/5.0 (Linux; Android 10; Quest) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/15.0.0.0.22.280317669 SamsungBrowser/4.0 Chrome/89.0.4389.90 VR Safari/537.36",
     1059        "expect": {
     1060            "vendor": "Facebook",
     1061            "model": "Quest",
     1062            "type": "wearable"
     1063        }
     1064    },
     1065    {
     1066        "desc": "Oculus Quest 2",
     1067        "ua": "Mozilla/5.0 (Linux; Android 10; Quest 2) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/15.0.0.0.22.280317669 SamsungBrowser/4.0 Chrome/89.0.4389.90 VR Safari/537.36",
     1068        "expect": {
     1069            "vendor": "Facebook",
     1070            "model": "Quest 2",
     1071            "type": "wearable"
     1072        }
     1073    },
     1074    {
    6431075        "desc": "OnePlus One",
    6441076        "ua": "Mozilla/5.0 (Linux; Android 4.4.4; A0001 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36",
    6451077        "expect": {
    6461078            "vendor": "OnePlus",
    647             "model": "1",
     1079            "model": "A0001",
    6481080            "type": "mobile"
    6491081        }
     
    6541086        "expect": {
    6551087            "vendor": "OnePlus",
    656             "model": "1",
     1088            "model": "A0001",
     1089            "type": "mobile"
     1090        }
     1091    },
     1092    {
     1093        "desc": "OnePlus 2",
     1094        "ua": "Mozilla/5.0 (Linux; Android 6.0.1; ONE A2003) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36",
     1095        "expect": {
     1096            "vendor": "OnePlus",
     1097            "model": "A2003",
    6571098            "type": "mobile"
    6581099        }
     
    8031244    },
    8041245    {
     1246        "desc": "OPPO Reno5 A",
     1247        "ua": "Mozilla/5.0 (Linux; Android 11; A101OP) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Mobile Safari/537.36",
     1248        "expect": {
     1249            "vendor": "OPPO",
     1250            "model": "A101OP",
     1251            "type": "mobile"
     1252        }
     1253    },
     1254    {
    8051255        "desc": "OPPO Find X",
    8061256        "ua": "Mozilla/5.0 (Linux; Android 8.1; PAFM00 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
     
    8301280    },
    8311281    {
     1282        "desc": "Realme C2",
     1283        "ua": "Mozilla/5.0 (Linux; Android 9; RMX1941) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
     1284        "expect": {
     1285            "vendor": "Realme",
     1286            "model": "RMX1941",
     1287            "type": "mobile"
     1288        }
     1289    },
     1290    {
    8321291        "desc": "Realme Narzo 20",
    8331292        "ua": "Mozilla/5.0 (Linux; U; Android 10; xx-xx; RMX2193 Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36",
     
    8351294            "vendor": "Realme",
    8361295            "model": "RMX2193",
     1296            "type": "mobile"
     1297        }
     1298    },
     1299    {
     1300        "desc": "Realme 2 Pro",
     1301        "ua": "Mozilla/5.0 (Linux; Android 9; RMX1801) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
     1302        "expect": {
     1303            "vendor": "Realme",
     1304            "model": "RMX1801",
    8371305            "type": "mobile"
    8381306        }
     
    8481316    },
    8491317    {
     1318        "desc": "Roku",
     1319        "ua": "Mozilla/5.0 (Roku) AppleWebKit/537.36 (KHTML, like Gecko) Web/1.1 Safari/537.36",
     1320        "expect": {
     1321            "vendor": "Roku",
     1322            "model": "",
     1323            "type": "smarttv"
     1324        }
     1325    },
     1326    {
     1327        "desc": "Roku",
     1328        "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 Roku/DVP-8.10 (468.10E04145A)",
     1329        "expect": {
     1330            "vendor": "Roku",
     1331            "model": "DVP-8.10",
     1332            "type": "smarttv"
     1333        }
     1334    },
     1335    {
     1336        "desc": "Roku",
     1337        "ua": "Roku4640X/DVP-7.70 (297.70E04154A)",
     1338        "expect": {
     1339            "vendor": "Roku",
     1340            "model": "DVP-7.70",
     1341            "type": "smarttv"
     1342        }
     1343    },
     1344    {
    8501345        "desc": "Kindle Fire HD",
    8511346        "ua": "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true",
     
    10821577    },
    10831578    {
     1579        "desc": "Sharp Aquos B10",
     1580        "ua": "Mozilla/5.0 (Linux; Android 7.0; SH-A01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Mobile Safari/537.36",
     1581        "expect": {
     1582            "vendor": "Sharp",
     1583            "model": "SH-A01",
     1584            "type": "mobile"
     1585        }
     1586    },
     1587    {
     1588        "desc": "Sharp Aquos L2",
     1589        "ua": "Mozilla/5.0 (Linux; Android 7.0; SH-L02 Build/S4045) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36",
     1590        "expect": {
     1591            "vendor": "Sharp",
     1592            "model": "SH-L02",
     1593            "type": "mobile"
     1594        }
     1595    },
     1596    {
     1597        "desc": "Sharp Aquos R2",
     1598        "ua": "Mozilla/5.0 (Linux; Android 8.0; SHV42) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36",
     1599        "expect": {
     1600            "vendor": "Sharp",
     1601            "model": "SHV42",
     1602            "type": "mobile"
     1603        }
     1604    },
     1605    {
    10841606        "desc": "Sony G8141 (Xperia XZ Premium)",
    10851607        "ua": "Mozilla/5.0 (Linux; Android 8.0.0; G8141) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36",
     
    11501672            "vendor": "Sony",
    11511673            "model": "XQ-AT51",
     1674            "type": "mobile"
     1675        }
     1676    },
     1677    {
     1678        "desc": "Sony Xperia 1ii",
     1679        "ua": "Mozilla/5.0 (Linux; Android 10; SOG01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 Mobile Safari/537.36",
     1680        "expect": {
     1681            "vendor": "Sony",
     1682            "model": "SOG01",
    11521683            "type": "mobile"
    11531684        }
     
    13091840    },
    13101841    {
     1842        "desc": "Xiaomi Mi Max 3",
     1843        "ua": "Mozilla/5.0 (Linux; Android 9; MI MAX 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.116 Mobile Safari/537.36",
     1844        "expect": {
     1845            "vendor": "Xiaomi",
     1846            "model": "MI MAX 3",
     1847            "type": "mobile"
     1848        }
     1849    },
     1850    {
     1851        "desc": "Xiaomi Mi A1",
     1852        "ua": "Mozilla/5.0 (Linux; Android 9; Mi A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.101 Mobile Safari/537.36",
     1853        "expect": {
     1854            "vendor": "Xiaomi",
     1855            "model": "Mi A1",
     1856            "type": "mobile"
     1857        }
     1858    },
     1859    {
     1860        "desc": "Xiaomi Mi A2 Lite",
     1861        "ua": "Mozilla/5.0 (Linux; Android 9; Mi A2 Lite) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.62 Mobile Safari/537.36",
     1862        "expect": {
     1863            "vendor": "Xiaomi",
     1864            "model": "Mi A2 Lite",
     1865            "type": "mobile"
     1866        }
     1867    },
     1868    {
     1869        "desc": "Xiaomi Mi 9 SE",
     1870        "ua": "Mozilla/5.0 (Linux; Android 9; Mi 9 SE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
     1871        "expect": {
     1872            "vendor": "Xiaomi",
     1873            "model": "Mi 9 SE",
     1874            "type": "mobile"
     1875        }
     1876    },
     1877    {
     1878        "desc": "Xiaomi Mi A2",
     1879        "ua": "Mozilla/5.0 (Linux; Android 9; Mi A2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Mobile Safari/537.36",
     1880        "expect": {
     1881            "vendor": "Xiaomi",
     1882            "model": "Mi A2",
     1883            "type": "mobile"
     1884        }
     1885    },
     1886    {
    13111887        "desc": "Xiaomi MI PAD 2",
    13121888        "ua": "Mozilla/5.0 (Linux; Android 5.1; MI PAD 2 Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.107 Safari/537.36 [FB_IAB/FB4A;FBAV/137.0.0.24.91;]",
     
    16942270    },
    16952271    {
    1696         "desc": "Android Phone Unidentified Vendor (docomo SH-02M)",
     2272        "desc": "docomo SH-02M",
    16972273        "ua": "Mozilla/5.0 (Linux; Android 9; SH-02M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
    16982274        "expect": {
     2275            "vendor": "Sharp",
    16992276            "model": "SH-02M",
    17002277            "type": "mobile"
     
    18582435            "vendor": "ZTE",
    18592436            "model": "NX629J",
     2437            "type": "mobile"
     2438        }
     2439    },
     2440    {
     2441        "desc": "ZTE Blade A5",
     2442        "ua": "Mozilla/5.0 (Linux; Android 9; ZTE Blade A5 2019) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
     2443        "expect": {
     2444            "vendor": "ZTE",
     2445            "model": "Blade A5 2019",
     2446            "type": "mobile"
     2447        }
     2448    },
     2449    {
     2450        "desc": "ZTE BLADE V0730",
     2451        "ua": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V0730) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
     2452        "expect": {
     2453            "vendor": "ZTE",
     2454            "model": "BLADE V0730",
     2455            "type": "mobile"
     2456        }
     2457    },
     2458    {
     2459        "desc": "ZTE B2017G",
     2460        "ua": "Mozilla/5.0 (Linux; Android 7.1.1; ZTE B2017G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36",
     2461        "expect": {
     2462            "vendor": "ZTE",
     2463            "model": "B2017G",
    18602464            "type": "mobile"
    18612465        }
     
    20692673    },
    20702674    {
    2071         "desc": "HUAWEI MediaPad M3 Lite 10",
    2072         "ua": "Mozilla/5.0 (Linux; Android 7.0; BAH-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Safari/537.36",
    2073         "expect": {
    2074             "vendor": "Huawei",
    2075             "model": "BAH-L09",
    2076             "type": "tablet"
    2077         }
    2078     },
    2079     {
    2080         "desc": "HUAWEI MediaPad M5 Lite",
    2081         "ua": "Mozilla/5.0 (Linux; Android 8.0.0; BAH2-W19 Build/HUAWEIBAH2-W19; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Safari/537.36",
    2082         "expect": {
    2083             "vendor": "Huawei",
    2084             "model": "BAH2-W19",
    2085             "type": "tablet"
    2086         }
    2087     },
    2088     {
    2089         "desc": "HUAWEI MediaPad M5",
    2090         "ua": "Mozilla/5.0 (Linux; Android 9; SHT-AL09 Build/HUAWEISHT-AL09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.90 Mobile Safari/537.36",
    2091         "expect": {
    2092             "vendor": "Huawei",
    2093             "model": "SHT-AL09",
    2094             "type": "tablet"
    2095         }
    2096     },
    2097     {
    2098         "desc": "HUAWEI MediaPad T5",
    2099         "ua": "Mozilla/5.0 (Linux; Android 8.0.0; AGS2-L09 Build/HUAWEIAGS2-L09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/84.0.4147.125 Safari/537.36",
    2100         "expect": {
    2101             "vendor": "Huawei",
    2102             "model": "AGS2-L09",
    2103             "type": "tablet"
    2104         }
    2105     },
    2106     {
    2107         "desc": "HUAWEI MediaPad T10",
    2108         "ua": "Mozilla/5.0 (Linux; Android 10; AGR-W09 Build/HUAWEIAGR-W09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Safari/537.36",
    2109         "expect": {
    2110             "vendor": "Huawei",
    2111             "model": "AGR-W09",
    2112             "type": "tablet"
    2113         }
    2114     },
    2115     {
    2116         "desc": "HUAWEI MediaPad T10s",
    2117         "ua": "Mozilla/5.0 (Linux; Android 10; AGS3-W09 Build/HUAWEIAGS3-W09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Safari/537.36",
    2118         "expect": {
    2119             "vendor": "Huawei",
    2120             "model": "AGS3-W09",
    2121             "type": "tablet"
    2122         }
    2123     },
    2124     {
    2125         "desc": "Huawei MatePad T 10",
    2126         "ua": "Mozilla/5.0 (Linux; Android 10; AGR-L09; HMSCore 5.0.4.301) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 HuaweiBrowser/11.0.3.304 Safari/537.36",
    2127         "expect": {
    2128             "vendor": "Huawei",
    2129             "model": "AGR-L09",
    2130             "type": "tablet"
    2131         }
    2132     },
    2133     {
    2134         "desc": "Huawei Mate 10 Pro",
    2135         "ua": "Mozilla/5.0 (Linux; Android 8.0; BLA-L29 Build/HUAWEIBLA-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3236.6 Mobile Safari/537.36",
    2136         "expect": {
    2137             "vendor": "Huawei",
    2138             "model": "BLA-L29",
    2139             "type": "mobile"
    2140         }
    2141     },
    2142     {
    2143         "desc": "Huawei Mate X",
    2144         "ua": "Mozilla/5.0 (Linux; Android 9; TAH-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.111 Safari/537.36",
    2145         "expect": {
    2146             "vendor": "Huawei",
    2147             "model": "TAH-AN00",
    2148             "type": "mobile"
    2149         }
    2150     },
    2151     {
    2152         "desc": "Huawei Mate X2",
    2153         "ua": "Mozilla/5.0 (Linux; Android 10; TET-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
    2154         "expect": {
    2155             "vendor": "Huawei",
    2156             "model": "TET-AN00",
    2157             "type": "mobile"
    2158         }
    2159     },
    2160     {
    2161       "desc": "Huawei Mate 20 X",
    2162       "ua": "Mozilla/5.0 (Linux; Android 9; EVR-L29 Build/HUAWEIEVR-L29; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36",
    2163       "expect": {
    2164           "vendor": "Huawei",
    2165           "model": "EVR-L29",
    2166           "type": "mobile"
    2167       }
    2168     },
    2169     {
    2170       "desc": "Huawei Mate 20 Pro",
    2171       "ua": "Mozilla/5.0 (Linux; Android 9; LYA-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
    2172       "expect": {
    2173           "vendor": "Huawei",
    2174           "model": "LYA-L09",
    2175           "type": "mobile"
    2176       }
    2177     },
    2178     {
    2179       "desc": "Huawei Mate 20 Pro",
    2180       "ua": "Mozilla/5.0 (Linux; Android 9; LYA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
    2181       "expect": {
    2182           "vendor": "Huawei",
    2183           "model": "LYA-AL00",
    2184           "type": "mobile"
    2185       }
    2186     },
    2187     {
    2188         "desc": "Huawei P20 Lite",
    2189         "ua": "Mozilla/5.0 (Linux; Android 8.0.0; ANE-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36",
    2190         "expect": {
    2191             "vendor": "Huawei",
    2192             "model": "ANE-LX1",
    2193             "type": "mobile"
    2194         }
    2195     },
    2196     {
    2197       "desc": "Huawei P20",
    2198       "ua": "Mozilla/5.0 (Linux; Android 8.1.0; EML-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36",
    2199       "expect": {
    2200           "vendor": "Huawei",
    2201           "model": "EML-L29",
    2202           "type": "mobile"
    2203       }
    2204   },
    2205   {
    2206     "desc": "Huawei P20 Pro",
    2207     "ua": "Mozilla/5.0 (Linux; Android 9; CLT-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
    2208     "expect": {
    2209         "vendor": "Huawei",
    2210         "model": "CLT-L29",
    2211         "type": "mobile"
     2675        "desc": "Amazon Fire 7",
     2676        "ua": "Mozilla/5.0 (Linux; Android 5.1.1; KFAUWI) AppleWebKit/537.36 (KHTML, like Gecko) Silk/80.5.3 like Chrome/80.0.3987.162 Safari/537.36",
     2677        "expect": {
     2678            "vendor": "Amazon",
     2679            "model": "KFAUWI",
     2680            "type": "tablet"
     2681        }
     2682    },
     2683    {
     2684        "desc": "AT&T Radiant Core U304AA",
     2685        "ua": "Dalvik/2.1.0 (Linux; U; Android 9; U304AA Build/P00610)",
     2686        "expect": {
     2687            "vendor": "AT&T",
     2688            "model": "U304AA",
     2689            "type": "mobile"
     2690        }
     2691    },
     2692    {
     2693        "desc": "Vodafone Smart Tab 4G",
     2694        "ua": "Mozilla/5.0 (Linux; Android 4.4.4; Vodafone Smart Tab 4G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
     2695        "expect": {
     2696            "vendor": "Vodafone",
     2697            "model": "Smart Tab 4G",
     2698            "type": "tablet"
     2699        }
     2700    },
     2701    {
     2702        "desc": "Vodafone Smart ultra 6",
     2703        "ua": "Mozilla/5.0 (Linux; Android 5.0.2; Vodafone Smart ultra 6 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36",
     2704        "expect": {
     2705            "vendor": "Vodafone",
     2706            "model": "Smart ultra 6",
     2707            "type": "tablet"
     2708        }
     2709    },
     2710    {
     2711        "desc": "4ife 4K Smart TV Box",
     2712        "ua": "Mozilla/5.0 (Linux; Android 4.4.2; 4ife 4K Smart TV Box Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36 Vinebre",
     2713        "expect": {
     2714            "vendor": "undefined",
     2715            "model": "undefined",
     2716            "type": "smarttv"
     2717        }
     2718    },
     2719    {
     2720        "desc": "FaceBook Mobile App",
     2721        "ua": "[FBAN/FBIOS;FBAV/283.0.0.44.117;FBBV/238386386;FBDV/iPhone12,1;FBMD/iPhone;FBSN/iOS;FBSV/13.6.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBRV/240127608]",
     2722        "expect": {
     2723            "type": "mobile"
     2724        }
     2725    },
     2726    {
     2727        "desc": "Issue #454",
     2728        "ua": "Mosamzilla/5.0 (Windows; U; Win98; en-US; rv:1.7.5) Gecko/20050603 Netscape/8.0.2",
     2729        "expect": {
     2730            "vendor": "undefined",
     2731            "model": "undefined",
     2732            "type": "undefined"
     2733        }
     2734    },
     2735    {
     2736        "desc": "Alcatel",
     2737        "ua": "Mozilla/5.0 (Linux; Android 4.4.2; ALCATEL A564C Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36",
     2738        "expect": {
     2739            "vendor": "ALCATEL",
     2740            "model": "A564C",
     2741            "type": "mobile"
     2742        }
     2743    },
     2744    {
     2745        "desc": "Alcatel Go Flip",
     2746        "ua": "Mozilla/5.0 (Mobile; ALCATEL4044T; rv:37.0) Gecko/37.0 Firefox/37.0 KaiOS/1.0",
     2747        "expect": {
     2748            "vendor": "ALCATEL",
     2749            "model": "4044T",
     2750            "type": "mobile"
     2751        }
     2752    },
     2753    {
     2754        "desc": "Jolla",
     2755        "ua": "Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:31.0) Gecko/31.0 Firefox/31.0 SailfishBrowser/1.0",
     2756        "expect": {
     2757            "vendor": "Jolla",
     2758            "model": "undefined",
     2759            "type": "mobile"
     2760        }
     2761    },
     2762    {
     2763        "desc": "Xbox One",
     2764        "ua": "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; Xbox; Xbox One)",
     2765        "expect": {
     2766            "vendor": "Microsoft",
     2767            "model": "Xbox One",
     2768            "type": "console"
     2769        }
     2770    },
     2771    {
     2772        "desc": "Xbox",
     2773        "ua": "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)",
     2774        "expect": {
     2775            "vendor": "Microsoft",
     2776            "model": "Xbox",
     2777            "type": "console"
     2778        }
     2779    },
     2780    {
     2781        "desc": "Nvidia Shield Tablet",
     2782        "ua": "Mozilla/5.0 (Linux; Android 5.1.1; SHIELD Tablet Build/LVY48E; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/45.0.2454.19 Safari/537.36",
     2783        "expect": {
     2784            "vendor": "Nvidia",
     2785            "model": "SHIELD Tablet",
     2786            "type": "tablet"
     2787        }
     2788    },
     2789    {
     2790        "desc": "Ouya",
     2791        "ua": "Mozilla/5.0 (Linux; Android 4.1.2; OUYA Console Build/JZO54L-OUYA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.84 Safari/537.36",
     2792        "expect": {
     2793            "vendor": "OUYA",
     2794            "model": "undefined",
     2795            "type": "console"
     2796        }
     2797    },
     2798    {
     2799        "desc": "Vivo Y52s",
     2800        "ua": "Mozilla/5.0 (Linux; Android 10; V2057A Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/12.10 SP-engine/2.28.0 baiduboxapp/12.10.0.10 (Baidu; P1 10) NABar/1.0",
     2801        "expect": {
     2802            "vendor": "Vivo",
     2803            "model": "V2057A",
     2804            "type": "mobile"
     2805        }
     2806    },
     2807    {
     2808        "desc": "Vivo X60",
     2809        "ua": "Mozilla/5.0 (Linux; Android 11; V2046A; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/8.8.71.0",
     2810        "expect": {
     2811            "vendor": "Vivo",
     2812            "model": "V2046A",
     2813            "type": "mobile"
     2814        }
     2815    },
     2816    {
     2817        "desc": "Vivo Y79A",
     2818        "ua": "Mozilla/5.0 (Linux; Android 7.1.2; vivo Y79A Build/N2G47H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.0.14.0",
     2819        "expect": {
     2820            "vendor": "Vivo",
     2821            "model": "Y79A",
     2822            "type": "mobile"
     2823        }
     2824    },
     2825    {
     2826        "desc": "Vivo Y97",
     2827        "ua": "Mozilla/5.0 (Linux; Android 8.1.0; V1813T Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.0.14.0",
     2828        "expect": {
     2829            "vendor": "Vivo",
     2830            "model": "V1813T",
     2831            "type": "mobile"
     2832        }
     2833    },
     2834    {
     2835        "desc": "Vivo iQOO Pro",
     2836        "ua": "Mozilla/5.0 (Linux; Android 11; V1916A; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.1.10.6",
     2837        "expect": {
     2838            "vendor": "Vivo",
     2839            "model": "V1916A",
     2840            "type": "mobile"
     2841        }
     2842    },
     2843    {
     2844        "desc": "Unknown Mobile using Firefox",
     2845        "ua": "Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0",
     2846        "expect": {
     2847            "vendor": "undefined",
     2848            "model": "undefined",
     2849            "type": "mobile"
     2850        }
     2851    },
     2852    {
     2853        "desc": "Unknown Tablet using Firefox",
     2854        "ua": "Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0",
     2855        "expect": {
     2856            "vendor": "undefined",
     2857            "model": "undefined",
     2858            "type": "tablet"
     2859        }
     2860    },
     2861    {
     2862        "desc": "Unknown Mobile using Focus for Android",
     2863        "ua": "Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.0 Chrome/59.0.3029.83 Mobile Safari/537.36",
     2864        "expect": {
     2865            "vendor": "undefined",
     2866            "model": "undefined",
     2867            "type": "mobile"
     2868        }
     2869    },
     2870    {
     2871        "desc": "Unknown Tablet using Focus for Android",
     2872        "ua": "Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.0 Chrome/59.0.3029.83 Safari/537.36",
     2873        "expect": {
     2874            "vendor": "undefined",
     2875            "model": "undefined",
     2876            "type": "tablet"
     2877        }
     2878    },
     2879    {
     2880        "desc": "Unknown Device using Focus for Android with GeckoView",
     2881        "ua": "Mozilla/5.0 (Android 7.0; Mobile; rv:62.0) Gecko/62.0 Firefox/62.0",
     2882        "expect": {
     2883            "vendor": "undefined",
     2884            "model": "undefined",
     2885            "type": "mobile"
     2886        }
     2887    },
     2888    {
     2889        "desc": "Unknown Mobile using Firefox OS",
     2890        "ua": "Mozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0",
     2891        "expect": {
     2892            "vendor": "undefined",
     2893            "model": "undefined",
     2894            "type": "mobile"
     2895        }
     2896    },
     2897    {
     2898        "desc": "Unknown Tablet using Firefox OS",
     2899        "ua": "Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0",
     2900        "expect": {
     2901            "vendor": "undefined",
     2902            "model": "undefined",
     2903            "type": "tablet"
     2904        }
     2905    },
     2906    {
     2907        "desc": "Unknown TV using Firefox OS",
     2908        "ua": "Mozilla/5.0 (TV; rv:44.0) Gecko/44.0 Firefox/44.0",
     2909        "expect": {
     2910            "vendor": "undefined",
     2911            "model": "undefined",
     2912            "type": "smarttv"
     2913        }
     2914    },
     2915    {
     2916        "desc": "PDA with Windows CE",
     2917        "ua": "Mozilla/4.0 (PDA; Windows CE/1.0.1) NetFront/3.0",
     2918        "expect": {
     2919            "vendor": "undefined",
     2920            "model": "undefined",
     2921            "type": "mobile"
     2922        }
    22122923    }
    2213   },
    2214   {
    2215       "desc": "Huawei P30",
    2216       "ua": "Mozilla/5.0 (Linux; Android 9; ELE-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.90 Mobile Safari/537.36",
    2217       "expect": {
    2218           "vendor": "Huawei",
    2219           "model": "ELE-L29",
    2220           "type": "mobile"
    2221       }
    2222   },
    2223   {
    2224       "desc": "Huawei P30 Pro",
    2225       "ua": "Mozilla/5.0 (Linux; Android 9; VOG-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36",
    2226       "expect": {
    2227           "vendor": "Huawei",
    2228           "model": "VOG-L29",
    2229           "type": "mobile"
    2230       }
    2231   },
    2232   {
    2233     "desc": "Huawei P40",
    2234     "ua": "Mozilla/5.0 (Linux; Android 10; ANA-AN00 Build/HUAWEIANA-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/11.26 SP-engine/2.22.0 baiduboxapp/11.26.0.10 (Baidu; P1 10) NABar/1.0",
    2235     "expect": {
    2236         "vendor": "Huawei",
    2237         "model": "ANA-AN00",
    2238         "type": "mobile"
    2239     }
    2240   },
    2241   {
    2242     "desc": "Huawei P40 Pro",
    2243     "ua": "Mozilla/5.0 (Linux; Android 10; ELS-AN00 Build/HUAWEIELS-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Mobile Safari/537.36 mailapp/6.0.0",
    2244     "expect": {
    2245         "vendor": "Huawei",
    2246         "model": "ELS-AN00",
    2247         "type": "mobile"
    2248     }
    2249   },
    2250   {
    2251     "desc": "Huawei 30 Pro+",
    2252     "ua": "Mozilla/5.0 (Linux; Android 10; EBG-AN10 Build/HUAWEIEBG-AN10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.86 Mobile Safari/537.36 EdgA/42.0.0.2741",
    2253     "expect": {
    2254         "vendor": "Huawei",
    2255         "model": "EBG-AN10",
    2256         "type": "mobile"
    2257     }
    2258   },
    2259   {
    2260     "desc": "Huawei 30S",
    2261     "ua": "Mozilla/5.0 (Linux; Android 10; CDY-AN90 Build/HUAWEICDY-AN90; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Mobile Safari/537.36 mailapp/5.8.0",
    2262     "expect": {
    2263         "vendor": "Huawei",
    2264         "model": "CDY-AN90",
    2265         "type": "mobile"
    2266     }
    2267   },
    2268   {
    2269     "desc": "Huawei Enjoy10e",
    2270     "ua": "Dalvik/2.1.0 (Linux; U; Android 10; MED-AL00 Build/HUAWEIMED-AL00)",
    2271     "expect": {
    2272         "vendor": "Huawei",
    2273         "model": "MED-AL00",
    2274         "type": "mobile"
    2275     }
    2276   },
    2277   {
    2278     "desc": "Amazon Fire 7",
    2279     "ua": "Mozilla/5.0 (Linux; Android 5.1.1; KFAUWI) AppleWebKit/537.36 (KHTML, like Gecko) Silk/80.5.3 like Chrome/80.0.3987.162 Safari/537.36",
    2280     "expect": {
    2281         "vendor": "Amazon",
    2282         "model": "KFAUWI",
    2283         "type": "tablet"
    2284     }
    2285   },
    2286   {
    2287     "desc": "AT&T Radiant Core U304AA",
    2288     "ua": "Dalvik/2.1.0 (Linux; U; Android 9; U304AA Build/P00610)",
    2289     "expect": {
    2290         "vendor": "AT&T",
    2291         "model": "U304AA",
    2292         "type": "mobile"
    2293     }
    2294   },
    2295   {
    2296     "desc": "Vodafone Smart Tab 4G",
    2297     "ua": "Mozilla/5.0 (Linux; Android 4.4.4; Vodafone Smart Tab 4G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
    2298     "expect": {
    2299         "vendor": "Vodafone",
    2300         "model": "Smart Tab 4G",
    2301         "type": "tablet"
    2302     }
    2303   },
    2304   {
    2305     "desc": "Vodafone Smart ultra 6",
    2306     "ua": "Mozilla/5.0 (Linux; Android 5.0.2; Vodafone Smart ultra 6 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36",
    2307     "expect": {
    2308         "vendor": "Vodafone",
    2309         "model": "Smart ultra 6",
    2310         "type": "tablet"
    2311     }
    2312   },
    2313   {
    2314     "desc": "4ife 4K Smart TV Box",
    2315     "ua": "Mozilla/5.0 (Linux; Android 4.4.2; 4ife 4K Smart TV Box Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36 Vinebre",
    2316     "expect": {
    2317         "vendor": "undefined",
    2318         "model": "undefined",
    2319         "type": "smarttv"
    2320     }
    2321   },
    2322   {
    2323     "desc": "FaceBook Mobile App",
    2324     "ua": "[FBAN/FBIOS;FBAV/283.0.0.44.117;FBBV/238386386;FBDV/iPhone12,1;FBMD/iPhone;FBSN/iOS;FBSV/13.6.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBRV/240127608]",
    2325     "expect": {
    2326         "type": "mobile"
    2327     }
    2328   },
    2329   {
    2330     "desc": "Issue #454",
    2331     "ua": "Mosamzilla/5.0 (Windows; U; Win98; en-US; rv:1.7.5) Gecko/20050603 Netscape/8.0.2",
    2332     "expect": {
    2333         "vendor": "undefined",
    2334         "model": "undefined",
    2335         "type": "undefined"
    2336     }
    2337   },
    2338   {
    2339     "desc": "Alcatel",
    2340     "ua": "Mozilla/5.0 (Linux; Android 4.4.2; ALCATEL A564C Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36",
    2341     "expect": {
    2342         "vendor": "ALCATEL",
    2343         "model": "A564C",
    2344         "type": "mobile"
    2345     }
    2346   },
    2347   {
    2348     "desc": "Alcatel Go Flip",
    2349     "ua": "Mozilla/5.0 (Mobile; ALCATEL4044T; rv:37.0) Gecko/37.0 Firefox/37.0 KaiOS/1.0",
    2350     "expect": {
    2351         "vendor": "ALCATEL",
    2352         "model": "4044T",
    2353         "type": "mobile"
    2354     }
    2355   },
    2356   {
    2357     "desc": "Jolla",
    2358     "ua": "Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:31.0) Gecko/31.0 Firefox/31.0 SailfishBrowser/1.0",
    2359     "expect": {
    2360         "vendor": "Jolla",
    2361         "model": "undefined",
    2362         "type": "mobile"
    2363     }
    2364   },
    2365   {
    2366     "desc": "Xbox One",
    2367     "ua": "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; Xbox; Xbox One)",
    2368     "expect": {
    2369         "vendor": "Microsoft",
    2370         "model": "Xbox One",
    2371         "type": "console"
    2372     }
    2373   },
    2374   {
    2375     "desc": "Xbox",
    2376     "ua": "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)",
    2377     "expect": {
    2378         "vendor": "Microsoft",
    2379         "model": "Xbox",
    2380         "type": "console"
    2381     }
    2382   },
    2383   {
    2384     "desc": "Nvidia Shield Tablet",
    2385     "ua": "Mozilla/5.0 (Linux; Android 5.1.1; SHIELD Tablet Build/LVY48E; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/45.0.2454.19 Safari/537.36",
    2386     "expect": {
    2387         "vendor": "Nvidia",
    2388         "model": "SHIELD Tablet",
    2389         "type": "tablet"
    2390     }
    2391   },
    2392   {
    2393     "desc": "Ouya",
    2394     "ua": "Mozilla/5.0 (Linux; Android 4.1.2; OUYA Console Build/JZO54L-OUYA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.84 Safari/537.36",
    2395     "expect": {
    2396         "vendor": "OUYA",
    2397         "model": "undefined",
    2398         "type": "console"
    2399     }
    2400   },
    2401   {
    2402     "desc": "Vivo Y52s",
    2403     "ua": "Mozilla/5.0 (Linux; Android 10; V2057A Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/12.10 SP-engine/2.28.0 baiduboxapp/12.10.0.10 (Baidu; P1 10) NABar/1.0",
    2404     "expect": {
    2405         "vendor": "Vivo",
    2406         "model": "V2057A",
    2407         "type": "mobile"
    2408     }
    2409   },
    2410   {
    2411     "desc": "Vivo X60",
    2412     "ua": "Mozilla/5.0 (Linux; Android 11; V2046A; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/8.8.71.0",
    2413     "expect": {
    2414         "vendor": "Vivo",
    2415         "model": "V2046A",
    2416         "type": "mobile"
    2417     }
    2418   },
    2419   {
    2420     "desc": "Vivo Y79A",
    2421     "ua": "Mozilla/5.0 (Linux; Android 7.1.2; vivo Y79A Build/N2G47H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.0.14.0",
    2422     "expect": {
    2423         "vendor": "Vivo",
    2424         "model": "Y79A",
    2425         "type": "mobile"
    2426     }
    2427   },
    2428   {
    2429     "desc": "Vivo Y97",
    2430     "ua": "Mozilla/5.0 (Linux; Android 8.1.0; V1813T Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.0.14.0",
    2431     "expect": {
    2432         "vendor": "Vivo",
    2433         "model": "V1813T",
    2434         "type": "mobile"
    2435     }
    2436   },
    2437   {
    2438     "desc": "Vivo iQOO Pro",
    2439     "ua": "Mozilla/5.0 (Linux; Android 11; V1916A; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.1.10.6",
    2440     "expect": {
    2441         "vendor": "Vivo",
    2442         "model": "V1916A",
    2443         "type": "mobile"
    2444     }
    2445   }
    24462924]
  • trip-planner-front/node_modules/ua-parser-js/test/os-test.json

    r59329aa re29cc2e  
    109109    },
    110110    {
     111        "desc"    : "Windows Mobile",
     112        "ua"      : "Opera/9.80 (Windows Mobile; WCE; Opera Mobi/WMD-50433; U; en) Presto/2.4.13 Version/10.00",
     113        "expect"  :
     114        {
     115            "name"    : "Windows Mobile",
     116            "version" : "undefined"
     117        }
     118    },
     119    {
    111120        "desc"    : "Windows Phone",
    112121        "ua"      : "Opera/9.80 (Windows Phone; Opera Mini/7.6.8/35.7518; U; ru) Presto/2.8.119 Version/11.10",
     
    136145    },
    137146    {
     147        "desc"    : "Windows NT on x86 or aarch64 CPU using Firefox",
     148        "ua"      : "Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0",
     149        "expect"  :
     150        {
     151            "name"    : "Windows",
     152            "version" : "NT x"
     153        }
     154    },
     155    {
     156        "desc"    : "Windows NT on x64 CPU using Firefox",
     157        "ua"      : "Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0",
     158        "expect"  :
     159        {
     160            "name"    : "Windows",
     161            "version" : "NT x"
     162        }
     163    },
     164    {
    138165        "desc"    : "BlackBerry",
    139166        "ua"      : "BlackBerry9300/5.0.0.912 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/378",
     
    280307    },
    281308    {
     309        "desc"    : "Nokia N900 Linux mobile, on the Fennec browser",
     310        "ua"      : "Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0) Gecko/20100101 Firefox/10.0 Fennec/10.0",
     311        "expect"  :
     312        {
     313            "name"    : "Maemo",
     314            "version" : "undefined"
     315        }
     316    },
     317    {
    282318        "desc"    : "MeeGo",
    283319        "ua"      : "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13",
     
    321357        {
    322358            "name"    : "Firefox OS",
    323             "version" : "undefined"
     359            "version" : "14.0"
     360        }
     361    },
     362    {
     363        "desc"    : "Firefox OS on Tablet",
     364        "ua"      : "Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0",
     365        "expect"  :
     366        {
     367            "name"    : "Firefox OS",
     368            "version" : "26.0"
     369        }
     370    },
     371    {
     372        "desc"    : "Firefox OS on TV",
     373        "ua"      : "Mozilla/5.0 (TV; rv:44.0) Gecko/44.0 Firefox/44.0",
     374        "expect"  :
     375        {
     376            "name"    : "Firefox OS",
     377            "version" : "44.0"
    324378        }
    325379    },
     
    551605    {
    552606        "desc"    : "Slackware",
    553         "ua"      : "",
    554         "expect"  :
    555         {
    556             "name"    : "",
    557             "version" : ""
     607        "ua"      : "Mozilla/5.0 Slackware/13.37 (X11; U; Linux x86_64; en-US) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41",
     608        "expect"  :
     609        {
     610            "name"    : "Slackware",
     611            "version" : "13.37"
    558612        }
    559613    },
     
    614668    {
    615669        "desc"    : "Solaris",
    616         "ua"      : "",
    617         "expect"  :
    618         {
    619             "name"    : "",
    620             "version" : ""
     670        "ua"      : "Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7) Gecko/20070606",
     671        "expect"  :
     672        {
     673            "name"    : "Solaris",
     674            "version" : "sun4u"
    621675        }
    622676    },
     
    650704    {
    651705        "desc"    : "DragonFly",
    652         "ua"      : "",
    653         "expect"  :
    654         {
    655             "name"    : "",
    656             "version" : ""
     706        "ua"      : "Mozilla/5.0 (X11; U; DragonFly i386; de; rv:1.9.1) Gecko/20090720 Firefox/3.5.1",
     707        "expect"  :
     708        {
     709            "name"    : "DragonFly",
     710            "version" : "undefined"
    657711        }
    658712    },
     
    685739    },
    686740    {
     741        "desc"    : "Mac OS on PowerPC",
     742        "ua"      : "Mozilla/4.0 (compatible; MSIE 5.0b1; Mac_PowerPC)",
     743        "expect"  :
     744        {
     745            "name"    : "Mac OS",
     746            "version" : "undefined"
     747        }
     748    },
     749    {
     750        "desc"    : "Mac OS X on x86, x86_64, or aarch64 using Firefox",
     751        "ua"      : "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0",
     752        "expect"  :
     753        {
     754            "name"    : "Mac OS",
     755            "version" : "x.y"
     756        }
     757    },
     758    {
     759        "desc"    : "Mac OS X on PowerPC using Firefox",
     760        "ua"      : "Mozilla/5.0 (Macintosh; PPC Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0",
     761        "expect"  :
     762        {
     763            "name"    : "Mac OS",
     764            "version" : "x.y"
     765        }
     766    },
     767    {
    687768        "desc"    : "Mac OS",
    688769        "ua"      : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36",
     
    767848    {
    768849        "desc"    : "AIX",
    769         "ua"      : "",
    770         "expect"  :
    771         {
    772             "name"    : "",
    773             "version" : ""
     850        "ua"      : "Mozilla/5.0 (X11; U; AIX 000138384C00; en-US; rv:1.0.1) Gecko/20030213 Netscape/7.0",
     851        "expect"  :
     852        {
     853            "name"    : "AIX",
     854            "version" : "undefined"
    774855        }
    775856    },
    776857    {
    777858        "desc"    : "Plan9",
    778         "ua"      : "",
    779         "expect"  :
    780         {
    781             "name"    : "",
    782             "version" : ""
     859        "ua"      : "NCSA_Mosaic/5.0 (X11;Plan 9 4.0)",
     860        "expect"  :
     861        {
     862            "name"    : "Plan 9",
     863            "version" : "4.0"
    783864        }
    784865    },
    785866    {
    786867        "desc"    : "Minix",
    787         "ua"      : "",
    788         "expect"  :
    789         {
    790             "name"    : "",
    791             "version" : ""
     868        "ua"      : "Mozilla/5.0 (X11; Original ; Minix 3.3 ; rv:3.0)",
     869        "expect"  :
     870        {
     871            "name"    : "Minix",
     872            "version" : "3.3"
    792873        }
    793874    },
    794875    {
    795876        "desc"    : "BeOS",
    796         "ua"      : "",
    797         "expect"  :
    798         {
    799             "name"    : "",
    800             "version" : ""
     877        "ua"      : "Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.8.1.8pre) Gecko/20070926 SeaMonkey/1.1.5pre",
     878        "expect"  :
     879        {
     880            "name"    : "BeOS",
     881            "version" : "undefined"
    801882        }
    802883    },
    803884    {
    804885        "desc"    : "OS/2",
    805         "ua"      : "",
    806         "expect"  :
    807         {
    808             "name"    : "",
    809             "version" : ""
     886        "ua"      : "Links (2.1pre14; OS/2 1 i386; 80x33)",
     887        "expect"  :
     888        {
     889            "name"    : "OS/2",
     890            "version" : "undefined"
    810891        }
    811892    },
    812893    {
    813894        "desc"    : "AmigaOS",
    814         "ua"      : "",
    815         "expect"  :
    816         {
    817             "name"    : "",
    818             "version" : ""
     895        "ua"      : "Mozilla/4.0 (compatible; AWEB 3.4 SE; AmigaOS)",
     896        "expect"  :
     897        {
     898            "name"    : "AmigaOS",
     899            "version" : "undefined"
    819900        }
    820901    },
    821902    {
    822903        "desc"    : "MorphOS",
    823         "ua"      : "",
    824         "expect"  :
    825         {
    826             "name"    : "",
    827             "version" : ""
     904        "ua"      : "AmigaVoyager/3.4.4 (MorphOS/PPC native)",
     905        "expect"  :
     906        {
     907            "name"    : "MorphOS",
     908            "version" : "undefined"
    828909        }
    829910    },
    830911    {
    831912        "desc"    : "UNIX",
    832         "ua"      : "",
    833         "expect"  :
    834         {
    835             "name"    : "",
    836             "version" : ""
     913        "ua"      : "Surf/0.4.1 (X11; U; Unix; en-US) AppleWebKit/531.2+ Compatible (Safari)",
     914        "expect"  :
     915        {
     916            "name"    : "Unix",
     917            "version" : "undefined"
    837918        }
    838919    },
    839920    {
    840921        "desc"    : "Joli",
    841         "ua"      : "",
    842         "expect"  :
    843         {
    844             "name"    : "",
    845             "version" : ""
     922        "ua"      : "Mozilla/5.0 (X11; Jolicloud Linux i686) AppleWebKit/537.6 (KHTML, like Gecko) Joli OS/1.2 Chromium/23.0.1240.0 Chrome/23.0.1240.0 Safari/537.6",
     923        "expect"  :
     924        {
     925            "name"    : "Joli",
     926            "version" : "1.2"
    846927        }
    847928    },
    848929    {
    849930        "desc"    : "CentOS",
    850         "ua"      : "",
    851         "expect"  :
    852         {
    853             "name"    : "",
    854             "version" : ""
     931        "ua"      : "Konqueror/15.13 (CentOS Linux 7.4; cs-CZ;)",
     932        "expect"  :
     933        {
     934            "name"    : "CentOS",
     935            "version" : "7.4"
    855936        }
    856937    },
    857938    {
    858939        "desc"    : "PCLinuxOS",
    859         "ua"      : "",
    860         "expect"  :
    861         {
    862             "name"    : "",
    863             "version" : ""
     940        "ua"      : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101209 PCLinuxOS/1.9.2.13-1pclos2010 (2010) Firefox/3.6.13",
     941        "expect"  :
     942        {
     943            "name"    : "PCLinuxOS",
     944            "version" : "1.9.2.13-1pclos2010"
    864945        }
    865946    },
    866947    {
    867948        "desc"    : "RedHat",
    868         "ua"      : "",
    869         "expect"  :
    870         {
    871             "name"    : "",
    872             "version" : ""
     949        "ua"      : "Mozilla/5.0 (compatible; Konqueror/4.3; Linux) KHTML/4.3.4 (like Gecko) Red Hat Enterprise Linux/4.3.4-11.el6_1.4",
     950        "expect"  :
     951        {
     952            "name"    : "Red Hat",
     953            "version" : "4.3.4-11.el6_1.4"
     954        }
     955    },
     956    {
     957        "desc"    : "RedHat",
     958        "ua"      : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.13pre) Gecko/20070717 Red Hat/1.0.9-4.el4 SeaMonkey/1.0.9",
     959        "expect"  :
     960        {
     961            "name"    : "Red Hat",
     962            "version" : "1.0.9-4.el4"
     963        }
     964    },
     965    {
     966        "desc"    : "RedHat",
     967        "ua"      : "iTunes/4.7.1 (Linux; N; Red Hat; x86_64-linux; EN; utf8) SqueezeCenter, Squeezebox Server, Logitech Media Server/7.9.1/1522157629",
     968        "expect"  :
     969        {
     970            "name"    : "Red Hat",
     971            "version" : "undefined"
     972        }
     973    },
     974    {
     975        "desc"    : "RedHat",
     976        "ua"      : "curl/7.20.0 (x86_64-redhat-linux-gnu) libcurl/7.20.0 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5",
     977        "expect"  :
     978        {
     979            "name"    : "redhat",
     980            "version" : "undefined"
     981        }
     982    },
     983    {
     984        "desc"    : "RISC OS",
     985        "ua"      : "Mozilla/1.10 [en] (Compatible; RISC OS 3.70; Oregano 1.10)",
     986        "expect"  :
     987        {
     988            "name"    : "RISC OS",
     989            "version" : "3.70"
    873990        }
    874991    },
    875992    {
    876993        "desc"    : "Zenwalk",
    877         "ua"      : "",
    878         "expect"  :
    879         {
    880             "name"    : "",
    881             "version" : ""
     994        "ua"      : "Flock/2.16 (Zenwalk 7.3; es_PR;)",
     995        "expect"  :
     996        {
     997            "name"    : "Zenwalk",
     998            "version" : "7.3"
    882999        }
    8831000    },
    8841001    {
    8851002        "desc"    : "Hurd",
    886         "ua"      : "",
    887         "expect"  :
    888         {
    889             "name"    : "",
    890             "version" : ""
     1003        "ua"      : "Mozilla/5.0 (X11; Hurd 0.9 i386; en-US) libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/3.7.0 Safari/696.96",
     1004        "expect"  :
     1005        {
     1006            "name"    : "Hurd",
     1007            "version" : "0.9"
    8911008        }
    8921009    },
    8931010    {
    8941011        "desc"    : "Linux",
    895         "ua"      : "",
    896         "expect"  :
    897         {
    898             "name"    : "",
    899             "version" : ""
    900         }
    901     },
    902     {
    903         "desc"    : "GNU",
    904         "ua"      : "",
    905         "expect"  :
    906         {
    907             "name"    : "",
    908             "version" : ""
     1012        "ua"      : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36",
     1013        "expect"  :
     1014        {
     1015            "name"    : "Linux",
     1016            "version" : "x86_64"
     1017        }
     1018    },
     1019    {
     1020        "desc"    : "Deepin",
     1021        "ua"      : "Mozilla/5.0 (X11; Linux x86_64; Deepin 15.5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36 NFSBrowser/5.0.0.1886",
     1022        "expect"  :
     1023        {
     1024            "name"    : "Deepin",
     1025            "version" : "15.5"
    9091026        }
    9101027    },
    9111028    {
    9121029        "desc"    : "Palm OS",
    913         "ua"      : "",
    914         "expect"  :
    915         {
    916             "name"    : "",
    917             "version" : ""
     1030        "ua"      : "Mozilla/4.76 [en] (PalmOS; U; WebPro3.0; Palm-Arz1)",
     1031        "expect"  :
     1032        {
     1033            "name"    : "Palm",
     1034            "version" : "undefined"
     1035        }
     1036    },
     1037    {
     1038        "desc"    : "HP-UX",
     1039        "ua"      : "Mozilla/5.0 (X11; U; HP-UX 9000/785; es-ES; rv:1.0.1) Gecko/20020827 Netscape/7.0",
     1040        "expect"  :
     1041        {
     1042            "name"    : "HP-UX",
     1043            "version" : "undefined"
     1044        }
     1045    },
     1046    {
     1047        "desc"    : "Contiki",
     1048        "ua"      : "Contiki/1.0 (Commodore 64; http://dunkels.com/adam/contiki/)",
     1049        "expect"  :
     1050        {
     1051            "name"    : "Contiki",
     1052            "version" : "1.0"
     1053        }
     1054    },
     1055    {
     1056        "desc"    : "Linpus",
     1057        "ua"      : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b5pre) Gecko/2008032619 Linpus/3.0-0.49",
     1058        "expect"  :
     1059        {
     1060            "name"    : "Linpus",
     1061            "version" : "3.0-0.49"
     1062        }
     1063    },
     1064    {
     1065        "desc"    : "Manjaro",
     1066        "ua"      : "Mozilla/5.0 (X11; Manjaro 19.0.2; Arch; x64; rv:84.0) Gecko/20100101 Firefox/84.0",
     1067        "expect"  :
     1068        {
     1069            "name"    : "Manjaro",
     1070            "version" : "19.0.2"
     1071        }
     1072    },
     1073    {
     1074        "desc"    : "elementary OS",
     1075        "ua"      : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/604.1 (KHTML, like Gecko) Version/11.0 Safari/604.1 elementary OS/0.4 (Loki) Epiphany/3.18.11",
     1076        "expect"  :
     1077        {
     1078            "name"    : "elementary OS",
     1079            "version" : "0.4"
     1080        }
     1081    },
     1082    {
     1083        "desc"    : "GhostBSD",
     1084        "ua"      : "Mozilla/5.0 (X11; GhostBSD/10.3; x86_64; rv:50.0.1) Gecko/20100101 Firefox/50.0.1",
     1085        "expect"  :
     1086        {
     1087            "name"    : "GhostBSD",
     1088            "version" : "10.3"
     1089        }
     1090    },
     1091    {
     1092        "desc"    : "Android-x86",
     1093        "ua"      : "Mozilla/5.0 (Linux; Android 7.1.2; Generic Android-x86) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 OPR/61.2.3076.56749",
     1094        "expect"  :
     1095        {
     1096            "name"    : "Android-x86",
     1097            "version" : "7.1.2"
     1098        }
     1099    },
     1100    {
     1101        "desc"    : "Sabayon",
     1102        "ua"      : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Sabayon Chrome/19.0.1084.46 Safari/536.5",
     1103        "expect"  :
     1104        {
     1105            "name"    : "Sabayon",
     1106            "version" : "undefined"
     1107        }
     1108    },
     1109    {
     1110        "desc"    : "Linspire",
     1111        "ua"      : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4) Gecko/20060803 Firefox/1.5.0.4 Linspire/1.5.0.4",
     1112        "expect"  :
     1113        {
     1114            "name"    : "Linspire",
     1115            "version" : "1.5.0.4"
    9181116        }
    9191117    }
  • trip-planner-front/node_modules/ua-parser-js/test/test.js

    r59329aa re29cc2e  
    33var assert      = require('assert');
    44var requirejs   = require('requirejs');
     5var parseJS     = require('@babel/parser').parse;
     6var traverse    = require('@babel/traverse').default;
    57var UAParser    = require('./../src/ua-parser');
    68var browsers    = require('./browser-test.json');
     
    138140    var regexes;
    139141
    140     // todo: use AST-based instead of grep
    141     before('Read main js file', function (done) {
    142         fs.readFile('src/ua-parser.js', 'utf8', function (err, data) {
    143             regexes = data.match(/(\/.+\/[ig]+)(?=[,\s\n])/g);
    144             done();
     142    before('Read main js file', function () {
     143        var code = fs.readFileSync('src/ua-parser.js', 'utf8').toString();
     144        var ast = parseJS(code, { sourceType: "script" });
     145        regexes = [];
     146        traverse(ast, {
     147            RegExpLiteral: (path) => {
     148                regexes.push(path.node.pattern);
     149            }
    145150        });
     151
     152        if (regexes.length === 0) {
     153            throw new Error("Regexes cannot be empty!");
     154        }
    146155    });
    147156
     
    157166        });
    158167    });
    159 })
     168});
Note: See TracChangeset for help on using the changeset viewer.