ua-parser-js 0.7.21 → 0.7.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ua-parser-js might be problematic. Click here for more details.

@@ -1,30 +1,147 @@
1
1
  [{
2
- "desc": "Asus Nexus 7",
2
+ "desc": "ASUS Nexus 7",
3
3
  "ua": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 7 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36",
4
4
  "expect": {
5
- "vendor": "Asus",
5
+ "vendor": "ASUS",
6
6
  "model": "Nexus 7",
7
7
  "type": "tablet"
8
8
  }
9
9
  },
10
10
  {
11
- "desc": "Asus Padfone",
11
+ "desc": "ASUS Padfone",
12
12
  "ua": "Mozilla/5.0 (Linux; Android 4.1.1; PadFone 2 Build/JRO03L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Safari/537.36",
13
13
  "expect": {
14
- "vendor": "Asus",
14
+ "vendor": "ASUS",
15
15
  "model": "PadFone",
16
16
  "type": "tablet"
17
17
  }
18
18
  },
19
19
  {
20
- "desc": "Asus ZenPad 10",
20
+ "desc": "ASUS ZenPad 10",
21
21
  "ua": "Mozilla/5.0 (Linux; Android 6.0; P00C Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Safari/537.36",
22
22
  "expect": {
23
- "vendor": "Asus",
23
+ "vendor": "ASUS",
24
24
  "model": "P00C",
25
25
  "type": "tablet"
26
26
  }
27
27
  },
28
+ {
29
+ "desc": "ASUS ZenPad Z8s",
30
+ "ua": "Mozilla/5.0 (Linux; Android 7.0; ASUS_P00J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.111 Safari/537.36\n",
31
+ "expect": {
32
+ "vendor": "ASUS",
33
+ "model": "P00J",
34
+ "type": "tablet"
35
+ }
36
+ },
37
+ {
38
+ "desc": "ASUS ROG",
39
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; ZS600KL Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.126 Mobile Safari/537.36",
40
+ "expect": {
41
+ "vendor": "ASUS",
42
+ "model": "ZS600KL",
43
+ "type": "mobile"
44
+ }
45
+ },
46
+ {
47
+ "desc": "ASUS ROG II",
48
+ "ua": "Mozilla/5.0 (Linux; Android 9; ASUS_I001DA Build/PKQ1.190414.001; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36",
49
+ "expect": {
50
+ "vendor": "ASUS",
51
+ "model": "I001DA",
52
+ "type": "mobile"
53
+ }
54
+ },
55
+ {
56
+ "desc": "ASUS Zenfone 2",
57
+ "ua": "Mozilla/5.0 (Linux; Android 5.0; ASUS ZenFone 2 Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36",
58
+ "expect": {
59
+ "vendor": "ASUS",
60
+ "model": "ZenFone 2",
61
+ "type": "mobile"
62
+ }
63
+ },
64
+ {
65
+ "desc": "ASUS Zenfone 3 Deluxe",
66
+ "ua": "Mozilla/5.0 (Linux; Android 6.0; ASUS_Z016D Build/MXB48T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.132 Mobile Safari/537.36",
67
+ "expect": {
68
+ "vendor": "ASUS",
69
+ "model": "Z016D",
70
+ "type": "mobile"
71
+ }
72
+ },
73
+ {
74
+ "desc": "ASUS Zenfone 5",
75
+ "ua": "Mozilla/5.0 (Linux; Android 8.0; ZE620KL Build/OPR1.170623.032) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36",
76
+ "expect": {
77
+ "vendor": "ASUS",
78
+ "model": "ZE620KL",
79
+ "type": "mobile"
80
+ }
81
+ },
82
+ {
83
+ "desc": "ASUS Zenfone 7",
84
+ "ua": "Mozilla/5.0 (Linux; Android 10; ASUS_I002D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.81 Mobile Safari/537.36",
85
+ "expect": {
86
+ "vendor": "ASUS",
87
+ "model": "I002D",
88
+ "type": "mobile"
89
+ }
90
+ },
91
+ {
92
+ "desc": "ASUS Zenfone 7 Pro",
93
+ "ua": "Mozilla/5.0 (Linux; Android 10; ZS671KS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Mobile Safari/537.36",
94
+ "expect": {
95
+ "vendor": "ASUS",
96
+ "model": "ZS671KS",
97
+ "type": "mobile"
98
+ }
99
+ },
100
+ {
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
+ {
110
+ "desc": "ASUS Zenfone Max Pro (M1)",
111
+ "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",
112
+ "expect": {
113
+ "vendor": "ASUS",
114
+ "model": "X00TD",
115
+ "type": "mobile"
116
+ }
117
+ },
118
+ {
119
+ "desc": "ASUS Zenfone Max M2",
120
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; ASUS_X01AD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 Mobile Safari/537.36",
121
+ "expect": {
122
+ "vendor": "ASUS",
123
+ "model": "X01AD",
124
+ "type": "mobile"
125
+ }
126
+ },
127
+ {
128
+ "desc": "ASUS Zenfone Max Pro M2",
129
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 Mobile Safari/537.36",
130
+ "expect": {
131
+ "vendor": "ASUS",
132
+ "model": "X01BDA",
133
+ "type": "mobile"
134
+ }
135
+ },
136
+ {
137
+ "desc": "ASUS Zenfone Go",
138
+ "ua": "Mozilla/5.0 (Linux; Android 6.0; ASUS_X009DA Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36",
139
+ "expect": {
140
+ "vendor": "ASUS",
141
+ "model": "X009DA",
142
+ "type": "mobile"
143
+ }
144
+ },
28
145
  {
29
146
  "desc": "Acer Iconia A1-810",
30
147
  "ua": "Mozilla/5.0 (Linux; Android 4.2.2; A1-810 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Safari/537.36",
@@ -34,6 +151,42 @@
34
151
  "type": "tablet"
35
152
  }
36
153
  },
154
+ {
155
+ "desc": "BlackBerry Priv",
156
+ "ua": "User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; STV100-1 Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/46.0.2490.76 Mobile Safari/537.36",
157
+ "expect": {
158
+ "vendor": "BlackBerry",
159
+ "model": "STV100-1",
160
+ "type": "mobile"
161
+ }
162
+ },
163
+ {
164
+ "desc": "BlackBerry Keyone",
165
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; BBB100-1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.111 Mobile Safari/537.36",
166
+ "expect": {
167
+ "vendor": "BlackBerry",
168
+ "model": "BBB100-1",
169
+ "type": "mobile"
170
+ }
171
+ },
172
+ {
173
+ "desc": "BlackBerry Key2",
174
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; BBF100-1 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36",
175
+ "expect": {
176
+ "vendor": "BlackBerry",
177
+ "model": "BBF100-1",
178
+ "type": "mobile"
179
+ }
180
+ },
181
+ {
182
+ "desc": "BlackBerry Key2 LE",
183
+ "ua": "User-Agent: Mozilla/5.0 (Linux; Android 8.1.0; BBE100-1 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497 Mobile Safari/537.36",
184
+ "expect": {
185
+ "vendor": "BlackBerry",
186
+ "model": "BBE100-1",
187
+ "type": "mobile"
188
+ }
189
+ },
37
190
  {
38
191
  "desc": "Desktop (IE11 with Tablet string)",
39
192
  "ua": "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; GWX:MANAGED; rv:11.0) like Gecko",
@@ -52,6 +205,33 @@
52
205
  "type": "mobile"
53
206
  }
54
207
  },
208
+ {
209
+ "desc": "Fairphone 1U",
210
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.2.2; FP1U Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
211
+ "expect": {
212
+ "vendor": "Fairphone",
213
+ "model": "FP1U",
214
+ "type": "mobile"
215
+ }
216
+ },
217
+ {
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
+ },
55
235
  {
56
236
  "desc": "HTC Desire 820",
57
237
  "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",
@@ -65,8 +245,8 @@
65
245
  "desc": "HTC Evo Shift 4G",
66
246
  "ua": "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Sprint APA7373KT Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0",
67
247
  "expect": {
68
- "vendor": "HTC",
69
- "model": "Evo Shift 4G",
248
+ "vendor": "Sprint",
249
+ "model": "APA7373KT",
70
250
  "type": "mobile"
71
251
  }
72
252
  },
@@ -116,187 +296,880 @@
116
296
  }
117
297
  },
118
298
  {
119
- "desc": "iPad using UCBrowser",
120
- "ua": "Mozilla/5.0 (iPad; U; CPU OS 11_2 like Mac OS X; zh-CN; iPad5,3) AppleWebKit/534.46 (KHTML, like Gecko) UCBrowser/3.0.1.776 U3/ Mobile/10A403 Safari/7543.48.3",
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",
121
301
  "expect": {
122
- "vendor": "Apple",
123
- "model": "iPad",
302
+ "vendor": "Huawei",
303
+ "model": "BAH-L09",
124
304
  "type": "tablet"
125
305
  }
126
306
  },
