device_detector 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -4
  3. data/CHANGELOG.md +4 -4
  4. data/README.md +6 -8
  5. data/lib/device_detector.rb +2 -2
  6. data/lib/device_detector/version.rb +1 -1
  7. data/regexes/bots.yml +461 -10
  8. data/regexes/client/browser_engine.yml +4 -1
  9. data/regexes/client/browsers.yml +167 -17
  10. data/regexes/client/feed_readers.yml +30 -0
  11. data/regexes/client/libraries.yml +38 -0
  12. data/regexes/client/mediaplayers.yml +4 -0
  13. data/regexes/client/mobile_apps.yml +82 -1
  14. data/regexes/client/pim.yml +4 -0
  15. data/regexes/device/mobiles.yml +1761 -138
  16. data/regexes/device/portable_media_player.yml +2 -4
  17. data/regexes/device/televisions.yml +16 -2
  18. data/regexes/oss.yml +25 -4
  19. data/spec/device_detector/detector_fixtures_spec.rb +51 -11
  20. data/spec/device_detector_spec.rb +20 -0
  21. data/spec/fixtures/client/browser.yml +446 -11
  22. data/spec/fixtures/client/feed_reader.yml +25 -1
  23. data/spec/fixtures/client/library.yml +55 -1
  24. data/spec/fixtures/client/mediaplayer.yml +6 -0
  25. data/spec/fixtures/client/mobile_app.yml +81 -1
  26. data/spec/fixtures/client/pim.yml +7 -1
  27. data/spec/fixtures/detector/bots.yml +668 -108
  28. data/spec/fixtures/detector/camera.yml +14 -8
  29. data/spec/fixtures/detector/car_browser.yml +4 -3
  30. data/spec/fixtures/detector/console.yml +38 -24
  31. data/spec/fixtures/detector/desktop.yml +981 -687
  32. data/spec/fixtures/detector/feature_phone.yml +82 -41
  33. data/spec/fixtures/detector/feed_reader.yml +37 -0
  34. data/spec/fixtures/detector/mobile_apps.yml +257 -0
  35. data/spec/fixtures/detector/phablet.yml +569 -163
  36. data/spec/fixtures/detector/portable_media_player.yml +24 -16
  37. data/spec/fixtures/detector/smart_display.yml +8 -5
  38. data/spec/fixtures/detector/smartphone-1.yml +4698 -4235
  39. data/spec/fixtures/detector/smartphone-2.yml +4804 -4256
  40. data/spec/fixtures/detector/smartphone-3.yml +5060 -4603
  41. data/spec/fixtures/detector/smartphone-4.yml +6803 -2637
  42. data/spec/fixtures/detector/smartphone-5.yml +7044 -0
  43. data/spec/fixtures/detector/smartphone.yml +4380 -3904
  44. data/spec/fixtures/detector/tablet-1.yml +4530 -4036
  45. data/spec/fixtures/detector/tablet-2.yml +4875 -25
  46. data/spec/fixtures/detector/tablet.yml +3266 -2764
  47. data/spec/fixtures/detector/tv.yml +563 -206
  48. data/spec/fixtures/detector/unknown.yml +1033 -863
  49. data/spec/fixtures/parser/oss.yml +114 -2
  50. data/spec/fixtures/parser/vendorfragments.yml +2 -2
  51. metadata +5 -3
@@ -39,4 +39,8 @@
39
39
 
40
40
  - regex: 'The Bat!(?: Voyager)?(?:[/ ](\d+[\.\d]+))?'
41
41
  name: 'The Bat!'
42
+ version: '$1'
43
+
44
+ - regex: 'DAVdroid(?:/(\d+[\.\d]+))?'
45
+ name: 'DAVdroid'
42
46
  version: '$1'
@@ -81,9 +81,15 @@ HTC:
81
81
 
82
82
  - regex: 'NexusHD2' # custom rom for hd2
83
83
  model: 'HD2'
84
- - regex: 'HTC[ _\-]((?:Flyer|P715a).*) Build'
84
+ - regex: 'HTC[ _\-]P715a'
85
85
  device: 'tablet'
86
- model: '$1'
86
+ model: 'P715a'
87
+ - regex: 'HTC[ _\-]Flyer Build'
88
+ device: 'tablet'
89
+ model: 'Flyer'
90
+ - regex: 'HTC[ _\-]Flyer[ _\-]([\w]{1,5})'
91
+ device: 'tablet'
92
+ model: 'Flyer $1'
87
93
  - regex: 'HTC[ _\-]One[ _\-]max[);/ ]'
88
94
  device: 'phablet'
89
95
  model: 'One max'
@@ -115,14 +121,44 @@ HTC:
115
121
  - regex: '(One M8)'
116
122
  model: '$1'
117
123
 
124
+ # microsoft
125
+ Microsoft:
126
+ regex: 'KIN\.(One|Two)|RM-(?:1031|106[57]|109[02]|1099|1109|1114|1127|1141|1154)|Microsoft; Lumia'
127
+ device: 'smartphone'
128
+ models:
129
+ - regex: 'KIN\.(One|Two)'
130
+ device: 'feature phone'
131
+ model: 'Kin $1'
132
+
133
+ - regex: 'RM-1031'
134
+ model: 'Lumia 532'
135
+ - regex: 'RM-106[57]'
136
+ model: 'Lumia 640 XL'
137
+ - regex: 'RM-109[02]'
138
+ model: 'Lumia 535'
139
+ - regex: 'RM-1099'
140
+ model: 'Lumia 430'
141
+ - regex: 'RM-1109'
142
+ model: 'Lumia 640'
143
+ - regex: 'RM-1114'
144
+ model: 'Lumia 435'
145
+ - regex: 'RM-1127'
146
+ model: 'Lumia 550'
147
+ - regex: 'RM-1141'
148
+ model: 'Lumia 540'
149
+ - regex: 'RM-1154'
150
+ model: 'Lumia 650'
151
+
152
+ - regex: 'Microsoft; Lumia ([^;/)]+)[;/)]'
153
+ model: 'Lumia $1'
154
+
118
155
  # NOKIA
119
156
  Nokia:
120
- regex: 'Nokia|Lumia|Maemo RX|portalmmm/2\.0 N7|portalmmm/2\.0 NK|nok[0-9]+|Symbian.*\s([a-z0-9]+)$|RX-51 N900'
157
+ regex: 'Nokia|Lumia|Maemo RX|portalmmm/2\.0 N7|portalmmm/2\.0 NK|nok[0-9]+|Symbian.*\s([a-z0-9]+)$|RX-51 N900|TA-[0-9]{4} Build'
121
158
  device: 'smartphone'
122
159
  models:
123
160
  - regex: 'RX-51 N900'
124
161
  model: 'N900'
125
- device: 'tablet'
126
162
  - regex: 'Nokia(N[0-9]+)'
127
163
  model: '$1'
128
164
  - regex: 'Nokia-([a-z0-9]+)'
@@ -152,6 +188,18 @@ Nokia:
152
188
  device: 'feature phone'
153
189
  model: '$1'
154
190
 
191
+ # Nokia branded phones by HMD Global
192
+ - regex: 'TA-10(07|23|29|35)'
193
+ model: '2'
194
+ - regex: 'TA-10(20|28|32|38)'
195
+ model: '3'
196
+ - regex: 'TA-10(24|27|44|53)'
197
+ model: '5'
198
+ - regex: 'TA-10(00|03|21|25|33|39)'
199
+ model: '6'
200
+ - regex: 'TA-10(04|12)'
201
+ model: '8'
202
+
155
203
  # CnM
156
204
  CnM:
157
205
  regex: 'CnM'
@@ -162,9 +210,13 @@ CnM:
162
210
 
163
211
  # RIM/BlackBerry
164
212
  RIM:
165
- regex: 'BB10;|BlackBerry|rim[0-9]+|PlayBook'
213
+ regex: 'BB10;|BlackBerry|rim[0-9]+|PlayBook|STV100-4|STH100-2'
166
214
  device: 'smartphone'
167
215
  models:
216
+ - regex: 'STV100-4'
217
+ model: 'BlackBerry Priv'
218
+ - regex: 'STH100-2'
219
+ model: 'BlackBerry DTEK50'
168
220
  - regex: 'BB10; ([a-z0-9\- ]+)\)'
169
221
  model: 'BlackBerry $1'
170
222
  - regex: 'PlayBook.+RIM Tablet OS'
@@ -195,9 +247,12 @@ Palm:
195
247
 
196
248
  # HP
197
249
  HP:
198
- regex: 'TouchPad/\d+\.\d+|hp-tablet|HP ?iPAQ|webOS.*P160U|HP Slate|HP [78]|Compaq [7|8]'
250
+ regex: 'TouchPad/\d+\.\d+|hp-tablet|HP ?iPAQ|webOS.*P160U|HP Slate|HP [78]|Compaq [7|8]|HP; [^;/)]+'
199
251
  device: 'smartphone'
200
252
  models:
253
+ - regex: 'HP Slate 6 Voice Tab'
254
+ model: 'Slate 6 VoiceTab'
255
+ device: 'phablet'
201
256
  - regex: 'HP ([78][^/;]*) Build'
202
257
  model: 'Slate $1'
203
258
  device: 'tablet'
@@ -213,6 +268,8 @@ HP:
213
268
  - regex: 'TouchPad/(\d+\.\d+)|hp-tablet'
214
269
  model: 'TouchPad'
215
270
  device: 'tablet'
271
+ - regex: 'HP; ([^;/)]+)'
272
+ model: '$1'
216
273
  - regex: 'HP(?: )?iPAQ(?: )?([a-z0-9]+)'
217
274
  model: 'iPAQ $1'
218
275
  - regex: 'webOS.*(P160U)'
@@ -259,6 +316,30 @@ Apple:
259
316
  - regex: '(?:Apple-)?iPh(?:one)?7[C,]2'
260
317
  model: 'iPhone 6'
261
318
  device: 'smartphone'
319
+ - regex: '(?:Apple-)?iPh(?:one)?8[C,]1'
320
+ model: 'iPhone 6s'
321
+ device: 'smartphone'
322
+ - regex: '(?:Apple-)?iPh(?:one)?8[C,]2'
323
+ model: 'iPhone 6s Plus'
324
+ device: 'phablet'
325
+ - regex: '(?:Apple-)?iPh(?:one)?8[C,]4'
326
+ model: 'iPhone SE'
327
+ device: 'smartphone'
328
+ - regex: '(?:Apple-)?iPh(?:one)?9[C,][13]'
329
+ model: 'iPhone 7'
330
+ device: 'smartphone'
331
+ - regex: '(?:Apple-)?iPh(?:one)?9[C,][24]'
332
+ model: 'iPhone 7 Plus'
333
+ device: 'phablet'
334
+ - regex: '(?:Apple-)?iPh(?:one)?10[C,][14]'
335
+ model: 'iPhone 8'
336
+ device: 'smartphone'
337
+ - regex: '(?:Apple-)?iPh(?:one)?10[C,][25]'
338
+ model: 'iPhone 8 Plus'
339
+ device: 'phablet'
340
+ - regex: '(?:Apple-)?iPh(?:one)?10[C,][36]'
341
+ model: 'iPhone X'
342
+ device: 'phablet'
262
343
 
263
344
  # specific tablet devices
264
345
  - regex: '(?:Apple-)?iPad1[C,]1'
@@ -285,9 +366,24 @@ Apple:
285
366
  - regex: '(?:Apple-)?iPad4[C,][789]'
286
367
  model: 'iPad Mini 3'
287
368
  device: 'tablet'
369
+ - regex: '(?:Apple-)?iPad5[C,][12]'
370
+ model: 'iPad Mini 4'
371
+ device: 'tablet'
288
372
  - regex: '(?:Apple-)?iPad5[C,][34]'
289
373
  model: 'iPad Air 2'
290
374
  device: 'tablet'
375
+ - regex: '(?:Apple-)?iPad6[C,][34]'
376
+ model: 'iPad Pro 9.7'
377
+ device: 'tablet'
378
+ - regex: '(?:Apple-)?iPad6[C,][78]'
379
+ model: 'iPad Pro 12.9'
380
+ device: 'tablet'
381
+ - regex: '(?:Apple-)?iPad7[C,][12]'
382
+ model: 'iPad Pro 2 12.9'
383
+ device: 'tablet'
384
+ - regex: '(?:Apple-)?iPad7[C,][34]'
385
+ model: 'iPad Pro 10.5'
386
+ device: 'tablet'
291
387
 
292
388
  - regex: '(?:iTunes-)?AppleTV'
293
389
  model: 'Apple TV'
@@ -301,7 +397,7 @@ Apple:
301
397
 
302
398
  # micromax
303
399
  MicroMax:
304
- regex: 'MicroMax[ \-\_]?[a-z0-9]+'
400
+ regex: '(MicroMax[ \-\_]?[a-z0-9]+|Q327)'
305
401
  device: 'smartphone'
306
402
  models:
307
403
  - regex: 'MicroMax(?:[ \-\_])?(P[a-z0-9]+)'
@@ -309,6 +405,8 @@ MicroMax:
309
405
  device: 'tablet'
310
406
  - regex: 'MicroMax(?:[ \-\_])?([a-z0-9]+)'
311
407
  model: '$1'
408
+ - regex: 'Q327'
409
+ model: 'Bolt'
312
410
 
313
411
  # 3Q
314
412
  3Q:
@@ -316,9 +414,38 @@ MicroMax:
316
414
  device: 'tablet'
317
415
  model: '$1'
318
416
 
417
+ # 4Good
418
+ 4Good:
419
+ regex: '4Good[ _]|(?:4Good)?(S450m [43]G|S555m 4G|S501m 3G|T700i_3G|Light A103)'
420
+ device: 'smartphone'
421
+ models:
422
+ - regex: 'T700i_3G'
423
+ model: 'T700i 3G'
424
+ device: 'tablet'
425
+ - regex: '(S(?:450m|555m|501m)[_ ][43]G|Light A103)'
426
+ model: '$1'
427
+ - regex: '4Good[ _]([^;/]+) Build'
428
+ model: '$1'
429
+ - regex: '4Good[ _]([^);/ ]+)'
430
+ model: '$1'
431
+
432
+ # Bravis
433
+ Bravis:
434
+ regex: 'Bravis|A501 Bright|NB(?:10[56]|751|7[145])|NP101'
435
+ device: 'smartphone'
436
+ models:
437
+ - regex: 'A501 Bright'
438
+ model: 'A501 Bright'
439
+ - regex: 'Bravis[_ ]([^;\)]+) Build'
440
+ model: '$1'
441
+ - regex: '(NB(?:10[156]|751|7[145])|NP101)'
442
+ model: '$1'
443
+ device: 'tablet'
444
+
445
+
319
446
  # Acer
320
447
  Acer:
321
- regex: 'acer|a(?:101|110|200|210|211|500|501|510|511|700|701)[);/ ]|Android.*V3[67]0[);/ ]|Android.*Z1[23456]0 Build|Android.*Z500 Build|A1-830|A1-81[01]|A3-A[12][01]|B1-7[1235][01]|B1-810|B1-A71|E39 Build|S5[12]0 Build|DA[0-9]+HQ?L[);/ ]'
448
+ regex: 'acer|(?<!ZTE BLADE )a(?:101|110|200|210|211|500|501|510|511|700|701)[);/ ]|Android.*V3[67]0[);/ ]|Android.*Z1[23456]0 Build|Android.*Z5\d{2} Build|Android.*T0[234678] Build|A1-830|A1-81[01]|A3-A[1234][01]|B1-7[1235678][01]|B1-7[23]3|B1-8[1235]0|B1-A71|B3-A[12]0|B3-A3[02]|E39 Build|S5[12]0 Build|DA[0-9]+HQ?L[);/ ]'
322
449
  device: 'smartphone'
323
450
  models:
324
451
  # smart displays
@@ -342,9 +469,24 @@ Acer:
342
469
  - regex: 'A3-A[12][01]'
343
470
  model: 'Iconia A3'
344
471
  device: 'tablet'
345
- - regex: 'B1-7[1235][01]|B1-810|B1-A71'
472
+ - regex: 'A3-A[34]0'
473
+ model: 'Iconia Tab 10'
474
+ device: 'tablet'
475
+ - regex: 'B1-7[1235][01]|B1-A71'
346
476
  model: 'Iconia B1'
347
477
  device: 'tablet'
478
+ - regex: 'B1-7[23]3'
479
+ model: 'Iconia Talk 7'
480
+ device: 'tablet'
481
+ - regex: 'B1-7[678]0'
482
+ model: 'Iconia One 7'
483
+ device: 'tablet'
484
+ - regex: 'B1-8[1235]0'
485
+ model: 'Iconia One 8'
486
+ device: 'tablet'
487
+ - regex: 'B3-A[12]0|B3-A3[02]'
488
+ model: 'Iconia One 10'
489
+ device: 'tablet'
348
490
 
349
491
  # explicit smartphone models
350
492
  - regex: 'E39 Build'
@@ -361,8 +503,20 @@ Acer:
361
503
  model: 'Liquid Z$1'
362
504
  - regex: 'Android.*Z160 Build'
363
505
  model: 'Liquid Z4'
364
- - regex: 'Android.*Z500 Build'
365
- model: 'Liquid Z500'
506
+ - regex: 'Android.*Z(5\d{2}) Build'
507
+ model: 'Liquid Z$1'
508
+ - regex: 'Android.*T02 Build'
509
+ model: 'Liquid Z530'
510
+ - regex: 'Android.*T03 Build'
511
+ model: 'Liquid Z630'
512
+ - regex: 'Android.*T04 Build'
513
+ model: 'Liquid Z630S'
514
+ - regex: 'Android.*T06 Build'
515
+ model: 'Liquid Zest'
516
+ - regex: 'Android.*T07 Build'
517
+ model: 'Liquid Zest 4G'
518
+ - regex: 'Android.*T08 Build'
519
+ model: 'Liquid Zest Plus'
366
520
  - regex: 'Acer; ?([^;\)]+)'
367
521
  model: '$1'
368
522
  - regex: 'Acer[ _\-]?([^;\)]+) Build'
@@ -381,9 +535,42 @@ Airness:
381
535
 
382
536
  # Alcatel
383
537
  Alcatel:
384
- regex: 'Alcatel|Alc[a-z0-9]+|One[ _]?Touch'
385
- device: 'smartphone'
386
- models:
538
+ regex: 'Alcatel|Alc[a-z0-9]+|One[ _]?Touch|(?:6036Y|6039H|50[16]5X|9005X|I213|5015D|5045D|5051X|6050[AFY]|6055K|8050D|4013M|I216X)[);/ ]'
539
+ device: 'smartphone'
540
+ models:
541
+ - regex: '50[16]5X[);/ ]'
542
+ model: 'One Touch Pop 3'
543
+ - regex: '5015D[);/ ]'
544
+ model: 'One Touch Pop 3 Dual SIM'
545
+ - regex: '5051X[);/ ]'
546
+ model: 'One Touch Pop 4'
547
+ - regex: '6036Y[);/ ]'
548
+ model: 'One Touch Idol 2 mini'
549
+ - regex: '6050[AFY][);/ ]'
550
+ model: 'One Touch Idol 2S'
551
+ - regex: '6039H[);/ ]'
552
+ model: 'One Touch Idol 3'
553
+ - regex: '6055K[);/ ]'
554
+ model: 'One Touch Idol 4'
555
+ - regex: 'I213[);/ ]'
556
+ model: 'One Touch Pixi 7'
557
+ device: 'tablet'
558
+ - regex: '8050D[);/ ]'
559
+ model: 'One Touch Pixi 4'
560
+ - regex: '5045D[);/ ]'
561
+ model: 'One Touch Pixi 4 5"'
562
+ - regex: 'I216X[);/ ]'
563
+ model: 'One Touch Pixi 7'
564
+ device: 'tablet'
565
+ - regex: '9005X[);/ ]'
566
+ model: 'One Touch Pixi 8'
567
+ device: 'tablet'
568
+ - regex: 'P320X'
569
+ model: 'One Touch POP 8'
570
+ device: 'tablet'
571
+ - regex: 'P310X'
572
+ model: 'One Touch POP 7'
573
+ device: 'tablet'
387
574
  - regex: '(?:Alcatel[ _])?One[ _]?Touch[ _]((?:T[0-9]+|TAB[^/;]+|EVO[78](?:HD)?)) Build'
