device_detector 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,6 +22,7 @@ class DeviceDetector
22
22
 
23
23
  DEVICE_BRANDS = {
24
24
  '5E' => '2E',
25
+ '5IV' => '5IVE',
25
26
  '2F' => 'F2 Mobile',
26
27
  '3Q' => '3Q',
27
28
  'J7' => '7 Mobile',
@@ -31,22 +32,27 @@ class DeviceDetector
31
32
  '04' => '4ife',
32
33
  '36' => '360',
33
34
  '88' => '8848',
35
+ '10M' => '10moons',
34
36
  '41' => 'A1',
35
37
  '00' => 'Accent',
38
+ 'ACC' => 'Accesstyle',
36
39
  'AE' => 'Ace',
37
40
  'AC' => 'Acer',
38
41
  '3K' => 'Acteck',
39
42
  'ACT' => 'actiMirror',
40
43
  'A9' => 'Advan',
41
44
  'AD' => 'Advance',
45
+ 'ADV' => 'Advantage Air',
42
46
  '76' => 'Adronix',
43
47
  'AF' => 'AfriOne',
44
48
  'FY' => 'AFFIX',
45
49
  'A3' => 'AGM',
50
+ 'AEE' => 'AEEZO',
46
51
  'J0' => 'AG Mobile',
47
52
  'AZ' => 'Ainol',
48
53
  'AIR' => 'Airis',
49
54
  'AI' => 'Airness',
55
+ 'ARP' => 'Airpha',
50
56
  'AT' => 'Airties',
51
57
  '7U' => 'Airtel',
52
58
  'U0' => 'AIRON',
@@ -60,6 +66,7 @@ class DeviceDetector
60
66
  'AL' => 'Alcatel',
61
67
  '20' => 'Alcor',
62
68
  'XY' => 'Alps',
69
+ 'XYA' => 'XY Auto',
63
70
  '7L' => 'ALDI NORD',
64
71
  '6L' => 'ALDI SÜD',
65
72
  '3L' => 'Alfawise',
@@ -67,17 +74,20 @@ class DeviceDetector
67
74
  'AA' => 'AllCall',
68
75
  '3A' => 'AllDocube',
69
76
  'A2' => 'Allview',
77
+ 'ALI' => 'ALLINmobile',
70
78
  'A7' => 'Allwinner',
71
79
  'A1' => 'Altech UEC',
72
80
  '66' => 'Altice',
73
81
  'A5' => 'altron',
74
82
  'KN' => 'Amazon',
83
+ 'AMA' => 'AMA',
75
84
  'AG' => 'AMGOO',
76
85
  '9A' => 'Amigoo',
77
86
  'AO' => 'Amoi',
78
87
  '3J' => 'Amino',
79
88
  '54' => 'AMCV',
80
89
  '60' => 'Andowl',
90
+ 'ANX' => 'ANXONIT',
81
91
  '6J' => 'Angelcare',
82
92
  '7A' => 'Anry',
83
93
  'A0' => 'ANS',
@@ -105,6 +115,7 @@ class DeviceDetector
105
115
  '1U' => 'Astro',
106
116
  'A4' => 'Ask',
107
117
  'A8' => 'Assistant',
118
+ 'ASS' => 'ASSE',
108
119
  'AU' => 'Asus',
109
120
  '6A' => 'AT&T',
110
121
  'ATH' => 'Athesi',
@@ -113,6 +124,7 @@ class DeviceDetector
113
124
  '2A' => 'Atom',
114
125
  'ATO' => 'ATOL',
115
126
  'Z2' => 'Atvio',
127
+ 'ATI' => 'Attila',
116
128
  'AX' => 'Audiovox',
117
129
  'AJ' => 'AURIS',
118
130
  'YZ' => 'Autan',
@@ -128,13 +140,16 @@ class DeviceDetector
128
140
  'WW' => 'Awow',
129
141
  'XU' => 'AUX',
130
142
  'BAC' => 'Backcell',
143
+ 'BFF' => 'BAFF',
131
144
  'BO' => 'BangOlufsen',
132
145
  'BN' => 'Barnes & Noble',
146
+ 'BAR' => 'BARTEC',
133
147
  'BB' => 'BBK',
134
148
  '0B' => 'BB Mobile',
135
149
  'B6' => 'BDF',
136
150
  'QD' => 'BDQ',
137
151
  '8Z' => 'BDsharing',
152
+ 'BEF' => 'Beafon',
138
153
  'BE' => 'Becker',
139
154
  'B5' => 'Beeline',
140
155
  'B0' => 'Beelink',
@@ -144,6 +159,7 @@ class DeviceDetector
144
159
  'BS' => 'BenQ-Siemens',
145
160
  '4Y' => 'Benzo',
146
161
  'XJ' => 'Benesse',
162
+ 'BEN' => 'BenWee',
147
163
  'YB' => 'Beista',
148
164
  'BY' => 'BS Mobile',
149
165
  'BZ' => 'Bezkam',
@@ -163,10 +179,12 @@ class DeviceDetector
163
179
  'BK' => 'Bkav',
164
180
  '5B' => 'Black Bear',
165
181
  'BF' => 'Black Fox',
182
+ 'BPC' => 'Blackpcs',
166
183
  'B2' => 'Blackview',
167
184
  '2Y' => 'b2m',
168
185
  'BP' => 'Blaupunkt',
169
186
  'BU' => 'Blu',
187
+ 'BUS' => 'BluSlate',
170
188
  'BUZ' => 'BuzzTV',
171
189
  'B3' => 'Bluboo',
172
190
  '2B' => 'Bluedot',
@@ -180,14 +198,19 @@ class DeviceDetector
180
198
  'BLI' => 'BLISS',
181
199
  'BM' => 'Bmobile',
182
200
  'Y5' => 'BMAX',
201
+ 'BMX' => 'BMXC',
183
202
  'B9' => 'Bobarry',
184
203
  'B4' => 'bogo',
204
+ 'BOL' => 'Bolva',
185
205
  'BW' => 'Boway',
186
206
  'BOO' => 'Boost',
207
+ 'BOK' => 'Bookeen',
187
208
  'BX' => 'bq',
188
209
  '8B' => 'Brandt',
189
210
  'BRA' => 'BrandCode',
190
211
  'BV' => 'Bravis',
212
+ 'BRV' => 'BRAVE',
213
+ 'BRG' => 'Brigmton',
191
214
  'BR' => 'Brondi',
192
215
  'XF' => 'BROR',
193
216
  'BJ' => 'BrightSign',
@@ -207,6 +230,7 @@ class DeviceDetector
207
230
  'BC' => 'Camfone',
208
231
  'CJ' => 'Cavion',
209
232
  '4D' => 'Canal Digital',
233
+ 'CNG' => 'Canguro',
210
234
  'CEI' => 'Ceibal',
211
235
  '02' => 'Cell-C',
212
236
  'CEL' => 'Cellacom',
@@ -223,6 +247,7 @@ class DeviceDetector
223
247
  'U9' => 'China Telecom',
224
248
  'CI' => 'Chico Mobile',
225
249
  'CIP' => 'CipherLab',
250
+ 'CIT' => 'Citycall',
226
251
  '1C' => 'Chuwi',
227
252
  'L8' => 'Clarmin',
228
253
  '25' => 'Claresta',
@@ -246,6 +271,7 @@ class DeviceDetector
246
271
  '3C' => 'Contixo',
247
272
  '8C' => 'Connex',
248
273
  '53' => 'Connectce',
274
+ 'CON' => 'Conceptum',
249
275
  '9C' => 'Colors',
250
276
  'CO' => 'Coolpad',
251
277
  'COO' => 'Coopers',
@@ -263,13 +289,16 @@ class DeviceDetector
263
289
  '0C' => 'Crony',
264
290
  'C1' => 'Crosscall',
265
291
  '4W' => 'Crown',
292
+ 'CTR' => 'Ctroniq',
266
293
  'CU' => 'Cube',
267
294
  'CB' => 'CUBOT',
268
295
  'CV' => 'CVTE',
296
+ 'CWO' => 'Cwowdefu',
269
297
  'C4' => 'Cyrus',
270
298
  'D5' => 'Daewoo',
271
299
  'DA' => 'Danew',
272
300
  'DAN' => 'Dany',
301
+ 'DA1' => 'DangcapHD',
273
302
  'DT' => 'Datang',
274
303
  'D7' => 'Datawind',
275
304
  '7D' => 'Datamini',
@@ -284,9 +313,12 @@ class DeviceDetector
284
313
  'DL0' => 'DL',
285
314
  'DE' => 'Denver',
286
315
  'DS' => 'Desay',
316
+ 'DSI' => 'DSIC',
287
317
  'DW' => 'DeWalt',
288
318
  'DX' => 'DEXP',
319
+ 'DEY' => 'DEYI',
289
320
  'DEN' => 'Denali',
321
+ 'DEA' => 'DEALDIG',
290
322
  '8D' => 'DF',
291
323
  'DGT' => 'DGTEC',
292
324
  'DG' => 'Dialog',
@@ -296,16 +328,19 @@ class DeviceDetector
296
328
  'DDG' => 'Digidragon',
297
329
  'DH' => 'Digihome',
298
330
  'DD' => 'Digiland',
331
+ 'DIJ' => 'DIJITSU',
299
332
  'DIG' => 'Digit4G',
300
333
  'DIC' => 'DIGICOM',
301
334
  'Q0' => 'DIGIFORS',
302
335
  'DQ' => 'DISH',
336
+ 'DIS' => 'Disney',
303
337
  '9D' => 'Ditecma',
304
338
  'D2' => 'Digma',
305
339
  '1D' => 'Diva',
306
340
  'DIV' => 'DiverMax',
307
341
  'D6' => 'Divisat',
308
342
  'X6' => 'DIXON',
343
+ 'DIM' => 'DIMO',
309
344
  '5D' => 'DING DING',
310
345
  'DIN' => 'Dinax',
311
346
  'DM' => 'DMM',
@@ -318,21 +353,26 @@ class DeviceDetector
318
353
  'DV' => 'Doov',
319
354
  'DOM' => 'Dom.ru',
320
355
  'DP' => 'Dopod',
356
+ 'DPA' => 'DPA',
321
357
  'JQ' => 'Doppio',
322
358
  'DR' => 'Doro',
323
359
  'ZD' => 'DORLAND',
324
360
  'D8' => 'Droxio',
325
361
  'DJ' => 'Dragon Touch',
362
+ 'DRA' => 'DRAGON',
326
363
  'DY' => 'Dreamgate',
327
364
  'DRE' => 'DreamTab',
328
365
  'DR1' => 'DreamStar',
329
366
  'DTA' => 'Dtac',
330
367
  'DU' => 'Dune HD',
331
368
  'UD' => 'DUNNS Mobile',
369
+ 'DUU' => 'Duubee',
370
+ 'DUR' => 'Durabook',
332
371
  'DTE' => 'D-Tech',
333
372
  'DLI' => 'D-Link',
334
373
  'ENO' => 'eNOVA',
335
374
  'IN2' => 'iNOVA',
375
+ 'INH' => 'Inhon',
336
376
  'EB' => 'E-Boda',
337
377
  'EJ' => 'Engel',
338
378
  'ENA' => 'ENACOM',
@@ -358,6 +398,7 @@ class DeviceDetector
358
398
  'UE' => 'Ematic',
359
399
  'EMR' => 'Emporia',
360
400
  '4K' => 'EKT',
401
+ 'EKI' => 'EKINOX',
361
402
  '7E' => 'ELARI',
362
403
  '03' => 'Electroneum',
363
404
  'Z8' => 'ELECTRONIA',
@@ -372,9 +413,12 @@ class DeviceDetector
372
413
  'ED' => 'Energizer',
373
414
  'E1' => 'Energy Sistem',
374
415
  '3E' => 'Enot',
416
+ 'ENT' => 'Entity',
375
417
  'ENV' => 'Envizen',
376
418
  '8E' => 'Epik One',
419
+ 'EPK' => 'Epic',
377
420
  'XP' => 'Epson',
421
+ 'EPH' => 'Ephone',
378
422
  'E7' => 'Ergo',
379
423
  'EC' => 'Ericsson',
380
424
  '05' => 'Erisson',
@@ -389,6 +433,8 @@ class DeviceDetector
389
433
  '4J' => 'Eurocase',
390
434
  'E9' => 'Evercoss',
391
435
  'EV' => 'Evertek',
436
+ 'EVE' => 'Everest',
437
+ 'EV1' => 'Everex',
392
438
  'E3' => 'Evolio',
393
439
  'EO' => 'Evolveo',
394
440
  '0Q' => 'Evoo',
@@ -404,7 +450,9 @@ class DeviceDetector
404
450
  'EI' => 'Ezio',
405
451
  'EZ' => 'Ezze',
406
452
  'UF' => 'EYU',
453
+ 'UE1' => 'UE',
407
454
  '5F' => 'F150',
455
+ 'FPS' => 'F+',
408
456
  'F6' => 'Facebook',
409
457
  'FAC' => 'Facetel',
410
458
  'FA1' => 'Facime',
@@ -413,12 +461,14 @@ class DeviceDetector
413
461
  'FAM' => 'Famous',
414
462
  '17' => 'FarEasTone',
415
463
  '9R' => 'FaRao Pro',
464
+ 'FAR' => 'Farassoo',
416
465
  'FB' => 'Fantec',
417
466
  'FE' => 'Fengxiang',
418
467
  'F7' => 'Fero',
419
468
  '67' => 'FEONAL',
420
469
  'FI' => 'FiGO',
421
470
  'J9' => 'FiGi',
471
+ 'FIG' => 'Figgers',
422
472
  'F9' => 'FiiO',
423
473
  'F1' => 'FinePower',
424
474
  'FX' => 'Finlux',
@@ -427,6 +477,7 @@ class DeviceDetector
427
477
  'FIL' => 'FILIX',
428
478
  'FL' => 'Fly',
429
479
  'QC' => 'FLYCAT',
480
+ 'FLU' => 'Fluo',
430
481
  'FN' => 'FNB',
431
482
  'FD' => 'Fondi',
432
483
  '0F' => 'Fourel',
@@ -437,8 +488,11 @@ class DeviceDetector
437
488
  'FR' => 'Forstar',
438
489
  'RF' => 'Fortis',
439
490
  'FO' => 'Foxconn',
491
+ 'FOD' => 'FoxxD',
440
492
  'FJ' => 'FOODO',
493
+ 'FOS' => 'FOSSiBOT',
441
494
  'FT' => 'Freetel',
495
+ 'FRU' => 'Frunsi',
442
496
  'F4' => 'F&U',
443
497
  '1F' => 'FMT',
444
498
  'FPT' => 'FPT',
@@ -447,15 +501,22 @@ class DeviceDetector
447
501
  '4F' => 'Funai',
448
502
  '5J' => 'Fusion5',
449
503
  'FF' => 'Future Mobile Technology',
504
+ 'FFF' => 'FFF SmartLife',
450
505
  'FW' => 'FNF',
506
+ 'FXT' => 'Fxtec',
451
507
  'GT' => 'G-TiDE',
452
508
  'G9' => 'G-Touch',
509
+ 'GFO' => 'Gfone',
510
+ 'GTM' => 'GTMEDIA',
453
511
  '0G' => 'GFive',
454
512
  'GM' => 'Garmin-Asus',
455
513
  'GA' => 'Gateway',
456
514
  '99' => 'Galaxy Innovations',
515
+ 'GA1' => 'Galactic',
516
+ 'GAM' => 'Gamma',
457
517
  'GAZ' => 'Gazer',
458
518
  'GEA' => 'Geanee',
519
+ 'GEN' => 'Geant',
459
520
  'GD' => 'Gemini',
460
521
  'GN' => 'General Mobile',
461
522
  '2G' => 'Genesis',
@@ -472,6 +533,7 @@ class DeviceDetector
472
533
  'GZ' => 'Ginzzu',
473
534
  '1G' => 'Gini',
474
535
  'GI' => 'Gionee',
536
+ 'GIR' => 'GIRASOLE',
475
537
  'G4' => 'Globex',
476
538
  '38' => 'GLONYX',
477
539
  'U6' => 'Glofiish',
@@ -487,40 +549,51 @@ class DeviceDetector
487
549
  'GO' => 'Google',
488
550
  'G0' => 'Goophone',
489
551
  '6G' => 'Gooweel',
552
+ 'GOO' => 'GOODTEL',
490
553
  '8G' => 'Gplus',
491
554
  'GR' => 'Gradiente',
492
555
  'GP' => 'Grape',
493
556
  'G6' => 'Gree',
557
+ 'GRA' => 'Great Asia',
494
558
  '3G' => 'Greentel',
559
+ 'GRO' => 'Green Orange',
560
+ 'GR1' => 'GroBerwert',
495
561
  'GF' => 'Gretel',
496
562
  '82' => 'Gresso',
497
563
  'GU' => 'Grundig',
498
564
  'GV' => 'Gtel',
565
+ 'CUO' => 'Guophone',
499
566
  'H13' => 'H133',
500
567
  '9Z' => 'H96',
501
568
  'HF' => 'Hafury',
502
569
  '9F' => 'HAOVM',
570
+ 'HAQ' => 'HAOQIN',
503
571
  'HA' => 'Haier',
504
572
  'XH' => 'Haipai',
505
573
  'HAN' => 'Handheld',
506
574
  'HE' => 'HannSpree',
507
575
  'HK' => 'Hardkernel',
508
576
  'HAR' => 'Harper',
577
+ 'HA1' => 'Hartens',
509
578
  'HS' => 'Hasee',
510
579
  '8H' => 'Hamlet',
511
580
  'HAM' => 'Hammer',
581
+ 'HAT' => 'Hathway',
512
582
  'H6' => 'Helio',
513
583
  'HQ' => 'HERO',
514
584
  'ZH' => 'Hezire',
515
585
  'HEX' => 'HexaByte',
586
+ 'HEW' => 'HeadWolf',
516
587
  'HL' => 'Hi-Level',
517
588
  '3H' => 'Hi',
589
+ 'HIB' => 'Hiberg',
518
590
  'HIH' => 'HiHi',
519
591
  'HIK' => 'HiKing',
520
592
  'H2' => 'Highscreen',
521
593
  'Q1' => 'High Q',
522
594
  '1H' => 'Hipstreet',
523
595
  'HI' => 'Hisense',
596
+ 'HIP' => 'HIPER',
524
597
  'HC' => 'Hitachi',
525
598
  'H8' => 'Hitech',
526
599
  'W3' => 'HiMax',
@@ -555,6 +628,7 @@ class DeviceDetector
555
628
  'HN' => 'Hyundai',
556
629
  '7H' => 'Hyve',
557
630
  'HYT' => 'Hytera',
631
+ 'HYK' => 'Hykker',
558
632
  '3I' => 'i-Cherry',
559
633
  'IJ' => 'i-Joy',
560
634
  'IM' => 'i-mate',
@@ -564,12 +638,15 @@ class DeviceDetector
564
638
  'IB' => 'iBall',
565
639
  'IY' => 'iBerry',
566
640
  '7I' => 'iBrit',
641
+ 'IBO' => 'ibowin',
567
642
  'I2' => 'IconBIT',
568
643
  'IC' => 'iDroid',
644
+ 'IDI' => 'iDino',
569
645
  '6Z' => 'iData',
570
646
  'IG' => 'iGet',
571
647
  'IH' => 'iHunt',
572
648
  'IA' => 'Ikea',
649
+ 'IYO' => 'iYou',
573
650
  '8I' => 'IKU Mobile',
574
651
  '2K' => 'IKI Mobile',
575
652
  'IK' => 'iKoMo',
@@ -579,6 +656,7 @@ class DeviceDetector
579
656
  '1I' => 'iMars',
580
657
  'IMI' => 'iMI',
581
658
  'U4' => 'iMan',
659
+ 'ILE' => 'iLepo',
582
660
  'IL' => 'IMO Mobile',
583
661
  'IM1' => 'Imose',
584
662
  'I3' => 'Impression',
@@ -619,6 +697,7 @@ class DeviceDetector
619
697
  'IRE' => 'iReplace',
620
698
  'IR' => 'iRola',
621
699
  'IU' => 'iRulu',
700
+ 'IRO' => 'iRobot',
622
701
  '9I' => 'iSWAG',
623
702
  '9J' => 'iSafe Mobile',
624
703
  'IST' => 'iStar',
@@ -645,6 +724,7 @@ class DeviceDetector
645
724
  'JR1' => 'JREN',
646
725
  'JO' => 'Jolla',
647
726
  'JP' => 'Joy',
727
+ 'JOY' => 'JoySurf',
648
728
  'UJ' => 'Juniper Systems',
649
729
  'J5' => 'Just5',
650
730
  '7J' => 'Jumper',
@@ -653,29 +733,35 @@ class DeviceDetector
653
733
  'JXD' => 'JXD',
654
734
  'JS' => 'Jesy',
655
735
  'KT' => 'K-Touch',
736
+ 'KLT' => 'K-Lite',
656
737
  'K4' => 'Kaan',
657
738
  'K7' => 'Kaiomy',
658
739
  'KL' => 'Kalley',
659
740
  'K6' => 'Kanji',
660
741
  'KA' => 'Karbonn',
661
742
  'K5' => 'KATV1',
743
+ 'KAP' => 'Kapsys',
662
744
  'K0' => 'Kata',
663
745
  'KZ' => 'Kazam',
664
746
  '9K' => 'Kazuna',
665
747
  'KD' => 'KDDI',
748
+ 'KHA' => 'Khadas',
666
749
  'KS' => 'Kempler & Strauss',
667
750
  'K3' => 'Keneksi',
668
751
  'KX' => 'Kenxinda',
669
752
  'KEN' => 'Kenbo',
753
+ 'KZG' => 'KZG',
670
754
  'K1' => 'Kiano',
671
755
  '5W' => 'Kingbox',
672
756
  'KI' => 'Kingsun',
757
+ 'KIS' => 'Kinstone',
673
758
  'KF' => 'KINGZONE',
674
759
  'KIN' => 'Kingstar',
675
760
  '46' => 'Kiowa',
676
761
  'KV' => 'Kivi',
677
762
  '64' => 'Kvant',
678
763
  '0K' => 'Klipad',
764
+ 'KNM' => 'KN Mobile',
679
765
  'KC' => 'Kocaso',
680
766
  'KK' => 'Kodak',
681
767
  'KG' => 'Kogan',
@@ -692,8 +778,10 @@ class DeviceDetector
692
778
  'KE' => 'Krüger&Matz',
693
779
  '5K' => 'KREZ',
694
780
  'WK' => 'KRIP',
781
+ 'KRA' => 'Kraft',
695
782
  'KH' => 'KT-Tech',
696
783
  'Z6' => 'KUBO',
784
+ 'KUG' => 'KuGou',
697
785
  'K8' => 'Kuliao',
698
786
  '8K' => 'Kult',
699
787
  'KU' => 'Kumai',
@@ -708,10 +796,12 @@ class DeviceDetector
708
796
  'LA1' => 'Lanin',
709
797
  'LK' => 'Lark',
710
798
  'Z3' => 'Laurus',
799
+ 'LEC' => 'Lectrus',
711
800
  'LV' => 'Lava',
712
801
  'LC' => 'LCT',
713
802
  'L5' => 'Leagoo',
714
803
  'U3' => 'Leben',
804
+ 'LEB' => 'LeBest',
715
805
  'LD' => 'Ledstar',
716
806
  'LEE' => 'Leelbox',
717
807
  'L1' => 'LeEco',
@@ -731,8 +821,10 @@ class DeviceDetector
731
821
  'LG' => 'LG',
732
822
  '39' => 'Liberton',
733
823
  '5L' => 'Linsar',
824
+ 'LIN' => 'Linsay',
734
825
  'LF' => 'Lifemaxx',
735
826
  'LI' => 'Lingwin',
827
+ 'LIM' => 'Lime',
736
828
  'LJ' => 'L-Max',
737
829
  'LW' => 'Linnex',
738
830
  'JJ' => 'Listo',
@@ -744,6 +836,7 @@ class DeviceDetector
744
836
  'LH' => 'Logic Instrument',
745
837
  'LM' => 'Logicom',
746
838
  'GY' => 'LOKMAT',
839
+ 'LPX' => 'LPX-G',
747
840
  '0L' => 'Lumigon',
748
841
  'LU' => 'Lumus',
749
842
  'LUM' => 'Lumitel',
@@ -768,10 +861,13 @@ class DeviceDetector
768
861
  'J4' => 'Mara',
769
862
  'MAR' => 'Marshal',
770
863
  '8Y' => 'Massgo',
864
+ 'MA1' => 'Mascom',
771
865
  '2M' => 'Masstel',
772
866
  '3X' => 'Mastertech',
867
+ 'MAS' => 'Master-G',
773
868
  '50' => 'Matrix',
774
869
  '7M' => 'Maxcom',
870
+ '7M1' => 'Maxfone',
775
871
  'ZM' => 'Maximus',
776
872
  '6X' => 'Maxtron',
777
873
  '0D' => 'MAXVI',
@@ -805,6 +901,7 @@ class DeviceDetector
805
901
  '6Q' => 'Microtech',
806
902
  '1X' => 'Minix',
807
903
  'OM' => 'Mintt',
904
+ 'MIN' => 'Mint',
808
905
  'MO' => 'Mio',
809
906
  'X7' => 'Mione',
810
907
  'M7' => 'Miray',
@@ -814,20 +911,29 @@ class DeviceDetector
814
911
  'M5' => 'MIXC',
815
912
  '2D' => 'MIVO',
816
913
  '1Z' => 'MiXzo',
914
+ 'MIW' => 'MIWANG',
817
915
  'ML' => 'MLLED',
818
916
  'LS' => 'MLS',
917
+ 'MLA' => 'MLAB',
819
918
  '5H' => 'MMI',
820
919
  '4M' => 'Mobicel',
821
920
  'M6' => 'Mobiistar',
921
+ 'MOK' => 'Mobile Kingdom',
822
922
  'MH' => 'Mobiola',
823
923
  'MB' => 'Mobistel',
824
924
  'ID' => 'MobiIoT',
825
925
  '6W' => 'MobiWire',
826
926
  '9M' => 'Mobo',
927
+ 'MOB' => 'Mobell',
827
928
  'M4' => 'Modecom',
828
929
  'MF' => 'Mofut',
829
930
  'MR' => 'Motorola',
931
+ 'MIV' => 'Motiv',
830
932
  'MV' => 'Movic',
933
+ 'MOV' => 'Movitel',
934
+ 'MO1' => 'MOVISUN',
935
+ 'MOS' => 'Mosimosi',
936
+ 'MOX' => 'Moxee',
831
937
  'MM' => 'Mpman',
832
938
  'MZ' => 'MSI',
833
939
  '3R' => 'MStar',
@@ -836,6 +942,7 @@ class DeviceDetector
836
942
  '72' => 'M-Tech',
837
943
  '9H' => 'M-Horse',
838
944
  '1R' => 'Multilaser',
945
+ 'MPS' => 'MultiPOS',
839
946
  '1M' => 'MYFON',
840
947
  'MY' => 'MyPhone',
841
948
  '51' => 'Myros',
@@ -846,6 +953,8 @@ class DeviceDetector
846
953
  'J3' => 'Mymaga',
847
954
  'MYM' => 'MyMobile',
848
955
  '07' => 'MyGica',
956
+ 'MYG' => 'MygPad',
957
+ 'MWA' => 'MwalimuPlus',
849
958
  'NEO' => 'neoCore',
850
959
  '08' => 'Nabi',
851
960
  'N7' => 'National',
@@ -856,15 +965,20 @@ class DeviceDetector
856
965
  '7R' => 'NavRoad',
857
966
  'NAS' => 'NASCO',
858
967
  'NP' => 'Naomi Phone',
968
+ 'NAN' => 'Nanho',
859
969
  'NE' => 'NEC',
970
+ 'NDP' => 'Nedaphone',
860
971
  '8N' => 'Necnot',
861
972
  'NF' => 'Neffos',
862
973
  '9X' => 'Neo',
974
+ 'NEK' => 'NEKO',
863
975
  '1N' => 'Neomi',
864
976
  '7Q' => 'Neon IQ',
865
977
  '8F' => 'Neolix',
866
978
  'NA' => 'Netgear',
979
+ 'NEM' => 'Netmak',
867
980
  'NU' => 'NeuImage',
981
+ 'NEU' => 'NeuTab',
868
982
  'NW' => 'Newgen',
869
983
  'N9' => 'Newland',
870
984
  '0N' => 'Newman',
@@ -884,6 +998,7 @@ class DeviceDetector
884
998
  'NJO' => 'nJoy',
885
999
  'NG' => 'NGM',
886
1000
  'NZ' => 'NG Optics',
1001
+ 'NZP' => 'NGpon',
887
1002
  'NN' => 'Nikon',
888
1003
  'NI' => 'Nintendo',
889
1004
  'NIN' => 'NINETEC',
@@ -891,6 +1006,7 @@ class DeviceDetector
891
1006
  'N1' => 'Noain',
892
1007
  'N6' => 'Nobby',
893
1008
  'NOV' => 'Novey',
1009
+ 'NO1' => 'NOVO',
894
1010
  '57' => 'Nubia',
895
1011
  'JN' => 'NOBUX',
896
1012
  'NB' => 'Noblex',
@@ -905,9 +1021,11 @@ class DeviceDetector
905
1021
  '5N' => 'Nos',
906
1022
  'NO' => 'Nous',
907
1023
  'NQ' => 'Novex',
1024
+ 'NOD' => 'noDROPOUT',
908
1025
  'NJ' => 'NuAns',
909
1026
  'NL' => 'NUU Mobile',
910
1027
  'N0' => 'Nuvo',
1028
+ 'NUV' => 'NuVision',
911
1029
  'NV' => 'Nvidia',
912
1030
  'NY' => 'NYX Mobile',
913
1031
  'O3' => 'O+',
@@ -915,15 +1033,23 @@ class DeviceDetector
915
1033
  'O7' => 'Oale',
916
1034
  'OC' => 'OASYS',
917
1035
  'OB' => 'Obi',
1036
+ 'OBR' => 'Ober',
918
1037
  'OQ' => 'Meta',
919
1038
  'O1' => 'Odys',
920
1039
  'ODP' => 'Odotpad',
921
1040
  'O9' => 'Ok',
922
1041
  'OA' => 'Okapia',
1042
+ 'OKI' => 'Oking',
1043
+ 'OLA' => 'Olax',
1044
+ 'OLK' => 'Olkya',
1045
+ 'OLY' => 'Olympia',
1046
+ 'OLT' => 'OLTO',
923
1047
  'OJ' => 'Ookee',
924
1048
  'OD' => 'Onda',
925
1049
  'ON' => 'OnePlus',
926
1050
  'ONC' => 'OneClick',
1051
+ 'ONL' => 'OneLern',
1052
+ 'OAN' => 'Oangcc',
927
1053
  'OX' => 'Onix',
928
1054
  '3O' => 'ONYX BOOX',
929
1055
  'O4' => 'ONN',
@@ -934,6 +1060,7 @@ class DeviceDetector
934
1060
  'OP' => 'OPPO',
935
1061
  'OO' => 'Opsson',
936
1062
  'OPT' => 'Optoma',
1063
+ 'OPH' => 'Ophone',
937
1064
  'OR' => 'Orange',
938
1065
  'O5' => 'Orbic',
939
1066
  'Y6' => 'Orbita',
@@ -952,6 +1079,7 @@ class DeviceDetector
952
1079
  'OV' => 'Overmax',
953
1080
  '30' => 'Ovvi',
954
1081
  'O2' => 'Owwo',
1082
+ 'OSC' => 'OSCAL',
955
1083
  'OY' => 'Oysters',
956
1084
  'QF' => 'OYSIN',
957
1085
  'O6' => 'Oyyu',
@@ -963,11 +1091,15 @@ class DeviceDetector
963
1091
  'PN' => 'Panacom',
964
1092
  'PA' => 'Panasonic',
965
1093
  'PT' => 'Pantech',
1094
+ 'PAN' => 'Pano',
1095
+ 'PA1' => 'Panoramic',
1096
+ 'PLT' => 'Platoon',
966
1097
  '94' => 'Packard Bell',
967
1098
  'H9' => 'Parrot Mobile',
968
1099
  'PAR' => 'Partner Mobile',
969
1100
  'PAP' => 'PAPYRE',
970
1101
  'PB' => 'PCBOX',
1102
+ 'PCS' => 'PC Smart',
971
1103
  'PC' => 'PCD',
972
1104
  'PD' => 'PCD Argentina',
973
1105
  'PE' => 'PEAQ',
@@ -1011,8 +1143,10 @@ class DeviceDetector
1011
1143
  '3F' => 'Porsche',
1012
1144
  'P3' => 'PPTV',
1013
1145
  'FP' => 'Premio',
1146
+ 'PR1' => 'Premier',
1014
1147
  'PR' => 'Prestigio',
1015
1148
  'P9' => 'Primepad',
1149
+ 'PRM' => 'PRIME',
1016
1150
  '6P' => 'Primux',
1017
1151
  '2P' => 'Prixton',
1018
1152
  'PRI' => 'Pritom',
@@ -1025,6 +1159,7 @@ class DeviceDetector
1025
1159
  '7O' => 'Polestar',
1026
1160
  'PU' => 'PULID',
1027
1161
  'UP' => 'Purism',
1162
+ 'PUN' => 'Punos',
1028
1163
  'QFX' => 'QFX',
1029
1164
  'Q7' => 'Q-Box',
1030
1165
  'QH' => 'Q-Touch',
@@ -1035,6 +1170,7 @@ class DeviceDetector
1035
1170
  'Q9' => 'QTECH',
1036
1171
  'QA' => 'Quantum',
1037
1172
  'QUE' => 'Quest',
1173
+ 'QUA' => 'Quatro',
1038
1174
  'QU' => 'Quechua',
1039
1175
  'QUI' => 'Quipus',
1040
1176
  'QO' => 'Qumo',
@@ -1051,16 +1187,19 @@ class DeviceDetector
1051
1187
  'RAY' => 'Raylandz',
1052
1188
  'RC' => 'RCA Tablets',
1053
1189
  '2R' => 'Reach',
1190
+ 'REL' => 'RelNAT',
1054
1191
  'RB' => 'Readboy',
1055
1192
  'RE' => 'Realme',
1056
1193
  'RE1' => 'Redbean',
1057
1194
  'R8' => 'RED',
1058
1195
  'REW' => 'Redway',
1059
1196
  '6F' => 'Redfox',
1197
+ 'RE2' => 'RedLine',
1060
1198
  'RD' => 'Reeder',
1061
1199
  'Z9' => 'REGAL',
1062
1200
  'RH' => 'Remdun',
1063
1201
  'RP' => 'Revo',
1202
+ 'REV' => 'Revomovil',
1064
1203
  '8R' => 'Retroid Pocket',
1065
1204
  'RIC' => 'Ricoh',
1066
1205
  'RI' => 'Rikomagic',
@@ -1073,7 +1212,9 @@ class DeviceDetector
1073
1212
  'RIZ' => 'Rizzen',
1074
1213
  'RR' => 'Roadrover',
1075
1214
  'QR' => 'ROADMAX',
1215
+ 'ROC' => 'Roam Cat',
1076
1216
  'R1' => 'Rokit',
1217
+ 'ROI' => 'ROiK',
1077
1218
  'RK' => 'Roku',
1078
1219
  'R3' => 'Rombica',
1079
1220
  'R5' => 'Ross&Moor',
@@ -1083,23 +1224,32 @@ class DeviceDetector
1083
1224
  'RJ' => 'Royole',
1084
1225
  'RT' => 'RT Project',
1085
1226
  'RG' => 'RugGear',
1227
+ 'RUG' => 'Ruggex',
1228
+ 'RUT' => 'RuggeTech',
1086
1229
  'RU' => 'Runbo',
1230
+ 'RUP' => 'Rupa',
1087
1231
  'RL' => 'Ruio',
1088
1232
  'RY' => 'Ryte',
1089
1233
  'X5' => 'Saba',
1090
1234
  '8L' => 'S-TELL',
1091
1235
  '4O' => 'S2Tel',
1092
1236
  '89' => 'Seatel',
1237
+ 'SEW' => 'Sewoo',
1238
+ 'SE1' => 'SEEWO',
1093
1239
  'Y7' => 'Saiet',
1094
1240
  'X1' => 'Safaricom',
1095
1241
  'SG' => 'Sagem',
1096
1242
  '4L' => 'Salora',
1097
1243
  'SA' => 'Samsung',
1244
+ 'SAT' => 'Samtech',
1245
+ 'SAM' => 'Samtron',
1098
1246
  'SNA' => 'SNAMI',
1099
1247
  'S0' => 'Sanei',
1100
1248
  '12' => 'Sansui',
1249
+ 'SAK' => 'Sankey',
1101
1250
  'SQ' => 'Santin',
1102
1251
  'SY' => 'Sanyo',
1252
+ 'SAN' => 'SANY',
1103
1253
  'S9' => 'Savio',
1104
1254
  'Y4' => 'SCBC',
1105
1255
  'CZ' => 'Schneider',
@@ -1118,8 +1268,10 @@ class DeviceDetector
1118
1268
  'S6' => 'Senseit',
1119
1269
  'EW' => 'Senwa',
1120
1270
  '24' => 'Seeken',
1271
+ 'SEB' => 'SEBBE',
1121
1272
  '61' => 'Seuic',
1122
1273
  'SX' => 'SFR',
1274
+ 'SGI' => 'SGIN',
1123
1275
  'SH' => 'Sharp',
1124
1276
  'JU' => 'Shanling',
1125
1277
  '7S' => 'Shift Phones',
@@ -1140,6 +1292,9 @@ class DeviceDetector
1140
1292
  'GK' => 'SKG',
1141
1293
  'SW' => 'Sky',
1142
1294
  'SK' => 'Skyworth',
1295
+ 'SKY' => 'Skyline',
1296
+ 'SK1' => 'SkyStream',
1297
+ 'SKK' => 'SKK Mobile',
1143
1298
  '14' => 'Smadl',
1144
1299
  '19' => 'Smailo',
1145
1300
  'SR' => 'Smart Electronic',
@@ -1148,15 +1303,18 @@ class DeviceDetector
1148
1303
  '47' => 'SmartBook',
1149
1304
  '3B' => 'Smartab',
1150
1305
  '80' => 'SMARTEC',
1306
+ 'SM1' => 'Smartex',
1151
1307
  'SC' => 'Smartfren',
1152
1308
  'S7' => 'Smartisan',
1153
1309
  'JR' => 'Sylvania',
1310
+ 'SYH' => 'SYH',
1154
1311
  '3Y' => 'Smarty',
1155
1312
  'HH' => 'Smooth Mobile',
1156
1313
  '1Q' => 'Smotreshka',
1157
1314
  'SF' => 'Softbank',
1158
1315
  '9L' => 'SOLE',
1159
1316
  'JL' => 'SOLO',
1317
+ 'SOS' => 'SOSH',
1160
1318
  'SOD' => 'Soda',
1161
1319
  '16' => 'Solone',
1162
1320
  'OI' => 'Sonim',
@@ -1166,6 +1324,7 @@ class DeviceDetector
1166
1324
  '8S' => 'Soyes',
1167
1325
  '77' => 'SONOS',
1168
1326
  '68' => 'Soho Style',
1327
+ 'SOB' => 'SobieTech',
1169
1328
  'PK' => 'Spark',
1170
1329
  'FS' => 'SPC',
1171
1330
  '6S' => 'Spectrum',
@@ -1188,6 +1347,7 @@ class DeviceDetector
1188
1347
  '96' => 'STRONG',
1189
1348
  '69' => 'Stylo',
1190
1349
  '9S' => 'Sugar',
1350
+ 'SUR' => 'Surge',
1191
1351
  '06' => 'Subor',
1192
1352
  'SZ' => 'Sumvision',
1193
1353
  '0H' => 'Sunstech',
@@ -1195,15 +1355,21 @@ class DeviceDetector
1195
1355
  '5S' => 'Sunvell',
1196
1356
  '5Y' => 'Sunny',
1197
1357
  'W8' => 'SUNWIND',
1358
+ 'SBX' => 'SuperBOX',
1198
1359
  'SU' => 'SuperSonic',
1199
1360
  '79' => 'SuperTab',
1200
1361
  'S5' => 'Supra',
1362
+ 'SUP' => 'Supraim',
1201
1363
  'ZS' => 'Suzuki',
1202
1364
  '2J' => 'Sunmi',
1365
+ 'SUN' => 'Sunmax',
1203
1366
  '0W' => 'Swipe',
1367
+ 'SWI' => 'Switel',
1204
1368
  'SS' => 'SWISSMOBILITY',
1205
1369
  '1W' => 'Swisstone',
1206
1370
  'W7' => 'SWTV',
1371
+ 'SSK' => 'SSKY',
1372
+ 'SYC' => 'Syco',
1207
1373
  'SM' => 'Symphony',
1208
1374
  '4S' => 'Syrox',
1209
1375
  'TM' => 'T-Mobile',
@@ -1221,13 +1387,16 @@ class DeviceDetector
1221
1387
  'H4' => 'Technicolor',
1222
1388
  'TEA' => 'TeachTouch',
1223
1389
  'Z5' => 'Technika',
1390
+ 'TE1' => 'TechSmart',
1224
1391
  'TX' => 'TechniSat',
1225
1392
  'TT' => 'TechnoTrend',
1226
1393
  'TP' => 'TechPad',
1394
+ 'TPS' => 'TPS',
1227
1395
  '9E' => 'Techwood',
1228
1396
  '7F' => 'Technopc',
1229
1397
  'T7' => 'Teclast',
1230
1398
  'TB' => 'Tecno Mobile',
1399
+ 'TEC' => 'TecToy',
1231
1400
  '91' => 'TEENO',
1232
1401
  '2L' => 'Tele2',
1233
1402
  'TL' => 'Telefunken',
@@ -1237,10 +1406,12 @@ class DeviceDetector
1237
1406
  '65' => 'Telia',
1238
1407
  'TEL' => 'Telma',
1239
1408
  'PW' => 'Telpo',
1409
+ 'TLS' => 'TeloSystems',
1240
1410
  'TER' => 'Teracube',
1241
1411
  'TD' => 'Tesco',
1242
1412
  'TA' => 'Tesla',
1243
1413
  '9T' => 'Tetratab',
1414
+ 'TET' => 'TETC',
1244
1415
  'TZ' => 'teXet',
1245
1416
  '29' => 'Teknosa',
1246
1417
  'JZ' => 'TJC',
@@ -1263,11 +1434,14 @@ class DeviceDetector
1263
1434
  'T1' => 'Tolino',
1264
1435
  '0T' => 'Tone',
1265
1436
  'TY' => 'Tooky',
1437
+ 'TOO' => 'TOOGO',
1266
1438
  'T9' => 'Top House',
1267
1439
  'DK' => 'Topelotek',
1268
1440
  '42' => 'Topway',
1269
1441
  'TO' => 'Toplux',
1270
1442
  'TOD' => 'TOPDON',
1443
+ 'TOP' => 'TopDevice',
1444
+ 'TO2' => 'TOPSHOWS',
1271
1445
  '7T' => 'Torex',
1272
1446
  'TOR' => 'Torque',
1273
1447
  '6O' => 'TOSCIDO',
@@ -1306,17 +1480,21 @@ class DeviceDetector
1306
1480
  'UL' => 'Ulefone',
1307
1481
  'UA' => 'Umax',
1308
1482
  'UM' => 'UMIDIGI',
1483
+ 'UNT' => 'Unitech',
1309
1484
  'UZ' => 'Unihertz',
1310
1485
  '3Z' => 'UZ Mobile',
1311
1486
  'UX' => 'Unimax',
1487
+ 'UNQ' => 'Uniqcell',
1312
1488
  'US' => 'Uniscope',
1313
1489
  'UNI' => 'Unistrong',
1314
1490
  'U2' => 'UNIWA',
1491
+ 'UND' => 'Uniden',
1315
1492
  'UO' => 'Unnecto',
1316
1493
  'UNN' => 'Unnion Technologies',
1317
1494
  'UU' => 'Unonu',
1318
1495
  'UN' => 'Unowhy',
1319
1496
  'UY' => 'UNNO',
1497
+ 'UOO' => 'UOOGOU',
1320
1498
  'UNB' => 'Unblock Tech',
1321
1499
  'UK' => 'UTOK',
1322
1500
  '3U' => 'IUNI',
@@ -1330,6 +1508,7 @@ class DeviceDetector
1330
1508
  'VP' => 'Vargo',
1331
1509
  'VC' => 'Vankyo',
1332
1510
  'VAL' => 'VALEM',
1511
+ 'VAT' => 'VALTECH',
1333
1512
  'VB' => 'VC',
1334
1513
  'VN' => 'Venso',
1335
1514
  'VEN' => 'Venstar',
@@ -1341,9 +1520,12 @@ class DeviceDetector
1341
1520
  'VR' => 'Vernee',
1342
1521
  'VX' => 'Vertex',
1343
1522
  'VE' => 'Vertu',
1523
+ 'VET' => 'VETAS',
1344
1524
  'VL' => 'Verykool',
1345
1525
  'QV' => 'Verssed',
1526
+ 'VER' => 'Versus',
1346
1527
  'V8' => 'Vesta',
1528
+ 'VEK' => 'Vekta',
1347
1529
  'VT' => 'Vestel',
1348
1530
  '48' => 'Vexia',
1349
1531
  'V6' => 'VGO TEL',
@@ -1358,17 +1540,26 @@ class DeviceDetector
1358
1540
  'FV' => 'Vios',
1359
1541
  '0V' => 'Vipro',
1360
1542
  'ZV' => 'Virzo',
1543
+ 'VIP' => 'Viper',
1361
1544
  'VI' => 'Vitelcom',
1545
+ 'VIB' => 'ViBox',
1362
1546
  '8V' => 'Viumee',
1363
1547
  'V5' => 'Vivax',
1548
+ 'VIV' => 'VIVIMAGE',
1364
1549
  'VV' => 'Vivo',
1365
1550
  '6V' => 'VIWA',
1551
+ 'VII' => 'VIIPOO',
1366
1552
  'VID' => 'VIDA',
1367
1553
  'VZ' => 'Vizio',
1554
+ 'VIZ' => 'Vizmo',
1555
+ 'VIT' => 'Vityaz',
1368
1556
  '9V' => 'Vision Touch',
1557
+ 'VIL' => 'Visual Land',
1369
1558
  'VK' => 'VK Mobile',
1370
1559
  'JM' => 'v-mobile',
1371
1560
  'VHO' => 'V-HOPE',
1561
+ 'VHM' => 'V-HOME',
1562
+ 'VGE' => 'V-Gen',
1372
1563
  'V0' => 'VKworld',
1373
1564
  'VM' => 'Vodacom',
1374
1565
  'VF' => 'Vodafone',
@@ -1379,11 +1570,13 @@ class DeviceDetector
1379
1570
  '2V' => 'Vorke',
1380
1571
  '8U' => 'Vorcom',
1381
1572
  'JW' => 'Vortex',
1573
+ 'VOR' => 'Vormor',
1382
1574
  'V1' => 'Voto',
1383
1575
  'Z7' => 'VOX',
1384
1576
  'VO' => 'Voxtel',
1385
1577
  'VY' => 'Voyo',
1386
1578
  'VOL' => 'Völfen',
1579
+ 'VO1' => 'Volt',
1387
1580
  'VH' => 'Vsmart',
1388
1581
  'V9' => 'Vsun',
1389
1582
  'VU' => 'Vulcan',
@@ -1391,14 +1584,19 @@ class DeviceDetector
1391
1584
  'ZC' => 'VUCATIMES',
1392
1585
  'VUE' => 'Vue Micro',
1393
1586
  'WA' => 'Walton',
1587
+ 'WAF' => 'WAF',
1588
+ 'WAL' => 'Waltter',
1589
+ 'WHI' => 'White Mobile',
1394
1590
  'WM' => 'Weimei',
1395
1591
  'WE' => 'WellcoM',
1396
1592
  'W6' => 'WELLINGTON',
1397
1593
  'WD' => 'Western Digital',
1398
1594
  'WT' => 'Westpoint',
1399
1595
  'WAN' => 'Wanmukang',
1596
+ 'WA1' => 'WANSA',
1400
1597
  'WY' => 'Wexler',
1401
1598
  '3W' => 'WE',
1599
+ 'WEC' => 'Wecool',
1402
1600
  'WEE' => 'Weelikeit',
1403
1601
  'WP' => 'Wieppo',
1404
1602
  'W2' => 'Wigor',
@@ -1409,6 +1607,7 @@ class DeviceDetector
1409
1607
  '9W' => 'Winmax',
1410
1608
  'W5' => 'Winnovo',
1411
1609
  'WU' => 'Wintouch',
1610
+ 'WIS' => 'Winstar',
1412
1611
  'W0' => 'Wiseasy',
1413
1612
  '2W' => 'Wizz',
1414
1613
  'W4' => 'WIWA',
@@ -1421,13 +1620,16 @@ class DeviceDetector
1421
1620
  'WR' => 'Wortmann',
1422
1621
  'WX' => 'Woxter',
1423
1622
  'XQ' => 'X-AGE',
1623
+ 'XEL' => 'XElectron',
1424
1624
  'X3' => 'X-BO',
1625
+ 'XMO' => 'X-Mobile',
1425
1626
  'XT' => 'X-TIGI',
1426
1627
  'XV' => 'X-View',
1427
1628
  'X4' => 'X.Vision',
1428
1629
  'X88' => 'X88',
1429
1630
  'X96' => 'X96',
1430
1631
  '96Q' => 'X96Q',
1632
+ 'A95' => 'A95X',
1431
1633
  'XG' => 'Xgody',
1432
1634
  'QX' => 'XGIMI',
1433
1635
  'XL' => 'Xiaolajiao',
@@ -1439,13 +1641,21 @@ class DeviceDetector
1439
1641
  'XS' => 'Xshitou',
1440
1642
  '4X' => 'Xtouch',
1441
1643
  'X8' => 'Xtratech',
1644
+ 'XCR' => 'Xcruiser',
1645
+ 'XCO' => 'XCOM',
1646
+ 'XCL' => 'Xcell',
1647
+ 'XWA' => 'Xwave',
1442
1648
  'YD' => 'Yandex',
1443
1649
  'YA' => 'Yarvik',
1444
1650
  'Y2' => 'Yes',
1651
+ 'YES' => 'Yestel',
1445
1652
  'YE' => 'Yezz',
1446
1653
  'YG' => 'YEPEN',
1654
+ 'YEL' => 'YELLYOUTH',
1447
1655
  'YK' => 'Yoka TV',
1448
1656
  'YO' => 'Yota',
1657
+ 'YOU' => 'Youin',
1658
+ 'YO1' => 'Youwei',
1449
1659
  'YOO' => 'Yooz',
1450
1660
  'YT' => 'Ytone',
1451
1661
  'Y9' => 'YOTOPT',
@@ -1454,6 +1664,7 @@ class DeviceDetector
1454
1664
  'Y0' => 'YUHO',
1455
1665
  'YN' => 'Yuno',
1456
1666
  'YUN' => 'YUNDOO',
1667
+ 'YUS' => 'YunSong',
1457
1668
  'YUM' => 'YUMKEM',
1458
1669
  'YU' => 'Yuandao',
1459
1670
  'YS' => 'Yusun',
@@ -1461,8 +1672,10 @@ class DeviceDetector
1461
1672
  'YX' => 'Yxtel',
1462
1673
  '0Z' => 'Zatec',
1463
1674
  '2Z' => 'Zaith',
1675
+ 'ZAM' => 'Zamolxe',
1464
1676
  'ZEA' => 'Zealot',
1465
1677
  'PZ' => 'Zebra',
1678
+ 'ZE1' => 'Zeblaze',
1466
1679
  'ZE' => 'Zeemi',
1467
1680
  'WZ' => 'Zeeker',
1468
1681
  'ZN' => 'Zen',
@@ -1473,10 +1686,13 @@ class DeviceDetector
1473
1686
  'FZ' => 'ZIFRO',
1474
1687
  'ZX' => 'Ziox',
1475
1688
  'ZIK' => 'ZIK',
1689
+ 'ZIG' => 'Zigo',
1476
1690
  'ZIN' => 'Zinox',
1477
1691
  'ZO' => 'Zonda',
1478
1692
  'ZW' => 'Zonko',
1479
1693
  'ZP' => 'Zopo',
1694
+ 'ZOO' => 'ZoomSmart',
1695
+ 'ZO1' => 'Zoom',
1480
1696
  'ZT' => 'ZTE',
1481
1697
  'ZU' => 'Zuum',
1482
1698
  'ZY' => 'Zync',
@@ -1484,6 +1700,7 @@ class DeviceDetector
1484
1700
  'ZQ' => 'ZYQ',
1485
1701
  'Z4' => 'ZH&K',
1486
1702
  'OW' => 'öwn',
1703
+ 'WBF' => 'Webfleet',
1487
1704
 
1488
1705
  # legacy brands, might be removed in future versions
1489
1706
  'WB' => 'Web TV',
@@ -1507,11 +1724,24 @@ class DeviceDetector
1507
1724
  end
1508
1725
 
1509
1726
  def brand
1510
- regex_meta[:brand]
1727
+ return regex_meta[:brand] if regex_meta[:brand] == 'Sony Ericsson'
1728
+
1729
+ brand = regex_meta[:regex_name] || regex_meta[:brand] || vendor_fragment.name || fix_for_x_music
1730
+ return if brand == 'Unknown'
1731
+
1732
+ brand
1511
1733
  end
1512
1734
 
1513
1735
  private
1514
1736
 
1737
+ def fix_for_x_music
1738
+ user_agent&.include?('X-music Ⅲ') ? 'OneClick' : nil
1739
+ end
1740
+
1741
+ def vendor_fragment
1742
+ ::DeviceDetector::VendorFragment.new(user_agent)
1743
+ end
1744
+
1515
1745
  # The order of files needs to be the same as the order of device
1516
1746
  # parser classes used in the piwik project.
1517
1747
  def filenames