127
307
  {
128
- "desc": "iPod",
129
- "ua": "Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53",
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",
130
310
  "expect": {
131
- "vendor": "Apple",
132
- "model": "iPod touch",
133
- "type": "mobile"
311
+ "vendor": "Huawei",
312
+ "model": "BAH2-W19",
313
+ "type": "tablet"
134
314
  }
135
315
  },
136
316
  {
137
- "desc": "Lenovo Tab 2",
138
- "ua": "Mozilla/5.0 (Linux; Android 5.0.1; Lenovo TAB 2 A7-30HC Build/LRX21M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Safari/537.36",
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",
139
319
  "expect": {
140
- "vendor": "Lenovo",
141
- "model": "TAB 2 A7",
320
+ "vendor": "Huawei",
321
+ "model": "SHT-AL09",
142
322
  "type": "tablet"
143
323
  }
144
324
  },
145
325
  {
146
- "desc": "LG Nexus 4",
147
- "ua": "Mozilla/5.0 (Linux; Android 4.2.1; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
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",
148
328
  "expect": {
149
- "vendor": "LG",
150
- "model": "Nexus 4",
151
- "type": "mobile"
329
+ "vendor": "Huawei",
330
+ "model": "AGS2-L09",
331
+ "type": "tablet"
152
332
  }
153
333
  },
154
334
  {
155
- "desc": "LG Nexus 5",
156
- "ua": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
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",
157
337
  "expect": {
158
- "vendor": "LG",
159
- "model": "Nexus 5",
160
- "type": "mobile"
338
+ "vendor": "Huawei",
339
+ "model": "AGR-W09",
340
+ "type": "tablet"
161
341
  }
162
342
  },
163
343
  {
164
- "desc": "Meizu M5 Note",
165
- "ua": "Mozilla/5.0 (Linux; Android 6.0; M5 Note Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043024 Safari/537.36 MicroMessenger/6.5.7.1040 NetType/WIFI Language/zh_CN",
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",
166
346
  "expect": {
167
- "vendor": "Meizu",
168
- "model": "M5 Note",
169
- "type": "mobile"
347
+ "vendor": "Huawei",
348
+ "model": "AGS3-W09",
349
+ "type": "tablet"
170
350
  }
171
351
  },
172
352
  {
173
- "desc": "Microsoft Lumia 950",
174
- "ua": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586",
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",
175
355
  "expect": {
176
- "vendor": "Microsoft",
177
- "model": "Lumia 950",
178
- "type": "mobile"
356
+ "vendor": "Huawei",
357
+ "model": "AGR-L09",
358
+ "type": "tablet"
179
359
  }
180
360
  },
181
361
  {
182
- "desc": "Motorola Moto X",
183
- "ua": "Mozilla/5.0 (Linux; Android 4.4.4; XT1097 Build/KXE21.187-38) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36",
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",
184
364
  "expect": {
185
- "vendor": "Motorola",
186
- "model": "XT1097",
187
- "type": "mobile"
365
+ "vendor": "Huawei",
366
+ "model": "BTV-W09",
367
+ "type": "tablet"
188
368
  }
189
369
  },
190
370
  {
191
- "desc" : "Meizu M3S",
192
- "ua" : "Mozilla/5.0 (X11; Linux; Android 5.1; MZ-M3s Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrom/45.0.2454.94 Mobile Safari/537.36",
193
- "expect" :
194
- {
195
- "vendor" : "Meizu",
196
- "model" : "M3s",
197
- "type" : "mobile"
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"
198
377
  }
199
378
  },
200
379
  {
201
- "desc" : "Microsoft Lumia 950",
202
- "ua" : "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586",
203
- "expect" :
204
- {
205
- "vendor" : "Microsoft",
206
- "model" : "Lumia 950",
207
- "type" : "mobile"
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"
208
386
  }
209
387
  },
210
388
  {
211
- "desc": "Motorola Nexus 6",
212
- "ua": "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.20 Mobile Safari/537.36",
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",
213
391
  "expect": {
214
- "vendor": "Motorola",
215
- "model": "Nexus 6",
392
+ "vendor": "Huawei",
393
+ "model": "TET-AN00",
216
394
  "type": "mobile"
217
395
  }
218
396
  },
219
397
  {
220
- "desc": "Motorola Droid RAZR 4G",
221
- "ua": "Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; DROID RAZR 4G Build/6.5.1-73_DHD-11_M1-29) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
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",
222
427
  "expect": {
223
- "vendor": "Motorola",
224
- "model": "DROID RAZR 4G",
428
+ "vendor": "Huawei",
429
+ "model": "ANE-LX1",
225
430
  "type": "mobile"
226
431
  }
227
432
  },
228
433
  {
229
- "desc": "iPhone",
230
- "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
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",
231
445
  "expect": {
232
- "vendor": "Apple",
233
- "model": "iPhone",
446
+ "vendor": "Huawei",
447
+ "model": "CLT-L29",
234
448
  "type": "mobile"
235
449
  }
236
450
  },
237
451
  {
238
- "desc": "Motorola Droid RAZR 4G",
239
- "ua": "Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.53",
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",
240
454
  "expect": {
241
- "vendor": "Apple",
242
- "model": "iPod touch",
455
+ "vendor": "Huawei",
456
+ "model": "ELE-L29",
243
457
  "type": "mobile"
244
458
  }
245
459
  },
246
460
  {
247
- "desc": "Moto X",
248
- "ua": "Mozilla/5.0 (Linux; U; Android 4.2; xx-xx; XT1058 Build/13.9.0Q2.X-70-GHOST-ATT_LE-2) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
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",
249
463
  "expect": {
250
- "vendor": "Motorola",
251
- "model": "XT1058",
464
+ "vendor": "Huawei",
465
+ "model": "VOG-L29",
252
466
  "type": "mobile"
253
467
  }
254
468
  },
255
469
  {
256
- "desc": "Nokia3xx",
257
- "ua": "Nokia303/14.87 CLDC-1.1",
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",
258
472
  "expect": {
259
- "vendor": "Nokia",
260
- "model": "303",
473
+ "vendor": "Huawei",
474
+ "model": "ANA-AN00",
261
475
  "type": "mobile"
262
476
  }
263
477
  },
264
478
  {
265
- "desc": "OnePlus One",
266
- "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",
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",
267
481
  "expect": {
268
- "vendor": "OnePlus",
269
- "model": "1",
482
+ "vendor": "Huawei",
483
+ "model": "ELS-AN00",
270
484
  "type": "mobile"
271
485
  }
272
486
  },
273
487
  {
274
- "desc": "OnePlus 3",
275
- "ua": "Mozilla/5.0 (Linux; Android 7.1.1; ONEPLUS A3000 Build/NMF26F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36",
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",
276
490
  "expect": {
277
- "vendor": "OnePlus",
278
- "model": "A3000",
491
+ "vendor": "Huawei",
492
+ "model": "EBG-AN10",
279
493
  "type": "mobile"
280
494
  }
281
495
  },
282
496
  {
283
- "desc": "OnePlus 6",
284
- "ua": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A6003) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.89 Mobile Safari/537.36",
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",
285
499
  "expect": {
286
- "vendor": "OnePlus",
287
- "model": "A6003",
500
+ "vendor": "Huawei",
501
+ "model": "CDY-AN90",
288
502
  "type": "mobile"
289
503
  }
290
504
  },