388
575
  device: 'tablet'
389
576
  model: 'One Touch $1'
@@ -401,12 +588,36 @@ Alcatel:
401
588
  model: '$1'
402
589
  - regex: 'Alc([a-z0-9]+)'
403
590
  model: '$1'
591
+ - regex: '4013M'
592
+ model: 'One Touch Pixi 3'
404
593
 
405
594
  # Allview
406
595
  Allview:
407
- regex: 'Allview'
408
- device: 'smartphone'
409
- models:
596
+ regex: 'Allview|P[567]_Lite(?:_TM)?|P5_Energy|P6_Energy_(?:Lite|Mini)|X2_Soul_Xtreme|A5_(?:Easy|Ready|Quad_Plus_TM)|A6_Duo|A[89]_Lite'
597
+ device: 'smartphone'
598
+ models:
599
+ - regex: 'P([567])_Lite(?:_TM)?'
600
+ model: 'P$1 Lite'
601
+ - regex: 'P5_Energy'
602
+ model: 'P5 Energy'
603
+ - regex: 'P6_Energy_Lite'
604
+ model: 'P6 Energy Lite'
605
+ - regex: 'P6_Energy_mini'
606
+ model: 'P6 Energy Mini'
607
+ - regex: 'X2_Soul_Xtreme'
608
+ model: 'X2 Soul Xtreme'
609
+ - regex: 'A5_Easy'
610
+ model: 'A5 Easy'
611
+ - regex: 'A5_Ready'
612
+ model: 'A5 Ready'
613
+ - regex: 'A5_Quad_Plus_TM'
614
+ model: 'A5 Quad Plus'
615
+ - regex: 'A6_Duo'
616
+ model: 'A6 Duo'
617
+ - regex: 'A8_Lite'
618
+ model: 'A8 Lite'
619
+ - regex: 'A9_Lite'
620
+ model: 'A9 Lite'
410
621
  - regex: 'Allview[ _-]([^;/]+) Build'
411
622
  model: '$1'
412
623
  - regex: 'Allview[ _-]([^;/]+)[;/)]'
@@ -557,7 +768,7 @@ Garmin-Asus:
557
768
 
558
769
  # Asus
559
770
  Asus:
560
- regex: 'Asus|Transformer|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|Z00D)[);/ ]'
771
+ regex: 'Asus|Transformer|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|Z00D|Z00YD)[);/ ]'
561
772
  device: 'smartphone'
562
773
  models:
563
774
  # explicit tablet models
@@ -576,7 +787,7 @@ Asus:
576
787
  - regex: 'ME301T[);/ ]'
577
788
  model: 'MeMO Pad Smart 10'
578
789
  device: 'tablet'
579
- - regex: 'K01[3A][);/ ]'
790
+ - regex: '(?:K01[3A]|K007|K00R)[);/ ]'
580
791
  model: 'MeMO Pad 7'
581
792
  device: 'tablet'
582
793
  - regex: 'K01E[);/ ]'
@@ -633,13 +844,16 @@ Asus:
633
844
  model: 'Fonepad 8'
634
845
  device: 'phablet'
635
846
 
636
-
637
847
  # explicit smartphone models
638
848
  - regex: '(?:ASUS_)?Z007'
639
849
  model: 'ZenFone C'
640
850
  - regex: '(?:ASUS_)?(?:Z00D|Z008D|Z00AD[AB]?)'
641
851
  model: 'ZenFone 2'
642
- - regex: '(?:ASUS_)?T00[IQ]'
852
+ - regex: '(?:ASUS_)(Z00YD)'
853
+ model: '$1'
854
+ - regex: '(?:ASUS_)?Z00[ERL]D'
855
+ model: 'ZenFone 2 Laser'
856
+ - regex: '(?:ASUS_)?T00[IQ1]'
643
857
  model: 'ZenFone 4'
644
858
  - regex: '(?:ASUS_)?T00[JF]'
645
859
  model: 'ZenFone 5'
@@ -649,6 +863,20 @@ Asus:
649
863
  model: 'ZenFone 5 Lite'
650
864
  - regex: '(?:ASUS_)?(?:T00G|Z002)'
651
865
  model: 'ZenFone 6'
866
+ - regex: '(?:ASUS_)?Z010D'
867
+ model: 'ZenFone Max'
868
+ - regex: '(?:ASUS_)?X014D'
869
+ model: 'ZenFone Go Plus'
870
+ - regex: '(?:ASUS_)?(Z00[SV]D|X009[DB][DA])'
871
+ model: 'ZenFone Go'
872
+ - regex: '(?:ASUS_)?X013D'
873
+ model: 'ZenFone Go Life'
874
+ - regex: '(?:ASUS_)?(X008)'
875
+ model: 'ZenFone 3 Pegasus'
876
+ - regex: '(?:ASUS_)?Z00UD'
877
+ model: 'ZenFone Selfie'
878
+ - regex: '(?:ASUS_)?(Z017DA|ZE520KL)'
879
+ model: 'ZenFone 3'
652
880
 
653
881
  # general detections
654
882
  - regex: 'Asus(?:-|;)?([a-z0-9]+)'
@@ -686,6 +914,16 @@ Avvio:
686
914
  - regex: 'Avvio[ _]([a-z0-9\-]+)'
687
915
  model: '$1'
688
916
 
917
+ # Azumi Mobile
918
+ "Azumi Mobile":
919
+ regex: 'Azumi[_ ]'
920
+ device: 'smartphone'
921
+ models:
922
+ - regex: 'Azumi[_ ]([^/;]+) Build'
923
+ model: '$1'
924
+ - regex: 'Azumi[_ ]([a-z0-9_]+)'
925
+ model: '$1'
926
+
689
927
  #Barnes & Noble
690
928
  'Barnes & Noble':
691
929
  regex: 'Nook|BN[TR]V[0-9]+'
@@ -698,11 +936,39 @@ Avvio:
698
936
  - regex: '(BN[TR]V[0-9]+)'
699
937
  model: 'Nook $1'
700
938
 
939
+ # BGH
940
+ BGH:
941
+ regex: '(?<!Positivo )BGH ([^/;]+) Build'
942
+ device: 'smartphone'
943
+ model: '$1'
944
+
945
+ # Bitel
946
+ Bitel:
947
+ regex: 'Bitel[ _-]([^/;]+) Build'
948
+ device: 'smartphone'
949
+ model: '$1'
950
+
701
951
  # Blu
702
952
  Blu:
703
- regex: 'blu ([^/;]+) Build'
953
+ regex: '(?:blu|Dash)[ _]([^/;]+) Build'
704
954
  device: 'smartphone'
705
- model: '$1'
955
+ models:
956
+ - regex: 'DASH[ _]([^/;]+) Build'
957
+ model: 'Dash $1'
958
+ - regex: 'blu[ _]([^/;]+) Build'
959
+ model: '$1'
960
+
961
+ # Blackview
962
+ Blackview:
963
+ regex: '(BV[2567]000(?:[ _](?:PRO))?|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550)[ _]Build'
964
+ device: 'smartphone'
965
+ models:
966
+ - regex: '(BV[2567]000(?:[ _](?:PRO))?)[ _]Build'
967
+ model: '$1'
968
+ - regex: 'omega[ _]pro'
969
+ model: 'Omega Pro'
970
+ - regex: '(Alife[ _][PS]1|DM550|Heatwave)'
971
+ model: '$1'
706
972
 
707
973
  # Boway
708
974
  Boway:
@@ -785,11 +1051,35 @@ BenQ:
785
1051
  device: 'feature phone'
786
1052
  model: '$1'
787
1053
 
1054
+ # Blaupunkt
1055
+ Blaupunkt:
1056
+ regex: 'Atlantis[_ ](?:1001A|1010A|A10\.G402)|Discovery[_ ](?:111C|1000C|1001A?)|Endeavour[_ ](?:785|101[GLM]|1000|1001|101[03]|1100)|Polaris[_ ]803'
1057
+ device: 'tablet'
1058
+ models:
1059
+ - regex: 'Discovery[_ ]111C'
1060
+ model: 'Discovery 111C'
1061
+ - regex: 'Discovery[_ ]1000C'
1062
+ model: 'Discovery 1000C'
1063
+ - regex: 'Discovery[_ ]1001A'
1064
+ model: 'Discovery 1001A'
1065
+ - regex: 'Discovery[_ ]1001'
1066
+ model: 'Discovery 1001'
1067
+ - regex: 'Endeavour[_ ](101[GLM]|785|100[01]|101[03]|1100)'
1068
+ model: 'Endeavour $1'
1069
+ - regex: 'Polaris[_ ](803)'
1070
+ model: 'Polaris $1'
1071
+ - regex: 'Atlantis[_ ](1001A|1010A|A10\.G402)'
1072
+ model: 'Atlantis $1'
1073
+
788
1074
  # Bmobile
789
1075
  Bmobile:
790
- regex: 'Bmobile_([a-z0-9]+)'
1076
+ regex: 'Bmobile[_ ]'
791
1077
  device: 'smartphone'
792
- model: '$1'
1078
+ models:
1079
+ - regex: 'Bmobile[_ ]([^/;]+) Build'
1080
+ model: '$1'
1081
+ - regex: 'Bmobile[_ ]([a-z0-9]+)'
1082
+ model: '$1'
793
1083
 
794
1084
  # bq
795
1085
  bq:
@@ -843,9 +1133,12 @@ Casio:
843
1133
 
844
1134
  # Cat
845
1135
  Cat:
846
- regex: 'Cat ?(tablet|stargate|nova)'
1136
+ regex: 'Cat ?(tablet|stargate|nova)|B15Q'
847
1137
  device: 'tablet'
848
1138
  models:
1139
+ - regex: 'B15Q'
1140
+ model: 'B15Q'
1141
+ device: 'smartphone'
849
1142
  - regex: 'Cat ?(?:tablet)? ?((?:Galactica|Nova|StarGate|PHOENIX)[^/;]*) Build'
850
1143
  model: '$1'
851
1144
  - regex: 'Cat ?tablet'
@@ -900,6 +1193,12 @@ Changhong:
900
1193
  model: '$1'
901
1194
  device: 'tablet'
902
1195
 
1196
+ # China Mobile
1197
+ 'China Mobile':
1198
+ regex: '(M812C|1501_M02|9930i|A1303|A309W) Build'
1199
+ device: 'smartphone'
1200
+ model: '$1'
1201
+
903
1202
  # Compal
904
1203
  Compal:
905
1204
  regex: 'Compal-[a-z0-9]+'
@@ -920,15 +1219,88 @@ ConCorde:
920
1219
  - regex: 'ConCorde ([^/;]+) Build'
921
1220
  model: '$1'
922
1221
 
1222
+ # Condor
1223
+ Condor:
1224
+ regex: '(?:PGN\-?[456][012][0-9]|PHS\-601)[;/) ]|CTAB[^/;]+ Build'
1225
+ device: 'smartphone'
1226
+ models:
1227
+ - regex: 'CTAB([^/;]+) Build'
1228
+ device: 'tablet'
1229
+ model: 'CTAB $1'
1230
+
1231
+ - regex: 'PHS\-601'
1232
+ model: 'C8'
1233
+ - regex: 'PGN\-?403'
1234
+ model: 'C4+ Noir'
1235
+ - regex: 'PGN\-?404'
1236
+ model: 'C7 Mini'
1237
+ - regex: 'PGN\-?409'
1238
+ model: 'Plume P4'
1239
+ - regex: 'PGN\-?504'
1240
+ model: 'C5'
1241
+ - regex: 'PGN\-?505'
1242
+ model: 'C8S'
1243
+ - regex: 'PGN\-?506'
1244
+ model: 'C7'
1245
+ - regex: 'PGN\-?507'
1246
+ model: 'Allure A9'
1247
+ - regex: 'PGN\-?508'
1248
+ model: 'C6+'
1249
+ - regex: 'PGN\-?509'
1250
+ model: 'C6 Pro'
1251
+ - regex: 'PGN\-?511'
1252
+ model: 'Allure A9 Plus'
1253
+ - regex: 'PGN\-?513'
1254
+ model: 'Griffe G4'
1255
+ - regex: 'PGN\-?514'
1256
+ model: 'Plume P7'
1257
+ - regex: 'PGN\-?515'
1258
+ model: 'Plume P4 Pro'
1259
+ - regex: 'PGN\-?516'
1260
+ model: 'Plume P5'
1261
+ - regex: 'PGN\-?51[78]'
1262
+ model: 'Plume P6'
1263
+ - regex: 'PGN\-?521'
1264
+ model: 'Griffe G4 Plus'
1265
+ - regex: 'PGN\-?522'
1266
+ model: 'P6 Plus'
1267
+ - regex: 'PGN\-?523'
1268
+ model: 'P7 Plus'
1269
+ - regex: 'PGN\-?527'
1270
+ model: 'Plume P4 Plus'
1271
+ - regex: 'PGN\-?528'
1272
+ model: 'Plume P6 Pro Lte'
1273
+ - regex: 'PGN\-?605'
1274
+ model: 'Plume P8'
1275
+ - regex: 'PGN\-?606'
1276
+ model: 'Allure A55'
1277
+ - regex: 'PGN\-?607'
1278
+ model: 'Allure A100'
1279
+ - regex: 'PGN\-?608'
1280
+ model: 'Allure A55 Slim'
1281
+ - regex: 'PGN\-?609'
1282
+ model: 'Allure A100 Lite'
1283
+ - regex: 'PGN\-?610'
1284
+ model: 'Plume P8 Lite'
1285
+ - regex: 'PGN\-?611'
1286
+ model: 'Allure A8'
1287
+ - regex: 'PGN\-?612'
1288
+ model: 'Allure A8 Plus'
1289
+ - regex: 'PGN\-?613'
1290
+ model: 'Allure A55 Plus'
1291
+
1292
+ - regex: 'PGN\-?([0-9]{3})'
1293
+ model: 'PGN-$1'
1294
+
923
1295
  # Coolpad
924
1296
  Coolpad:
925
- regex: '(?:YL-)?Coolpad|8190Q[ ;/\)]|8295 Build'
1297
+ regex: '(?:YL-)?Coolpad|8190Q[ ;/\)]|(8295|5860S) Build'
926
1298
  device: 'smartphone'
927
1299
  models:
928
1300
  - regex: '8190Q[ ;/\)]'
929
1301
  model: '8190Q'
930
- - regex: '8295 Build'
931
- model: '8295'
1302
+ - regex: '(5860S|8295) Build'
1303
+ model: '$1'
932
1304
  - regex: '(?:YL-)?Coolpad[ _\-]?([^/;]+) Build'
933
1305
  model: '$1'
934
1306
  - regex: '(?:YL-)?Coolpad[ _\-]?([a-z0-9\-]+)'
@@ -948,15 +1320,21 @@ Cricket:
948
1320
 
949
1321
  # Crosscall
950
1322
  Crosscall:
951
- regex: 'Crosscall'
1323
+ regex: 'Crosscall|ODYSSEY_Plus|Odyssey S1|Trekker-[MSX][123]'
952
1324
  device: 'smartphone'
953
1325
  models:
954
1326
  - regex: 'Crosscall ([^;/]+) Build'
955
1327
  model: '$1'
1328
+ - regex: 'ODYSSEY_Plus'
1329
+ model: 'ODYSSEY+'
1330
+ - regex: 'Odyssey S1'
1331
+ model: 'ODYSSEY S1'
1332
+ - regex: 'Trekker-([MSX][123](?: Core)?)'
1333
+ model: 'Trekker-$1'
956
1334
 
957
1335
  # Cube
958
1336
  Cube:
959
- regex: 'Cube|(U[0-9]+GT|K8GT)'
1337
+ regex: '(<!myPhone ?)Cube|(U[0-9]+GT|K8GT)'
960
1338
  device: 'tablet'
961
1339
  models:
962
1340
  - regex: 'U27GT'
@@ -983,6 +1361,16 @@ CUBOT:
983
1361
  - regex: '([^;/]+) Build/CUBOT'
984
1362
  model: '$1'
985
1363
 
1364
+ # Cyrus
1365
+ Cyrus:
1366
+ regex: 'Cyrus[ _-]'
1367
+ device: 'smartphone'
1368
+ models:
1369
+ - regex: 'Cyrus[ _-]?([^;/)]+) Build'
1370
+ model: '$1'
1371
+ - regex: 'Cyrus[ _-]?([^;/)]+)[);/ ]'
1372
+ model: '$1'
1373
+
986
1374
  # Datang
987
1375
  Datang:
988
1376
  regex: 'DATANG'
@@ -1007,7 +1395,7 @@ Denver:
1007
1395
 
1008
1396
  # Dell
1009
1397
  Dell:
1010
- regex: 'Dell|Venue|XCD35'
1398
+ regex: 'Dell[^a-z]|Venue|XCD35'
1011
1399
  device: 'smartphone'
1012
1400
  models:
1013
1401
  - regex: 'XCD35'
@@ -1033,6 +1421,28 @@ Desay:
1033
1421
  - regex: 'Desay[ _-]?([^;/)]+)[);/ ]'
1034
1422
  model: '$1'
1035
1423
 
1424
+ # DEXP
1425
+ DEXP:
1426
+ regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/]+) Build|H135[ _]Build'
1427
+ device: 'smartphone'
1428
+ models:
1429
+
1430
+ - regex: 'Ixion[_ ]([^;/]+) Build'
1431
+ model: 'Ixion $1'
1432
+
1433
+ - regex: 'Ursus ([^;/]+) Build'
1434
+ model: 'Ursus $1'
1435
+ device: 'tablet'
1436
+
1437
+ - regex: 'H135[ _]Build'
1438
+ model: 'Atlas'
1439
+ device: 'desktop'
1440
+
1441
+ - regex: 'DEXP[ _]([^;/]+) Build'
1442
+ model: '$1'
1443
+ - regex: 'DEXP[ _]([^);/]+)[);/ ]'
1444
+ model: '$1'
1445
+
1036
1446
  # Dbtel
1037
1447
  Dbtel:
1038
1448
  regex: 'DBTEL(?:[\-/])?([a-z0-9]+)'
@@ -1045,6 +1455,72 @@ Dicam:
1045
1455
  device: 'feature phone'
1046
1456
  model: '$1'
1047
1457
 