291
505
  {
292
- "desc": "OnePlus 6T",
293
- "ua": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A6010) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
506
+ "desc": "Huawei Enjoy10e",
507
+ "ua": "Dalvik/2.1.0 (Linux; U; Android 10; MED-AL00 Build/HUAWEIMED-AL00)",
294
508
  "expect": {
295
- "vendor": "OnePlus",
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",
628
+ "type": "mobile"
629
+ }
630
+ },
631
+ {
632
+ "desc": "iPad using UCBrowser",
633
+ "ua": "Mozilla/5.0 (iPad; U; CPU OS 11_2 like Mac OS X; zh-CN; iPad5,3) AppleWebKit/534.46 (KHTML, like Gecko) UCBrowser/3.0.1.776 U3/ Mobile/10A403 Safari/7543.48.3",
634
+ "expect": {
635
+ "vendor": "Apple",
636
+ "model": "iPad",
637
+ "type": "tablet"
638
+ }
639
+ },
640
+ {
641
+ "desc": "iPad Air",
642
+ "ua": "Mozilla/5.0 (iPad; CPU OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBDV/iPad4,1;FBMD/iPad;FBSN/iOS;FBSV/12.4.5;FBSS/2;FBID/tablet;FBLC/en_US;FBOP/5;FBCR/]",
643
+ "expect": {
644
+ "vendor": "Apple",
645
+ "model": "iPad",
646
+ "type": "tablet"
647
+ }
648
+ },
649
+ {
650
+ "desc": "iPad using Facebook Browser",
651
+ "ua": "Mozilla/5.0 (iPad; CPU OS 14_4_2 like Mac OS X) WebKit/8610 (KHTML, like Gecko) Mobile/18D70 [FBAN/FBIOS;FBDV/iPad7,11;FBMD/iPad;FBSN/iOS;FBSV/14.4.2;FBSS/2;FBID/tablet;FBLC/en_US;FBOP/5]",
652
+ "expect": {
653
+ "vendor": "Apple",
654
+ "model": "iPad",
655
+ "type": "tablet"
656
+ }
657
+ },
658
+ {
659
+ "desc": "iPod",
660
+ "ua": "Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53",
661
+ "expect": {
662
+ "vendor": "Apple",
663
+ "model": "iPod touch",
664
+ "type": "mobile"
665
+ }
666
+ },
667
+ {
668
+ "desc": "Lenovo Tab 2",
669
+ "ua": "Mozilla/5.0 (Linux; Android 5.0.1; Lenovo TAB 2 A7-30HC Build/LRX21M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Safari/537.36",
670
+ "expect": {
671
+ "vendor": "Lenovo",
672
+ "model": "TAB 2 A7",
673
+ "type": "tablet"
674
+ }
675
+ },
676
+ {
677
+ "desc": "Lenovo Phone",
678
+ "ua": "Mozilla/5.0 (Linux; Android 6.0; Lenovo PB2-650M Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.105 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/311.0.0.44.117;]",
679
+ "expect": {
680
+ "vendor": "Lenovo",
681
+ "model": "PB2-650M",
682
+ "type": "mobile"
683
+ }
684
+ },
685
+ {
686
+ "desc": "Lenovo Tab 3 Pro",
687
+ "ua": "Mozilla/5.0 (Linux; Android 6.0.1; Lenovo YT3-X90F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.99 Safari/537.36",
688
+ "expect": {
689
+ "vendor": "Lenovo",
690
+ "model": "YT3-X90F",
691
+ "type": "tablet"
692
+ }
693
+ },
694
+ {
695
+ "desc": "Lenovo Tab 4",
696
+ "ua": "Mozilla/5.0 (Linux; Android 7.1.1; Lenovo TB-X304F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.99 Safari/537.36",
697
+ "expect": {
698
+ "vendor": "Lenovo",
699
+ "model": "TB-X304F",
700
+ "type": "tablet"
701
+ }
702
+ },
703
+ {
704
+ "desc": "Lenovo Tab 4",
705
+ "ua": "Mozilla/5.0 (Linux; Android 4.4.2; Lenovo TAB 2 A7-30HC) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
706
+ "expect": {
707
+ "vendor": "Lenovo",
708
+ "model": "TAB 2 A7",
709
+ "type": "tablet"
710
+ }
711
+ },
712
+ {
713
+ "desc": "Lenovo Tab 7 Essential",
714
+ "ua": "Mozilla/5.0 (Linux; Android 7.0; Lenovo TB-7304X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
715
+ "expect": {
716
+ "vendor": "Lenovo",
717
+ "model": "TB-7304X",
718
+ "type": "tablet"
719
+ }
720
+ },
721
+ {
722
+ "desc": "Lenovo Tab M10",
723
+ "ua": "Mozilla/5.0 (Linux; arm_64; Android 9; Lenovo TB-X606F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 YaBrowser/20.9.4.99.01 Safari/537.36",
724
+ "expect": {
725
+ "vendor": "Lenovo",
726
+ "model": "TB-X606F",
727
+ "type": "tablet"
728
+ }
729
+ },
730
+ {
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
+ {
776
+ "desc": "LG K500",
777
+ "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",
778
+ "expect": {
779
+ "vendor": "LG",
780
+ "model": "K500",
781
+ "type": "mobile"
782
+ }
783
+ },
784
+ {
785
+ "desc": "LG Nexus 4",
786
+ "ua": "Mozilla/5.0 (Linux; Android 4.2.1; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
787
+ "expect": {
788
+ "vendor": "LG",
789
+ "model": "Nexus 4",
790
+ "type": "mobile"
791
+ }
792
+ },
793
+ {
794
+ "desc": "LG Nexus 4",
795
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.3; en-us; Google Nexus 4 - 4.3 - API 18 - 768x1280 Build/JLS36G) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
796
+ "expect": {
797
+ "vendor": "LG",
798
+ "model": "Nexus 4",
799
+ "type": "mobile"
800
+ }
801
+ },
802
+ {
803
+ "desc": "LG Nexus 5",
804
+ "ua": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
805
+ "expect": {
806
+ "vendor": "LG",
807
+ "model": "Nexus 5",
808
+ "type": "mobile"
809
+ }
810
+ },
811
+ {
812
+ "desc": "LG Wing",
813
+ "ua": "Mozilla/5.0 (Linux; Android 10; LM-F100N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.101 Mobile Safari/537.36",
814
+ "expect": {
815
+ "vendor": "LG",
816
+ "model": "LM-F100N",
817
+ "type": "mobile"
818
+ }
819
+ },
820
+ {
821
+ "desc": "LG Smart TV",
822
+ "ua": "Mozilla/5.0 (DirectFB; U; Linux mips; en) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) LG Browser (; LG NetCast.TV-2011)",
823
+ "expect": {
824
+ "vendor": "LG",
825
+ "model": "undefined",
826
+ "type": "smarttv"
827
+ }
828
+ },
829
+ {
830
+ "desc": "LG Smart TV",
831
+ "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",
841
+ "expect": {
842
+ "vendor": "LG",
843
+ "model": "undefined",
844
+ "type": "smarttv"
845
+ }
846
+ },
847
+ {
848
+ "desc": "Meizu M5 Note",
849
+ "ua": "Mozilla/5.0 (Linux; Android 6.0; M5 Note Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043024 Safari/537.36 MicroMessenger/6.5.7.1040 NetType/WIFI Language/zh_CN",
850
+ "expect": {
851
+ "vendor": "Meizu",
852
+ "model": "M5 Note",
853
+ "type": "mobile"
854
+ }
855
+ },
856
+ {
857
+ "desc": "Microsoft Lumia 950",
858
+ "ua": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586",
859
+ "expect": {
860
+ "vendor": "Microsoft",
861
+ "model": "Lumia 950",
862
+ "type": "mobile"
863
+ }
864
+ },
865
+ {
866
+ "desc": "Microsoft Surface Duo",
867
+ "ua": "Dalvik/2.1.0 (Linux; U; Android 10; Surface Duo Build/2020.1014.61)",
868
+ "expect": {
869
+ "vendor": "Microsoft",
870
+ "model": "Surface Duo",
871
+ "type": "tablet"
872
+ }
873
+ },
874
+ {
875
+ "desc": "Motorola Moto X",
876
+ "ua": "Mozilla/5.0 (Linux; Android 4.4.4; XT1097 Build/KXE21.187-38) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36",
877
+ "expect": {
878
+ "vendor": "Motorola",
879
+ "model": "XT1097",
880
+ "type": "mobile"
881
+ }
882
+ },
883
+ {
884
+ "desc" : "Meizu M3S",
885
+ "ua" : "Mozilla/5.0 (X11; Linux; Android 5.1; MZ-M3s Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrom/45.0.2454.94 Mobile Safari/537.36",
886
+ "expect" :
887
+ {
888
+ "vendor" : "Meizu",
889
+ "model" : "M3s",
890
+ "type" : "mobile"
891
+ }
892
+ },
893
+ {
894
+ "desc" : "Microsoft Lumia 950",
895
+ "ua" : "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586",
896
+ "expect" :
897
+ {
898
+ "vendor" : "Microsoft",
899
+ "model" : "Lumia 950",
900
+ "type" : "mobile"
901
+ }
902
+ },
903
+ {
904
+ "desc": "Motorola Nexus 6",
905
+ "ua": "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.20 Mobile Safari/537.36",
906
+ "expect": {
907
+ "vendor": "Motorola",
908
+ "model": "Nexus 6",
909
+ "type": "mobile"
910
+ }
911
+ },
912
+ {
913
+ "desc": "Motorola Droid RAZR 4G",
914
+ "ua": "Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; DROID RAZR 4G Build/6.5.1-73_DHD-11_M1-29) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
915
+ "expect": {
916
+ "vendor": "Motorola",
917
+ "model": "DROID RAZR 4G",
918
+ "type": "mobile"
919
+ }
920
+ },
921
+ {
922
+ "desc": "Motorola RAZR 2019",
923
+ "ua": "Mozilla/5.0 (Linux; Android 9; motorola razr) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/11.1 Chrome/75.0.3770.143 Mobile Safari/537.36",
924
+ "expect": {
925
+ "vendor": "Motorola",
926
+ "model": "razr",
927
+ "type": "mobile"
928
+ }
929
+ },
930
+ {
931
+ "desc": "iPhone",
932
+ "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
933
+ "expect": {
934
+ "vendor": "Apple",
935
+ "model": "iPhone",
936
+ "type": "mobile"
937
+ }
938
+ },
939
+ {
940
+ "desc": "iPhone SE",
941
+ "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBDV/iPhone8,4;FBMD/iPhone;FBSN/iOS;FBSV/13.3.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBCR/]",
942
+ "expect": {
943
+ "vendor": "Apple",
944
+ "model": "iPhone",
945
+ "type": "mobile"
946
+ }
947
+ },
948
+ {
949
+ "desc": "iPhone SE using Facebook App",
950
+ "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBDV/iPhone8,4;FBMD/iPhone;FBSN/iOS;FBSV/13.3.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBCR/]",
951
+ "expect": {
952
+ "vendor": "Apple",
953
+ "model": "iPhone",
954
+ "type": "mobile"
955
+ }
956
+ },
957
+ {
958
+ "desc": "iPhone 11 Pro Max",
959
+ "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBDV/iPhone12,5;FBMD/iPhone;FBSN/iOS;FBSV/13.3.1;FBSS/3;FBID/phone;FBLC/en_US;FBOP/5;FBCR/]",
960
+ "expect": {
961
+ "vendor": "Apple",
962
+ "model": "iPhone",
963
+ "type": "mobile"
964
+ }
965
+ },
966
+ {
967
+ "desc": "iPhone XS",
968
+ "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBDV/iPhone11,2;FBMD/iPhone;FBSN/iOS;FBSV/13.3.1;FBSS/3;FBID/phone;FBLC/en_US;FBOP/5;FBCR/]",
969
+ "expect": {
970
+ "vendor": "Apple",
971
+ "model": "iPhone",
972
+ "type": "mobile"
973
+ }
974
+ },
975
+ {
976
+ "desc": "iPod touch",
977
+ "ua": "Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.53",
978
+ "expect": {
979
+ "vendor": "Apple",
980
+ "model": "iPod touch",
981
+ "type": "mobile"
982
+ }
983
+ },
984
+ {
985
+ "desc": "Moto X",
986
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.2; xx-xx; XT1058 Build/13.9.0Q2.X-70-GHOST-ATT_LE-2) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
987
+ "expect": {
988
+ "vendor": "Motorola",
989
+ "model": "XT1058",
990
+ "type": "mobile"
991
+ }
992
+ },
993
+ {
994
+ "desc": "Motorola Moto g(6) Play",
995
+ "ua": "Mozilla/5.0 (Linux; Android 9; moto g(6) play) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36",
996
+ "expect": {
997
+ "vendor": "Motorola",
998
+ "model": "moto g(6) play",
999
+ "type": "mobile"
1000
+ }
1001
+ },
1002
+ {
1003
+ "desc": "Motorola Moto g(7) Supra",
1004
+ "ua": "Mozilla/5.0 (Linux; Android 9; moto g(7) supra Build/PCOS29.114-134-2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/73.0.3683.90 Mobile Safari/537.36",
1005
+ "expect": {
1006
+ "vendor": "Motorola",
1007
+ "model": "moto g(7) supra",
1008
+ "type": "mobile"
1009
+ }
1010
+ },
1011
+ {
1012
+ "desc": "Motorola Moto E",
1013
+ "ua": "Mozilla/5.0 (Linux; Android 7.1.1; Moto E (4) Build/NDQS26.69-64-11-7; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36",
1014
+ "expect": {
1015
+ "vendor": "Motorola",
1016
+ "model": "Moto E (4)",
1017
+ "type": "mobile"
1018
+ }
1019
+ },
1020
+ {
1021
+ "desc": "Nokia3xx",
1022
+ "ua": "Nokia303/14.87 CLDC-1.1",
1023
+ "expect": {
1024
+ "vendor": "Nokia",
1025
+ "model": "303",
1026
+ "type": "mobile"
1027
+ }
1028
+ },
1029
+ {
1030
+ "desc": "Nokia 3.2",
1031
+ "ua": "Mozilla/5.0 (Linux; Android 10; Nokia 3.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36",
1032
+ "expect": {
1033
+ "vendor": "Nokia",
1034
+ "model": "3.2",
1035
+ "type": "mobile"
1036
+ }
1037
+ },
1038
+ {
1039
+ "desc": "Nokia N9",
1040
+ "ua": "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13",
1041
+ "expect": {
1042
+ "vendor": "Nokia",
1043
+ "model": "N9",
1044
+ "type": "mobile"
1045
+ }
1046
+ },
1047
+ {
1048
+ "desc": "Nokia 2720 Flip",
1049
+ "ua": "Mozilla/5.0 (Mobile; Nokia_2720_Flip; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5.2",
1050
+ "expect": {
1051
+ "vendor": "Nokia",
1052
+ "model": "2720 Flip",
1053
+ "type": "mobile"
1054
+ }
1055
+ },
1056
+ {
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
+ {
1075
+ "desc": "OnePlus One",
1076
+ "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",
1077
+ "expect": {
1078
+ "vendor": "OnePlus",
1079
+ "model": "A0001",
1080
+ "type": "mobile"
1081
+ }
1082
+ },
1083
+ {
1084
+ "desc": "OnePlus One",
1085
+ "ua": "Mozilla/5.0 (Linux; Android 4.4.2; OnePlus One A0001 Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36",
1086
+ "expect": {
1087
+ "vendor": "OnePlus",
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",
1098
+ "type": "mobile"
1099
+ }
1100
+ },
1101
+ {
1102
+ "desc": "OnePlus 3",
1103
+ "ua": "Mozilla/5.0 (Linux; Android 7.1.1; ONEPLUS A3000 Build/NMF26F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36",
1104
+ "expect": {
1105
+ "vendor": "OnePlus",
1106
+ "model": "A3000",
1107
+ "type": "mobile"
1108
+ }
1109
+ },
1110
+ {
1111
+ "desc": "OnePlus 6",
1112
+ "ua": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A6003) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.89 Mobile Safari/537.36",
1113
+ "expect": {
1114
+ "vendor": "OnePlus",
1115
+ "model": "A6003",
1116
+ "type": "mobile"
1117
+ }
1118
+ },
1119
+ {
1120
+ "desc": "OnePlus 6T",
1121
+ "ua": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A6010) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
1122
+ "expect": {
1123
+ "vendor": "OnePlus",
296
1124
  "model": "A6010",
297
1125
  "type": "mobile"
298
1126
  }
299
1127
  },
1128
+ {
1129
+ "desc": "OnePlus 8T",
1130
+ "ua": "Mozilla/5.0 (Linux; Android 11; KB2005) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 Mobile Safari/537.36",
1131
+ "expect": {
1132
+ "vendor": "OnePlus",
1133
+ "model": "KB2005",
1134
+ "type": "mobile"
1135
+ }
1136
+ },
1137
+ {
1138
+ "desc": "OnePlus 8 Pro",
1139
+ "ua": "Mozilla/5.0 (Linux; Android 10; IN2025) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.119 Mobile Safari/537.36",
1140
+ "expect": {
1141
+ "vendor": "OnePlus",
1142
+ "model": "IN2025",
1143
+ "type": "mobile"
1144
+ }
1145
+ },
1146
+ {
1147
+ "desc": "OnePlus Nord N100",
1148
+ "ua": "Mozilla/5.0 (Linux; Android 10; BE2015 Build/QKQ1.200719.002; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36",
1149
+ "expect": {
1150
+ "vendor": "OnePlus",
1151
+ "model": "BE2015",
1152
+ "type": "mobile"
1153
+ }
1154
+ },
1155
+ {
1156
+ "desc": "OnePlus Nord N10 5G",
1157
+ "ua": "Mozilla/5.0 (Linux; Android 10; BE2029) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.185 Mobile Safari/537.36",
1158
+ "expect": {
1159
+ "vendor": "OnePlus",
1160
+ "model": "BE2029",
1161
+ "type": "mobile"
1162
+ }
1163
+ },
1164
+ {
1165
+ "desc": "OPPO Neo",
1166
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; R831T Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 OppoBrowser/3.3.2 Mobile Safari/534.30",
1167
+ "expect": {
1168
+ "vendor": "OPPO",
1169
+ "model": "R831T",
1170
+ "type": "mobile"
1171
+ }
1172
+ },
300
1173
  {
301
1174
  "desc": "OPPO R7s",
302
1175
  "ua": "Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; OPPO R7s Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.1 Mobile Safari/537.36",
@@ -306,6 +1179,132 @@
306
1179
  "type": "mobile"
307
1180
  }
308
1181
  },