1458
+ # Digma
1459
+ Digma:
1460
+ regex: 'Digma[_ ]([^;/]+) Build|HIT HT707[10]MG|CITI 1902 3G|(CITI (?:[A-Z0-9]+) 3G) C[ST]500[67]PG|iDrQ10 3G|iDxD8 3G|iDnD7|HIT 4G HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|iDxD10 3G|(iDxD[45]|iDxQ5)|iDxD7[_ ]3G|PS604M|PT452E|Linx A400 3G LT4001PG|Linx C500 3G LT5001PG|Linx PS474S|NS6902QL|NS9797MG|((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)'
1461
+ device: 'smartphone'
1462
+ models:
1463
+ - regex: 'HIT HT707[10]MG'
1464
+ model: 'HIT 3G'
1465
+ device: 'tablet'
1466
+ - regex: 'iDx5'
1467
+ model: 'iDx5'
1468
+ - regex: 'iDxD10 3G'
1469
+ model: 'iDxD10 3G'
1470
+ device: 'tablet'
1471
+ - regex: '(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)'
1472
+ model: '$1'
1473
+ - regex: 'PS604M'
1474
+ model: 'Linx 6.0'
1475
+ - regex: '(Linx A400 3G) LT4001PG'
1476
+ model: '$1'
1477
+ - regex: '(Linx C500 3G) LT5001PG'
1478
+ model: '$1'
1479
+ - regex: '(Linx PS474S)'
1480
+ model: '$1'
1481
+ - regex: 'PT452E'
1482
+ model: 'Linx 4.5'
1483
+ - regex: 'MVM900H(?:WZ|C)'
1484
+ model: 'iDx8'
1485
+ device: 'tablet'
1486
+ - regex: 'MVM908HCZ'
1487
+ model: 'iDx9'
1488
+ device: 'tablet'
1489
+ - regex: '(iDxD7[_ ]3G)'
1490
+ model: '$1'
1491
+ device: 'tablet'
1492
+ - regex: '(iDx10|iDx7)'
1493
+ model: '$1'
1494
+ - regex: '(iDxD[45]|iDxQ5)'
1495
+ model: '$1'
1496
+ - regex: 'HIT 4G HT7074ML'
1497
+ model: 'HIT 4G'
1498
+ device: 'tablet'
1499
+ - regex: '(CITI 1902 3G)'
1500
+ model: '$1'
1501
+ device: 'tablet'
1502
+ - regex: '(CITI (?:[A-Z0-9]+) 3G) C[ST]500[67]PG'
1503
+ model: '$1'
1504
+ device: 'tablet'
1505
+ - regex: 'iDxD8 3G'
1506
+ model: 'D-Plane2 8'
1507
+ device: 'tablet'
1508
+ - regex: '(iDrQ10 3G|iDnD7)'
1509
+ model: '$1'
1510
+ device: 'tablet'
1511
+ - regex: 'NS6902QL'
1512
+ model: 'Platina 7.2 4G'
1513
+ device: 'tablet'
1514
+ - regex: 'NS9797MG'
1515
+ model: 'Platina 7.2 3G'
1516
+ device: 'tablet'
1517
+ - regex: '((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)'
1518
+ model: '$1'
1519
+ device: 'tablet'
1520
+ - regex: 'Digma[_ ]([^;/]+) Build'
1521
+ model: '$1'
1522
+ device: 'tablet'
1523
+
1048
1524
  # DoCoMo
1049
1525
  DoCoMo:
1050
1526
  regex: 'DoCoMo|\;FOMA|KGT/1\.0'
@@ -1059,10 +1535,10 @@ DoCoMo:
1059
1535
 
1060
1536
  # Doogee
1061
1537
  Doogee:
1062
- regex: 'DOOGEE[ _-]|((?:BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS))[ -](DG[0-9]+C?)[);/ ]'
1538
+ regex: 'DOOGEE[ _-]|((?:BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?))[ -_](DG[0-9]+C?)[);/ ]'
1063
1539
  device: 'smartphone'
1064
1540
  models:
1065
- - regex: '(?:DOOGEE[ _-])?((?:BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS))[ -](DG[0-9]+C?)[);/ ]'
1541
+ - regex: '(?:DOOGEE[ _-])?((?:BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?))[ -_](DG[0-9]+C?)[);/ ]'
1066
1542
  model: '$1 $2'
1067
1543
  - regex: 'DOOGEE[ _-]([^);/]+) Build'
1068
1544
  model: '$1'
@@ -1085,6 +1561,16 @@ Dopod:
1085
1561
  device: 'feature phone'
1086
1562
  model: '$1'
1087
1563
 
1564
+ # Doro
1565
+ Doro:
1566
+ regex: 'Doro'
1567
+ device: 'smartphone'
1568
+ models:
1569
+ - regex: 'Doro[ _-]?([^;/)]+) Build'
1570
+ model: '$1'
1571
+ - regex: 'Doro[ _-]([0-9a-z]+)'
1572
+ model: '$1'
1573
+
1088
1574
  # Dune HD
1089
1575
  'Dune HD':
1090
1576
  regex: 'DuneHD'
@@ -1156,9 +1642,19 @@ ECS:
1156
1642
 
1157
1643
  # Elephone
1158
1644
  Elephone:
1159
- regex: 'Elephone[ _\-]([^/;]+) Build'
1645
+ regex: 'Elephone[ _\-]([^/;]+) Build|P6000( ?Pro| ?Plus|\+| ?02)? Build'
1160
1646
  device: 'smartphone'
1161
- model: '$1'
1647
+ models:
1648
+ - regex: 'Elephone[ _\-]([^/;]+) Build'
1649
+ model: '$1'
1650
+ - regex: 'P6000 Build'
1651
+ model: 'P6000'
1652
+ - regex: 'P6000(\+| ?Plus) Build'
1653
+ model: 'P6000 Plus'
1654
+ - regex: 'P6000 02 Build'
1655
+ model: 'P6000 02'
1656
+ - regex: 'P6000 ?Pro Build'
1657
+ model: 'P6000 Pro'
1162
1658
 
1163
1659
  # Energy Sistem
1164
1660
  'Energy Sistem':
@@ -1188,9 +1684,15 @@ Rikomagic:
1188
1684
  device: 'tv'
1189
1685
  model: 'MK$1'
1190
1686
 
1687
+ # Senseit
1688
+ Senseit:
1689
+ regex: 'SENSEIT[ _]?([^;/)]+) Build'
1690
+ device: 'smartphone'
1691
+ model: '$1'
1692
+
1191
1693
  # Sony & Sony Ericsson (combined as they are mixed up)
1192
1694
  Sony:
1193
- regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|C1[569]0[45]|C2[01]0[45]|C2305|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5322|D5503|D58[03]3|D65(?:0[23]|43)|D66[05]3|E2303|E58[02]3|E6553|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]*[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[345]D|[234]E|[12]C|[1235]F|[12]G)|R800[aix]|LiveWithWalkman'
1695
+ regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|C1[569]0[45]|C2[01]0[45]|C2305|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5322|D5503|D58[03]3|D65(?:0[23]|43)|D66[035]3|E210[45]|E2115|E5506|E2033|E2[03]03|E23[36]3|E2306|E2312|E2353|E53[03]3|E55[36]3|E56[46305][36]|E58[02]3|E65[35]3|E66[0358]3|E68[358]3|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3423|G823[12]|G8[14]4[12]|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]*[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[345]D|[234]E|[12]C|[1235]F|[12]G)|R800[aix]|LiveWithWalkman'
1194
1696
  device: 'smartphone'
1195
1697
  models:
1196
1698
  # SONY ERICSSON: explicit smartphone models
@@ -1355,6 +1857,10 @@ Sony:
1355
1857
  model: 'Xperia E'
1356
1858
  - regex: '(?:Sony(?:Ericsson)?)?C160[45]'
1357
1859
  model: 'Xperia E Dual'
1860
+ - regex: '(?:Sony(?:Ericsson)?)?(?:E210[45]|E2115)'
1861
+ model: 'Xperia E4'
1862
+ - regex: '(?:Sony(?:Ericsson)?)?E2003'
1863
+ model: 'Xperia E4G'
1358
1864
  - regex: '(?:Sony(?:Ericsson)?)?C190[45]'
1359
1865
  model: 'Xperia M'
1360
1866
  - regex: '(?:Sony(?:Ericsson)?)?C200[45]'
@@ -1384,21 +1890,37 @@ Sony:
1384
1890
  model: 'Xperia E3'
1385
1891
  - regex: '(?:Sony(?:Ericsson)?)?D2212'
1386
1892
  model: 'Xperia E3 Dual'
1893
+ - regex: '(?:Sony(?:Ericsson)?)?E2033'
1894
+ model: 'Xperia E4g Dual'
1387
1895
  - regex: '(?:Sony(?:Ericsson)?)?D2302'
1388
1896
  model: 'Xperia M2 Dual'
1389
1897
  - regex: '(?:Sony(?:Ericsson)?)?D230[356]'
1390
1898
  model: 'Xperia M2'
1391
1899
  - regex: '(?:Sony(?:Ericsson)?)?D240[36]'
1392
1900
  model: 'Xperia M2 Aqua'
1393
- - regex: '(?:Sony(?:Ericsson)?)?E2303'
1901
+ - regex: '(?:Sony(?:Ericsson)?)?(?:E230[36]|E23[35]3)'
1394
1902
  model: 'Xperia M4 Aqua'
1903
+ - regex: '(?:Sony(?:Ericsson)?)?(?:E2312|E2363)'
1904
+ model: 'Xperia M4 Aqua Dual'
1905
+ - regex: '(?:Sony(?:Ericsson)?)?E56[05][36]'
1906
+ model: 'Xperia M5'
1907
+ - regex: '(?:Sony(?:Ericsson)?)?E56[436]3'
1908
+ model: 'Xperia M5 Dual'
1395
1909
  - regex: '(?:Sony(?:Ericsson)?)?D2502'
1396
1910
  model: 'Xperia C3 Dual'
1397
1911
  - regex: '(?:Sony(?:Ericsson)?)?D2533'
1398
1912
  model: 'Xperia C3'
1913
+ - regex: '(?:Sony(?:Ericsson)?)?E5303'
1914
+ model: 'Xperia C4'
1915
+ - regex: '(?:Sony(?:Ericsson)?)?E53[03]3'
1916
+ model: 'Xperia C4 Dual'
1917
+ - regex: '(?:Sony(?:Ericsson)?)?E5506'
1918
+ model: 'Xperia C5 Ultra'
1919
+ - regex: '(?:Sony(?:Ericsson)?)?E55[36]3'
1920
+ model: 'Xperia C5 Ultra Dual'
1399
1921
  - regex: '(?:Sony(?:Ericsson)?)?D510[236]'
1400
1922
  model: 'Xperia T3'
1401
- - regex: '(?:Sony(?:Ericsson)?)?D530[36]|XM50[ht]'
1923
+ - regex: '(?:Sony(?:Ericsson)?)?(?:D530[36]|XM50[ht])'
1402
1924
  model: 'Xperia T2 Ultra'
1403
1925
  device: 'phablet'
1404
1926
  - regex: '(?:Sony(?:Ericsson)?)?D5322'
@@ -1412,16 +1934,64 @@ Sony:
1412
1934
  model: 'Xperia Z2'
1413
1935
  - regex: '(?:Sony(?:Ericsson)?)?(?:D66[05]3|SO-01G)'
1414
1936
  model: 'Xperia Z3'
1415
- - regex: '(?:Sony(?:Ericsson)?)?(?:E6553)'
1937
+ - regex: '(?:Sony(?:Ericsson)?)?(?:D6633)'
1938
+ model: 'Xperia Z3 Dual'
1939
+ - regex: '(?:Sony(?:Ericsson)?)?(?:E65[35]3)'
1416
1940
  model: 'Xperia Z3+'
1417
1941
  - regex: '(?:Sony(?:Ericsson)?)?(?:E58[02]3)'
1418
1942
  model: 'Xperia Z5 Compact'
1943
+ - regex: '(?:Sony(?:Ericsson)?)?E66[05]3'
1944
+ model: 'Xperia Z5'
1945
+ - regex: '(?:Sony(?:Ericsson)?)?E66[38]3'
1946
+ model: 'Xperia Z5 Dual'
1947
+ - regex: '(?:Sony(?:Ericsson)?)?E68[58]3'
1948
+ model: 'Xperia Z5 Premium'
1949
+ - regex: '(?:Sony(?:Ericsson)?)?E6833'
1950
+ model: 'Xperia Z5 Premium Dual'
1951
+ - regex: '(?:Sony(?:Ericsson)?)?F311[135]'
1952
+ model: 'Xperia XA'
1953
+ - regex: '(?:Sony(?:Ericsson)?)?F311[26]'
1954
+ model: 'Xperia XA Dual'
1955
+ - regex: '(?:Sony(?:Ericsson)?)?F321[135]'
1956
+ model: 'Xperia XA Ultra'
1957
+ - regex: '(?:Sony(?:Ericsson)?)?F321[26]'
1958
+ model: 'Xperia XA Ultra Dual'
1959
+ - regex: '(?:Sony(?:Ericsson)?)?F833[12]'
1960
+ model: 'Xperia XZ'
1961
+ - regex: '(?:Sony(?:Ericsson)?)?G8441'
1962
+ model: 'Xperia XZ1 Compact'
1963
+ - regex: '(?:Sony(?:Ericsson)?)?F331[13]'
1964
+ model: 'Xperia E5'
1965
+ - regex: '(?:Sony(?:Ericsson)?)?G312[135]|G311[26]'
1966
+ model: 'Xperia XA1'
1967
+ - regex: '(?:Sony(?:Ericsson)?)?G3412|G3423'
1968
+ model: 'Xperia XA1 Plus'
1969
+ - regex: '(?:Sony(?:Ericsson)?)?G322[136]|G3212'
1970
+ model: 'Xperia XA1 Ultra'
1971
+ - regex: '(?:Sony(?:Ericsson)?)?G823[12]'
1972
+ model: 'Xperia XZs'
1973
+ - regex: '(?:Sony(?:Ericsson)?)?G814[12]'
1974
+ model: 'Xperia XZ Premium'
1975
+ - regex: '(?:Sony(?:Ericsson)?)?G331[13]'
1976
+ model: 'Xperia L1'
1977
+ - regex: '(?:Sony(?:Ericsson)?)?G3312'
1978
+ model: 'Xperia L1 Dual'
1419
1979
  - regex: '(?:Sony(?:Ericsson)?)?SO-04E'
1420
1980
  model: 'Xperia A'
1421
1981
  - regex: '(?:Sony(?:Ericsson)?)?SO-04D'
1422
1982
  model: 'Xperia GX'
1423
1983
  - regex: '(?:Sony(?:Ericsson)?)?SO-05D'
1424
1984
  model: 'Xperia SX'
1985
+ - regex: '(?:Sony(?:Ericsson)?)?F5121'
1986
+ model: 'Xperia X'
1987
+ - regex: '(?:Sony(?:Ericsson)?)?F5122'
1988
+ model: 'Xperia X Dual'
1989
+ - regex: '(?:Sony(?:Ericsson)?)?F5321'
1990
+ model: 'Xperia X Compact'
1991
+ - regex: '(?:Sony(?:Ericsson)?)?F8131'
1992
+ model: 'Xperia X Performance'
1993
+ - regex: '(?:Sony(?:Ericsson)?)?F8132'
1994
+ model: 'Xperia X Performance Dual'
1425
1995
 
1426
1996
  # SONY: explicit tablet models
1427
1997
  - regex: 'SGP(?:311|312|321)[);/ ]|SO-03E'
@@ -1521,6 +2091,57 @@ Evertek:
1521
2091
  - regex: '(Ever(?:Glory|Shine|Miracle|Mellow|Classic|Trendy|Fancy|Vivid|Slim|Glow|Magic|Smart|Star)[^/;]*) Build'
1522
2092
  model: '$1'
1523
2093
 
2094
+ # Evolveo
2095
+ Evolveo:
2096
+ regex: 'EVOLVEO[ _]([^;/]*) Build'
2097
+ device: 'smartphone'
2098
+ models:
2099
+ - regex: 'Smart TV ([^;/]*) Build'
2100
+ device: 'tv'
2101
+ model: 'Smart TV $1'
2102
+ - regex: 'EVOLVEO[ _]([^;/]*) Build'
2103
+ model: '$1'
2104
+
2105
+ # Explay
2106
+ Explay:
2107
+ regex: 'Explay|ActiveD[ _]|Atlant |Informer[ _][0-9]+|CinemaTV 3G|Surfer[ _][0-9\.]|sQuad[ _][0-9\.]|Onliner[1-3]|RioPlay'
2108
+ device: 'tablet'
2109
+ models:
2110
+ - regex: 'ActiveD[ _]7.4[ _]3G'
2111
+ model: 'ActiveD 7.4 3G'
2112
+ - regex: 'ActiveD[ _]8.2[ _]3G'
2113
+ model: 'ActiveD 8.2 3G'
2114
+ - regex: 'CinemaTV[ _]3G'
2115
+ model: 'CinemaTV 3G'
2116
+ - regex: 'Informer[ _]([0-9]+(?:[ _]3G)?)'
2117
+ model: 'Informer $1'
2118
+ - regex: 'Surfer[ _]([0-9\.]+(?:[ _]3G)?)'
2119
+ model: 'Surfer $1'
2120
+ - regex: 'sQuad[ _]([0-9\.]+(?:[ _]3G)?)'
2121
+ model: 'sQuad $1'
2122
+ - regex: 'Onliner([1-3])'
2123
+ model: 'Onliner $1'
2124
+ - regex: 'Atlant[;/) ]'
2125
+ device: 'smartphone'
2126
+ model: 'Atlant'
2127
+ - regex: 'Explay[ _-]([^;/]+) Build'
2128
+ model: '$1'
2129
+ - regex: 'Explay[ _-]([^;/]+)[;/)]'
2130
+ model: '$1'
2131
+ - regex: '(RioPlay)[;/) ]'
2132
+ device: 'smartphone'
2133
+ model: 'Rio Play'
2134
+
2135
+ # EKO
2136
+ EKO:
2137
+ regex: 'EKO'
2138
+ device: 'smartphone'
2139
+ models:
2140
+ - regex: 'EKO[ _-]?([^;/)]+) Build'
2141
+ model: '$1'
2142
+ - regex: 'EKO[ _-]?([^;/)]+)[);/ ]'
2143
+ model: '$1'
2144
+
1524
2145
  # Ezze
1525
2146
  Ezze:
1526
2147
  regex: 'EZZE-|EZ[a-z0-9]+'
@@ -1554,7 +2175,7 @@ Fairphone:
1554
2175
 
1555
2176
  # Fujitsu
1556
2177
  Fujitsu:
1557
- regex: 'F-01F|F-02[EF]|F-05[DE]|F-06E|F-08D|F-09E'
2178
+ regex: 'F-01F|F-02[EF]|F-05[DE]|F-06E|F-08D|F-09E|M532[);/ ]'
1558
2179
  device: 'smartphone'
1559
2180
  models:
1560
2181
  - regex: 'F-01F'
@@ -1578,6 +2199,9 @@ Fujitsu:
1578
2199
  - regex: 'F-05E'
1579
2200
  model: 'Arrows Tab F-05E'
1580
2201
  device: 'tablet'
2202
+ - regex: 'M532[);/ ]'
2203
+ model: 'Stylistic'
2204
+ device: 'tablet'
1581
2205
 
1582
2206
  # Gemini
1583
2207
  Gemini:
@@ -1638,10 +2262,22 @@ Vizio:
1638
2262
 
1639
2263
  # GOCLEVER
1640
2264
  GOCLEVER:
1641
- regex: 'GOCLEVER|QUANTUM|ARIES|INSIGNIA'
2265
+ regex: 'GOCLEVER|QUANTUM|ARIES|INSIGNIA|ORION_|ELIPSO'
1642
2266
  device: 'smartphone'
1643
2267
  models:
1644
- - regex: '((?:QUANTUM|ARIES|INSIGNIA)[ _-]?[^;/]+) Build'
2268
+ - regex: 'QUANTUM_(1010N|1010M|900)'
2269
+ model: 'QUANTUM $1'
2270
+ device: 'tablet'
2271
+ - regex: 'INSIGNIA_785_PRO'
2272
+ model: 'INSIGNIA 785 PRO'
2273
+ device: 'tablet'
2274
+ - regex: '(ORION|ARIES|ELIPSO)[_ ](71|101|102)'
2275
+ model: '$1 $2'
2276
+ device: 'tablet'
2277
+ - regex: 'TQ700N'
2278
+ model: 'QUANTUM 700N'
2279
+ device: 'tablet'
2280
+ - regex: '((?:QUANTUM|ARIES|INSIGNIA|ORION|ELIPSO)[ _-]?[^;/]+) Build'
1645
2281
  model: '$1'
1646
2282
  - regex: 'GOCLEVER[ _-]TAB[ _-]?([^;/]+) Build'
1647
2283
  model: 'TAB $1'
@@ -1659,6 +2295,7 @@ GOCLEVER:
1659
2295
  - regex: 'GOCLEVER[ _-]?([^;/)]+)[;/)]'
1660
2296
  model: '$1'
1661
2297
 
2298
+
1662
2299
  # Goly
1663
2300
  Goly:
1664
2301
  regex: 'Goly[ _-]'
@@ -1671,7 +2308,7 @@ Goly:
1671
2308
 
1672
2309
  # Google
1673
2310
  Google:
1674
- regex: 'Nexus|GoogleTV|Glass|CrKey[^a-z0-9]'
2311
+ regex: 'Nexus|GoogleTV|Glass|CrKey[^a-z0-9]|Pixel Build|Pixel (?:XL|C|2|2 XL) Build'
1675
2312
  device: 'smartphone'
1676
2313
  models:
1677
2314
  - regex: 'Glass'
@@ -1692,6 +2329,17 @@ Google:
1692
2329
  - regex: 'GoogleTV'
1693
2330
  device: 'tv'
1694
2331
  model: 'GoogleTV'
2332
+ - regex: 'Pixel Build'
2333
+ model: 'Pixel'
2334
+ - regex: 'Pixel XL'
2335
+ model: 'Pixel XL'
2336
+ - regex: 'Pixel 2 XL'
2337
+ model: 'Pixel 2 XL'
2338
+ - regex: 'Pixel 2'
2339
+ model: 'Pixel 2'
2340
+ - regex: 'Pixel C'
2341
+ device: 'tablet'
2342
+ model: 'Pixel C'
1695
2343
 
1696
2344
  # Gradiente
1697
2345
  Gradiente:
@@ -1745,7 +2393,7 @@ Hasee:
1745
2393
 
1746
2394
  # Hisense
1747
2395
  Hisense:
1748
- regex: '(?:HS-)?Hisense ([^;/]+) Build|Hisense [^);/]+|HS-(?:U|EG?|I|T|X)[0-9]+[a-z0-9\-]*|E270BSA|M470BS[AE]|E2281'
2396
+ regex: '(?:HS-)?Hisense ([^;/]+) Build|Hisense [^);/]+|HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\-]*|E270BSA|M470BS[AE]|E2281|EG680'
1749
2397
  device: 'smartphone'
1750
2398
  models:
1751
2399
  # explicit tablet models
@@ -1758,8 +2406,10 @@ Hisense:
1758
2406
  - regex: 'E2281'
1759
2407
  device: 'tablet'
1760
2408
  model: 'Sero 8'
2409
+ - regex: 'EG680'
2410
+ model: 'Smartfren Andromax Z'
1761
2411
 
1762
- - regex: '(HS-(?:U|EG?|I|T|X)[0-9]+[a-z0-9\-]*)'
2412
+ - regex: '(HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\-]*)'
1763
2413
  model: '$1'
1764
2414
  - regex: '(?:HS-)?Hisense ([^;/]+) Build'
1765
2415
  model: '$1'
@@ -1772,6 +2422,16 @@ Hi-Level:
1772
2422
  device: 'tablet'
1773
2423
  model: 'HLV-T$1'
1774
2424
 
2425
+ # Homtom
2426
+ Homtom:
2427
+ regex: 'Homtom|(?:HT[0-9]{1,2})(?: ?Pro)? Build'
2428
+ device: 'smartphone'
2429
+ models:
2430
+ - regex: '(HT[0-9]{1,2}(?: ?Pro)?) Build'
2431
+ model: '$1'
2432
+ - regex: 'Homtom ([^;/]+) Build'
2433
+ model: '$1'
2434
+
1775
2435
  # Hosin
1776
2436
  Hosin:
1777
2437
  regex: 'HOSIN[ _-]'
@@ -1784,7 +2444,7 @@ Hosin:
1784
2444
 
1785
2445
  # Huawei
1786
2446
  Huawei:
1787
- regex: '(HW-)?(?:Huawei|Ideos|Honor[ _]|(?:H60-L(?:01|02|03|04|11|12)|H30-(?:C00|L01M?|L02|U10|T00|T10)|G621-TL00M?|PLK-(?:AL10|CL00|TL00|TL01H?|UL00|L01)|SCL-(?:AL00|CL00|TL00H?)|CH(?:E2?|M)-[CUT]L00[HM]?|CHE1-CL[12]0|CHE2-L11|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))[);/ ])'
2447
+ regex: '(HW-)?(?:Huawei|Ideos|Honor[ _]|(?:H60-L(?:01|02|03|04|11|12)|H30-(?:C00|L01M?|L02|U10|T00|T10)|G621-TL00M?|PLK-(?:AL10|CL00|TL00|TL01H?|UL00|L01)|SCL-(?:AL00|CL00|TL00H?|L01)|CH(?:E2?|M)-[CUT]L00[HM]?|CHE1-CL[12]0|CHE2-L11|CHM-U01|KIW-L21|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508)|NEM-L[52][21]|PLE-70[13]L|BLN-(?:L2[124]|AL10)|BND-(?:AL10|L21)|PRA-L[AX]1|PRA-AL00X|RNE-L22)[);/ ])|Bucare Y330-U05'
1788
2448
  device: 'smartphone'
1789
2449
  models:
1790
2450
  - regex: 'U(8230|8661|8667)[);/ ]'
@@ -1817,10 +2477,55 @@ Huawei:
1817
2477
  model: 'Honor 3C'
1818
2478
  - regex: '(?:Honor_|HW-)?SCL-(?:AL00|CL00|TL00H?)(?:_TD)?[);/ ]'
1819
2479
  model: 'Honor 4A'
2480
+ - regex: '(?:Honor_|HW-)?KIW-L21(?:_TD)?[);/ ]'
2481
+ model: 'Honor 5X'
2482
+ - regex: '(?:Honor_|HW-)?CHM-U01(?:_TD)?[);/ ]'
2483
+ model: 'Honor 4C'
1820
2484
  - regex: '(?:Honor_|HW-)?H60-L(?:01|02|03|04|11|12)(?:_TD)?[);/ ]'
1821
2485
  model: 'Honor 6'
2486
+ - regex: '(?:Honor_|HW-)?SCL-L01(?:_TD)?[);/ ]'
2487
+ model: 'Honor Y6'
1822
2488
  - regex: '(?:Honor_|HW-)?PLK-(?:AL10|CL00|TL00|TL01H?|UL00|L01)[);/ ]'
1823
2489
  model: 'Honor 7'
2490
+ - regex: '(?:Honor_|HW-)?NEM-L51[);/ ]'
2491
+ model: 'Honor 5C'
2492
+ - regex: '(?:Honor_|HW-)?NEM-L22[);/ ]'
2493
+ model: 'Honor 5C Dual SIM'
2494
+ - regex: '(?:Honor_|HW-)?NEM-L21[);/ ]'
2495
+ model: 'Honor 7 Lite'
2496
+ - regex: '(?:HONOR[ _]?)?BLN-(?:L2[124]|AL10)'
2497
+ model: 'Honor 6X'
2498
+ - regex: '(?:HONOR[ _]?)?BND-(?:AL10|L21)'
2499
+ model: 'Honor 7X'
2500
+ - regex: 'PRA-AL00X'
2501
+ model: 'Honor 8 Lite'
2502
+ - regex: 'GRA-L09'
2503
+ model: 'P8'
2504
+ - regex: 'ALE-L(02|21|23)'
2505
+ model: 'P8 Lite (2015)'
2506
+ - regex: 'PRA-L[AX]1'
2507
+ model: 'P8 Lite (2017)'
2508
+ - regex: 'RNE-L22'
2509
+ model: 'Nova 2I'
2510
+ - regex: 'EVA-L09'
2511
+ model: 'P9'
2512
+ - regex: 'VTR-L09'
2513
+ model: 'P10'
2514
+ - regex: 'CAM-L21'
2515
+ model: 'Y6II'
2516
+ - regex: 'MHA-L[02]9'
2517
+ model: 'Mate 9'
2518
+ - regex: 'Bucare Y330-U05'
2519
+ model: 'Y330-U05'
2520
+ - regex: 'T1-A21w'
2521
+ device: 'tablet'
2522
+ model: 'Honor Tablet Note'
2523
+ - regex: 'PLE-70[13]L'
2524
+ device: 'tablet'
2525
+ model: 'MediaPad T2 7.0 Pro'
2526
+ - regex: 'T1-A21L'
2527
+ device: 'tablet'
2528
+ model: 'MediaPad T1 10'
1824
2529
  - regex: '(MediaPad[^/;]*) Build'
1825
2530
  device: 'tablet'
1826
2531
  model: '$1'
@@ -1892,6 +2597,82 @@ iBerry:
1892
2597
  - regex: 'AUXUS ([^/;]+) Build'
1893
2598
  model: '$1'
1894
2599
 
2600
+ # IconBIT
2601
+ IconBIT:
2602
+ regex: 'NT-3506M'
2603
+ device: 'smartphone'
2604
+ models:
2605
+ - regex: 'NT-3506M'
2606
+ model: 'NetTAB Mercury Quad FHD'
2607
+
2608
+ # LYF
2609
+ LYF:
2610
+ regex: '(LYF[ _])?LS-[45][0-9]{3}'
2611
+ device: 'smartphone'
2612
+ models:
2613
+ - regex: 'LS-4004'
2614
+ model: 'Flame 2'
2615
+ - regex: 'LS-5501'
2616
+ model: 'Earth 1'
2617
+ - regex: 'LS-5021'
2618
+ model: 'Earth 2'
2619
+ - regex: 'LS-5505'
2620
+ model: 'Water F1'
2621
+ - regex: 'LS-4503'
2622
+ model: 'Flame LS-4503'
2623
+ - regex: 'LS-4001'
2624
+ model: 'Flame 3'
2625
+ - regex: 'LS-4003'
2626
+ model: 'Flame 4'
2627
+ - regex: 'LS-4002'
2628
+ model: 'Flame 5'
2629
+ - regex: 'LS-4005'
2630
+ model: 'Flame 6'
2631
+ - regex: '(LYF[ _])?LS-4006'
2632
+ model: 'Flame 7'
2633
+ - regex: 'LS-4008'
2634
+ model: 'Flame 7S'
2635
+ - regex: 'LS-4505'
2636
+ model: 'Flame 8'
2637
+ - regex: 'LS-5002'
2638
+ model: 'Water 1'
2639
+ - regex: 'LS-5005'
2640
+ model: 'Water 4'
2641
+ - regex: 'LS-5006'
2642
+ model: 'Water 6'
2643
+ - regex: 'LS-5008'
2644
+ model: 'Water 2'
2645
+ - regex: 'LS-5009'
2646
+ model: 'Wind 6'
2647
+ - regex: 'LS-5013'
2648
+ model: 'Wind 5'
2649
+ - regex: 'LS-5014'
2650
+ model: 'Wind 4'
2651
+ - regex: 'LS-5010'
2652
+ model: 'Wind 1'
2653
+ - regex: 'LS-5015'
2654
+ model: 'Water 8'
2655
+ - regex: 'LS-5016'
2656
+ model: 'Wind 7'
2657
+ - regex: 'LS-5504'
2658
+ model: 'Water 7'
2659
+ - regex: 'LS-5017'
2660
+ model: 'Water 11'
2661
+ - regex: 'LS-5018'
2662
+ model: 'Wind 4S'
2663
+ - regex: 'LS-5020'
2664
+ model: 'Water 10'
2665
+ - regex: 'LS-5201'
2666
+ model: 'Water F1S'
2667
+ - regex: 'LS-5502'
2668
+ model: 'Wind 3'
2669
+ - regex: 'LS-5503'
2670
+ model: 'Water 3'
2671
+ - regex: 'LS-5506'
2672
+ model: 'Water 9'
2673
+ - regex: 'LS-6001'
2674
+ model: 'Wind 2'
2675
+
1895
2676
  # iNew
1896
2677
  iNew:
1897
2678
  regex: 'iNew|(?:V7A|V3 Plus|V3-?E|V3C)(?: Build|[;/\)])'
@@ -2014,7 +2795,15 @@ iTel:
2014
2795
  - regex: 'iTel_([a-z0-9\-_]*)'
2015
2796
  model: '$1'
2016
2797
 
2017
- #Jiayu
2798
+ # JAY-Tech
2799
+ JAY-Tech:
2800
+ regex: 'TPC-[A-Z0-9]+'
2801
+ device: 'tablet'
2802
+ models:
2803
+ - regex: 'TPC-([A-Z0-9]+)'
2804
+ model: 'Tablet PC $1'
2805
+
2806
+ # Jiayu
2018
2807
  Jiayu:
2019
2808
  regex: '(JY-[a-z0-9]+)[);/ ]'
2020
2809
  device: 'smartphone'
@@ -2038,6 +2827,28 @@ Kazam:
2038
2827
  - regex: 'Kazam ([^;/]+) Build'
2039
2828
  model: '$1'
2040
2829
 
2830
+ # Kiano
2831
+ Kiano:
2832
+ regex: 'Kiano|Elegance_5_0|CORE 10.1 DUAL 3G|Intelect ?(7|8|10)|Slim ?Tab ?\d+(?:[_ ]3GR?)?[);/ ]|Cavion[_ ]'
2833
+ device: 'smartphone'
2834
+ models:
2835
+ - regex: 'Slim ?Tab ?(\d+)(?:[_ ]3GR?)?'
2836
+ model: 'Slim Tab $1'
2837
+ device: 'tablet'
2838
+ - regex: 'Cavion[_ ](?:Base[_ ])?(\d+)'
2839
+ model: 'Cavion Base $1'
2840
+ device: 'tablet'
2841
+ - regex: 'CORE 10.1 DUAL 3G'
2842
+ model: 'CORE 10.1 DUAL 3G'
2843
+ device: 'tablet'
2844
+ - regex: 'Elegance_5_0'
2845
+ model: 'Elegance 5.0'
2846
+ - regex: '(Kiano)?(Intelect|Elegance) ?(7|8|10)?'
2847
+ model: '$2 $3'
2848
+ device: 'tablet'
2849
+ - regex: 'Kiano[ _]([^;/]+) Build'
2850
+ model: '$1'
2851
+
2041
2852
  # Kingsun
2042
2853
  Kingsun:
2043
2854
  regex: 'Kingsun[ _-]'
@@ -2149,17 +2960,37 @@ Kyocera:
2149
2960
 
2150
2961
  # Lava
2151
2962
  Lava:
2152
- regex: 'iris[ _]?([^/;]+)(?:\)| Build)'
2963
+ regex: 'Lava |iris[ _]?([^/;]+)(?:\)| Build)'
2153
2964
  device: 'smartphone'
2154
2965
  models:
2155
2966
  - regex: 'iris[ _]?([^/;]+)(?:\)| Build)'
2156
2967
  model: 'Iris $1'
2968
+ - regex: 'Lava[ _]?([^/;]+)(?:/| Build)'
2969
+ model: '$1'
2970
+
2971
+ # Landvo
2972
+ Landvo:
2973
+ regex: 'XM[123]00|(?<!Blade )S6 Build'
2974
+ device: 'smartphone'
2975
+ models:
2976
+ - regex: 'S6 Build'
2977
+ model: 'S6'
2978
+ - regex: 'XM([123])00([^/;]*) Build'
2979
+ model: 'XM$100$2'
2157
2980
 
2158
2981
  # lanix
2159
2982
  Lanix:
2160
- regex: 'LANIX-([a-z0-9]+)'
2983
+ regex: 'LANIX-([a-z0-9]+)|ILIUM[ _]([^;/]+) Build'
2161
2984
  device: 'feature phone'
2162
- model: '$1'
2985
+ models:
2986
+ - regex: 'ILIUM[ _]PAD[ _]([^;/]+) Build'
2987
+ model: 'Ilium Pad $1'
2988
+ device: 'tablet'
2989
+ - regex: 'ILIUM[ _]([^;/]+) Build'
2990
+ model: 'Ilium $1'
2991
+ device: 'smartphone'
2992
+ - regex: 'LANIX-([a-z0-9]+)'
2993
+ model: '$1'
2163
2994
 
2164
2995
  # lct
2165
2996
  LCT:
@@ -2181,6 +3012,24 @@ LCT:
2181
3012
  - regex: 'Le ?Pan ?([^;/]+) Build'
2182
3013
  model: '$1'
2183
3014
 
3015
+ # LeEco
3016
+ LeEco:
3017
+ regex: 'LeEco|Le ?X[0-9][^;/]+|Le Max|Le [12]'
3018
+ device: 'smartphone'
3019
+ models:
3020
+ - regex: 'Le ?X([^;/]+) Build'
3021
+ model: 'Le X$1'
3022
+ - regex: 'Le ?X([^ ;/]+)'
3023
+ model: 'Le X$1'
3024
+ - regex: 'Le ?([12][^;/]+) Build'
3025
+ model: 'Le $1'
3026
+ - regex: 'Le Max([^;/]*) Build'
3027
+ model: 'Le Max$1'
3028
+ - regex: 'Le Max([^ ;/]*)'
3029
+ model: 'Le Max$1'
3030
+ - regex: 'LeEco ([^;/]+) Build'
3031
+ model: '$1'
3032
+
2184
3033
  # lenco
2185
3034
  Lenco:
2186
3035
  regex: 'Lenco ([^/;]*) Build'
@@ -2189,10 +3038,47 @@ Lenco:
2189
3038
 
2190
3039
  # lenovo
2191
3040
  Lenovo:
2192
- regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet'
3041
+ regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|YT3-X50L|ZUK[ -_]'
2193
3042
  device: 'smartphone'
2194
3043
  models:
2195
- - regex: 'Lenovo (B[0-9]+[^/;]*) Build'
3044
+ - regex: 'Lenovo ?G780'
3045
+ model: 'G780'
3046
+ device: 'desktop'
3047
+ - regex: 'Lenovo ?A3500-FL'
3048
+ model: 'IdeaTab A7-40'
3049
+ device: 'tablet'
3050
+ - regex: 'Lenovo ?A3500-(H|HV|F)'
3051
+ model: 'IdeaTab A7-50'
3052
+ device: 'tablet'
3053
+ - regex: 'Lenovo ?A5500-[HF]'
3054
+ model: 'IdeaTab A8-50'
3055
+ device: 'tablet'
3056
+ - regex: 'Lenovo ?A7600-[HF]'
3057
+ model: 'IdeaTab A10-70'
3058
+ device: 'tablet'
3059
+ - regex: 'TB2-X30[FL]'
3060
+ model: 'Tab 2 A10-30'
3061
+ device: 'tablet'
3062
+ - regex: 'YT3-X50[FL]'
3063
+ model: 'Yoga Tab 3'
3064
+ device: 'tablet'
3065
+ - regex: 'TB3-710[IF]'
3066
+ model: 'TAB3 7 Essential'
3067
+ device: 'tablet'
3068
+ - regex: 'Lenovo ?B8000(-[FH])?'
3069
+ model: 'Yoga Tablet 10'
3070
+ device: 'tablet'
3071
+ - regex: 'Lenovo ?B6000(-[FH])?'
3072
+ model: 'Yoga Tablet 8'
3073
+ device: 'tablet'
3074
+ - regex: 'YT3-X90(L|F|X)'
3075
+ model: 'Yoga 3 Pro'
3076
+ device: 'tablet'
3077
+ - regex: 'YT3-850[FL]'
3078
+ model: 'Yoga Tab 3 8'
3079
+ device: 'tablet'
3080
+
3081
+ - regex: 'Lenovo ([ASB][0-9]{4})[A-Z]?\-[EHF]'
2196
3082
  model: 'IdeaTab $1'
2197
3083
  device: 'tablet'
2198
3084
  - regex: 'ThinkPadTablet_(A[0-9]{3})_'
@@ -2204,15 +3090,67 @@ Lenovo:
2204
3090
  - regex: 'IdeaPad ?([^;/]*) Build'
2205
3091
  model: 'IdeaPad $1'
2206
3092
  device: 'tablet'
2207
- - regex: 'Lenovo ([^/;]*) Build'
2208
- model: '$1'
3093
+ - regex: 'Lenovo TAB ?([^/;]*) Build'
3094
+ model: 'TAB $1'
3095
+ device: 'tablet'
3096
+ - regex: 'Lenovo ?A3300-(?:GV|H)'
3097
+ model: 'TAB 2 A7-30'
3098
+ device: 'tablet'
3099
+ - regex: 'Tab2A([0-9]-[0-9]{2}[a-z]?)'
3100
+ model: 'TAB 2 A$1'
3101
+ device: 'tablet'
2209
3102
  - regex: 'IdeaTab[ \-_]?([a-z0-9]+)'