1182
+ {
1183
+ "desc": "OPPO A3s",
1184
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; CPH1803 Build/OPM1.171019.026; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 Mobile Safari/537.36",
1185
+ "expect": {
1186
+ "vendor": "OPPO",
1187
+ "model": "CPH1803",
1188
+ "type": "mobile"
1189
+ }
1190
+ },
1191
+ {
1192
+ "desc": "OPPO A12",
1193
+ "ua": "Mozilla/5.0 (Linux; Android 9; CPH2083) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
1194
+ "expect": {
1195
+ "vendor": "OPPO",
1196
+ "model": "CPH2083",
1197
+ "type": "mobile"
1198
+ }
1199
+ },
1200
+ {
1201
+ "desc": "OPPO Reno",
1202
+ "ua": "Mozilla/5.0 (Linux; Android 9; PCAT00 Build/PKQ1.190101.001; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36",
1203
+ "expect": {
1204
+ "vendor": "OPPO",
1205
+ "model": "PCAT00",
1206
+ "type": "mobile"
1207
+ }
1208
+ },
1209
+ {
1210
+ "desc": "OPPO Reno3 Pro 5G",
1211
+ "ua": "Mozilla/5.0 (Linux; Android 10; PCLM50) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.117 Mobile Safari/537.36",
1212
+ "expect": {
1213
+ "vendor": "OPPO",
1214
+ "model": "PCLM50",
1215
+ "type": "mobile"
1216
+ }
1217
+ },
1218
+ {
1219
+ "desc": "OPPO Reno4 SE",
1220
+ "ua": "Mozilla/5.0 (Linux; U; Android 10; xx-xx; PEAM00 Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36",
1221
+ "expect": {
1222
+ "vendor": "OPPO",
1223
+ "model": "PEAM00",
1224
+ "type": "mobile"
1225
+ }
1226
+ },
1227
+ {
1228
+ "desc": "OPPO Reno4 5G",
1229
+ "ua": "Mozilla/5.0 (Linux; Android 10; PDPM00 Build/QKQ1.200216.002; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36",
1230
+ "expect": {
1231
+ "vendor": "OPPO",
1232
+ "model": "PDPM00",
1233
+ "type": "mobile"
1234
+ }
1235
+ },
1236
+ {
1237
+ "desc": "OPPO Reno4 Pro 5G",
1238
+ "ua": "Mozilla/5.0 (Linux; U; Android 10; xx-xx; PDNT00 Build/QKQ1.200216.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36",
1239
+ "expect": {
1240
+ "vendor": "OPPO",
1241
+ "model": "PDNT00",
1242
+ "type": "mobile"
1243
+ }
1244
+ },
1245
+ {
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
+ {
1255
+ "desc": "OPPO Find X",
1256
+ "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",
1257
+ "expect": {
1258
+ "vendor": "OPPO",
1259
+ "model": "PAFM00",
1260
+ "type": "mobile"
1261
+ }
1262
+ },
1263
+ {
1264
+ "desc": "OPPO Find 7a",
1265
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.3; xx-xx; X9007 Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
1266
+ "expect": {
1267
+ "vendor": "OPPO",
1268
+ "model": "X9007",
1269
+ "type": "mobile"
1270
+ }
1271
+ },
1272
+ {
1273
+ "desc": "Realme C1",
1274
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; RMX1811 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.126 Mobile Safari/537.36",
1275
+ "expect": {
1276
+ "vendor": "Realme",
1277
+ "model": "RMX1811",
1278
+ "type": "mobile"
1279
+ }
1280
+ },
1281
+ {
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
+ {
1291
+ "desc": "Realme Narzo 20",
1292
+ "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",
1293
+ "expect": {
1294
+ "vendor": "Realme",
1295
+ "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",
1305
+ "type": "mobile"
1306
+ }
1307
+ },
309
1308
  {
310
1309
  "desc": "Philips SmartTV",
311
1310
  "ua": "Opera/9.80 HbbTV/1.1.1 (; Philips; ; ; ; ) NETTV/4.0.2; en) Version/11.60",
@@ -315,6 +1314,33 @@
315
1314
  "type": "smarttv"
316
1315
  }
317
1316
  },
1317
+ {
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
+ },
318
1344
  {
319
1345
  "desc": "Kindle Fire HD",
320
1346
  "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",
@@ -325,14 +1351,95 @@
325
1351
  }
326
1352
  },
327
1353
  {
328
- "desc": "Samsung Galaxy Note 8",
329
- "ua": "Mozilla/5.0 (Linux; Android 4.2.2; GT-N5100 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36",
1354
+ "desc": "Kindle Fire HD",
1355
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true",
330
1356
  "expect": {
331
- "vendor": "Samsung",
332
- "model": "GT-N5100",
1357
+ "vendor": "Amazon",
1358
+ "model": "KFTT",
333
1359
  "type": "tablet"
334
1360
  }
335
1361
  },
1362
+ {
1363
+ "desc": "Samsung Galaxy A21s",
1364
+ "ua": "Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-A217F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/11.0 Chrome/75.0.3770.143 Mobile Safari/537.36",
1365
+ "expect": {
1366
+ "vendor": "Samsung",
1367
+ "model": "SM-A217F",
1368
+ "type": "mobile"
1369
+ }
1370
+ },
1371
+ {
1372
+ "desc": "Samsung Galaxy A31",
1373
+ "ua": "Mozilla/5.0 (Linux; Android 10; SM-A315G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36",
1374
+ "expect": {
1375
+ "vendor": "Samsung",
1376
+ "model": "SM-A315G",
1377
+ "type": "mobile"
1378
+ }
1379
+ },
1380
+ {
1381
+ "desc": "Samsung Galaxy A50",
1382
+ "ua": "Mozilla/5.0 (Linux; Android 9; SM-A505F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.105 Mobile Safari/537.36",
1383
+ "expect": {
1384
+ "vendor": "Samsung",
1385
+ "model": "SM-A505F",
1386
+ "type": "mobile"
1387
+ }
1388
+ },
1389
+ {
1390
+ "desc": "Samsung Galaxy A80",
1391
+ "ua": "Mozilla/5.0 (Linux; Android 9; SM-A805F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.112 Mobile Safari/537.36",
1392
+ "expect": {
1393
+ "vendor": "Samsung",
1394
+ "model": "SM-A805F",
1395
+ "type": "mobile"
1396
+ }
1397
+ },
1398
+ {
1399
+ "desc": "Samsung Galaxy Fold",
1400
+ "ua": "Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-F900U Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.2 Chrome/67.0.3396.87 Mobile Safari/537.36",
1401
+ "expect": {
1402
+ "vendor": "Samsung",
1403
+ "model": "SM-F900U",
1404
+ "type": "mobile"
1405
+ }
1406
+ },
1407
+ {
1408
+ "desc": "Samsung Galaxy Z Flip",
1409
+ "ua": "Mozilla/5.0 (Linux; Android 10; SM-F700N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36",
1410
+ "expect": {
1411
+ "vendor": "Samsung",
1412
+ "model": "SM-F700N",
1413
+ "type": "mobile"
1414
+ }
1415
+ },
1416
+ {
1417
+ "desc": "Samsung Galaxy Z Fold2",
1418
+ "ua": "Mozilla/5.0 (Linux; Android 10; SM-F916B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36",
1419
+ "expect": {
1420
+ "vendor": "Samsung",
1421
+ "model": "SM-F916B",
1422
+ "type": "mobile"
1423
+ }
1424
+ },
1425
+ {
1426
+ "desc": "Samsung Galaxy S10E",
1427
+ "ua": "Mozilla/5.0 (Linux; Android 9; SM-G970F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36",
1428
+ "expect": {
1429
+ "vendor": "Samsung",
1430
+ "model": "SM-G970F",
1431
+ "type": "mobile"
1432
+ }
1433
+ },
1434
+ {
1435
+ "desc": "Samsung Galaxy Note 10+",
1436
+ "ua": "Mozilla/5.0 (Linux; Android 9; SM-N976V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.89 Mobile Safari/537.36",
1437
+ "expect": {
1438
+ "vendor": "Samsung",
1439
+ "model": "SM-N976V",
1440
+ "type": "mobile"
1441
+ }
1442
+ },
336
1443
  {
337
1444
  "desc": "Samsung SM-C5000",
338
1445
  "ua": "Mozilla/5.0 (Linux; Android 6.0.1; SM-C5000 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/51.0.2704.81 Mobile Safari/537.36 wkbrowser 4.1.35 3065",
@@ -342,17 +1449,62 @@
342
1449
  "type": "mobile"
343
1450
  }
344
1451
  },