2210
3103
  model: 'IdeaTab $1'
2211
3104
  device: 'tablet'
2212
3105
  - regex: 'Yoga Tablet([^;/]+) Build'
2213
3106
  model: 'Yoga Tablet$1'
2214
3107
  device: 'tablet'
2215
- - regex: '(?:LNV-|Lenovo-)?Lenovo[ \-_]([a-z0-9_+\-]+)'
3108
+ - regex: 'Lenovo TB\-X704F Build/NMF26F'
3109
+ model: 'Tab 4 10 Plus'
3110
+ device: 'tablet'
3111
+ - regex: 'Lenovo (TB[0-9]?\-[a-z0-9\-]+) Build'
3112
+ model: '$1'
3113
+ device: 'tablet'
3114
+ - regex: 'ZUK[ -_]([^/;]*) Build'
3115
+ model: 'ZUK $1'
3116
+ - regex: 'Lenovo ([^/;]*) Build'
3117
+ model: '$1'
3118
+ - regex: '(?:LNV-|Lenovo-)?Lenovo[ \-_]?([a-z0-9_+\-]+)'
3119
+ model: '$1'
3120
+
3121
+ # Lexand
3122
+ Lexand:
3123
+ regex: '(?:SC7 PRO HD|S5A[1-4]|S4A[1-5]|S6A1|A811|A802)[);/ ]|Lexand ([^;/]+) Build'
3124
+ device: 'smartphone'
3125
+ models:
3126
+ - regex: 'A(811|802)'
3127
+ device: 'tablet'
3128
+ model: 'A$1'
3129
+
3130
+ - regex: 'S4A1'
3131
+ model: 'Vega'
3132
+ - regex: 'S4A2'
3133
+ model: 'Irida'
3134
+ - regex: 'S4A3'
3135
+ model: 'Pallada'
3136
+ - regex: 'S4A5'
3137
+ model: 'Oxygen'
3138
+ - regex: 'S4A4 NEON'
3139
+ model: 'S4A4 Neon'
3140
+ - regex: 'S5A1'
3141
+ model: 'Callisto'
3142
+ - regex: 'S5A2'
3143
+ model: 'Overon'
3144
+ - regex: 'S5A3'
3145
+ model: 'Capella'
3146
+ - regex: 'S5A4'
3147
+ model: 'Argon'
3148
+ - regex: 'S6A1'
3149
+ model: 'Antares'
3150
+ - regex: 'SC7 PRO HD'
3151
+ model: 'SC7 PRO HD'
3152
+
3153
+ - regex: 'Lexand ([^;/]+) Build'
2216
3154
  model: '$1'
2217
3155
 
2218
3156
  # lexibook
@@ -2271,9 +3209,11 @@ Lexibook:
2271
3209
 
2272
3210
  # lg
2273
3211
  LG:
2274
- regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713)[);/ ]|NetCast'
3212
+ regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713)[);/ ]|NetCast|VS995'
2275
3213
  device: 'smartphone'
2276
3214
  models:
3215
+ - regex: 'LG-D855'
3216
+ model: 'G3'
2277
3217
  - regex: 'P713'
2278
3218
  model: 'Optimus L7II'
2279
3219
  - regex: 'L-01D'
@@ -2283,6 +3223,19 @@ LG:
2283
3223
  - regex: 'L-07C'
2284
3224
  model: 'Optimus Bright L-07C'
2285
3225
 
3226
+ - regex: 'LG-V490'
3227
+ model: 'G Pad 8.0'
3228
+ device: 'tablet'
3229
+ - regex: 'LG-V500'
3230
+ model: 'G Pad 8.3'
3231
+ device: 'tablet'
3232
+ - regex: 'LG-V700'
3233
+ model: 'G Pad 10.1'
3234
+ device: 'tablet'
3235
+ - regex: 'LG-V935'
3236
+ model: 'G Pad II 10.1'
3237
+ device: 'tablet'
3238
+
2286
3239
  - regex: 'webOS.TV'
2287
3240
  device: 'tv'
2288
3241
  model: 'WebOS TV'
@@ -2306,6 +3259,8 @@ LG:
2306
3259
  model: '$1'
2307
3260
  - regex: '(VX[0-9]+)'
2308
3261
  model: '$1'
3262
+ - regex: 'VS995'
3263
+ model: 'V20'
2309
3264
 
2310
3265
  # Lingwin
2311
3266
  Lingwin:
@@ -2319,15 +3274,25 @@ Lingwin:
2319
3274
 
2320
3275
  # Logicom
2321
3276
  Logicom:
2322
- regex: '(TAB950|TAB1062|E731|E812|E912|E1031)[);/ ]'
3277
+ regex: '(TAB950|TAB1062|E731|E812|E912|E1031|POWER BOT|(?:B|C|M|ID|VR) ?BOT ?(?:TAB )?([0-9]+\+?)(?:PLUS)?|KT712A_4\.4|L-?IXIR[0-9]*|L-ITE|L-?EMENT)[_);/ ]'
2323
3278
  device: 'tablet'
2324
- model: '$1'
2325
-
2326
- # microsoft
2327
- Microsoft:
2328
- regex: 'KIN\.(One|Two)'
2329
- device: 'feature phone'
2330
- model: 'Kin $1'
3279
+ models:
3280
+ - regex: 'KT712A_4.4'
3281
+ model: 'L-ixir Tab 701'
3282
+ - regex: 'LIXIR1041'
3283
+ model: 'L-ixir Tab 1041'
3284
+ - regex: 'L-?IXIR TAB ([^;/]+) Build'
3285
+ model: 'L-ixir Tab $1'
3286
+ - regex: 'L-ITE[ _]([^;/]+) Build'
3287
+ model: 'L-ite Tab $1'
3288
+ - regex: 'L-?EMENT[ _](?:TAB)?([^;/]+) Build'
3289
+ model: 'L-ement Tab $1'
3290
+ - regex: '(TAB950|TAB1062|E731|E812|E912|E1031)[);/ ]'
3291
+ model: '$1'
3292
+ - regex: 'POWER BOT'
3293
+ model: 'POWER BOT'
3294
+ - regex: '((?:B|C|M|ID|VR)) ?BOT ?((?:TAB )?([0-9]+\+?)(?:PLUS)?)'
3295
+ model: '$1 BOT $2'
2331
3296
 
2332
3297
  # Konka
2333
3298
  Konka:
@@ -2348,6 +3313,22 @@ Konka:
2348
3313
  device: 'feature phone'
2349
3314
  model: '$1'
2350
3315
 
3316
+ # Konrow
3317
+ Konrow:
3318
+ regex: '(?:BIGCOOL|COOLFIVE|COOL-K|Just5|Link5)[);/ ]'
3319
+ device: 'smartphone'
3320
+ models:
3321
+ - regex: 'BIGCOOL[);/ ]'
3322
+ model: 'BigCool'
3323
+ - regex: 'COOL-K[);/ ]'
3324
+ model: 'Cool-K'
3325
+ - regex: 'COOLFIVE[);/ ]'
3326
+ model: 'Cool Five'
3327
+ - regex: 'Just5[);/ ]'
3328
+ model: 'Just 5'
3329
+ - regex: 'Link5[);/ ]'
3330
+ model: 'Link 5'
3331
+
2351
3332
  # Karbonn
2352
3333
  Karbonn:
2353
3334
  regex: '(?:Browser-)?Karbonn'
@@ -2422,7 +3403,7 @@ Majestic:
2422
3403
 
2423
3404
  # Manta Multimedia
2424
3405
  Manta Multimedia:
2425
- regex: '(MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|1001|1002|1003|1004(?: 3G)?|1005|7802|9701|9702))[);/ ]'
3406
+ regex: '((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))[);/ ]'
2426
3407
  device: 'tablet'
2427
3408
  model: '$1'
2428
3409
 
@@ -2528,12 +3509,17 @@ Mediacom:
2528
3509
 
2529
3510
  # Medion
2530
3511
  Medion:
2531
- regex: 'Medion|(?:MD_)?LIFETAB'
3512
+ regex: 'Medion|(?:MD_)?LIFETAB|X5001[);/ ]|[SPX]10[0-9]{2}X[);/ ]'
2532
3513
  device: 'smartphone'
2533
3514
  models:
2534
3515
  - regex: '(?:MD_)?LIFETAB_([a-z0-9]+)'
2535
3516
  device: 'tablet'
2536
3517
  model: 'Lifetab $1'
3518
+ - regex: 'X5001'
3519
+ model: 'Life X5001'
3520
+ - regex: '([SPX]10[0-9]{2}X)[);/ ]'
3521
+ model: 'Lifetab $1'
3522
+ device: 'tablet'
2537
3523
  - regex: 'Medion(?: Smartphone)? ([^/;]+) Build'
2538
3524
  model: '$1'
2539
3525
 
@@ -2549,17 +3535,19 @@ MEEG:
2549
3535
 
2550
3536
  # Meizu
2551
3537
  Meizu:
2552
- regex: '(M04[05]|M35[1356]|MX[ -]?[234](?: Pro)?|(?:MZ-)?m[12] note|(?:MZ-)?M57[18]C)[);/ ]'
3538
+ regex: 'Meizu|MZ-[a-z]|(M04[05]|M35[1356]|MX[ -]?[2345](?: Pro)?|(?:MZ-)?m[1-6] note|M57[18]C|M3S)[);/ ]'
2553
3539
  device: 'smartphone'
2554
3540
  models:
2555
3541
  - regex: '(?:MZ-)?M571C'
2556
3542
  device: 'phablet'
2557
3543
  model: 'M2 Note'
2558
- - regex: '(?:MZ-)?m(1|2) note[);/ ]'
3544
+ - regex: '(?:MZ-)?m([1-6]) note[);/ ]'
2559
3545
  device: 'phablet'
2560
3546
  model: 'M$1 Note'
2561
3547
  - regex: '(?:MZ-)?M578C'
2562
3548
  model: 'M2'
3549
+ - regex: 'M3S'
3550
+ model: 'M3S'
2563
3551
  - regex: '(M04[05]|MX[ -]?2)[);/ ]'
2564
3552
  model: 'MX2'
2565
3553
  - regex: '(M35[1356]|MX[ -]?3)[);/ ]'
@@ -2568,6 +3556,14 @@ Meizu:
2568
3556
  model: 'MX4 Pro'
2569
3557
  - regex: 'MX[ -]?4[);/ ]'
2570
3558
  model: 'MX4'
3559
+ - regex: 'MX[ -]?5[);/ ]'
3560
+ model: 'MX5'
3561
+ - regex: '(?:MZ-)?Meizu[_ ]([^/;]+) Build'
3562
+ model: '$1'
3563
+ - regex: '(?:MZ-)?Meizu[_ ]([a-z0-9_]+)'
3564
+ model: '$1'
3565
+ - regex: 'MZ-([^/;]+) Build'
3566
+ model: '$1'
2571
3567
 
2572
3568
  # Memup
2573
3569
  Memup:
@@ -2615,6 +3611,16 @@ Mitsubishi:
2615
3611
  - regex: 'portalmmm/[12]\.0 (M[a-z0-9]+)'
2616
3612
  model: '$1'
2617
3613
 
3614
+ # MIXC
3615
+ MIXC:
3616
+ regex: '(M35|M20|G7106|G7108)[ );/]'
3617
+ device: 'smartphone'
3618
+ models:
3619
+ - regex: '(M[0-9]{1,2})[ );/]'
3620
+ model: '$1'
3621
+ - regex: '(G[0-9]{4})[ );/]'
3622
+ model: '$1'
3623
+
2618
3624
  # MSI
2619
3625
  MSI:
2620
3626
  regex: 'Primo ?(?:91|76)|Enjoy 7 Plus'
@@ -2640,10 +3646,27 @@ MLLED:
2640
3646
 
2641
3647
  # Mobistel
2642
3648
  Mobistel:
2643
- regex: '(Cynus [^/;]+) Build'
3649
+ regex: '(Cynus[ _][^/;]+) Build'
2644
3650
  device: 'smartphone'
2645
3651
  model: '$1'
2646
3652
 
3653
+ # Modecom
3654
+ Modecom:
3655
+ regex: 'Modecom|Free(?:Way )?Tab|xino z[\d]+ x[\d]+'
3656
+ device: 'tablet'
3657
+ models:
3658
+ - regex: 'xino Z([\d]+) X([\d]+)'
3659
+ model: 'Xino Z$1 X$2'
3660
+ device: 'smartphone'
3661
+
3662
+ - regex: 'FreeTab[ _\-]?([^/;]+)? Build'
3663
+ model: 'FreeTab $1'
3664
+ - regex: 'FreeTab[ _\-]?((?!Build)[^);/ ]+)?'
3665
+ model: 'FreeTab $1'
3666
+ - regex: 'FreeWay Tab[ _\-]?([^/;]+) Build'
3667
+ model: 'FreeWay Tab $1'
3668
+ - regex: 'FreeWay Tab[ _\-]?((?!Build)[^);/ ]+)'
3669
+ model: 'FreeWay Tab $1'
2647
3670
 
2648
3671
  # Mofut
2649
3672
  Mofut:
@@ -2657,7 +3680,7 @@ Mofut:
2657
3680
 
2658
3681
  # motorola
2659
3682
  Motorola:
2660
- regex: 'MOT|(?<!AN)DROID ?(?:Build|[a-z0-9]+)|portalmmm/2.0 (?:E378i|L6|L7|v3)|XOOM [^;/]*Build|(?:XT|MZ|MB|ME)[0-9]{3,4}[a-z]?(?:\(Defy\))?(?: Build|\))'
3683
+ regex: 'MOT|(?<!AN)DROID ?(?:Build|[a-z0-9]+)|portalmmm/2.0 (?:E378i|L6|L7|v3)|XOOM [^;/]*Build|(?:XT|MZ|MB|ME)[0-9]{3,4}[a-z]?(?:\(Defy\)|-0[1-3])?(?: Build|\))'
2661
3684
  device: 'smartphone'
2662
3685
  models:
2663
3686
  # Explicit feature phone models
@@ -2666,6 +3689,8 @@ Motorola:
2666
3689
  device: 'feature phone'
2667
3690
 
2668
3691
  # Explicit smartphone models
3692
+ - regex: 'Moto G'
3693
+ model: 'Moto G'
2669
3694
  - regex: '(?:MOT-|Motorola-)?XT300'
2670
3695
  model: 'Spice'
2671
3696
  - regex: '(?:MOT-|Motorola-)?XT30[35]'
@@ -2740,6 +3765,8 @@ Motorola:
2740
3765
  model: 'Moto X'
2741
3766
  - regex: '(?:MOT-|Motorola-)?XT1080'
2742
3767
  model: 'Droid Ultra'
3768
+ - regex: '(?:MOT-|Motorola-)?XT1635(?:-0[1-3])?'
3769
+ model: 'Moto Z Play'
2743
3770
 
2744
3771
  - regex: 'Motorola[ _\-]([a-z0-9]+)'
2745
3772
  model: '$1'
@@ -2766,13 +3793,21 @@ Motorola:
2766
3793
 
2767
3794
  # myphone
2768
3795
  MyPhone:
2769
- regex: '(?:MyPhone|MyPad) [^;/]+ Build'
3796
+ regex: '(?:MyPhone|MyPad|MyTab)[ _][^;/]+ Build|Cube_LTE|myTab10II'
2770
3797
  device: 'smartphone'
2771
3798
  models:
2772
- - regex: 'MyPad ([^;/]+) Build'
3799
+ - regex: 'MyPad[ _]([^;/]+) Build'
2773
3800
  model: 'MyPad $1'
2774
3801
  device: 'tablet'
2775
- - regex: 'MyPhone ([^;/]+) Build'
3802
+ - regex: 'MyTab[ _]([^;/]+) Build'
3803
+ model: 'MyTab $1'
3804
+ device: 'tablet'
3805
+ - regex: 'myTab10II'
3806
+ model: 'MyTab 10 II'
3807
+ device: 'tablet'
3808
+ - regex: 'Cube_LTE'
3809
+ model: 'Cube LTE'
3810
+ - regex: 'MyPhone[ _]([^;/]+) Build'
2776
3811
  model: '$1'
2777
3812
 
2778
3813
  # M.T.T.
@@ -2798,6 +3833,16 @@ NEC:
2798
3833
  - regex: '(?:portalmmm|o2imode)/2\.0[ ,](N[a-z0-9]+)'
2799
3834
  model: '$1'
2800
3835
 
3836
+ # Neffos
3837
+ Neffos:
3838
+ regex: 'Neffos'
3839
+ device: 'smartphone'
3840
+ models:
3841
+ - regex: 'Neffos ([^/;]+) Build'
3842
+ model: '$1'
3843
+ - regex: 'Neffos ([^/;]+)/'
3844
+ model: '$1'
3845
+
2801
3846
  # newgen
2802
3847
  Newgen:
2803
3848
  regex: 'NEWGEN\-([a-z0-9]+)'
@@ -2867,6 +3912,16 @@ Noain:
2867
3912
  - regex: 'NOAIN[ _-]([^;/)]+)[;/)]'
2868
3913
  model: '$1'
2869
3914
 
3915
+ # Noblex
3916
+ Noblex:
3917
+ regex: 'Noblex|NBX-'
3918
+ device: 'smartphone'
3919
+ models:
3920
+ - regex: '(?:Noblex|NBX)[ _-]([^;/]+) Build'
3921
+ model: '$1'
3922
+ - regex: '(?:Noblex|NBX)[ _-]([^;/)]+)[;/)]'
3923
+ model: '$1'
3924
+
2870
3925
  # Nomi
2871
3926
  Nomi:
2872
3927
  regex: 'Nomi[ _-]'
@@ -2877,6 +3932,23 @@ Nomi:
2877
3932
  - regex: 'Nomi[ _-]([^;/)]+)[;/)]'
2878
3933
  model: '$1'
2879
3934
 
3935
+ # Nous
3936
+ Nous:
3937
+ regex: 'NS([356]|500[346]|5511) Build'
3938
+ device: 'smartphone'
3939
+ models:
3940
+ - regex: '(NS[0-9]{1,4}) Build'
3941
+ model: '$1'
3942
+
3943
+ # Nvidia
3944
+ Nvidia:
3945
+ regex: '(SHIELD Tablet K1) Build'
3946
+ device: 'tablet'
3947
+ models:
3948
+ - regex: '(SHIELD Tablet K1) Build'
3949
+ model: '$1'
3950
+
3951
+
2880
3952
  # o2
2881
3953
  O2:
2882
3954
  regex: 'Xda|O2[ \-]|COCOON'
@@ -2891,6 +3963,58 @@ O2:
2891
3963
  - regex: 'O2-([a-z0-9]+)'
2892
3964
  model: '$1'
2893
3965
 
3966
+ # Odys
3967
+ Odys:
3968
+ regex: 'ODYS[ _-]|IEOS[_ ]([^/;]+)|NOON(?:_PRO)? Build|SPACE10_(?:PLUS|PRO)_3G|THOR_?10|TAO_X10|RAPID_?(?:10|7)_?LTE|MAVEN_?10_|CONNECT[78]|ELEMENT10_PLUS_3G|XELIO[_0-9P]'
3969
+ device: 'tablet'
3970
+ models:
3971
+ - regex: 'XELIOPHONETAB3'
3972
+ model: 'Xelio Phonetab 3'
3973
+ - regex: 'XELIO_NEXT_10_PLUS_3G'
3974
+ model: 'Xelio Next 10 Plus 3G'
3975
+ - regex: 'XELIO_PHONE_TAB7_3G'
3976
+ model: 'Xelio Phonetab 7 3G'
3977
+ - regex: 'XELIO10EXTREME'
3978
+ model: 'Xelio 10 Xtreme'
3979
+ - regex: 'XELIO10_PLUS_3G'
3980
+ model: 'Xelio 10 Plus 3G'
3981
+ - regex: 'ELEMENT10_PLUS_3G'
3982
+ model: 'Element 10 Plus 3G'
3983
+ - regex: 'CONNECT8PLUS'
3984
+ model: 'Connect 8 Plus'
3985
+ - regex: 'CONNECT7PRO'
3986
+ model: 'Connect 7 Pro'
3987
+ - regex: 'MAVEN_?10_PRO_PLUS_3G'
3988
+ model: 'Maven 10 Pro Plus 3G'
3989
+ - regex: 'MAVEN_?10_?PLUS'
3990
+ model: 'Maven 10 Plus'
3991
+ - regex: 'MAVEN_?10_?PRO'
3992
+ model: 'Maven 10 Pro'
3993
+ - regex: 'MAVEN_?10_?HD'
3994
+ model: 'Maven 10 HD'
3995
+ - regex: 'RAPID_?7_?LTE'
3996
+ model: 'Rapid 7 LTE'
3997
+ - regex: 'RAPID_?10_?LTE'
3998
+ model: 'Rapid 10 LTE'
3999
+ - regex: 'TAO_X10'
4000
+ model: 'Tao X10'
4001
+ - regex: 'SPACE10_PLUS_3G'
4002
+ model: 'Space 10 Plus 3G'
4003
+ - regex: 'SPACE10_PRO_3G'
4004
+ model: 'Space 10 Pro 3G'
4005
+ - regex: 'THOR_?10 Build'
4006
+ model: 'Thor 10'
4007
+ - regex: 'THOR_?10_PLUS_3G'
4008
+ model: 'Thor 10 Plus 3G'
4009
+ - regex: 'IEOS[ _]([^/;]+) Build'
4010
+ model: 'Ieos $1'
4011
+ - regex: '(?:ODYS[ _-])?NOON Build'
4012
+ model: 'Noon'
4013
+ - regex: '(?:ODYS[ _-])?NOON_PRO Build'
4014
+ model: 'Noon Pro'
4015
+ - regex: 'Odys[ _-]([^/;]+) Build'
4016
+ model: '$1'
4017
+
2894
4018
  # onda
2895
4019
  Onda:
2896
4020
  regex: 'Onda'
@@ -2906,9 +4030,29 @@ Onda:
2906
4030
  - regex: 'Onda ([a-z0-9]+)'
2907
4031
  model: '$1'
2908
4032
 
4033
+ # OnePlus
4034
+ OnePlus:
4035
+ regex: '(?:du_)?ONEPLUS|(?:A0001|A2001|A2003|A2005|A3003|A3000|A3010|A5000|E1003) Build'
4036
+ device: 'smartphone'
4037
+ models:
4038
+ - regex: 'A0001'
4039
+ model: 'One'
4040
+ - regex: 'A2001|A2003|A2005'
4041
+ model: '2'
4042
+ - regex: 'E1003'
4043
+ model: 'X'
4044
+ - regex: 'A3003|A3000'
4045
+ model: '3'
4046
+ - regex: 'A3010'
4047
+ model: '3T'
4048
+ - regex: 'A5000'
4049
+ model: '5'
4050
+ - regex: '(?:du_)?ONEPLUS ?([^;/]+) Build'
4051
+ model: '$1'
4052
+
2909
4053
  # oppo
2910
4054
  OPPO:
2911
- regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|(?:X90[07][067]|U707T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057])[KLSTW]?)|N520[79]|N5117[);/ ]'
4055
+ regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|(?:X90[07][0679]|U707T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057])[KLSTW]?)|N520[79]|N5117|A37f[);/ ]|CPH[0-9]{4}'
2912
4056
  device: 'smartphone'
2913
4057
  models:
2914
4058
  - regex: '(?:OPPO[ _]?)?U707T?[);/ ]'
@@ -2919,6 +4063,8 @@ OPPO:
2919
4063
  model: 'Find 7'
2920
4064
  - regex: '(?:OPPO[ _]?)?X900[067][);/ ]'
2921
4065
  model: 'Find 7a'
4066
+ - regex: '(?:OPPO[ _]?)?X9009[);/ ]'
4067
+ model: 'F1 Plus'
2922
4068
  - regex: '(?:OPPO[ _]?)?R8006[);/ ]'
2923
4069
  model: 'R1L'
2924
4070
  - regex: '(?:OPPO[ _]?)?R800[07][);/ ]'
@@ -2947,6 +4093,32 @@ OPPO:
2947
4093
  model: 'N3'
2948
4094
  - regex: '(?:OPPO[ _]?)?N5117[);/ ]'
2949
4095
  model: 'N1 Mini'
4096
+ - regex: '(?:OPPO[ _]?)?CPH1609[);/ ]'
4097
+ model: 'F3'
4098
+ - regex: '(?:OPPO[ _]?)?CPH1707[);/ ]'
4099
+ model: 'R11'
4100
+ - regex: '(?:OPPO[ _]?)?CPH1715[);/ ]'
4101
+ model: 'A77'
4102
+ - regex: '(?:OPPO[ _]?)?CPH1717[);/ ]'
4103
+ model: 'A71'
4104
+ - regex: '(?:OPPO[ _]?)?CPH1719[);/ ]'
4105
+ model: 'R11s'
4106
+ - regex: '(?:OPPO[ _]?)?CPH1721[);/ ]'
4107
+ model: 'R11s Plus'
4108
+ - regex: '(?:OPPO[ _]?)?CPH172[37][);/ ]'
4109
+ model: 'F5'
4110
+ - regex: '(?:OPPO[ _]?)?CPH1725[);/ ]'
4111
+ model: 'F5 Youth'
4112
+ - regex: '(?:OPPO[ _]?)?CPH1607[);/ ]'
4113
+ model: 'R9s'
4114
+ - regex: '(?:OPPO[ _]?)?CPH1611[);/ ]'
4115
+ model: 'R9s Plus'
4116
+ - regex: '(?:OPPO[ _]?)?CPH1613[);/ ]'
4117
+ model: 'F3 Plus'
4118
+ - regex: '(?:OPPO[ _]?)?CPH1701[);/ ]'
4119
+ model: 'A57'
4120
+ - regex: 'A37f'
4121
+ model: 'A37f'
2950
4122
 
2951
4123
  - regex: 'N1T?[);/ ]'
2952
4124
  model: 'N1T'
@@ -2974,16 +4146,22 @@ Opsson:
2974
4146
 
2975
4147
  # orange
2976
4148
  Orange:
2977
- regex: 'SPV[ \-]?([a-z0-9]+)|Orange ([^/;]+) Build|SC/IHD92'
4149
+ regex: 'SPV[ \-]?([a-z0-9]+)|Orange ([^/;]+) Build|SC/IHD92|FunTab ([^/;]+) Build'
2978
4150
  device: 'smartphone'
2979
4151
  models:
4152
+ - regex: 'SC/IHD92'
4153
+ model: 'Livebox Play'
4154
+ device: 'tv' # set top box
4155
+ - regex: 'Sego'
4156
+ model: 'Sego'
4157
+ device: 'tablet'
4158
+ - regex: 'FunTab ([^/;]+) Build'
4159
+ model: 'FunTab $1'
4160
+ device: 'tablet'
2980
4161
  - regex: 'Orange ([^/;]+) Build'
2981
4162
  model: '$1'
2982
4163
  - regex: 'SPV[ \-]?([a-z0-9]+)'
2983
4164
  model: 'SPV $1'
2984
- - regex: 'SC/IHD92'
2985
- model: 'Livebox Play'
2986
- device: 'tv' # set top box
2987
4165
 
2988
4166
  # Ouki
2989
4167
  Ouki:
@@ -3001,14 +4179,21 @@ Ouki:
3001
4179
 
3002
4180
  # Overmax
3003
4181
  Overmax:
3004
- regex: 'OV-[a-z]+(?:[^;/]*) Build'
4182
+ regex: 'OV-[a-z]+(?:[^;(/]*)[();/ ]|Qualcore 1010'
3005
4183
  device: 'tablet'
3006
4184
  models:
3007
- - regex: 'OV-Vertis-([^;/]+) Build'
3008
- model: 'OV-Vertis-$1'
4185
+ - regex: 'OV-V10'
4186
+ model: 'Vertis Yard'
3009
4187
  device: 'smartphone'
4188
+ - regex: 'OV-Vertis[ _-]([^;/]+) Build'
4189
+ model: 'Vertis $1'
4190
+ device: 'smartphone'
4191
+
4192
+ - regex: 'Qualcore 1010'
4193
+ model: 'Qualcore 1010'
4194
+ device: 'tablet'
3010
4195
 
3011
- - regex: '(OV-[a-z]+(?:[^;/]*)) Build'
4196
+ - regex: '(OV-[a-z]+(?:[^;(/]*))(?<!Build)[();/ ]'
3012
4197
  model: '$1'
3013
4198
 
3014
4199
  # Oysters
@@ -3024,9 +4209,13 @@ Oysters:
3024
4209
 
3025
4210
  # panasonic
3026
4211
  Panasonic:
3027
- regex: 'Panasonic|PANATV[0-9]+|Viera/|P902i[);/ ]'
4212
+ regex: 'Panasonic|PANATV[0-9]+|Viera/|P902i[);/ ]|Eluga[ _]'
3028
4213
  device: 'smartphone'
3029
4214
  models:
4215
+ - regex: 'Eluga[ _-]([^;/]+) Build'
4216
+ model: 'Eluga $1'
4217
+ - regex: 'Eluga[ _-]([^;/]+)[;/)]'
4218
+ model: 'Eluga $1'
3030
4219
  - regex: 'P902i[);/ ]'
3031
4220
  device: 'feature phone'
3032
4221
  model: 'P902i'
@@ -3036,19 +4225,42 @@ Panasonic:
3036
4225
  - regex: 'PANATV[0-9]+|Viera/'
3037
4226
  device: 'tv'
3038
4227
  model: 'Smart TV'
3039
- - regex: 'Panasonic[ \-]?([a-z0-9]+)'
4228
+ - regex: 'Panasonic[ _\-]?([a-z0-9]+)'
3040
4229
  model: '$1'
3041
4230
  - regex: 'portalmmm/2.0 (P[a-z0-9]+)'
3042
4231
  model: '$1'
3043
4232
 
4233
+ # Pentagram
4234
+ Pentagram:
4235
+ regex: 'Pentagram|Quadra|Monster X5'
4236
+ device: 'tablet'
4237
+ models:
4238
+ - regex: '(?:PENTAGRAM[_ ])?EON[_ ]PRIX'
4239
+ model: 'Eon Prix'
4240
+ - regex: 'Quadra 7( UltraSlim)?'
4241
+ model: 'Quadra 7 UltraSlim'
4242
+ - regex: 'Monster X5?'
4243
+ model: 'Monster X5'
4244
+ device: 'smartphone'
4245
+ - regex: 'Quadra ?([^);/]*) Build'
4246
+ model: 'Quadra $1'
4247
+ - regex: 'Pentagram ?TAB ?([^);/]*) Build'
4248
+ model: 'Tab $1'
4249
+ - regex: 'Pentagram ?([^);/]*) Build'
4250
+ model: '$1'
4251
+ device: 'smartphone'
4252
+
3044
4253
  # philips
3045
4254
  Philips:
3046
- regex: 'Philips|AND1E[);/ ]|NETTV/'
4255
+ regex: 'Philips|AND1E[);/ ]|NETTV/|PI3210G'
3047
4256
  device: 'smartphone'
3048
4257
  models:
3049
4258
  - regex: 'AND1E(?: TV)?[);/ ]'
3050
4259
  model: 'Android TV'
3051
4260
  device: 'tv'
4261
+ - regex: '(PI3210G)'
4262
+ model: '$1'
4263
+ device: 'tablet'
3052
4264
  - regex: 'Philips, BDP([0-9]{4})'
3053
4265
  model: 'Blu-ray Player (BDP$1)'
3054
4266
  device: 'tv'
@@ -3057,9 +4269,7 @@ Philips:
3057
4269
  device: 'tv'
3058
4270
  - regex: 'Philips-FISIO ([a-z0-9]+)'
3059
4271
  model: 'Fisio $1'
3060
- - regex: 'Philips[ ]?([a-z0-9]+)'
3061
- model: '$1'
3062
- - regex: 'Philips-([a-z0-9\-@]+)'
4272
+ - regex: 'Philips[ _-]?([a-z0-9\-@]+)'
3063
4273
  model: '$1'
3064
4274
 
3065
4275
  # phoneOne
@@ -3138,6 +4348,12 @@ Pomp:
3138
4348
  - regex: 'POMP[ _-]([^;/)]+)[;/)]'
3139
4349
  model: '$1'
3140
4350
 
4351
+ # PPTV
4352
+ PPTV:
4353
+ regex: '(KING 7S?)'
4354
+ device: 'smartphone'
4355
+ model: '$1'
4356
+
3141
4357
  # ProScan
3142
4358
  ProScan:
3143
4359
  regex: 'PLT([^;/]+) Build'
@@ -3188,7 +4404,7 @@ Siemens:
3188
4404
 
3189
4405
  # Samsung
3190
4406
  Samsung:
3191
- regex: 'SAMSUNG|Maple |SC-(?:02C|04E|01F)|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|vollo Vi86[);/ ]|(?:OTV-)?SMT-E5015|ISW11SC'
4407
+ regex: 'SAMSUNG|Maple |SC-(?:02[CH]|04E|01F)|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|vollo Vi86[);/ ]|(?:OTV-)?SMT-E5015|ISW11SC'
3192
4408
  device: 'smartphone'
3193
4409
  models:
3194
4410
  # explicit tv models
@@ -3305,9 +4521,12 @@ Samsung:
3305
4521
  - regex: '(?:SAMSUNG-)?SM-T315'
3306
4522
  device: 'tablet'
3307
4523
  model: 'GALAXY Tab 3 8.0" LTE'
4524
+ - regex: '(?:SAMSUNG-)?SM-T330'
4525
+ device: 'tablet'
4526
+ model: 'GALAXY Tab 4 8.0" WiFi'
3308
4527
  - regex: '(?:SAMSUNG-)?SM-T335'
3309
4528
  device: 'tablet'
3310
- model: 'GALAXY Tab 8.0" LTE'
4529
+ model: 'GALAXY Tab 4 8.0" LTE'
3311
4530
  - regex: '(?:SAMSUNG-)?SM-T520'
3312
4531
  device: 'tablet'
3313
4532
  model: 'GALAXY TabPRO 10.1" WiFi'
@@ -3338,9 +4557,27 @@ Samsung:
3338
4557
  - regex: '(?:SAMSUNG-)?SM-T805'
3339
4558
  device: 'tablet'
3340
4559
  model: 'GALAXY Tab S 10.5" LTE'
4560
+ - regex: '(?:SAMSUNG-)?SM-T813'
4561
+ device: 'tablet'
4562
+ model: 'GALAXY Tab S2 9.7" WiFi'
4563
+ - regex: '(?:SAMSUNG-)?SM-T815'
4564
+ device: 'tablet'
4565
+ model: 'GALAXY Tab S2 9.7" LTE'
3341
4566
  - regex: '(?:SAMSUNG-)?SM-T900'
3342
4567
  device: 'tablet'
3343
4568
  model: 'GALAXY TabPRO 12.2" WiFi'
4569
+ - regex: '(?:SAMSUNG-)?SM-T550'
4570
+ device: 'tablet'
4571
+ model: 'GALAXY Tab A 9.7" WiFi'
4572
+ - regex: '(?:SAMSUNG-)?SM-T555'
4573
+ device: 'tablet'
4574
+ model: 'GALAXY Tab A 9.7" LTE'
4575
+ - regex: '(?:SAMSUNG-)?SM-T580'
4576
+ device: 'tablet'
4577
+ model: 'GALAXY Tab A 10.1" WiFi (2016)'
4578
+ - regex: '(?:SAMSUNG-)?SM-T560'
4579
+ device: 'tablet'
4580
+ model: 'GALAXY Tab E 9.6"'
3344
4581
 
3345
4582
  # explicit smartphone models
3346
4583
  - regex: '(?:SAMSUNG-)?GT-B5330'
@@ -3399,6 +4636,8 @@ Samsung:
3399
4636
  model: 'GALAXY S II Plus'
3400
4637
  - regex: '(?:SAMSUNG-)?(?:GT-I919[05]|SCH-I435)'
3401
4638
  model: 'GALAXY S4 mini'
4639
+ - regex: '(?:SAMSUNG-)?GT-I9515'
4640
+ model: 'GALAXY S4 Value Edition'
3402
4641
  - regex: '(?:SAMSUNG-)?GT-I9295'
3403
4642
  model: 'GALAXY S4 ACTIVE'
3404
4643
  - regex: '(?:SAMSUNG-)?(?:GT-I9300|SCH-I535|SCH-L710)'
@@ -3441,6 +4680,24 @@ Samsung:
3441
4680
  model: 'GALAXY DUOS 2'
3442
4681
  - regex: '(?:SAMSUNG-)?GT-S7710'
3443
4682
  model: 'GALAXY Xcover 2'
4683
+ - regex: '(?:SAMSUNG-)?GT-S8500'
4684
+ model: 'Wave'
4685
+ - regex: '(?:SAMSUNG-)?GT-S8530'
4686
+ model: 'Wave II'
4687
+ - regex: '(?:SAMSUNG-)?GT-S8600'
4688
+ model: 'Wave 3'
4689
+ - regex: '(?:SAMSUNG-)?GT-S5380'
4690
+ model: 'Wave Y'
4691
+ - regex: '(?:SAMSUNG-)?GT-S7250'
4692
+ model: 'Wave M'
4693
+ - regex: '(?:SAMSUNG-)?GT-S5250'
4694
+ model: 'Wave 525'
4695
+ - regex: '(?:SAMSUNG-)?GT-S5330'
4696
+ model: 'Wave 533'
4697
+ - regex: '(?:SAMSUNG-)?GT-S5780'
4698
+ model: 'Wave 578'
4699
+ - regex: '(?:SAMSUNG-)?GT-S7230'
4700
+ model: 'Wave 723'
3444
4701
  - regex: '(?:SAMSUNG-)?SM-C101'
3445
4702
  model: 'GALAXY S4 zoom'
3446
4703
  - regex: '(?:SAMSUNG-)?SM-C115'
@@ -3451,12 +4708,34 @@ Samsung:
3451
4708
  model: 'GALAXY CORE LTE'
3452
4709
  - regex: '(?:SAMSUNG-)?SM-G3815'
3453
4710
  model: 'GALAXY EXPRESS II'
4711
+ - regex: '(?:SAMSUNG-)?SM-G388F'
4712
+ model: 'GALAXY Xcover 3'
4713
+ - regex: '(?:SAMSUNG-)?SM-G390F'
4714
+ model: 'GALAXY Xcover 4'
3454
4715
  - regex: '(?:SAMSUNG-)?SM-G800'
3455
4716
  model: 'GALAXY S5 mini'
3456
4717
  - regex: '(?:SAMSUNG-)?SM-G9009D'
3457
4718
  model: 'GALAXY S5 Dual-SIM'
3458
4719
  - regex: '(?:SAMSUNG-)?SM-G900|GALAXY-S5'
3459
4720
  model: 'GALAXY S5'
4721
+ - regex: '(?:SAMSUNG-)?SM-G901F'
4722
+ model: 'GALAXY S5 LTE+'
4723
+ - regex: '(?:SAMSUNG-)?SM-G903F'
4724
+ model: 'GALAXY S5 Neo'
4725
+ - regex: '(?:SAMSUNG-)?SM-G920F'
4726
+ model: 'GALAXY S6'
4727
+ - regex: '(?:SAMSUNG-)?SM-G925F'
4728
+ model: 'GALAXY S6 edge'
4729
+ - regex: '(?:SAMSUNG-)?SM-G928F'
4730
+ model: 'GALAXY S6 edge+'
4731
+ - regex: '(?:SAMSUNG-)?SM-G930F'
4732
+ model: 'GALAXY S7'
4733
+ - regex: '(?:SAMSUNG-)?SM-G935F|SC-02H'
4734
+ model: 'GALAXY S7 edge'
4735
+ - regex: '(?:SAMSUNG-)?SM-G950F'
4736
+ model: 'GALAXY S8'
4737
+ - regex: '(?:SAMSUNG-)?SM-G955F'
4738
+ model: 'GALAXY S8+'
3460
4739
  - regex: '(?:SAMSUNG-)?SCH-I200'