1452
+ {
1453
+ "desc": "Samsung Galaxy Note 8",
1454
+ "ua": "Mozilla/5.0 (Linux; Android 4.2.2; GT-N5100 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36",
1455
+ "expect": {
1456
+ "vendor": "Samsung",
1457
+ "model": "GT-N5100",
1458
+ "type": "tablet"
1459
+ }
1460
+ },
345
1461
  {
346
1462
  "desc": "Samsung SM-T231",
347
1463
  "ua": "Mozilla/5.0 (Linux; Android 4.4.2; SM-T231 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36",
348
1464
  "expect": {
349
1465
  "vendor": "Samsung",
350
- "model": "SM-T231",
1466
+ "model": "SM-T231",
1467
+ "type": "tablet"
1468
+ }
1469
+ },
1470
+ {
1471
+ "desc": "Samsung Galaxy Tab 6 Lite",
1472
+ "ua": "Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-P610) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/12.0 Chrome/79.0.3945.136 Safari/537.36",
1473
+ "expect": {
1474
+ "vendor": "Samsung",
1475
+ "model": "SM-P610",
1476
+ "type": "tablet"
1477
+ }
1478
+ },
1479
+ {
1480
+ "desc": "Samsung Galaxy Tab A 9.7",
1481
+ "ua": "Mozilla/5.0 (Linux; Android 7.1.1; SM-P550 Build/NMF26X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.90 Safari/537.36",
1482
+ "expect": {
1483
+ "vendor": "Samsung",
1484
+ "model": "SM-P550",
1485
+ "type": "tablet"
1486
+ }
1487
+ },
1488
+ {
1489
+ "desc": "Samsung Galaxy Tab A 10.1",
1490
+ "ua": " Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-T515) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/13.0 Chrome/83.0.4103.106 Safari/537.36",
1491
+ "expect": {
1492
+ "vendor": "Samsung",
1493
+ "model": "SM-T515",
1494
+ "type": "tablet"
1495
+ }
1496
+ },
1497
+ {
1498
+ "desc": "Samsung Galaxy Tab S7",
1499
+ "ua": "Mozilla/5.0 (Linux; Android 10; SM-T870) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36",
1500
+ "expect": {
1501
+ "vendor": "Samsung",
1502
+ "model": "SM-T870",
351
1503
  "type": "tablet"
352
1504
  }
353
1505
  },
354
1506
  {
355
- "desc": "Samsung SM-T700",
1507
+ "desc": "Samsung Galaxy Tab S",
356
1508
  "ua": "Mozilla/5.0 (Linux; Android 4.4.2; SM-T700 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36",
357
1509
  "expect": {
358
1510
  "vendor": "Samsung",
@@ -361,7 +1513,7 @@
361
1513
  }
362
1514
  },
363
1515
  {
364
- "desc": "Samsung SM-T520",
1516
+ "desc": "Samsung Galaxy Tab Pro 10.1",
365
1517
  "ua": "Mozilla/5.0 (Linux; Android 4.4.2; SM-T520 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36",
366
1518
  "expect": {
367
1519
  "vendor": "Samsung",
@@ -369,6 +1521,15 @@
369
1521
  "type": "tablet"
370
1522
  }
371
1523
  },
1524
+ {
1525
+ "desc": "Samsung Note 10.1",
1526
+ "ua": "Mozilla/5.0 (Linux; Android 5.1.1; SM-P605) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36",
1527
+ "expect": {
1528
+ "vendor": "Samsung",
1529
+ "model": "SM-P605",
1530
+ "type": "tablet"
1531
+ }
1532
+ },
372
1533
  {
373
1534
  "desc": "Samsung SmartTV2011",
374
1535
  "ua": "HbbTV/1.1.1 (;;;;;) Maple;2011",
@@ -414,6 +1575,33 @@
414
1575
  "type": "smarttv"
415
1576
  }
416
1577
  },
1578
+ {
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
+ },
417
1605
  {
418
1606
  "desc": "Sony G8141 (Xperia XZ Premium)",
419
1607
  "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",
@@ -468,6 +1656,51 @@
468
1656
  "type": "mobile"
469
1657
  }
470
1658
  },
1659
+ {
1660
+ "desc": "Sony Xperia L4",
1661
+ "ua": "Mozilla/5.0 (Linux; Android 9; XQ-AD51) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36",
1662
+ "expect": {
1663
+ "vendor": "Sony",
1664
+ "model": "XQ-AD51",
1665
+ "type": "mobile"
1666
+ }
1667
+ },
1668
+ {
1669
+ "desc": "Sony Xperia 1ii",
1670
+ "ua": "Mozilla/5.0 (Linux; Android 10; XQ-AT51) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",
1671
+ "expect": {
1672
+ "vendor": "Sony",
1673
+ "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",
1683
+ "type": "mobile"
1684
+ }
1685
+ },
1686
+ {
1687
+ "desc": "Sony Xperia 10ii",
1688
+ "ua": "Mozilla/5.0 (Linux; Android 10; XQ-AU52) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36",
1689
+ "expect": {
1690
+ "vendor": "Sony",
1691
+ "model": "XQ-AU52",
1692
+ "type": "mobile"
1693
+ }
1694
+ },
1695
+ {
1696
+ "desc": "Sony Xperia Pro",
1697
+ "ua": "Mozilla/5.0 (Linux; Android 10; XQ-AQ52) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.185 Mobile Safari/537.36",
1698
+ "expect": {
1699
+ "vendor": "Sony",
1700
+ "model": "XQ-AQ52",
1701
+ "type": "mobile"
1702
+ }
1703
+ },
471
1704
  {
472
1705
  "desc": "Sony SGP521 (Xperia Z2 Tablet)",
473
1706
  "ua": "Mozilla/5.0 (Linux; Android 4.4; SGP521 Build/17.1.A.0.432) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36",
@@ -477,6 +1710,15 @@
477
1710
  "type": "tablet"
478
1711
  }
479
1712
  },
1713
+ {
1714
+ "desc": "Sony Xperia Z2 Tablet",
1715
+ "ua": "Mozilla/5.0 (Linux; Android 5.1.1; SGP561) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.99 Safari/537.36",
1716
+ "expect": {
1717
+ "vendor": "Sony",
1718
+ "model": "Xperia Tablet",
1719
+ "type": "tablet"
1720
+ }
1721
+ },
480
1722
  {
481
1723
  "desc": "Sony Tablet S",
482
1724
  "ua": "Mozilla/5.0 (Linux; U; Android 3.1; Sony Tablet S Build/THMAS10000) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13",
@@ -495,6 +1737,26 @@
495
1737
  "type": "tablet"
496
1738
  }
497
1739
  },
1740
+ {
1741
+ "desc" : "Tesla",
1742
+ "ua" : "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/601.1 (KHTML, like Gecko) Tesla QtCarBrowser Safari/601.1",
1743
+ "expect" :
1744
+ {
1745
+ "vendor": "Tesla",
1746
+ "model": "undefined",
1747
+ "type": "embedded"
1748
+ }
1749
+ },
1750
+ {
1751
+ "desc" : "Tesla",
1752
+ "ua" : "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/79.0.3945.130 Chrome/79.0.3945.130 Safari/537.36 Tesla/2020.16.2.1-e99c70fff409",
1753
+ "expect" :
1754
+ {
1755
+ "vendor": "Tesla",
1756
+ "model": "undefined",
1757
+ "type": "embedded"
1758
+ }
1759
+ },
498
1760
  {
499
1761
  "desc": "Xiaomi 2013023",
500
1762
  "ua": "Mozilla/5.0 (Linux; U; Android 4.2.2; en-US; 2013023 Build/HM2013023) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/10.0.1.512 U3/0.8.0 Mobile Safari/533.1",
@@ -576,6 +1838,123 @@
576
1838
  "type": "mobile"
577
1839
  }
578
1840
  },