3461
4740
  model: 'GALAXY Stellar'
3462
4741
  - regex: '(?:SAMSUNG-)?SCH-I829'
@@ -3467,6 +4746,28 @@ Samsung:
3467
4746
  model: 'GALAXY Centura'
3468
4747
  - regex: 'vollo Vi86[);/ ]'
3469
4748
  model: 'Vollo Vi86'
4749
+ - regex: '(?:SAMSUNG-)?SM-A300FU'
4750
+ model: 'GALAXY A3 (2015)'
4751
+ - regex: '(?:SAMSUNG-)?SM-A310F'
4752
+ model: 'GALAXY A3 (2016)'
4753
+ - regex: '(?:SAMSUNG-)?SM-A320FL'
4754
+ model: 'GALAXY A3 (2017)'
4755
+ - regex: '(?:SAMSUNG-)?SM-A500FU'
4756
+ model: 'GALAXY A5 (2015)'
4757
+ - regex: '(?:SAMSUNG-)?SM-A510F'
4758
+ model: 'GALAXY A5 (2016)'
4759
+ - regex: '(?:SAMSUNG-)?SM-A520F'
4760
+ model: 'GALAXY A5 (2017)'
4761
+ - regex: '(?:SAMSUNG-)?GT-I9301I'
4762
+ model: 'GALAXY S III Neo'
4763
+ - regex: '(?:SAMSUNG-)?SM-J320FN?'
4764
+ model: 'GALAXY J3 (2016)'
4765
+ - regex: '(?:SAMSUNG-)?SM-J500FN'
4766
+ model: 'GALAXY J5 (2015)'
4767
+ - regex: '(?:SAMSUNG-)?SM-J510FN'
4768
+ model: 'GALAXY J5 (2016)'
4769
+ - regex: '(?:SAMSUNG-)?SM-G850F'
4770
+ model: 'GALAXY Alpha'
3470
4771
 
3471
4772
  # explicit phablet models
3472
4773
  - regex: '(?:SAMSUNG-)?GT-I9060'
@@ -3511,12 +4812,24 @@ Samsung:
3511
4812
  - regex: '(?:SAMSUNG-)?SM-N915'
3512
4813
  model: 'GALAXY Note 4 Edge'
3513
4814
  device: 'phablet'
4815
+ - regex: '(?:SAMSUNG-)?SM-N920[0CIST]'
4816
+ model: 'GALAXY Note 5'
4817
+ device: 'phablet'
4818
+ - regex: '(?:SAMSUNG-)?SM-N9208'
4819
+ model: 'GALAXY Note 5 Duos'
4820
+ device: 'phablet'
3514
4821
  - regex: '(?:SAMSUNG-)?GT-I915[028]'
3515
4822
  model: 'GALAXY Mega 5.8'
3516
4823
  device: 'phablet'
3517
4824
  - regex: '(?:SAMSUNG-)?GT-I920[05]'
3518
4825
  model: 'GALAXY Mega 6.3'
3519
4826
  device: 'phablet'
4827
+ - regex: '(?:SAMSUNG-)?SM-N930F'
4828
+ model: 'GALAXY Note 7'
4829
+ device: 'phablet'
4830
+ - regex: '(?:SAMSUNG[- ])?SM-N950'
4831
+ model: 'GALAXY Note 8'
4832
+ device: 'phablet'
3520
4833
 
3521
4834
  # explicit feature phones
3522
4835
  - regex: '(?:SAMSUNG-)?GT-E2152'
@@ -3645,6 +4958,34 @@ Smartfren:
3645
4958
  model: '$1'
3646
4959
  device: 'tablet'
3647
4960
 
4961
+ # Smartisan
4962
+ Smartisan:
4963
+ regex: 'SM(?:70[15]|801|901|919)|OD10[35]|YQ60[1357][ /;\)]'
4964
+ device: 'smartphone'
4965
+ models:
4966
+ - regex: 'SM70[15]'
4967
+ model: 'T1'
4968
+ - regex: 'SM801'
4969
+ model: 'T2'
4970
+ - regex: 'SM901'
4971
+ model: 'M1'
4972
+ - regex: 'SM919'
4973
+ model: 'M1L'
4974
+ - regex: 'YQ60[1357]'
4975
+ model: 'U1'
4976
+ - regex: 'OD10[35]'
4977
+ model: 'Pro'
4978
+
4979
+ # STK
4980
+ STK:
4981
+ regex: 'STK[_ ]'
4982
+ device: 'smartphone'
4983
+ models:
4984
+ - regex: 'STK[_ ]([^/;]+) Build'
4985
+ model: '$1'
4986
+ - regex: 'STK[_ ]([a-z0-9]+)'
4987
+ model: '$1'
4988
+
3648
4989
  # Stonex
3649
4990
  Stonex:
3650
4991
  regex: 'STX[ -]([^;/]+)'
@@ -3661,6 +5002,15 @@ SuperSonic:
3661
5002
  device: 'tablet'
3662
5003
  model: '$1'
3663
5004
 
5005
+ # Supra
5006
+ Supra:
5007
+ regex: 'SUPRA ([^;/]+) Build'
5008
+ device: 'smartphone'
5009
+ models:
5010
+ - regex: 'SUPRA ([^;/]+) Build'
5011
+ device: 'tablet'
5012
+ model: '$1'
5013
+
3664
5014
  # Sumvision
3665
5015
  Sumvision:
3666
5016
  regex: '(Cyclone [^/;]+) Build'
@@ -3783,12 +5133,17 @@ Positivo:
3783
5133
 
3784
5134
  # Prestigio
3785
5135
  Prestigio:
3786
- regex: '(?:PMP|PAP)[0-9]+[a-z0-9_]+[);/ ]'
5136
+ regex: '(?:PMP|PAP|PMT|PSP)[0-9]+[a-z0-9_]+[);/ ]'
3787
5137
  device: 'tablet'
3788
5138
  models:
3789
- - regex: '(PMP[0-9]+[a-z0-9_]+)[);/ ]'
5139
+ - regex: 'PMT3277_3G'
5140
+ model: 'MultiPad Ranger 7.0 3G'
5141
+ - regex: 'PMT3287_3G'
5142
+ model: 'MultiPad Ranger 8.0 3G'
5143
+
5144
+ - regex: '(PM[PT][0-9]+[a-z0-9_]+)[);/ ]'
3790
5145
  model: '$1'
3791
- - regex: '(PAP[0-9]+[a-z0-9_]+(?: DUO)?)[);/ ]'
5146
+ - regex: '((?:PAP|PSP)[0-9]+[a-z0-9_]+(?: DUO)?)[);/ ]'
3792
5147
  model: '$1'
3793
5148
  device: 'smartphone'
3794
5149
 
@@ -3886,10 +5241,12 @@ Spice:
3886
5241
 
3887
5242
  # Sharp
3888
5243
  Sharp:
3889
- regex: 'SHARP|SBM|SH-?[0-9]+[a-z]?[);/ ]|AQUOS'
5244
+ regex: 'SHARP|SBM|SH-?[0-9]+[a-z]?[);/ ]|AQUOS|506SH'
3890
5245
  device: 'smartphone'
3891
5246
  models:
3892
5247
  # explicit smartphone models
5248
+ - regex: '506SH'
5249
+ model: 'Aquos Xx3'
3893
5250
  - regex: 'SH-02E'
3894
5251
  model: 'Aquos Phone Zeta'
3895
5252
  - regex: 'SH06D'
@@ -3938,7 +5295,7 @@ Star:
3938
5295
 
3939
5296
  # Kindle
3940
5297
  Amazon:
3941
- regex: 'KF(?:OT|TT|JWI|JWA|SOWI|A[PRS]WI|THWI|SAW[IA])[);/ ]|Kindle|Silk/\d+\.\d+|Amazon (?:Tate|Jem)|AFT[BM]|SD4930UR'
5298
+ regex: 'KF(?:OT|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|SAW[IA]|GIWI)[);/ ]|Kindle|Silk/\d+\.\d+|Amazon (?:Tate|Jem)|AFT[BM]|SD4930UR'
3942
5299
  device: 'tablet'
3943
5300
  models:
3944
5301
  - regex: 'AFTB'
@@ -3947,6 +5304,8 @@ Amazon:
3947
5304
  - regex: 'AFTM'
3948
5305
  model: 'Fire TV stick'
3949
5306
  device: 'tv'
5307
+ - regex: 'KFFOWI[);/ ]'
5308
+ model: 'Fire 7"'
3950
5309
  - regex: 'KFTT[);/ ]'
3951
5310
  model: 'Kindle Fire HD'
3952
5311
  - regex: 'KFJWI[);/ ]|Amazon Jem'
@@ -3967,10 +5326,18 @@ Amazon:
3967
5326
  model: 'Fire HD 6'
3968
5327
  - regex: 'KFASWI[);/ ]'
3969
5328
  model: 'Fire HD 7'
5329
+ - regex: 'KFAUWI[);/ ]'
5330
+ model: 'Fire HD 7 2017'
5331
+ - regex: 'KFGIWI[);/ ]'
5332
+ model: 'Fire HD 8 2016'
5333
+ - regex: 'KFDOWI[);/ ]'
5334
+ model: 'Fire HD 8 2017'
3970
5335
  - regex: 'KFSAWI[);/ ]'
3971
5336
  model: 'Fire HDX 8.9'
3972
5337
  - regex: 'KFSAWA[);/ ]'
3973
5338
  model: 'Fire HDX 8.9 4G'
5339
+ - regex: 'KFTBWI[);/ ]'
5340
+ model: 'Fire HD 10'
3974
5341
  - regex: 'SD4930UR'
3975
5342
  model: 'Fire Phone'
3976
5343
  device: 'smartphone'
@@ -4003,15 +5370,35 @@ T-Mobile:
4003
5370
  - regex: 'T-Mobile[ _]([a-z0-9_ ]+)'
4004
5371
  model: '$1'
4005
5372
 
5373
+ # TB Touch
5374
+ 'TB Touch':
5375
+ regex: 'Ignis [89]'
5376
+ device: 'tablet'
5377
+ models:
5378
+ - regex: 'Ignis ([89])'
5379
+ model: 'Ignis $1'
5380
+
4006
5381
  # Tcl
4007
5382
  TCL:
4008
- regex: 'TCL[ -][a-z0-9]+|TCL[_ -][^;/]+ Build'
5383
+ regex: 'TCL[ -][a-z0-9]+|(TCL[_ -][^;/]+|7040N) Build'
4009
5384
  device: 'smartphone'
4010
5385
  models:
4011
5386
  - regex: 'TCL[_ -]([^;/]+) Build'
4012
5387
  model: '$1'
4013
5388
  - regex: 'TCL[ -]([a-z0-9]+)'
4014
5389
  model: '$1'
5390
+ - regex: '(7040N)'
5391
+ model: '$1'
5392
+
5393
+ # Teclast
5394
+ Teclast:
5395
+ regex: 'Teclast|Tbook'
5396
+ device: 'tablet'
5397
+ models:
5398
+ - regex: 'Tbook[_ -]([^;/]+) Build'
5399
+ model: 'Tbook $1'
5400
+ - regex: 'Teclast[_ -]([^;/]+) Build'
5401
+ model: '$1'
4015
5402
 
4016
5403
  # Tecno Mobile
4017
5404
  Tecno Mobile:
@@ -4025,9 +5412,13 @@ Tecno Mobile:
4025
5412
 
4026
5413
  # Tesco
4027
5414
  Tesco:
4028
- regex: 'Hudl ([^/;]+) Build'
5415
+ regex: 'Hudl ([^/;]+) Build|W032i-C3[);/ ]'
4029
5416
  device: 'tablet'
4030
- model: 'Hudl $1'
5417
+ models:
5418
+ - regex: 'Hudl ([^/;]+) Build'
5419
+ model: 'Hudl $1'
5420
+ - regex: 'W032i-C3[);/ ]'
5421
+ model: 'Op3n Dott'
4031
5422
 
4032
5423
  # teXet
4033
5424
  teXet:
@@ -4087,6 +5478,14 @@ Toplux:
4087
5478
  device: 'feature phone'
4088
5479
  model: '$1'
4089
5480
 
5481
+ # TrekStor
5482
+ TrekStor:
5483
+ regex: 'TrekStor ([^/;]+) Build'
5484
+ device: 'tablet'
5485
+ models:
5486
+ - regex: 'TrekStor ([^/;]+) Build'
5487
+ model: '$1'
5488
+
4090
5489
  # Trevi
4091
5490
  Trevi:
4092
5491
  regex: 'Trevi[ _]|TAB[ _]10[ _]3G[ _]V16|TAB[ _](7|8)[ _]3G[ _]V8|TAB9 3G|MINITAB 3GV|Phablet[ _](?:4|4\.5|5|5\,3|6)[ _]?[CSQ]|REVERSE[ _]5\.5[ _]?Q'
@@ -4146,6 +5545,44 @@ UTStarcom:
4146
5545
  device: 'feature phone'
4147
5546
  model: '$1'
4148
5547
 
5548
+ # Ulefone
5549
+ Ulefone:
5550
+ regex: 'Ulefone|(Armor(?:[ _]2)?|U00[78][ _]Pro|Be[ _]X|Be[ _]Touch(?:[ _][23])?|Be[ _](?:One|Pure)(?:[ _]Lite)?) Build'
5551
+ device: 'smartphone'
5552
+ models:
5553
+ - regex: 'Be[ _]Touch([ _][23])?'
5554
+ model: 'Be Touch$1'
5555
+ - regex: 'Be[ _]Pure[ _]Lite'
5556
+ model: 'Be Pure Lite'
5557
+ - regex: 'Be[ _]Pure'
5558
+ model: 'Be Pure'
5559
+ - regex: 'Be[ _]One[ _]Lite'
5560
+ model: 'Be One Lite'
5561
+ - regex: 'Be[ _]One'
5562
+ model: 'Be One'
5563
+ - regex: 'Be[ _]X'
5564
+ model: 'Be X'
5565
+ - regex: 'U007 Pro'
5566
+ model: 'U007 Pro'
5567
+ - regex: 'U008 Pro'
5568
+ model: 'U008 Pro'
5569
+ - regex: 'Armor[ _]2 Build'
5570
+ model: 'Armor 2'
5571
+ - regex: 'Armor Build'
5572
+ model: 'Armor'
5573
+ - regex: 'Ulefone[ _-]?([^;/]+) Build'
5574
+ model: '$1'
5575
+ - regex: 'Ulefone[ _-]?([^;/)]+)[;/)]'
5576
+ model: '$1'
5577
+
5578
+ # UMIDIGI
5579
+ UMIDIGI:
5580
+ regex: 'UMI(?:DIGI)?[ _]'
5581
+ device: 'smartphone'
5582
+ models:
5583
+ - regex: 'UMI(?:DIGI)?[ _]([^/;]+) Build'
5584
+ model: '$1'
5585
+
4149
5586
  # Uniscope
4150
5587
  Uniscope:
4151
5588
  regex: 'Uniscope'
@@ -4169,6 +5606,9 @@ ViewSonic:
4169
5606
  regex: 'ViewSonic|VSD[0-9]+[);/ ]|ViewPad|ViewPhone'
4170
5607
  device: 'smart display'
4171
5608
  models:
5609
+ - regex: '(?:ViewSonic-)?V500[);/ ]'
5610
+ model: 'V500'
5611
+ device: 'smartphone'
4172
5612
  - regex: '(?:ViewSonic-)?ViewPhone ?([^;/]+) Build'
4173
5613
  model: 'ViewPhone $1'
4174
5614
  device: 'smartphone'
@@ -4202,6 +5642,14 @@ Vertu:
4202
5642
  device: 'feature phone'
4203
5643
  model: '$1'
4204
5644
 
5645
+ # Verykool
5646
+ Verykool:
5647
+ regex: 'verykool'
5648
+ device: 'smartphone'
5649
+ models:
5650
+ - regex: 'verykool[ _]?([^/;]+) Build'
5651
+ model: '$1'
5652
+
4205
5653
  # Videocon
4206
5654
  Videocon:
4207
5655
  regex: 'Videocon[_ \-]|VT75C'
@@ -4214,9 +5662,27 @@ Videocon:
4214
5662
 
4215
5663
  # Vodafone
4216
5664
  Vodafone:
4217
- regex: 'Vodafone[ _-]|Smart ?Tab ?(?:III? ?)?(?:|4G|7|10)[);/ -]|VodafoneSmartChat'
4218
- device: 'smartphone'
4219
- models:
5665
+ regex: 'Vodafone[ _-]|Smart ?Tab ?(?:III? ?)?(?:|4G|7|10)[);/ -]|VodafoneSmartChat|VFD[ _][0-9]+[;/) ]'
5666
+ device: 'smartphone'
5667
+ models:
5668
+ - regex: 'VFD 100'
5669
+ model: 'Smart Mini'
5670
+ - regex: 'VFD 200'
5671
+ model: 'Smart First 7'
5672
+ - regex: 'VFD 300'
5673
+ model: 'Smart Mini 7'
5674
+ - regex: 'VFD 50[02]'
5675
+ model: 'Smart Turbo 7'
5676
+ - regex: 'VFD 51[013]'
5677
+ model: 'Smart E8'
5678
+ - regex: 'VFD 600'
5679
+ model: 'Smart Prime 7'
5680
+ - regex: 'VFD 610'
5681
+ model: 'Smart N8'
5682
+ - regex: 'VFD 700'
5683
+ model: 'Smart Ultra 7'
5684
+ - regex: 'VFD 900'
5685
+ model: 'Smart Platinum 7'
4220
5686
  - regex: 'Vodafone[ _]875[);/ ]'
4221
5687
  model: 'Smart Mini' # Alcatel
4222
5688
  - regex: 'Vodafone[ _]975N?[);/ ]'
@@ -4231,6 +5697,15 @@ Vodafone:
4231
5697
  model: 'Smart Chat'
4232
5698
 
4233
5699
  # explicit table models
5700
+ - regex: 'VFD 1100'
5701
+ device: 'tablet'
5702
+ model: 'Tab Mini 7'
5703
+ - regex: 'VFD 1300'
5704
+ device: 'tablet'
5705
+ model: 'Smart Tab N8'
5706
+ - regex: 'VFD 1400'
5707
+ device: 'tablet'
5708
+ model: 'Tab Prime 7'
4234
5709
  - regex: 'Smart ?Tab ?3G'
4235
5710
  device: 'tablet'
4236
5711
  model: 'Smart Tab 3G'
@@ -4256,6 +5731,8 @@ Vodafone:
4256
5731
  model: 'Smart Tab III 10' # Lenovo
4257
5732
  device: 'tablet'
4258
5733
 
5734
+ - regex: 'VFD[ _]([0-9]+)[;/) ]'
5735
+ model: 'VFD $1'
4259
5736
  - regex: 'Vodafone[ _-]([^;/]+) Build'
4260
5737
  model: '$1'
4261
5738
  - regex: 'Vodafone[ _-]([a-z0-9_-]+)'
@@ -4325,16 +5802,16 @@ Wexler:
4325
5802
 
4326
5803
  # Wiko
4327
5804
  Wiko:
4328
- regex: '(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink.*|Highway.*|Iggy|Stairway|Rainbow|Darkside|Darkmoon|Darkfull|Darknight|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom|Getaway|Goa|Kite|Lenny|Slide|Sunset|Wax|Ridge(?: Fab)?)(?: 4G)? Build'
5805
+ regex: '(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink([^/;]*)|Highway([^/;]*)|Iggy|Stairway|Rainbow ?(Jam|Lite|Up)?|Darkside|Darkmoon|Darkfull|Darknight|Freddy|Jerry[2]?|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom|Getaway|Goa|Kite|Lenny[234]?(?: Plus)?|Slide|Sunset2?|Sunny[2]?(?: Plus)?|Tommy[2]?|PULP|Wax|Ridge(?: Fab)?)(?: 4G)? Build'
4329
5806
  device: 'smartphone'