1841
+ {
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
+ {
1887
+ "desc": "Xiaomi MI PAD 2",
1888
+ "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;]",
1889
+ "expect": {
1890
+ "vendor": "Xiaomi",
1891
+ "model": "MI PAD 2",
1892
+ "type": "tablet"
1893
+ }
1894
+ },
1895
+ {
1896
+ "desc": "Xiaomi MI PAD 4 PLUS",
1897
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; MI PAD 4 PLUS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
1898
+ "expect": {
1899
+ "vendor": "Xiaomi",
1900
+ "model": "MI PAD 4 PLUS",
1901
+ "type": "tablet"
1902
+ }
1903
+ },
1904
+ {
1905
+ "desc": "Xiaomi POCO X2",
1906
+ "ua": "Mozilla/5.0 (Linux; Android 10; POCO X2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36",
1907
+ "expect": {
1908
+ "vendor": "Xiaomi",
1909
+ "model": "POCO X2",
1910
+ "type": "mobile"
1911
+ }
1912
+ },
1913
+ {
1914
+ "desc": "Xiaomi Redmi 4A",
1915
+ "ua": "Mozilla/5.0 (Linux; Android 6.0; Redmi 4A Build/MMB29M; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36",
1916
+ "expect": {
1917
+ "vendor": "Xiaomi",
1918
+ "model": "Redmi 4A",
1919
+ "type": "mobile"
1920
+ }
1921
+ },
1922
+ {
1923
+ "desc": "Xiaomi Redmi K30 5G",
1924
+ "ua": "Mozilla/5.0 (Linux; Android 10; Redmi K30 5G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
1925
+ "expect": {
1926
+ "vendor": "Xiaomi",
1927
+ "model": "Redmi K30 5G",
1928
+ "type": "mobile"
1929
+ }
1930
+ },
1931
+ {
1932
+ "desc": "Xiaomi Redmi K30 Pro",
1933
+ "ua": "Mozilla/5.0 (Linux; Android 10; Redmi K30 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36",
1934
+ "expect": {
1935
+ "vendor": "Xiaomi",
1936
+ "model": "Redmi K30 Pro",
1937
+ "type": "mobile"
1938
+ }
1939
+ },
1940
+ {
1941
+ "desc": "Xiaomi Redmi Note 3",
1942
+ "ua": "Mozilla/5.0 (Linux; Android 6.0.1; Redmi Note 3 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.116 Mobile Safari/537.36",
1943
+ "expect": {
1944
+ "vendor": "Xiaomi",
1945
+ "model": "Redmi Note 3",
1946
+ "type": "mobile"
1947
+ }
1948
+ },
1949
+ {
1950
+ "desc": "Xiaomi Redmi Note 9 Pro Max",
1951
+ "ua": "Mozilla/5.0 (Linux; Android 10; Redmi Note 9 Pro Max) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.99 Mobile Safari/537.36",
1952
+ "expect": {
1953
+ "vendor": "Xiaomi",
1954
+ "model": "Redmi Note 9 Pro Max",
1955
+ "type": "mobile"
1956
+ }
1957
+ },
579
1958
  {
580
1959
  "desc": "PlayStation 4",
581
1960
  "ua": "Mozilla/5.0 (PlayStation 4 3.00) AppleWebKit/537.73 (KHTML, like Gecko)",
@@ -585,6 +1964,69 @@
585
1964
  "type": "console"
586
1965
  }
587
1966
  },
1967
+ {
1968
+ "desc": "PlayStation 5",
1969
+ "ua": "Mozilla/5.0 (Playstation; Playstation 5/1.05) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15",
1970
+ "expect": {
1971
+ "vendor": "Sony",
1972
+ "model": "Playstation 5",
1973
+ "type": "console"
1974
+ }
1975
+ },
1976
+ {
1977
+ "desc": "PlayStation Vita",
1978
+ "ua": "Mozilla/5.0 (PlayStation Vita 3.52) AppleWebKit/537.73 (KHTML, like Gecko) Silk/3.2",
1979
+ "expect": {
1980
+ "vendor": "Sony",
1981
+ "model": "PlayStation Vita",
1982
+ "type": "console"
1983
+ }
1984
+ },
1985
+ {
1986
+ "desc": "Nintendo Switch",
1987
+ "ua": "Mozilla/5.0 (Nintendo Switch; WifiWebAuthApplet) AppleWebKit/606.4 (KHTML, like Gecko) NF/6.0.1.15.4 NintendoBrowser/5.1.0.20393",
1988
+ "expect": {
1989
+ "vendor": "Nintendo",
1990
+ "model": "Switch",
1991
+ "type": "console"
1992
+ }
1993
+ },
1994
+ {
1995
+ "desc": "Nintendo WiiU",
1996
+ "ua": "Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.30 (KHTML, like Gecko) NX/3.0.4.2.9 NintendoBrowser/4.2.0.11146.EU",
1997
+ "expect": {
1998
+ "vendor": "Nintendo",
1999
+ "model": "WiiU",
2000
+ "type": "console"
2001
+ }
2002
+ },
2003
+ {
2004
+ "desc": "Nintendo Wii",
2005
+ "ua": "Opera/9.10 (Nintendo Wii; U; ; 1621; en)",
2006
+ "expect": {
2007
+ "vendor": "Nintendo",
2008
+ "model": "Wii",
2009
+ "type": "console"
2010
+ }
2011
+ },
2012
+ {
2013
+ "desc": "Nintendo 3DS",
2014
+ "ua": "Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7610.EU",
2015
+ "expect": {
2016
+ "vendor": "Nintendo",
2017
+ "model": "3DS",
2018
+ "type": "console"
2019
+ }
2020
+ },
2021
+ {
2022
+ "desc": "Nintendo 3DS",
2023
+ "ua": "Mozilla/5.0 (New Nintendo 3DS like iPhone) AppleWebKit/536.30 (KHTML, like Gecko) NX/3.0.0.5.15 Mobile NintendoBrowser/1.3.10126.EU",
2024
+ "expect": {
2025
+ "vendor": "Nintendo",
2026
+ "model": "3DS",
2027
+ "type": "console"
2028
+ }
2029
+ },
588
2030
  {
589
2031
  "desc": "Galaxy Nexus",
590
2032
  "ua": "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19",
@@ -730,38 +2172,125 @@
730
2172
  }
731
2173
  },
732
2174
  {
733
- "desc": "Google Pixel 3",
734
- "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
2175
+ "desc": "Google Pixel 3",
2176
+ "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
2177
+ "expect": {
2178
+ "vendor": "Google",
2179
+ "model": "Pixel 3",
2180
+ "type": "mobile"
2181
+ }
2182
+ },
2183
+ {
2184
+ "desc": "Google Pixel 3 XL",
2185
+ "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 XL Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
2186
+ "expect": {
2187
+ "vendor": "Google",
2188
+ "model": "Pixel 3 XL",
2189
+ "type": "mobile"
2190
+ }
2191
+ },
2192
+ {
2193
+ "desc": "Google Pixel 3 XL",
2194
+ "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36",
2195
+ "expect": {
2196
+ "vendor": "Google",
2197
+ "model": "Pixel 3 XL",
2198
+ "type": "mobile"
2199
+ }
2200
+ },
2201
+ {
2202
+ "desc": "Google Pixel 3a",
2203
+ "ua": "Mozilla/5.0 (Linux; Android 10; Pixel 3a) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
2204
+ "expect": {
2205
+ "vendor": "Google",
2206
+ "model": "Pixel 3a",
2207
+ "type": "mobile"
2208
+ }
2209
+ },
2210
+ {
2211
+ "desc": "Google Pixel 3a XL",
2212
+ "ua": "Mozilla/5.0 (Linux; Android 10; Pixel 3a XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
2213
+ "expect": {
2214
+ "vendor": "Google",
2215
+ "model": "Pixel 3a XL",
2216
+ "type": "mobile"
2217
+ }
2218
+ },
2219
+ {
2220
+ "desc": "Google Pixel 4",
2221
+ "ua": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
2222
+ "expect": {
2223
+ "vendor": "Google",
2224
+ "model": "Pixel 4",
2225
+ "type": "mobile"
2226
+ }
2227
+ },
2228
+ {
2229
+ "desc": "Google Pixel 4a",
2230
+ "ua": "Mozilla/5.0 (Linux; Android 10; Pixel 4a) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36",
2231
+ "expect": {
2232
+ "vendor": "Google",
2233
+ "model": "Pixel 4a",
2234
+ "type": "mobile"
2235
+ }
2236
+ },
2237
+ {
2238
+ "desc": "Google Pixel 4 XL",
2239
+ "ua": "Mozilla/5.0 (Linux; Android 10; Pixel 4 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
2240
+ "expect": {
2241
+ "vendor": "Google",
2242
+ "model": "Pixel 4 XL",
2243
+ "type": "mobile"
2244
+ }
2245
+ },
2246
+ {
2247
+ "desc": "Google Pixel 5",
2248
+ "ua": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.120 Mobile Safari/537.36",
2249
+ "expect": {
2250
+ "vendor": "Google",
2251
+ "model": "Pixel 5",
2252
+ "type": "mobile"
2253
+ }
2254
+ },
2255
+ {
2256
+ "desc": "Generic Android Device",
2257
+ "ua": "Mozilla/5.0 (Linux; U; Android 6.0.1; i980 Build/MRA58K)",
2258
+ "expect": {
2259
+ "vendor": "Generic",
2260
+ "model": "Android 6.0.1"
2261
+ }
2262
+ },
2263
+ {
2264
+ "desc": "Android Phone Unidentified Vendor (docomo F-04K)",
2265
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; F-04K Build/V15R060P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.137 Mobile Safari/537.36",
735
2266
  "expect": {
736
- "vendor": "Google",
737
- "model": "Pixel 3",
2267
+ "model": "F-04K",
738
2268
  "type": "mobile"
739
2269
  }
740
2270
  },
741
2271
  {
742
- "desc": "Google Pixel 3 XL",
743
- "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 XL Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
2272
+ "desc": "docomo SH-02M",
2273
+ "ua": "Mozilla/5.0 (Linux; Android 9; SH-02M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
744
2274
  "expect": {
745
- "vendor": "Google",
746
- "model": "Pixel 3 XL",
2275
+ "vendor": "Sharp",
2276
+ "model": "SH-02M",
747
2277
  "type": "mobile"
748
2278
  }
749
2279
  },