4330
5807
  models:
4331
5808
  - regex: '(?:WIKO-)?CINK_([a-z0-9_]+)'
4332
5809
  model: 'Cink $1'
4333
- - regex: '(?:Wiko-)?Cink(.*) Build'
5810
+ - regex: '(?:Wiko-)?Cink([^/;]*) Build'
4334
5811
  model: 'Cink$1'
4335
5812
  - regex: '(?:WIKO-)?HIGHWAY_([a-z0-9_]+)'
4336
5813
  model: 'Highway $1'
4337
- - regex: '(?:Wiko-)?Highway(.*) Build'
5814
+ - regex: '(?:Wiko-)?Highway([^/;]*) Build'
4338
5815
  model: 'Highway$1'
4339
5816
  - regex: '(?:WIKO-)?Iggy Build'
4340
5817
  model: 'Iggy'
@@ -4348,8 +5825,8 @@ Wiko:
4348
5825
  model: 'Ridge 4G'
4349
5826
  - regex: '(?:WIKO-)?Rainbow Build'
4350
5827
  model: 'Rainbow'
4351
- - regex: '(?:WIKO-)?Rainbow 4G Build'
4352
- model: 'Rainbow 4G'
5828
+ - regex: '(?:WIKO-)?Rainbow ([^/;]+) Build'
5829
+ model: 'Rainbow $1'
4353
5830
  - regex: '(?:WIKO-)?Darkside Build'
4354
5831
  model: 'Darkside'
4355
5832
  - regex: '(?:WIKO-)?Darkmoon Build'
@@ -4370,20 +5847,58 @@ Wiko:
4370
5847
  model: 'Bloom'
4371
5848
  - regex: '(?:WIKO-)?JIMMY Build'
4372
5849
  model: 'Jimmy'
5850
+ - regex: '(?:WIKO-)?Jerry Build'
5851
+ model: 'Jerry'
5852
+ - regex: '(?:WIKO-)?Jerry2 Build'
5853
+ model: 'Jerry 2'
4373
5854
  - regex: '(?:WIKO-)?Getaway Build'
4374
5855
  model: 'Getaway'
4375
5856
  - regex: '(?:WIKO-)?Goa Build'
4376
5857
  model: 'Goa'
5858
+ - regex: '(?:WIKO-)?Freddy Build'
5859
+ model: 'Freddy'
4377
5860
  - regex: '(?:WIKO-)?Kite Build'
4378
5861
  model: 'Kite'
4379
5862
  - regex: '(?:WIKO-)?Lenny Build'
4380
5863
  model: 'Lenny'
5864
+ - regex: '(?:WIKO-)?Lenny[ -_]?2 Build'
5865
+ model: 'Lenny 2'
5866
+ - regex: '(?:WIKO-)?Lenny[ -_]?3 Build'
5867
+ model: 'Lenny 3'
5868
+ - regex: '(?:WIKO-)?Lenny[ -_]?4 Build'
5869
+ model: 'Lenny 4'
5870
+ - regex: '(?:WIKO-)?Lenny[ -_]?4 Plus Build'
5871
+ model: 'Lenny 4 Plus'
4381
5872
  - regex: '(?:WIKO-)?Slide Build'
4382
5873
  model: 'Slide'
4383
5874
  - regex: '(?:WIKO-)?Sunset Build'
4384
5875
  model: 'Sunset'
5876
+ - regex: '(?:WIKO-)?Sunset2 Build'
5877
+ model: 'Sunset 2'
5878
+ - regex: '(?:WIKO-)?Sunny Build'
5879
+ model: 'Sunny'
5880
+ - regex: '(?:WIKO-)?Sunny2 Build'
5881
+ model: 'Sunny 2'
5882
+ - regex: '(?:WIKO-)?Sunny2 Plus Build'
5883
+ model: 'Sunny 2 Plus'
5884
+ - regex: '(?:WIKO-)?Tommy Build'
5885
+ model: 'Tommy'
5886
+ - regex: '(?:WIKO-)?Tommy2 Build'
5887
+ model: 'Tommy 2'
4385
5888
  - regex: '(?:WIKO-)?Wax Build'
4386
5889
  model: 'Wax'
5890
+ - regex: '(?:WIKO-)?Pulp Build'
5891
+ model: 'Pulp'
5892
+
5893
+ # Wileyfox
5894
+ Wileyfox:
5895
+ regex: '(?:Wileyfox [^/]+)|Swift([^/]+) Build'
5896
+ device: 'smartphone'
5897
+ models:
5898
+ - regex: 'Wileyfox ([^/]+) Build'
5899
+ model: '$1'
5900
+ - regex: 'Swift ([^/]+) Build'
5901
+ model: 'Swift $1'
4387
5902
 
4388
5903
  # Wolder
4389
5904
  Wolder:
@@ -4396,6 +5911,12 @@ Wolder:
4396
5911
  device: 'tablet'
4397
5912
  model: 'miTab $1'
4398
5913
 
5914
+ # Wolfgang
5915
+ Wolfgang:
5916
+ regex: 'AT[ _-]AS([0-9A-Z]+)[);/ ]'
5917
+ device: 'smartphone'
5918
+ model: 'AT-AS$1'
5919
+
4399
5920
  # Wonu
4400
5921
  Wonu:
4401
5922
  regex: 'Wonu ([a-z0-9]+)'
@@ -4404,13 +5925,13 @@ Wonu:
4404
5925
 
4405
5926
  # Woxter
4406
5927
  Woxter:
4407
- regex: 'Woxter ([^/;]+) Build'
5928
+ regex: 'Woxter[ _]([^/;]+) Build'
4408
5929
  device: 'tablet'
4409
5930
  model: '$1'
4410
5931
 
4411
5932
  #Xiaomi
4412
5933
  Xiaomi:
4413
- regex: 'Xiaomi|(MI [a-z0-9]+|MI-One[ _]?[a-z0-9]+)[);/ ]|HM ([^/;]+) Build|(2014501|2014011|201481[13]|201302[23]|2013061) Build|Redmi'
5934
+ regex: 'Xiaomi|(MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+)[);/ ]|HM ([^/;]+) (?:Build|MIUI)|(2014501|2014011|201481[13]|201302[23]|2013061) Build|Redmi'
4414
5935
  device: 'smartphone'
4415
5936
  models:
4416
5937
  # specific smartphone models
@@ -4424,23 +5945,25 @@ Xiaomi:
4424
5945
  model: 'Hongmi'
4425
5946
  - regex: 'Xiaomi_2013061|2013061 Build'
4426
5947
  model: 'MI 3'
5948
+ - regex: 'Mi-4c[);/ ]'
5949
+ model: 'MI 4C'
4427
5950
 
4428
- - regex: 'Redmi Note ([^;/]+)? Build'
5951
+ - regex: 'Redmi Note ([^;/]+)? .+?\)'
4429
5952
  model: 'Redmi Note $1'
4430
5953
  device: 'phablet'
4431
- - regex: 'Redmi ([^;/]+)? Build'
5954
+ - regex: 'Redmi ([^;/]+)? .+?\)'
4432
5955
  model: 'Redmi $1'
4433
- - regex: 'MI Note ([^;/]+)? Build'
5956
+ - regex: 'MI Note ([^;/]+)? .+?\)'
4434
5957
  model: 'MI Note $1'
4435
5958
  device: 'phablet'
4436
5959
  - regex: '(MI(?:-One)?[ _](?:[^;/]*))Build'
4437
5960
  model: '$1'
4438
5961
  - regex: '(MI [a-z0-9]+|MI-One[ _]?[a-z0-9]+)[);/ ]'
4439
5962
  model: '$1'
4440
- - regex: 'HM Note ([^/;]+) Build'
5963
+ - regex: 'HM Note ([^/;]+) (?:Build|MIUI)'
4441
5964
  device: 'phablet'
4442
5965
  model: 'HM Note $1'
4443
- - regex: 'HM ([^/;]+) Build'
5966
+ - regex: 'HM ([^/;]+) (?:Build|MIUI)'
4444
5967
  model: 'HM $1'
4445
5968
 
4446
5969
  # Xolo
@@ -4532,7 +6055,7 @@ Zonda:
4532
6055
 
4533
6056
  # Toshiba
4534
6057
  Toshiba:
4535
- regex: 'Toshiba|TSBNetTV/|portalmmm/[12].0 TS|T-01C|T-0[12]D|IS04|IS11T|AT1S0|AT300SE|AT(100|200|270|300|330|374|400|470|500|503|570|703|830)'
6058
+ regex: 'Toshiba|TSBNetTV/|portalmmm/[12].0 TS|T-01C|T-0[12]D|IS04|IS11T|AT1S0|AT300SE|AT(10-A|10[PL]E-A|100|200|270|300|330|374|400|470|500|503|570|703|830)'
4536
6059
  device: 'smartphone'
4537
6060
  models:
4538
6061
  # explicit smartphone models
@@ -4560,6 +6083,12 @@ Toshiba:
4560
6083
  - regex: 'AT(100|200|270|300|330|374|400|470|500|503|570|703|830)'
4561
6084
  model: 'Regza AT$1'
4562
6085
  device: 'tablet'
6086
+ - regex: 'AT10([PL])E-A'
6087
+ model: 'Excite AT10$1-A'
6088
+ device: 'tablet'
6089
+ - regex: 'AT10-A'
6090
+ model: 'Excite AT10-A'
6091
+ device: 'tablet'
4563
6092
 
4564
6093
  - regex: 'TSBNetTV/'
4565
6094
  device: 'tv'
@@ -4573,7 +6102,7 @@ Toshiba:
4573
6102
 
4574
6103
  # Fly
4575
6104
  Fly:
4576
- regex: 'Fly(?!Flow|touch)|MERIDIAN-|(?:IQ[0-9]{3,})[ _]?(?:Quad|Firebird|Quattro|Turbo|Magic)?(?: Build|[;/\)])'
6105
+ regex: 'Fly(?!Flow|touch)|FS50[1-9]|FS511|FS551|FS40[1-7]|FS452|FS451|FS454|4FS06|MERIDIAN-|(?:IQ[0-9]{3,})[ _]?(?:Quad|Firebird|Quattro|Turbo|Magic)?(?: Build|[;/\)])'
4577
6106
  device: 'smartphone'
4578
6107
  models:
4579
6108
  - regex: '(?:Fly_)?IQ310(?: Build|[;/\)])'
@@ -4582,6 +6111,44 @@ Fly:
4582
6111
 
4583
6112
  - regex: '(?:Fly_)?IQ236(?: Build|[;/\)])'
4584
6113
  model: 'Victory'
6114
+ - regex: 'FS506'
6115
+ model: 'Cirrus 3'
6116
+ - regex: 'FS403'
6117
+ model: 'Cumulus 1'
6118
+ - regex: 'FS508'
6119
+ model: 'Cirrus 6'
6120
+ - regex: 'FS511'
6121
+ model: 'Cirrus 7'
6122
+ - regex: 'FS509'
6123
+ model: 'Nimbus 9'
6124
+ - regex: 'FS406'
6125
+ model: 'Stratus 5'
6126
+ - regex: 'FS404'
6127
+ model: 'Stratus 3'
6128
+ - regex: 'FS504'
6129
+ model: 'Cirrus 2'
6130
+ - regex: 'FS407'
6131
+ model: 'Stratus 6'
6132
+ - regex: 'FS401'
6133
+ model: 'Stratus 1'
6134
+ - regex: 'FS402'
6135
+ model: 'Stratus 2'
6136
+ - regex: 'FS501'
6137
+ model: 'Nimbus 3'
6138
+ - regex: 'FS502'
6139
+ model: 'Cirrus 1'
6140
+ - regex: 'FS505'
6141
+ model: 'Nimbus 7'
6142
+ - regex: 'FS551'
6143
+ model: 'Nimbus 4'
6144
+ - regex: 'FS454'
6145
+ model: 'Nimbus 8'
6146
+ - regex: 'FS452'
6147
+ model: 'Nimbus 2'
6148
+ - regex: 'FS451'
6149
+ model: 'Nimbus 1'
6150
+ - regex: 'FS405'
6151
+ model: 'Stratus 4'
4585
6152
  - regex: '(?:Fly_)?IQ237(?: Build|[;/\)])'
4586
6153
  model: 'Dynamic'
4587
6154
  - regex: '(?:Fly_)?IQ238(?: Build|[;/\)])'
@@ -4652,6 +6219,8 @@ Fly:
4652
6219
  model: 'Energy 2'
4653
6220
  - regex: '(?:Fly_)?IQ4412 Quad(?: Build|[;/\)])'
4654
6221
  model: 'Coral'
6222
+ - regex: '(?:Fly_)?IQ4413[ _]Quad(?: Build|[;/\)])'
6223
+ model: 'Evo Chic 3'
4655
6224
  - regex: '(?:Fly_)?IQ4414 Quad(?: Build|[;/\)])'
4656
6225
  model: 'Evo Tech 3'
4657
6226
  - regex: '(?:Fly_)?IQ4415 Quad(?: Build|[;/\)])'
@@ -4673,11 +6242,31 @@ Fly:
4673
6242
  - regex: 'MERIDIAN-([a-z0-9]+)'
4674
6243
  model: '$1'
4675
6244
 
4676
- # Devices with undectable brand, but detectable model
4677
- Unknown:
4678
- regex: 'WebTV/(\d+\.\d+)'
4679
- device: 'tv'
4680
- model: 'Web TV'
6245
+ # Freetel
6246
+ Freetel:
6247
+ regex: '(FTJ152[ABCD]|FT141B|FT142D_LTEXM|FT142A?|FTJ161B|FTJ152E|FTJ162D) Build'
6248
+ device: 'smartphone'
6249
+ models:
6250
+ - regex: 'FTJ152C'
6251
+ model: 'Samurai Miyabi'
6252
+ - regex: 'FT141B'
6253
+ model: 'Nico'
6254
+ - regex: 'FT142D_LTEXM'
6255
+ model: 'XM'
6256
+ - regex: 'FT142A?'
6257
+ model: 'Priori 2'
6258
+ - regex: 'FTJ152A'
6259
+ model: 'Priori 3'
6260
+ - regex: 'FTJ162D'
6261
+ model: 'Priori 4'
6262
+ - regex: 'FTJ152B'
6263
+ model: 'Priori 3S LTE'
6264
+ - regex: 'FTJ152D'
6265
+ model: 'Samurai Kiwami'
6266
+ - regex: 'FTJ161B'
6267
+ model: 'Samurai Rei'
6268
+ - regex: 'FTJ152E'
6269
+ model: 'Katana 1'
4681
6270
 
4682
6271
  # Zeemi
4683
6272
  Zeemi:
@@ -4697,7 +6286,7 @@ Zopo:
4697
6286
 
4698
6287
  # ZTE
4699
6288
  ZTE:
4700
- regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade S6|N9[15]8St|NX(?:403A|40[X2]|507J|503A|505J|506J|508J|510J|511J|513J|601J)|Z331|N9510|N9180|N9101|N9515|N952[01]|N9810|N799D|[UV]9180|[UV]9815|Z768G)[);/ ]'
6289
+ regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:L[2357]|S6|V[678]|X7|A520)|N9[15]8St|NX(?:403A|40[X2]|507J|503A|505J|506J|508J|510J|511J|513J|529J|531J|549J|601J)|Z331|N9510|N9180|N9101|NX406E|N9515|N952[01]|N9810|N799D|[UV]9180|[UV]9815|Z768G|Z820|Z981|A460)[);/ ]'
4701
6290
  device: 'smartphone'
4702
6291
  models:
4703
6292
  # explicit smartphone models
@@ -4739,6 +6328,12 @@ ZTE:
4739
6328
  model: 'Nubia Z9 mini'
4740
6329
  - regex: 'NX510J[);/ ]'
4741
6330
  model: 'Nubia Z9 max'
6331
+ - regex: 'NX531J[);/ ]'
6332
+ model: 'Nubia Z11'
6333
+ - regex: 'NX529J[);/ ]'
6334
+ model: 'Nubia Z11 mini'
6335
+ - regex: 'NX549J[);/ ]'
6336
+ model: 'Nubia Z11 mini S'
4742
6337
  - regex: 'NX513J[);/ ]'
4743
6338
  model: 'Nubia My Prague'
4744
6339
  - regex: 'NX601J[);/ ]'
@@ -4749,10 +6344,44 @@ ZTE:
4749
6344
  model: 'Grand Memo'
4750
6345
  - regex: 'Z331[);/ ]'
4751
6346
  model: 'Z331'
6347
+ - regex: 'Blade A520[);/ ]'
6348
+ model: 'Blade A520'
6349
+ - regex: 'Blade L2 Plus[);/ ]'
6350
+ model: 'Blade L2 Plus'
6351
+ - regex: 'Blade L2[);/ ]'
6352
+ model: 'Blade L2'
6353
+ - regex: 'Blade L3 Plus[);/ ]'
6354
+ model: 'Blade L3 Plus'
6355
+ - regex: 'Blade L3[);/ ]'
6356
+ model: 'Blade L3'
6357
+ - regex: 'Blade L5[);/ ]'
6358
+ model: 'Blade L5'
4752
6359
  - regex: 'Blade S6[);/ ]'
4753
6360
  model: 'Blade S6'
6361
+ - regex: 'Blade V6 MAX[);/ ]'
6362
+ model: 'Blade V6 Max'
6363
+ - regex: 'Blade V6 Plus[);/ ]'
6364
+ model: 'Blade V6 Plus'
6365
+ - regex: 'Blade V6[);/ ]'
6366
+ model: 'Blade V6'
6367
+ - regex: 'Blade L7[);/ ]'
6368
+ model: 'Blade L7'
6369
+ - regex: 'Blade V7[);/ ]'
6370
+ model: 'Blade V7'
6371
+ - regex: 'Blade X7[);/ ]'
6372
+ model: 'Blade X7'
6373
+ - regex: 'Blade V8 SE[);/ ]'
6374
+ model: 'Blade V8 SE'
4754
6375
  - regex: 'Z768G[);/ ]'
4755
6376
  model: 'Midnight'
6377
+ - regex: 'Z820[);/ ]'
6378
+ model: 'Obsidian'
6379
+ - regex: 'Z981[);/ ]'
6380
+ model: 'ZMAX Pro'
6381
+ - regex: 'Blade (A460)'
6382
+ model: 'Blade $1'
6383
+ - regex: 'NX406E[);/ ]'
6384
+ model: 'Nubia Z5S'
4756
6385
 
4757
6386
  - regex: 'AxonPhone ([^;/]+) Build'
4758
6387
  model: 'AxonPhone $1'
@@ -4767,21 +6396,15 @@ ZTE:
4767
6396
  model: '$1'
4768
6397
  - regex: 'ZTE[ _]([a-z0-9]+)'
4769
6398
  model: '$1'
6399
+ # Zen'
6400
+ Zen:
6401
+ regex: '(Admire[_ ][^/;]+|Cinemax[^/;)]+)(?:Build|\) U)'
6402
+ device: 'smartphone'
6403
+ model: '$1'
4770
6404
 
4771
- # Symbian to Nokia ??
4772
- # Change name from Nokia to other to not change above Nokia element
4773
- #Nokia:
4774
- # regex: 'Symbian'
4775
- # device: 'feature phone'
6405
+ # Devices with undectable brand, but detectable model
6406
+ Unknown:
6407
+ regex: 'WebTV/(\d+\.\d+)'
6408
+ device: 'tv'
6409
+ model: 'Web TV'
4776
6410
 
4777
- # OnePlus
4778
- OnePlus:
4779
- regex: '(?:A0001|A2005|E1003) Build'
4780
- device: 'smartphone'
4781
- models:
4782
- - regex: 'A0001'
4783
- model: 'One'
4784
- - regex: 'A2005'
4785
- model: 'Two'
4786
- - regex: 'E1003'
4787
- model: 'X'