750
2280
  {
751
- "desc": "Google Pixel 3 XL",
752
- "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36",
2281
+ "desc": "Android Tablet Unidentified Vendor (docomo F-02K)",
2282
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; F-02K Build/V44R059G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Safari/537.36",
753
2283
  "expect": {
754
- "vendor": "Google",
755
- "model": "Pixel 3 XL",
756
- "type": "mobile"
2284
+ "model": "F-02K",
2285
+ "type": "tablet"
757
2286
  }
758
2287
  },
759
2288
  {
760
- "desc": "Generic Android Device",
761
- "ua": "Mozilla/5.0 (Linux; U; Android 6.0.1; i980 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
2289
+ "desc": "Android Tablet Unidentified Vendor (docomo d-02K)",
2290
+ "ua": "Mozilla/5.0 (Linux; Android 9; d-02K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Safari/537.36",
762
2291
  "expect": {
763
- "vendor": "Generic",
764
- "model": "Android 6.0.1"
2292
+ "model": "d-02K",
2293
+ "type": "tablet"
765
2294
  }
766
2295
  },
767
2296
  {
@@ -872,6 +2401,24 @@
872
2401
  "type": "tablet"
873
2402
  }
874
2403
  },
2404
+ {
2405
+ "desc": "ZTE-Z431",
2406
+ "ua": "ZTE-Z431/1.4.0 NetFront/4.2 QTV5.1 Profile/MIDP-2.1 Configuration/CLDC-1.1",
2407
+ "expect": {
2408
+ "vendor": "ZTE",
2409
+ "model": "Z431",
2410
+ "type": "mobile"
2411
+ }
2412
+ },
2413
+ {
2414
+ "desc": "ZTE",
2415
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; ZTE-Z740G Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
2416
+ "expect": {
2417
+ "vendor": "ZTE",
2418
+ "model": "Z740G",
2419
+ "type": "mobile"
2420
+ }
2421
+ },
875
2422
  {
876
2423
  "desc": "ZTE K Series Tablet",
877
2424
  "ua": "Mozilla/5.0 (Linux; Android 6.0.1; K88 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
@@ -881,6 +2428,42 @@
881
2428
  "type": "tablet"
882
2429
  }
883
2430
  },
2431
+ {
2432
+ "desc": "ZTE Nubia Red Magic 3",
2433
+ "ua": "Mozilla/5.0 (Linux; Android 9; NX629J Build/PKQ1.190321.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/45016 Mobile Safari/537.36 MMWEBID/4064 MicroMessenger/7.0.10.1580(0x27000A34) Process/tools NetType/WIFI Language/zh_CN ABI/arm64",
2434
+ "expect": {
2435
+ "vendor": "ZTE",
2436
+ "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",
2464
+ "type": "mobile"
2465
+ }
2466
+ },
884
2467
  {
885
2468
  "desc": "Swizz GEN610",
886
2469
  "ua": "Mozilla/5.0 (Linux; Android 4.4.2; GEN610 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36",
@@ -1016,6 +2599,15 @@
1016
2599
  "type": "tablet"
1017
2600
  }
1018
2601
  },
2602
+ {
2603
+ "desc": "Amazon Alexa Echo Show",
2604
+ "ua": "AlexaWebMediaPlayer/1.0.200641.0 (Linux;Android 5.1.1)",
2605
+ "expect": {
2606
+ "vendor": "Amazon",
2607
+ "model": "Alexa",
2608
+ "type": "tablet"
2609
+ }
2610
+ },
1019
2611
  {
1020
2612
  "desc": "Amazon Kindle Fire Tablet",
1021
2613
  "ua": "Mozilla/5.0 (Linux; U; Android 4.4.3; en-us; KFSAWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.66 like Chrome/39.0.2171.93 Safari/537.36",
@@ -1025,6 +2617,24 @@
1025
2617
  "type": "tablet"
1026
2618
  }
1027
2619
  },
2620
+ {
2621
+ "desc": "Amazon Kindle Fire Tablet",
2622
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.4.3; en-us; KFSAWI) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.66 like Chrome/39.0.2171.93 Safari/537.36",
2623
+ "expect": {
2624
+ "vendor": "Amazon",
2625
+ "model": "KFSAWI",
2626
+ "type": "tablet"
2627
+ }
2628
+ },
2629
+ {
2630
+ "desc": "Amazon Kindle Fire Tablet",
2631
+ "ua": "Mozilla/5.0 (Linux; Android 9; KFMAWI Build/PS7312; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Safari/537.36",
2632
+ "expect": {
2633
+ "vendor": "Amazon",
2634
+ "model": "KFMAWI",
2635
+ "type": "tablet"
2636
+ }
2637
+ },
1028
2638
  {
1029
2639
  "desc": "Amazon Fire TV",
1030
2640
  "ua": "Mozilla/5.0 (Linux; Android 4.2.2; AFTB Build/JDQ39) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.173 Mobile Safari/537.22",
@@ -1034,6 +2644,24 @@
1034
2644
  "type": "smarttv"
1035
2645
  }
1036
2646
  },
2647
+ {
2648
+ "desc": "Amazon Fire TV",
2649
+ "ua": "Mozilla/5.0 (Linux; Android 5.1.1; AFTT) AppleWebKit/537.36 (KHTML, like Gecko) Silk/86.3.20 like Chrome/86.0.4240.198 Safari/537.36",
2650
+ "expect": {
2651
+ "vendor": "Amazon",
2652
+ "model": "T",
2653
+ "type": "smarttv"
2654
+ }
2655
+ },
2656
+ {
2657
+ "desc": "Android TV",
2658
+ "ua": "Mozilla/5.0 (Linux; Android 10; 2020/2021 UHD Android TV Build/QTG3.201102.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) version/4.0 Chrome/83.0.4103.101 Mobile Safari/537.36",
2659
+ "expect": {
2660
+ "vendor": "undefined",
2661
+ "model": "undefined",
2662
+ "type": "smarttv"
2663
+ }
2664
+ },
1037
2665
  {
1038
2666
  "desc": "Gigaset Tablet",
1039
2667
  "ua": "Mozilla/5.0 (Linux; Android 4.2.2; Gigaset QV830 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
@@ -1044,57 +2672,253 @@
1044
2672
  }
1045
2673
  },
1046
2674
  {
1047
- "desc": "Redmi Note 3",
1048
- "ua": "Mozilla/5.0 (Linux; Android 6.0.1; Redmi Note 3 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.116 Mobile Safari/537.36",
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",
1049
2677
  "expect": {
1050
- "vendor": "Xiaomi",
1051
- "model": "Redmi Note 3",
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",
1052
2689
  "type": "mobile"
1053
2690
  }
1054
2691
  },
1055
2692
  {
1056
- "desc": "MI PAD 2",
1057
- "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;]",
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",
1058
2695
  "expect": {
1059
- "vendor": "Xiaomi",
1060
- "model": "MI PAD 2",
2696
+ "vendor": "Vodafone",
2697
+ "model": "Smart Tab 4G",
1061
2698
  "type": "tablet"
1062
2699
  }
1063
2700
  },
1064
2701
  {
1065
- "desc": "HUAWEI MediaPad M3 Lite 10",
1066
- "ua": "Mozilla/5.0 (Linux; Android 7.0; BAH-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Safari/537.36",
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",
1067
2704
  "expect": {
1068
- "vendor": "Huawei",
1069
- "model": "BAH-L09",
2705
+ "vendor": "Vodafone",
2706
+ "model": "Smart ultra 6",
1070
2707
  "type": "tablet"
1071
2708
  }
1072
2709
  },
1073
2710
  {
1074
- "desc": "Huawei P30 Pro",
1075
- "ua": "Mozilla/5.0 (Linux; Android 9; VOG-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36",
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]",
1076
2722
  "expect": {
1077
- "vendor": "Huawei",
1078
- "model": "VOG-L29",
1079
2723
  "type": "mobile"
1080
2724
  }
1081
2725
  },
1082
2726
  {
1083
- "desc": "Huawei P20 Lite",
1084
- "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",
2727
+ "desc": "Issue #454",
2728
+ "ua": "Mosamzilla/5.0 (Windows; U; Win98; en-US; rv:1.7.5) Gecko/20050603 Netscape/8.0.2",
1085
2729
  "expect": {
1086
- "vendor": "Huawei",
1087
- "model": "ANE-LX1",
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",
1088
2741
  "type": "mobile"
1089
2742
  }
1090
2743
  },
1091
2744
  {
1092
- "desc": "Huawei P20",
1093
- "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",
1094
- "expect": {
1095
- "vendor": "Huawei",
1096
- "model": "EML-L29",
1097
- "type": "mobile"
1098
- }
1099
- }
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
+ }
2923
+ }
1100
2924
  ]