device_detector 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -371,6 +371,9 @@ HTC:
371
371
  - regex: 'HTC[ _-]Flyer Build'
372
372
  device: 'tablet'
373
373
  model: 'Flyer'
374
+ - regex: 'HTC[ _-](A103) Plus'
375
+ device: 'tablet'
376
+ model: '$1 Plus'
374
377
  - regex: 'HTC[ _-](A103)'
375
378
  device: 'tablet'
376
379
  model: '$1'
@@ -570,6 +573,8 @@ Nokia:
570
573
  model: '$1 Classic'
571
574
  - regex: 'Nokia ?([0-9]{4})s(?:-)?'
572
575
  model: '$1 Slide'
576
+ - regex: 'Nokia ?([0-9]{4}) V Flip'
577
+ model: '$1 Flip'
573
578
  - regex: 'Nokia ?([0-9]{4})'
574
579
  model: '$1'
575
580
  - regex: '(?: )?Nokia([235][0-9]{2})(?: Build|[_);/])'
@@ -880,19 +885,21 @@ TiPhone:
880
885
 
881
886
  # TiVo (https://www.tivo.com/)
882
887
  TiVo:
883
- regex: 'TIVO[ ,]'
888
+ regex: 'TIVO[ ,-]'
884
889
  device: 'tv'
885
890
  models:
886
891
  - regex: 'STREAM 4K'
887
892
  model: 'Stream 4K'
888
893
  - regex: 'TCD8F6000'
889
894
  model: 'TCD8F6000'
895
+ - regex: 'TiVo-([a-z0-9]+)-([a-z0-9]+)'
896
+ model: '$2'
890
897
 
891
898
  # Apple
892
899
  Apple:
893
- regex: '(?:iTunes-)?Apple[ _]?TV|Apple/|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)(?!\: Build/)|iPh(?:[0-9]|1[0-4]),[0-9]|CFNetwork|HomePod|AirPlay|Watch ?OS|Watch1,[12]|MDCR_Mac|ICRU_iP(?:ad|hone)|Mac OS X[,;]|macOS,'
900
+ regex: '(?:iTunes-)?Apple[ _]?TV|Apple/|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)(?!\: Build/)|iPh(?:[0-9]|1[0-4]),[0-9]|CFNetwork|HomePod|AirPlay|AirPodcasts/|Watch ?OS|Watch1,[12]|MDCR_Mac|ICRU_iP(?:ad|hone)|Mac OS X[,;]|macOS,|for Apple Watch'
894
901
  models:
895
- - regex: 'HomePod'
902
+ - regex: '(?:HomePod|AirPodcasts/)'
896
903
  device: 'smart speaker'
897
904
  model: 'HomePod'
898
905
  - regex: 'AirPlay'
@@ -930,6 +937,24 @@ Apple:
930
937
  - regex: 'Watch5,1[02]'
931
938
  device: 'wearable'
932
939
  model: 'Watch SE 44mm'
940
+ - regex: 'Watch6,1[02]'
941
+ device: 'wearable'
942
+ model: 'Watch SE (Gen 2) 40mm'
943
+ - regex: 'Watch6,1[13]'
944
+ device: 'wearable'
945
+ model: 'Watch SE (Gen 2) 44mm'
946
+ - regex: 'Watch6,1[46]'
947
+ device: 'wearable'
948
+ model: 'Watch Series 8 41mm'
949
+ - regex: 'Watch6,1[57]'
950
+ device: 'wearable'
951
+ model: 'Watch Series 8 45mm'
952
+ - regex: 'Watch6,18'
953
+ device: 'wearable'
954
+ model: 'Watch Ultra'
955
+ - regex: 'Watch7,5'
956
+ device: 'wearable'
957
+ model: 'Watch Ultra 2'
933
958
  - regex: 'Watch([456]),[13]'
934
959
  device: 'wearable'
935
960
  model: 'Watch Series $1 40mm'
@@ -942,7 +967,13 @@ Apple:
942
967
  - regex: 'Watch6,[79]'
943
968
  device: 'wearable'
944
969
  model: 'Watch Series 7 45mm'
945
- - regex: 'Watch'
970
+ - regex: 'Watch7,[13]'
971
+ device: 'wearable'
972
+ model: 'Watch Series 9 41mm'
973
+ - regex: 'Watch7,[24]'
974
+ device: 'wearable'
975
+ model: 'Watch Series 9 45mm'
976
+ - regex: 'Watch|for Apple Watch'
946
977
  device: 'wearable'
947
978
  model: 'Watch'
948
979
 
@@ -1384,6 +1415,18 @@ Apple:
1384
1415
  - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?14[C,_]7| 14\)$'
1385
1416
  model: 'iPhone 14'
1386
1417
  device: 'phablet'
1418
+ - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?15[C,_]5| 15PLUS\)$'
1419
+ model: 'iPhone 15 Plus'
1420
+ device: 'phablet'
1421
+ - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?16[C,_]1| 15PRO\)$'
1422
+ model: 'iPhone 15 Pro'
1423
+ device: 'phablet'
1424
+ - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?16[C,_]2| 15PROMAX\)$'
1425
+ model: 'iPhone 15 Pro Max'
1426
+ device: 'phablet'
1427
+ - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?15[C,_]4| 15\)$'
1428
+ model: 'iPhone 15'
1429
+ device: 'phablet'
1387
1430
 
1388
1431
  # specific tablet devices
1389
1432
  - regex: '(?:MDCR_|ICRU_|Apple-)?iPad1[C,_]1'
@@ -1709,9 +1752,13 @@ MicroMax:
1709
1752
 
1710
1753
  # Acteck
1711
1754
  Acteck:
1712
- regex: 'BLECK'
1755
+ regex: 'BLECK|AT723C(?:[);/ ]|$)'
1713
1756
  device: 'tablet'
1714
- model: 'Bleck'
1757
+ models:
1758
+ - regex: 'AT723C'
1759
+ model: 'Aikun AT723C'
1760
+ - regex: 'BLECK'
1761
+ model: 'Bleck'
1715
1762
 
1716
1763
  # Alba
1717
1764
  Alba:
@@ -2035,7 +2082,7 @@ Acer:
2035
2082
 
2036
2083
  # Advan or advan digital
2037
2084
  Advan:
2038
- regex: '(?:ADVAN (?:M4|S40|T5C)|i7U|S45E|S50H|I7D|i55[KD]|i4U|S7D|S4Z|i5[KE]|S5E[ _]NXT|S5J\+|S4\+|1011|E1C_3G)(?:[);/ ]|$)| (?:E1C Pro|5505|5202|50(?:[46]1|5[89]|62)|600[234]|6[25]01|Android [56].*; (?:i5C|i7A)|i5G)(?: Build|[;)])'
2085
+ regex: '(?:ADVAN (?:M4|S40|T5C)|i7U|S45E|S50H|I7D|i55[KD]|i4U|S7D|S4Z|i5[KE]|S5E[ _]NXT|S5J\+|S4\+|1011|E1C_3G)(?:[);/ ]|$)| (?:E1C Pro|5505|5202|50(?:[46]1|5[89]|62)|600[234]|6[25]01|Android [56].*; (?:i5C|i7A)|i5G|E1C 3G)(?: Build|[;)])'
2039
2086
  device: 'smartphone'
2040
2087
  models:
2041
2088
  - regex: 'ADVAN M4'
@@ -2066,7 +2113,7 @@ Advan:
2066
2113
  model: 'G3 Pro'
2067
2114
  - regex: '(S45E|50[46]1|505[89]|5062|S50H|I7D|S7D|S4Z|S5J\+|S4\+|i5C)(?:[);/ ]|$)'
2068
2115
  model: '$1'
2069
- - regex: 'E1C_3G'
2116
+ - regex: 'E1C[_ ]3G'
2070
2117
  device: 'tablet'
2071
2118
  model: 'E1C 3G'
2072
2119
  - regex: 'E1C Pro'
@@ -2124,11 +2171,14 @@ AGM:
2124
2171
 
2125
2172
  # Airis
2126
2173
  Airis:
2127
- regex: 'AIRIS'
2174
+ regex: 'AIRIS|PhonePAD 83G'
2128
2175
  device: 'smartphone'
2129
2176
  models:
2130
2177
  - regex: 'TM50QZ(?:[);/ ]|$)'
2131
2178
  model: 'TM50QZ'
2179
+ - regex: 'PhonePAD 83G'
2180
+ device: 'tablet'
2181
+ model: 'PhonePAD 83G'
2132
2182
 
2133
2183
  # Airness
2134
2184
  Airness:
@@ -3574,6 +3624,8 @@ Asus:
3574
3624
  model: 'ROG Phone 6'
3575
3625
  - regex: '(?:ASUS_)?(?:AI2203)'
3576
3626
  model: 'ROG Phone 6D'
3627
+ - regex: '(?:ASUS_)?(?:AI2205)'
3628
+ model: 'ROG Phone 7'
3577
3629
 
3578
3630
  # desktop detections
3579
3631
  - regex: 'ZN220IC'
@@ -3912,7 +3964,7 @@ Bluegood:
3912
3964
 
3913
3965
  # Blackview
3914
3966
  Blackview:
3915
- regex: 'Blackview|(BL8800|BV([24-9]000|8800|[46]900|(5[1589]|9[135689])00|6[1368]00|7100)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550|BV9700Pro|(?<!Lenovo[_ ])A[68]0(?:Pro)?\))|(?:SOLID 4 G2|A[86]0Plus|A80S|BL6000Pro|BL8800Pro|R6 Lite|P2Lite|A8 MAX|A30-RU|A20Pro|Android 10;(?: [\w-]+;)? Tab[89]|Android 10(?:[\d.]*);(?: [\w-]+;)? (?:A80)|Android 11(?:[\d.]*);(?: [\w-]+;)? (?:A95)|Android 1[12];(?: [\w-]+;)? (?:A[79]0|A70 Pro|A55 Pro|Tab 1[0135]|Tab 6)|BV500|BV[579]200)(?:[);/ ]|$)'
3967
+ regex: 'Blackview|(BL8800|BV([24-9]000|8800|[46]900|(5[1589]|9[135689])00|6[1368]00|7100)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550|BV9700Pro|(?<!Lenovo[_ ])A[68]0(?:Pro)?\))|(?:SOLID 4 G2|A[86]0Plus|A80S|BL6000Pro|BL8800Pro|R6 Lite|P2Lite|A8 MAX|A30-RU|A20Pro|Android 10;(?: [\w-]+;)? Tab[89]|Android 10(?:[\d.]*);(?: [\w-]+;)? (?:A80)|Android 11(?:[\d.]*);(?: [\w-]+;)? (?:A95)|Android 1[12];(?: [\w-]+;)? (?:A[79]0|A70 Pro|A55 Pro|Tab 1[01356]|Tab 6)|BV500|BV[579]200|SOLID_4G1|BV5300 Pro)(?:[);/ ]|$)'
3916
3968
  device: 'smartphone'
3917
3969
  models:
3918
3970
  - regex: 'A([2678]0|55) ?Pro(?:[);/ ]|$)'
@@ -3937,6 +3989,8 @@ Blackview:
3937
3989
  model: '$1 Pro'
3938
3990
  - regex: 'Blackview (A[78]|E7S)'
3939
3991
  model: '$1'
3992
+ - regex: 'SOLID_4G1'
3993
+ model: 'Solid-4 G1'
3940
3994
  - regex: 'SOLID 4 G2'
3941
3995
  model: 'Solid-4 G2'
3942
3996
  - regex: '(BV6[13]00)(?:[);/ ]|$)'
@@ -3956,7 +4010,7 @@ Blackview:
3956
4010
  - regex: 'Tab 11 SE(?:[);/ ]|$)'
3957
4011
  device: 'tablet'
3958
4012
  model: 'Tab 11 SE'
3959
- - regex: ' Tab ?([689]|1[0135])(?:[);/ ]|$)'
4013
+ - regex: ' Tab ?([689]|1[01356])(?:[);/ ]|$)'
3960
4014
  device: 'tablet'
3961
4015
  model: 'Tab $1'
3962
4016
 
@@ -4098,7 +4152,7 @@ Brondi:
4098
4152
 
4099
4153
  # VGO TEL (vgotel.com)
4100
4154
  VGO TEL:
4101
- regex: 'VGOTEL|(?:Venture V(?:[278]|12)|VentureV10|Ocean[_ ][689]|Ocean9L|NEW [57]|NEW 11|i_Smart)(?:[);/ ]|$)'
4155
+ regex: 'VGOTEL|(?:Venture V(?:[278]|12)|VentureV10|Ocean[_ ][689]|Ocean9L|NEW (?:11|22|[57])|i_Smart)(?:[);/ ]|$)'
4102
4156
  device: 'smartphone'
4103
4157
  models:
4104
4158
  - regex: 'Venture ?V([278]|1[02])(?:[);/ ]|$)'
@@ -4112,7 +4166,7 @@ VGO TEL:
4112
4166
 
4113
4167
  # Vivo (vivo.com.cn, vivo.com)
4114
4168
  Vivo:
4115
- regex: '((?:VIV-|BBG-)?(?<!FBCR/|NOA |Gtel )vivo(?!(?:Browser)| 4G_r))|iQOO Neo \d|(?:V1730(D[AT]|GA)|V18(01A0|13B[AT])|1819|V1937|I(?:192[78]|201[28])|V(?:2006|202[2-9]|203[0-35-9]|204[0-3568]|205[02-5789]|206[015689]|2070|210[12459]|211[01]|212[0469])|V(?:2026|2031|2036|2043)_21|V1936AL|V(?:1732|1809|181[3468]|182[149]|183[1268]|1901|191[13469]|192[1-48]|193[0246]|194[15]|195[05]|196[235]|198[16]|1990|200[125]|201[12]|202[03-5]|203[146]|204[6789]|205[45679]|2066B|206[1568]|207[23]|208[05]|2099|2106|211[18]|212[135]|213[346]|214[1358]|2162)A|V1824BA|V(?:1731|1818|2020)CA|V(?:1818|1938)CT|V(?:1730|2031)EA|V(?:1732|1809|181[3468]|182[19]|183[1268]|1901|1913|1938)T|V2029_PK|V2044|V2069A|V217[12]A|I201[19]|I2126|X50 Pro\+|I220[12368]|I2127|V211[4-8]A?|V204[57]A?|V210[28]A?|I2009|I2017|I2022|V215[4678]A|V215[0-478]|V218[03568]A|V2180GA|V219[069]A|V213[012459]A?|V2023EA|V1962BA|V212[57]|V214[0-79]|V1930|V216[0289]|V2164[KP]A|V216[234568]A|V217[08]A|PA2170|V220[37]A|V220[1-9]|V221[789]A|V221[247]|V222[079]A|V222[18]|V22[34]1A|V224[234]A|V224[67]|V2266A|V2301A|V223[189]A|V223[017]|V2254A|V228[34]A|S7t 5G| (?:Y30g|Y20T|Y31s 5G|Y33s|Y50t|Y55s 5G)|V2166(?:BA)?|iQOO U[13]x?|NEX 3s 5G)(?:[);/ ]|$)'
4169
+ regex: '((?:VIV-|BBG-)?(?<!FBCR/|NOA |Gtel )vivo(?!(?:Browser)| 4G_r))|iQOO Neo \d|(?:V1730(D[AT]|GA)|V18(01A0|13B[AT])|1819|V1937|I(?:192[78]|201[28])|V(?:2006|202[2-9]|203[0-35-9]|204[0-3568]|205[02-5789]|206[015689]|2070|210[12459]|211[01]|212[0469])|V(?:2026|2031|2036|2043)_21|V1936AL|V(?:1732|1809|181[3468]|182[149]|183[1268]|1901|191[13469]|192[1-48]|193[0246]|194[15]|195[05]|196[235]|198[16]|1990|200[125]|201[12]|202[03-5]|203[146]|204[6789]|205[45679]|2066B|206[1568]|207[23]|208[05]|2099|2106|211[18]|212[135]|213[346]|214[1358]|2162)A|V1824BA|V(?:1731|1818|2020)CA|V(?:1818|1938)CT|V(?:1730|2031)EA|V(?:1732|1809|181[3468]|182[19]|183[1268]|1901|1913|1938)T|V2029_PK|V2044|V2069A|V217[12]A|I201[19]|I2126|X50 Pro\+|I220[12368]|I2127|V211[4-8]A?|V204[57]A?|V210[28]A?|I2009|I2017|I2022|V215[4678]A|V215[0-478]|V218[03568]A|V2180GA|V219[069]A|V213[012459]A?|V2023EA|V1962BA|V212[57]|V214[0-79]|V1930|V216[0289]|V2164[KP]A|V216[234568]A|V217[08]A|PA2170|V220[37]A|V220[1-9]|V221[789]A|V221[247]|V222[079]A|V222[189]|V22[34]1A|V224[234]A|V224[679]|V2266A|V2301A|V2302|V223[189]A|V223[0178]|V2253|V2254A?|V228[34]A|S7t 5G| (?:Y30g|Y20T|Y31s 5G|Y33s|Y50t|Y55s 5G)|V2166(?:BA)?|iQOO U[13]x?|NEX 3s 5G)(?:[);/ ]|$)'
4116
4170
  device: 'smartphone'
4117
4171
  models:
4118
4172
  - regex: 'PA2170(?:[);/ ]|$)'
@@ -4277,6 +4331,8 @@ Vivo:
4277
4331
  model: 'T1x'
4278
4332
  - regex: 'V2188A'
4279
4333
  model: 'T2x'
4334
+ - regex: 'V2253'
4335
+ model: 'T2x 5G'
4280
4336
  - regex: 'V1962BA'
4281
4337
  model: 'G1 5G'
4282
4338
  - regex: 'V2203A(?:[);/ ]|$)'
@@ -4477,8 +4533,10 @@ Vivo:
4477
4533
  model: 'Y01'
4478
4534
  - regex: 'V2166(?:[);/ ]|$)'
4479
4535
  model: 'Y01A'
4480
- - regex: '(?:V2203|V2221)(?:[);/ ]|$)'
4536
+ - regex: '(?:V2203|V222[19])(?:[);/ ]|$)'
4481
4537
  model: 'Y02s'
4538
+ - regex: '(?:V2254)(?:[);/ ]|$)'
4539
+ model: 'Y02t'
4482
4540
  - regex: '(?:V2217)(?:[);/ ]|$)'
4483
4541
  model: 'Y02'
4484
4542
  - regex: 'vivo 19(?:04|40)(?:[);/ ]|$)'
@@ -4501,8 +4559,12 @@ Vivo:
4501
4559
  model: 'Y19'
4502
4560
  - regex: 'V202[79](?:_PK)?(?:[);/ ]|$)'
4503
4561
  model: 'Y20'
4504
- - regex: 'V2207(?:[);/ ]|$)'
4562
+ - regex: '(?:V2207|V2238)(?:[);/ ]|$)'
4505
4563
  model: 'Y22'
4564
+ - regex: 'V2249'
4565
+ model: 'Y27'
4566
+ - regex: 'V2302'
4567
+ model: 'Y27 5G'
4506
4568
  - regex: 'V2206(?:[);/ ]|$)'
4507
4569
  model: 'Y22s'
4508
4570
  - regex: 'vivo 1613(?:[);/ ]|$)'
@@ -6150,7 +6212,7 @@ Cube:
6150
6212
 
6151
6213
  # Meta (https://about.facebook.com/), former Oculus (https://www.oculus.com/)
6152
6214
  Meta:
6153
- regex: '(?:Pacific|Quest).+OculusBrowser|Standalone HMD'
6215
+ regex: '(?:Pacific|(?<!like )Quest).+OculusBrowser|Standalone HMD'
6154
6216
  device: 'wearable'
6155
6217
  models:
6156
6218
  - regex: 'Pacific'
@@ -6162,7 +6224,7 @@ Meta:
6162
6224
 
6163
6225
  # CUBOT (www.cubot.net)
6164
6226
  CUBOT:
6165
- regex: 'CUBOT|(?<!QUMO )QUEST(?!(?:[0-9]|\s[0-9]))(?: LITE)?|(?:(?<!(?:Redmi|Tegra) )NOTE 7|(?<!Galaxy )NOTE 20(?: PRO)?|RAINBOW 2|KING_KONG_3|KINGKONG [5679]|KINGKONG 5 Pro|ZORRO 001|KINGKONG[_ ](?:MINI2?|POWER)|KING KONG CS|R15_PRO|S550 Pro| CHEETAH| [RX]19|X19 S|(?<!MI )MAX 3|Android 9;(?: [\w-]+;)? (?:J5|MAX 2)|Android [89](?:[\d.]*);(?: [\w-]+;)? R15(?! Dream Mirror)|Android 11;(?: [\w-]+;)? (?:Pocket|NOTE 9|P50)|POCKET 3)(?:[);/ ]|$)'
6227
+ regex: 'CUBOT|(?<!QUMO |like )QUEST(?!(?:[0-9]|\s[0-9]))(?: LITE)?|(?:(?<!(?:Redmi|Tegra) )NOTE 7|(?<!Galaxy )NOTE 20(?: PRO)?|RAINBOW 2|KING_KONG_3|KINGKONG [5679]|KINGKONG 5 Pro|ZORRO 001|KINGKONG[_ ](?:MINI2?|POWER)|KING KONG CS|R15_PRO|S550 Pro| CHEETAH| [RX]19|X19 S|(?<!MI )MAX 3|Android 9;(?: [\w-]+;)? (?:J5|MAX 2|X20 PRO)|Android [89](?:[\d.]*);(?: [\w-]+;)? R15(?! Dream Mirror| Neo)|Android 11;(?: [\w-]+;)? (?:Pocket|NOTE 9|P50)|POCKET 3)(?:[);/ ]|$)'
6166
6228
  device: 'smartphone'
6167
6229
  models:
6168
6230
  - regex: 'POCKET (3)'
@@ -6197,6 +6259,8 @@ CUBOT:
6197
6259
  model: 'Quest Lite'
6198
6260
  - regex: 'QUEST'
6199
6261
  model: 'Quest'
6262
+ - regex: 'X20 PRO'
6263
+ model: 'X20 Pro'
6200
6264
  - regex: 'ZORRO 001'
6201
6265
  model: 'Zorro 001'
6202
6266
  - regex: 'CUBOT[ _]Echo'
@@ -6423,7 +6487,7 @@ Desay:
6423
6487
 
6424
6488
  # DEXP (dexp.club)
6425
6489
  DEXP:
6426
- regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|Larus_TV1|Ixion(?:ML4.7|ES250)|M150Storm|(?:SENIOR|F4[38]D8000K|VA(?:[12]10|170)|ML450|MS[56]50|BL(?:[123]50|160|155)|BS(?:155|160|[1256]50)|(?<!ILIUM )S(?:3[78]0|2[89]0|670)|AL(?:[12]40|[23]50)|AS(?:155|[123]60)| (?:B260|B245|H[12]10|H270|L470|N280i|P310|P380i?|R1[18]0|Q110|E1[78]0|E[12]10|B(?:450|340|35[05])|M170|M445|M[12]10|T155|H32F8000C|U43F8000Q|A(?:1[456]0|340|[34]55)|GS15[035]|GL[23]55|G25[035]|G355|G550|G15[05]|ES750|XL150|Z[1-4]55|H[13]70|H[34]10|P[45]10|L2[17]0)|Z250|A440|(?<!MITO )A350(?! TV)|N[13]80i|(?<!Blade )L1[178]0|L3[17]0i|(?<!VOX )G450|G660|Q[123]10|Q[12]80|N[234]10|N[35]70|EX111|S[245]70|S[127]70i|S169|S110|S180i?|S770|A555(?! Universe)|(?:U75H8000K|U50H8000E|U65H8000K|U50G8000QG|U55H8050E|U43G9000CG|U43F8100QG|U55G8000QG|U50G9000CG|H32H8001C|H32G8000CG|H32F8000QG?(?:-[abc])?|H32F8[01]00Q|H39F8000Q|F43H8000K|U43H8000E|U43F8000EG|F43F8000[CQ]G?|F32[FG]8000C|H24H8000C|H24F8000Q|F43F8000Q-G)(?:-[AbcfedH])?|Android 8(?:[\d.]*);(?: [\w-]+;)? A240|android 10;(?: [\w-]+;)? (?:B[23]1|B38|B1[87]|K28|K[34]1)|android 9;(?: [\w-]+;)? (?:K18|K21|B11)|android 11;(?: [\w-]+;)? (?:D[12]1|T21|K[345]1|K[342]8|K61|C3[78]|B28|B27|H28)|H32H8051C-G|H3218000K|U50H8050EG|H32I8000K|U65G8000Q|U43G8100QG|Android 11;(?: [\w-]+;)? P11)(?:[);/ ]|$)'
6490
+ regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|Larus_TV1|Ixion(?:ML4.7|ES250)|M150Storm|(?:SENIOR|F4[38]D8000K|VA(?:[12]10|170)|ML450|MS[56]50|BL(?:[123]50|160|155)|BS(?:155|160|[1256]50)|(?<!ILIUM )S(?:3[78]0|2[89]0|670)|AL(?:[12]40|[23]50)|AS(?:155|[123]60)| (?:B260|B245|H[12]10|H270|L470|N280i|P310|P380i?|R1[18]0|Q110|E1[78]0|E[12]10|B(?:450|340|35[05])|M170|M445|M[12]10|T155|H32F8000C|U43F8000Q|A(?:1[456]0|340|[34]55)|GS15[035]|GL[23]55|G25[035]|G355|G550|G15[05]|ES750|XL150|Z[1-4]55|H[13]70|H[34]10|P[45]10|L2[17]0)|Z250|A440|(?<!MITO )A350(?! TV)|N[13]80i|(?<!Blade )L1[178]0|L3[17]0i|(?<!VOX )G450|G660|Q[123]10|Q[12]80|N[234]10|N[35]70|EX111|S[245]70|S[127]70i|S169|S110|S180i?|S770|A555(?! Universe)|(?:U75H8000K|U50H8000E|U65H8000K|U50G8000QG|U55H8050E|U43G9000CG|U43F8100QG|U55G8000QG|U50G9000CG|H32H8001C|H32G8000CG|H32F8000QG?(?:-[abc])?|H32F8[01]00Q|H39F8000Q|F43H8000K|U43H8000E|U43F8000EG|F43F8000[CQ]G?|F32[FG]8000C|F43G8000C|H24H8000C|H24F8000Q|F43F8000Q-G)(?:-[AbcfedH])?|Android 8(?:[\d.]*);(?: [\w-]+;)? A240|android 10;(?: [\w-]+;)? (?:B[23]1|B38|B1[87]|K28|K[34]1)|android 9;(?: [\w-]+;)? (?:K18|K21|B11)|android 11;(?: [\w-]+;)? (?:D[12]1|T21|K[345]1|K[342]8|K61|C3[78]|B28|B27|H28)|H32H8051C-G|50UCY2-G|55UCY1|H3218000K|U50F8000QG|U50H8050EG|H32I8000K|U65G8000Q|U43G8100QG|Android 11;(?: [\w-]+;)? P11)(?:[);/ ]|$)'
6427
6491
  device: 'smartphone'
6428
6492
  models:
6429
6493
  - regex: '(?:DEXP_)?(ML450|MS[56]50|ES750|XL150|ES1050)(?:[);/ ]|$)'
@@ -6483,7 +6547,7 @@ DEXP:
6483
6547
  device: 'console'
6484
6548
  model: 'Freya'
6485
6549
 
6486
- - regex: '([HFU]\d{2}[A-Z]\d{4}[A-Z]{1,2}|AL-2020|H32F8000Q|H32[1I]8000K|H32H8051C-G|F43F8000Q-G)(?:-[AbcfedH]|U50H8050EG|U65G8000Q)?(?:[);/ ]|$)'
6550
+ - regex: '([HFU]\d{2}[A-Z]\d{4}[A-Z]{1,2}|AL-2020|H32F8000Q|H32[1I]8000K|H32H8051C-G|F43F8000Q-G|50UCY2-G|55UCY1)(?:-[AbcfedH]|U50H8050EG|U65G8000Q)?(?:[);/ ]|$)'
6487
6551
  device: 'tv'
6488
6552
  model: '$1'
6489
6553
 
@@ -6602,7 +6666,7 @@ COMPUMAX:
6602
6666
 
6603
6667
  # Digma
6604
6668
  Digma:
6605
- regex: 'Digma[_ ]([^;/]+) Build|iD[sr]Q\d+|DiMagic|HIT HT707[10]MG|CITI (?:7 E401 4G|8 E400 4G|ATL 4G|Kids|Octa [178]0|1902 3G|10 E402|Z530 3G|13 X703 4G)|(CITI[_ ](?:[A-Z0-9]+)[_ ][34]G)[ _][TC][ST](?:[0-9]{4}[PM][LG])|HIT 4G|HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|(iDxD8 3G|iDxD10 3G|iDrQ10 3G|iDxD[45]|iDxQ5|iD[nx]D7(?:[_ ]3G)?)|PS604M|PT452E|Linx.+ [34]G L[TS][0-9]{4}[PM][GL]|Linx PS474S|PS1043MG|HT7071MG|HT5035PG|HT4039PG|NS6902QL|NS9797MG|TS7854M|TS1012E 3G|TT1004PG|TT702[045]MG|TT1002MG|TT7026MW|WS8251PL|VRL42|((?:Optima(?![_ ]T-II)(?: Kids 7)?|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)|DM-LED(?:32SR21|43SR23|42SR24|24SR20|55UR31)|RS1248PL|RS1253PL|RS1249PL|RS1267PL|WS1250PL'
6669
+ regex: 'Digma[_ ]([^;/]+) Build|iD[sr]Q\d+|DiMagic|HIT HT707[10]MG|CITI (?:7 E401 4G|8 E400 4G|ATL 4G|Kids|Octa [178]0|1902 3G|10 E402|Z530 3G|13 X703 4G)|(CITI[_ ](?:[A-Z0-9]+)[_ ][34]G)[ _][TC][ST](?:[0-9]{4}[PM][LG])|HIT 4G|HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|(iDxD8 3G|iDxD10 3G|iDrQ10 3G|iDxD[45]|iDxQ5|iD[nx]D7(?:[_ ]3G)?)|PS604M|PT452E|Linx.+ [34]G L[TS][0-9]{4}[PM][GL]|Linx PS474S|PS1043MG|HT7071MG|HT5035PG|HT4039PG|NS6902QL|NS9797MG|TS7854M|TS1012E 3G|TT1004PG|TT702[045]MG|TT1002MG|TT7026MW|WS8251PL|VRL42|((?:Optima(?![_ ]T-II)(?: Kids 7)?|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)|DM-LED(?:32SR21|43SR23|42SR24|24SR20|55UR31)|RS1248PL|RS1253PL|RS1249PL|RS1267PL|WS1250PL|WS1262RW'
6606
6670
  device: 'smartphone'
6607
6671
  models:
6608
6672
  - regex: 'HIT(?: 3G)? HT707[10]MG'
@@ -6690,6 +6754,9 @@ Digma:
6690
6754
  - regex: 'CITI[_ ](1902 3G|Kids(?:[_ ](?:8[01]|10))?|8527_4G|Octa [178]0|10 E402 4G|8 E400 4G|7 E401 4G|13 X703 4G|1312C 4G|8443E 4G)'
6691
6755
  model: 'CITI $1'
6692
6756
  device: 'tablet'
6757
+ - regex: 'WS1262RW'
6758
+ model: 'Kids 1210B'
6759
+ device: 'tablet'
6693
6760
  - regex: '(CITI[ _](?:[A-Z0-9]+)[ _][34]G)[ _][TC][ST](?:106[24]ML|111[46]ML|1115MG|1117PG|1207MG|1210MG|3001ML|500[67]PG|7052PG|706[567]MG|7097MG|720[48]MG|820[69]MG|11[459]4MG|1195MG|1196ML|3001ML|8152ML|1050PL|709[68]PL|7113PL|7193MG|7216MG|8205PG|7203MG|8143MG|7153MG|7141MG|7140ML|8268PL)'
6694
6761
  model: '$1'
6695
6762
  device: 'tablet'
@@ -6785,7 +6852,7 @@ DoCoMo:
6785
6852
 
6786
6853
  # Doogee
6787
6854
  Doogee:
6788
- regex: 'DOOGEE[/ _-]|Valencia2_Y100(?:_?(?:pro|plus))?|Y100_Plus|X5max(?:[_ ]PRO)?|Shoot_[12]|x5_doogee|(KISSME|BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)(?:[);/ ]|$)|(?:BL12000|BL5500[_ ]Lite| Y6C|X9 Mini|LEO_DG280|Y9Plus|Y8 Plus|Hitman_DG850|S(?:4[01]|[568]8|9[05678]|59|61|8[69])Pro|X9[567]Pro|S[478]0Lite|S88Plus|BL[579]000|N[24]0Pro|(?<!Lenovo )S90C|Ibiza_F2|S55_Lite|T5_Lite|S60 ?Lite|Iron-bone DG750|X10S|X[569]0L|MIX2|Y6 Max|Y6_Piano(?:_black)?|X[679]pro|S96GT|android 10;(?: [\w-]+;)? (?:S59|S35|X95i?|X93|N30)|android 12;(?: [\w-]+;)? (?:S98|S61|S89|V Max|S100|V30T?)|Y7Plus|S35T|Android 9(?:[\d.]*);(?: [\w-]+;)? (?:N100|Y8)|D60 Pro|Turbo_mini_F1)(?:[);/ ]|$)'
6855
+ regex: 'DOOGEE[/ _-]|Valencia2_Y100(?:_?(?:pro|plus))?|Y100_Plus|X5max(?:[_ ]PRO)?|Shoot_[12]|x5_doogee|(KISSME|BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)(?:[);/ ]|$)|(?:BL12000|BL5500[_ ]Lite| Y6C|X9 Mini|LEO_DG280|Y9Plus|Y8 Plus|Hitman_DG850|S(?:4[01]|[568]8|9[05678]|59|61|8[69])Pro|X9[567]Pro|S[478]0Lite|S88Plus|BL[579]000|N[24]0Pro|(?<!Lenovo )S90C|Ibiza_F2|S55_Lite|T5_Lite|S60 ?Lite|Iron-bone DG750|X10S|X[569]0L|MIX2|Y6 Max|Y6_Piano(?:_black)?|S100Pro|X[679]pro|S96GT|android 10;(?: [\w-]+;)? (?:S59|S35|X95i?|X93|N30)|android 12;(?: [\w-]+;)? (?:S98|S61|S89|V Max|S100|V30T?)|Y7Plus|S35T|Android 9(?:[\d.]*);(?: [\w-]+;)? (?:N100|Y8)|D60 Pro|Turbo_mini_F1)(?:[);/ ]|$)'
6789
6856
  device: 'smartphone'
6790
6857
  models:
6791
6858
  - regex: 'V Max'
@@ -6814,7 +6881,7 @@ Doogee:
6814
6881
  model: 'BL5500 Lite'
6815
6882
  - regex: 'BL12000'
6816
6883
  model: 'BL12000'
6817
- - regex: 'S([568]8|9[05678]|59|61|4[01]|8[69])Pro'
6884
+ - regex: 'S([568]8|9[05678]|59|61|4[01]|8[69]|100)Pro'
6818
6885
  model: 'S$1 Pro'
6819
6886
  - regex: 'S(88)Plus'
6820
6887
  model: 'S$1 Plus'
@@ -6983,7 +7050,7 @@ EBEST:
6983
7050
 
6984
7051
  # Horizont (https://horizont.by/en/)
6985
7052
  Horizont:
6986
- regex: '(?:Horizont[_ ])?(32LE7011D|43LE7022D|32LE7052D)'
7053
+ regex: '(?:Horizont[_ ])?(32LE7011D|43LE7022D|32LE7052D|65LE7053D)'
6987
7054
  device: 'tv'
6988
7055
  model: '$1'
6989
7056
 
@@ -7062,7 +7129,7 @@ Eks Mobility:
7062
7129
 
7063
7130
  # Elephone
7064
7131
  Elephone:
7065
- regex: 'Elephone|Vowney(?: Lite)?|P6000(?!_Plus)( ?Pro| ?Plus|\+| ?02| 5.0 01)?|(?<!Chrome/)Soldier|(?:Trunk 1|P8_3D|P8_Max|P8_Mini|A6_mini|P9000(?:_Lite)?|Android 9;(?: [\w-]+;)? PX|PX_Pro| U3H|U_Pro|Android 10;(?: [\w-]+;)? (?:E10_Pro|E10))(?:[);/ ]|$)'
7132
+ regex: 'Elephone|Vowney(?: Lite)?|P6000(?!_Plus)( ?Pro| ?Plus|\+| ?02| 5.0 01)?|(?<!Chrome/)Soldier|C1_Max|(?:Trunk 1|P8_3D|P8_Max|P8_Mini|A6_mini|P9000(?:_Lite)?|Android 9;(?: [\w-]+;)? PX|PX_Pro| U3H|U_Pro|Android 10;(?: [\w-]+;)? (?:E10_Pro|E10))(?:[);/ ]|$)'
7066
7133
  device: 'smartphone'
7067
7134
  models:
7068
7135
  - regex: '(?:Elephone[_ ])?Trunk(?: 1)?(?:[);/ ]|$)'
@@ -7091,6 +7158,8 @@ Elephone:
7091
7158
  model: '$1 Pro'
7092
7159
  - regex: ' U3H(?:[);/ ]|$)'
7093
7160
  model: 'U3H'
7161
+ - regex: 'C1_Max(?:[);/ ]|$)'
7162
+ model: 'C1 Max'
7094
7163
  - regex: 'Android 9;(?: [\w-]+;)? PX(?:[);/ ]|$)'
7095
7164
  model: 'PX'
7096
7165
  - regex: '(P8_3D|P8_Max)(?:[);/ ]|$)'
@@ -7288,7 +7357,7 @@ Smartab:
7288
7357
 
7289
7358
  # Sony & Sony Ericsson (combined as they are mixed up)
7290
7359
  Sony:
7291
- regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|(?:[4-9]0[12])SO|C1[569]0[45]|C2[01]0[45]|C230[45]|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D(?:200[45]|21(?:0[45]|14)|22(?:0[236]|12|43)|230[2356]|240[36]|2502|2533|510[236]|530[36]|5316|5322|5503|58[03]3|65(?:0[23]|43|63)|66[03458]3|66[14]6|6708)|E(?:20[0345]3|2006|210[45]|2115|2124|230[36]|2312|23[356]3|530[36]|53[3456]3|5506|55[356]3|56[46305][36]|58[02]3|6508|65[35]3|66[0358]3|68[358]3)|F(?:311[12356]|331[13]|321[12356]|5[13]21|5122|813[12]|833[12])|G(?:2299|312[135]|311[26]|322[136]|3212|331[123]|3412|3416|342[136]|823[12]|834[123]|8[14]4[12]|8188)|H(?:3113|3123|3133|3213|3223|3311|3321|3413|4113|4133|4213|4233|4311|4331|4413|4433|4493|8116|8166|82[1679]6|83[12]4|8416|9436|9493)|I(?:3[12]23|3213|[34]113|[34]312|4193|42[19]3|4332)|J(?:3173|3273|81[17]0|82[17]0|91[15]0|92[16]0)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|XQ-[A-Z]{2}[0-9]{2}|W960|portalmmm/2\.0 K|S3[69]h|SOG0[1-9]|SOL2[2-6]|SOT[23]1|SOV3[1-9]|SOV4[0-3]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[2-5]D|[1-4]E|[1-5]F|[1-5]G|[1-4]H|[1-4]J|[1-5]K|1M|[1-3]L)|R800[aix]|LiveWithWalkman|BRAVIA|SGP771|E3 Dual|A[012]01SO|A204SO|A[12]02SO|SO-[45]1[AB]|SO-5[1234][ABC]|A[12]03SO|A002SO|NW-(A[13]00|ZX500|Z1000)Series|NSZ-GS7|SmartWatch 3|SVP-DTV15'
7360
+ regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|(?:[4-9]0[12])SO|C1[569]0[45]|C2[01]0[45]|C230[45]|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D(?:200[45]|21(?:0[45]|14)|22(?:0[236]|12|43)|230[2356]|240[36]|2502|2533|510[236]|530[36]|5316|5322|5503|58[03]3|65(?:0[23]|43|63)|66[03458]3|66[14]6|6708)|E(?:20[0345]3|2006|210[45]|2115|2124|230[36]|2312|23[356]3|530[36]|53[3456]3|5506|55[356]3|56[46305][36]|58[02]3|6508|65[35]3|66[0358]3|68[358]3)|F(?:311[12356]|331[13]|321[12356]|5[13]21|5122|813[12]|833[12])|G(?:2299|312[135]|311[26]|322[136]|3212|331[123]|3412|3416|342[136]|823[12]|834[123]|8[14]4[12]|8188)|H(?:3113|3123|3133|3213|3223|3311|3321|3413|4113|4133|4213|4233|4311|4331|4413|4433|4493|8116|8166|82[1679]6|83[12]4|8416|9436|9493)|I(?:3[12]23|3213|[34]113|[34]312|4193|42[19]3|4332)|J(?:3173|3273|81[17]0|82[17]0|91[15]0|92[16]0)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|XQ-[A-Z]{2}[0-9]{2}|W960|portalmmm/2\.0 K|S3[69]h|SOG(?:0[1-9]|10)|SOL2[2-6]|SOT[23]1|SOV3[1-9]|SOV4[0-3]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[2-5]D|[1-4]E|[1-5]F|[1-5]G|[1-4]H|[1-4]J|[1-5]K|1M|[1-3]L)|R800[aix]|LiveWithWalkman|BRAVIA|SGP771|E3 Dual|A[012]01SO|A204SO|A[12]02SO|SO-[45]1[AB]|SO-5[1234][ABCD]|A[12]03SO|A002SO|NW-(A[13]00|ZX500|Z1000)Series|NSZ-GS7|SmartWatch 3|SVP-DTV15'
7292
7361
  device: 'smartphone'
7293
7362
  models:
7294
7363
  # SONY ERICSSON: explicit smartphone models
@@ -7445,8 +7514,12 @@ Sony:
7445
7514
  model: 'Xperia Ace III'
7446
7515
  - regex: '(?:A001SO|XQ-AU42|XQ-AU51|XQ-A[TU]52|SO-41A|SOV43)(?:[);/ ]|$)'
7447
7516
  model: 'Xperia 10 II'
7517
+ - regex: '(?:A001SO|XQ-AU42|XQ-AU51|XQ-A[TU]52|SO-41A|SOV43)(?:[);/ ]|$)'
7518
+ model: 'Xperia 10 II'
7448
7519
  - regex: '(?:A10[12]SO|SO-52B|SOG04|XQ-BT52)(?:[);/ ]|$)'
7449
7520
  model: 'Xperia 10 III'
7521
+ - regex: '(?:SO-52D)(?:[);/ ]|$)'
7522
+ model: 'Xperia 10 V'
7450
7523
  - regex: 'XQ-BT44(?:[);/ ]|$)'
7451
7524
  model: 'Xperia 10 III Lite'
7452
7525
  - regex: '(?:XQ-CC72|XQ-CC[45]4|SOG07|SO-52C|A202SO)(?:[);/ ]|$)'
@@ -7465,6 +7538,8 @@ Sony:
7465
7538
  model: 'Xperia 1 III'
7466
7539
  - regex: '(?:Sony(?:Ericsson)?)?(?:SOG06|XQ-CT72|SO-51C|A201SO|XQ-CT[45]4)(?:[);/ ]|$)'
7467
7540
  model: 'Xperia 1 IV'
7541
+ - regex: '(?:Sony(?:Ericsson)?)?(?:SOG10|SO-51D)(?:[);/ ]|$)'
7542
+ model: 'Xperia 1 V'
7468
7543
  - regex: '(?:Sony(?:Ericsson)?)?LT22i|Xperia P'
7469
7544
  model: 'Xperia P'
7470
7545
  - regex: '(?:Sony(?:Ericsson)?)?LT25i|Xperia V'
@@ -7735,7 +7810,7 @@ Sony:
7735
7810
  device: 'wearable'
7736
7811
 
7737
7812
  # SONY: Bravia or TV Box
7738
- - regex: '(?:BRAVIA )(2K GB ATV3|[48]K UR[123]|4K GB ATV3|4K GB|4K VH2|4K 2015|2015|VH1|VU1)(?:[);/ ]|$)'
7813
+ - regex: '(?:BRAVIA )(2K GB ATV3|[48]K UR[123]|4K GB ATV3|4K GB|4K VH2|4K 2015|2015|VH1|VU[12]|VU31)(?:[);/ ]|$)'
7739
7814
  model: 'Bravia $1'
7740
7815
  device: 'tv'
7741
7816
  - regex: 'SVP-DTV15(?:[);/ ]|$)'
@@ -8243,7 +8318,7 @@ FNB:
8243
8318
 
8244
8319
  # Fujitsu
8245
8320
  Fujitsu:
8246
- regex: '(?:F-01[FHJKLM]|F-02[EFGHLK]|F-03[DEFGKHL]|F-04[EGFHKJ]|F-05[DEFJG]|F-06[EF]|F-07[DE]|F-08D|F-09[DE]|F-10D|F-[45]1A|F-41B|F-[45]2A|F-11D|F-12C|F-5[12]B|M532|FARTM933KZ|901FJ|arrows(?:RX|M03|M0[45](?:-PREMIUM)?)|801FJ|FJL2[12]|RM02|FCG01|A101FC|BZ02)(?:[);/ ]|$)'
8321
+ regex: '(?:F-01[FHJKLM]|F-02[EFGHLK]|F-03[DEFGKHL]|F-04[EGFHKJ]|F-05[DEFJG]|F-06[EF]|F-07[DE]|F-0[18]D|F-09[DE]|F-[45]1A|F-41B|F-[45]2A|F-1[012]D|F-12C|F-5[12]B|M532|FARTM933KZ|901FJ|arrows(?:RX|M03|M0[45](?:-PREMIUM)?)|801FJ|FJL2[12]|RM02|FCG01|A101FC|BZ02)(?:[);/ ]|$)'
8247
8322
  device: 'smartphone'
8248
8323
  models:
8249
8324
  - regex: 'F-51A(?:[);/ ]|$)'
@@ -8318,8 +8393,8 @@ Fujitsu:
8318
8393
  model: 'ANTEPRIMA F-09D'
8319
8394
  - regex: 'F-09E(?:[);/ ]|$)'
8320
8395
  model: 'Raku-Raku Smartphone Premium F-09E'
8321
- - regex: 'F-52B(?:[);/ ]|$)'
8322
- model: 'Raku-Raku Smartphone F-52B'
8396
+ - regex: 'F-(52B|12D)(?:[);/ ]|$)'
8397
+ model: 'Raku-Raku Smartphone F-$1'
8323
8398
  - regex: 'F-10D(?:[);/ ]|$)'
8324
8399
  model: 'Arrows X F-10D'
8325
8400
  - regex: 'F-11D(?:[);/ ]|$)'
@@ -8341,7 +8416,7 @@ Fujitsu:
8341
8416
  - regex: 'arrowsM(0[45])(?:[);/ ]|$)'
8342
8417
  model: 'Arrows M$1'
8343
8418
 
8344
- - regex: '(F-0[32]F|F-03G|F-04H|F-05E|F-02K)(?:[);/ ]|$)'
8419
+ - regex: '(F-0[32]F|F-03G|F-04H|F-05E|F-02K|F-01D)(?:[);/ ]|$)'
8345
8420
  model: 'Arrows Tab $1'
8346
8421
  device: 'tablet'
8347
8422
  - regex: 'FARTM933KZ'
@@ -8822,7 +8897,7 @@ Goly:
8822
8897
 
8823
8898
  # Google
8824
8899
  Google:
8825
- regex: 'Nexus(?! 6P)|GoogleTV|Google Fiber|Google Pixel|Glass(?<!Browser)|CrKey[^a-z0-9]|(?:Pixel|sailfish|taimen|blueline|Chromecast(?: HD)?)(?: Build|[)])|Pixel (?:XL|C|[2-7]|[2-4] XL)|Google 2XL|PIXEL4X|G011A|AOSP on (?:bramble|HammerHead|Manta|sunfish)|Pipit|ADT-2'
8900
+ regex: 'Nexus(?! 6P)|GoogleTV|Google Fiber|Google Pixel|Glass(?<!Browser)|CrKey[^a-z0-9]|(?:Pixel|sailfish|taimen|blueline|Chromecast(?: HD)?)(?: Build|[)])|Pixel (?:XL|C|[2-8]|[2-4] XL)|Google 2XL|PIXEL4X|G011A|AOSP on (?:bramble|HammerHead|Manta|sunfish)|Pipit|ADT-2'
8826
8901
  device: 'smartphone'
8827
8902
  models:
8828
8903
  - regex: 'Glass'
@@ -8888,9 +8963,9 @@ Google:
8888
8963
  model: 'Pixel 2'
8889
8964
  - regex: 'Google 2XL'
8890
8965
  model: 'Pixel 2 XL'
8891
- - regex: 'Pixel ([67]) Pro'
8966
+ - regex: 'Pixel ([678]) Pro'
8892
8967
  model: 'Pixel $1 Pro'
8893
- - regex: 'pixel ([2-7])'
8968
+ - regex: 'pixel ([2-8])'
8894
8969
  model: 'Pixel $1'
8895
8970
  - regex: 'Pipit'
8896
8971
  device: 'phablet'
@@ -8924,12 +8999,14 @@ Gradiente:
8924
8999
 
8925
9000
  # Grundig
8926
9001
  Grundig:
8927
- regex: 'GR?-TB[0-9]+[a-z]*|GRUNDIG|portalmmm/2\.0 G|AFTEU(?:011|014|FF014)'
9002
+ regex: 'GR?-TB[0-9]+[a-z]*|(?<!Arcelik )GRUNDIG|portalmmm/2\.0 G|AFTEU(?:011|014|FF014)'
8928
9003
  device: 'tv'
8929
9004
  models:
8930
9005
  - regex: '(GR?-TB[0-9]+[a-z]*)'
8931
9006
  device: 'tablet'
8932
9007
  model: '$1'
9008
+ - regex: 'GRUNDIG (?:Android TV|Google TV UHD\+)'
9009
+ model: ''
8933
9010
  - regex: 'GRUNDIG ([a-z0-9]+)'
8934
9011
  model: '$1'
8935
9012
  - regex: 'portalmmm/2\.0 G([a-z0-9]+)'
@@ -9084,9 +9161,113 @@ Hasee:
9084
9161
  - regex: 'Hasee ([^;/)]+)(?:[);/ ]|$)'
9085
9162
  model: '$1'
9086
9163
 
9164
+ # Toshiba
9165
+ Toshiba:
9166
+ regex: 'Toshiba|TSBNetTV/|portalmmm/[12].0 TS|(?:T-01C|T-0[12]D|IS04|IS11T|AT1S0|AT300SE|AFTDCT31|AT(?:7-C|10-A|10[PL]E-A|100|200|270|300|330|374|400|470|500a?|503|570|703|830)|AFTKMST12|AFTBAMR311|SATELLITE (?:C655|L50-C|Pro L300|A100))(?:[);/ ]|$)'
9167
+ device: 'smartphone'
9168
+ models:
9169
+ # explicit smartphone models
9170
+ - regex: 'T-01C'
9171
+ model: 'Regza T-01C'
9172
+ - regex: 'T-01D'
9173
+ model: 'Regza T-01D'
9174
+ - regex: 'T-02D'
9175
+ model: 'Regza T-02D'
9176
+ - regex: 'IS04'
9177
+ model: 'Regza IS04'
9178
+ - regex: 'IS11T'
9179
+ model: 'Regza IS11T'
9180
+
9181
+ # explicit tablet models
9182
+ - regex: 'AT7-C'
9183
+ model: 'Excite'
9184
+ device: 'tablet'
9185
+ - regex: 'AT1S0'
9186
+ model: 'Regza AT1S0'
9187
+ device: 'tablet'
9188
+ - regex: 'AT300SE'
9189
+ model: 'Regza AT300SE'
9190
+ device: 'tablet'
9191
+ - regex: 'AT500a'
9192
+ model: 'Regza AT500a'
9193
+ device: 'tablet'
9194
+ - regex: 'AT(100|200|270|300|330|374|400|470|500|503|570|703|830)'
9195
+ model: 'Regza AT$1'
9196
+ device: 'tablet'
9197
+ - regex: 'AT10([PL])E-A'
9198
+ model: 'Excite AT10$1-A'
9199
+ device: 'tablet'
9200
+ - regex: 'AT10-A'
9201
+ model: 'Excite AT10-A'
9202
+ device: 'tablet'
9203
+
9204
+ - regex: 'SATELLITE L50-C'
9205
+ device: 'desktop'
9206
+ model: 'Satellite L50C'
9207
+ - regex: 'SATELLITE (C655|Pro L300|A100)'
9208
+ device: 'desktop'
9209
+ model: 'Satellite $1'
9210
+
9211
+ - regex: 'AFTKMST12'
9212
+ device: 'tv'
9213
+ model: '43LF711U20'
9214
+ - regex: 'AFTDCT31'
9215
+ device: 'tv'
9216
+ model: '4K UHD (2020)'
9217
+ - regex: 'AFTBAMR311'
9218
+ device: 'tv'
9219
+ model: '43LF421U19'
9220
+ - regex: 'TOSHIBA;SmartTV;([a-z0-9_ \-]+);'
9221
+ device: 'tv'
9222
+ model: '$1'
9223
+ - regex: 'TOSHIBA, ([a-z0-9_ \-]+), (?:wired|wireless)'
9224
+ device: 'tv'
9225
+ model: ''
9226
+ - regex: 'TSBNetTV/'
9227
+ device: 'tv'
9228
+ model: ''
9229
+ - regex: 'Toshiba[ /_\-]?([a-z0-9_ \-]+) Build'
9230
+ model: '$1'
9231
+ - regex: 'Toshiba[ /_\-]?([a-z0-9_\-]+)'
9232
+ model: '$1'
9233
+ - regex: 'portalmmm/[12].0 (TS[a-z0-9 ]+)'
9234
+ model: '$1'
9235
+
9236
+ # AWOX (https://www.awox.com.tr/)
9237
+ AWOX:
9238
+ regex: 'AWOX(?:[);/ ]|$)'
9239
+ device: 'tv'
9240
+ models:
9241
+ - regex: 'AWOX;SmartTV;([a-z0-9_ \-]+);'
9242
+ model: '$1'
9243
+
9244
+ # UGINE (https://www.ugine.com.sa/ar)
9245
+ UGINE:
9246
+ regex: 'UGINE(?:[);/ ]|$)'
9247
+ device: 'tv'
9248
+ models:
9249
+ - regex: 'UGINE;SmartTV;([a-z0-9_ \-]+)V[ST];'
9250
+ model: '$1'
9251
+
9252
+ # Sunny
9253
+ Sunny:
9254
+ regex: '(?:SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola|SN7014S?|SN7016|SN10016|SUNNY (?:SS01|S52D)|SUNNY;SmartTV)(?:[);/ ]|$)'
9255
+ device: 'smartphone'
9256
+ models:
9257
+ - regex: '(SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola)(?:[);/ ]|$)'
9258
+ model: '$1'
9259
+ - regex: 'SUNNY (SS01|S52D)'
9260
+ model: '$1'
9261
+ - regex: '(SN7014S?|SN7016|SN10016)(?:[);/ ]|$)'
9262
+ device: 'tablet'
9263
+ model: '$1'
9264
+ - regex: 'SUNNY;SmartTV'
9265
+ device: 'tv'
9266
+ model: 'Smart TV'
9267
+
9087
9268
  # Hisense (www.hisense-usa.com)
9088
9269
  Hisense:
9089
- regex: '(?:HS-)?Hisense ([^;/]+) Build|Hisense [^);/]+|HISENSE; |HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\-]*|HNR55[01]T|E270BSA|HWCD100E|HITV300C|HITV205N|M470BS[AE]|EG98|E2281|EG680|I46D1G|HAT4KDTV|HITV10[12]C|HLTE([237]00T|229T|200M|203T|202N|21[023567][TM]|22[67]T|22[13]E|230E|103E|310[TM]|31[16]T|500T|501N|510[TM]|7[23]0T|M800)|KS(?:907|964)|U972|U601S Pro|U972_Pro|HNR320T|HiSmart [24]K ATV4|HiSmartTV A4'
9270
+ regex: '(?:HS-)?Hisense ([^;/]+) Build|Hisense|HS-(?:G|U|EG?|I|L|T|X)[0-9]+[a-z0-9\-]*|HNR55[01]T|E270BSA|HWCD100E|HITV300C|HITV205N|M470BS[AE]|EG98|E2281|EG680|I46D1G|HAT4KDTV|HITV10[12]C|HLTE([237]00T|229T|200M|203T|202N|21[023567][TM]|22[67]T|22[13]E|230E|103E|310[TM]|31[16]T|500T|501N|510[TM]|7[23]0T|M800)|KS(?:907|964)|U972|U601S Pro|U972_Pro|HNR320T|HiSmart [24]K ATV4|HiSmartTV A4|HLTE556N'
9090
9271
  device: 'smartphone'
9091
9272
  models:
9092
9273
  # explicit tablet models
@@ -9112,6 +9293,8 @@ Hisense:
9112
9293
  model: 'A6L'
9113
9294
  - regex: 'HNR320T'
9114
9295
  model: 'A7'
9296
+ - regex: 'HLTE556N'
9297
+ model: 'A9'
9115
9298
  - regex: 'M50 Lite 2021'
9116
9299
  model: 'M50 Lite (2021)'
9117
9300
  - regex: 'E50s \d+GB'
@@ -9197,6 +9380,15 @@ Hisense:
9197
9380
  - regex: '(HAT4KDTV|HiSmart [24]K ATV4|HiSmartTV A4)(?:[);/ ]|$)'
9198
9381
  device: 'tv'
9199
9382
  model: '$1'
9383
+ - regex: 'Hisense;SmartTV;([a-z0-9_ \-]+)V[ST];'
9384
+ device: 'tv'
9385
+ model: '$1'
9386
+ - regex: 'Hisense;SmartTV;([a-z0-9_ \-]+);'
9387
+ device: 'tv'
9388
+ model: '$1'
9389
+ - regex: '(HE43A6500UWTS)'
9390
+ device: 'tv'
9391
+ model: '$1'
9200
9392
 
9201
9393
  - regex: 'HITV205N(?:[);/ ]|$)'
9202
9394
  device: 'portable media player'
@@ -9410,11 +9602,15 @@ TD Tech:
9410
9602
 
9411
9603
  # Huawei
9412
9604
  Huawei:
9413
- regex: '(HW-)?(?:Huawei(?!Browser)|MediaPad T1|Ultym5|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANA|ANE|ARE|ARS|ASK|ATH|ATU|AUM|BAC|BAH[234]?|BG2|BGO|B[ZK]K|BKL|BL[ALN]|BND|BTV|CA[GMNZ]|CH[CM]|CHE[12]?|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|FRL|GEM|GRA|HDN|HLK|HMA|Hol|HRY|HWI|H[36]0|INE|JAT|JEF|JDN|JDN2|JKM|JMM|JSN|KII|KIW|KNT|KOB|KSA|LDN|LEO|LIO|LLD|LND|LON|LRA|LUA|LY[AO]|MAR|MHA|MRD|MYA|NCE|NEN|NEM|NEO|NXT|PAR(?!-[AH]0)|PCT|PIC|PLE|PLK|POT|PPA|PRA|RIO|RNE|RVL|SCC|SCL|SCM|SEA|SHT|SLA|SNE|SPN|STF|STK|TAG|TIT|TNY|TRT|VCE|VEN|VIE|VKY|VNS|VOG|VRD|VTR|WAS|YAL|G(?:527|620S|621|630|735)|Y(?:221|330|550|6[23]5))-(?:[A-Z]{0,2}[0-9]{1,4}[A-Z]{0,3}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))(?:[);/ ]|$))|hi6210sft|PE-(UL00|TL[12]0|TL00M)|T1-(A21?[Lw]|A2[23]L|701u|823L)|G7-(?:L01|TL00)|HW-01K|JNY-(LX[12]|AL10)|OXF-AN[01]0|TAS-(A[LN]00|L29|TL00)|WLZ-(AL10|AN00)|YOK-AN[10]0|NIC-LX1A|MRX-(AN19|AL[01]9|W[0-3]9)|CDY-(?:[AT]N00|AN[29][05]|NX9[AB]|TN[29]0)|GLK-(?:[AT]L00|LX1U)|JER-(?:[AT]N20|[AT]N10)|ELS-(?:[AT]N[10]0|NX9|N[23]9|N04)|AKA-(AL10|L29)|MON-(W|AL)19|BMH-(?:TN10|AN[12]0)|AQM-([AT]L[01]0|LX1)|MOA-([AT]L[02]0|LX9N)|NTS-AL00|ART-(?:[AT]L00[xm]|L29N?|L28)|MED-(?:[AT]L00|LX[29]N?|AL20)|EBG-(?:AN[01]0|TN00|N19)|ANA-(?:[AT]N00|NX9)|BZ[AK]-W00|BZT-(W09|AL[01]0)|HDL-(AL09|W09)|HWV3[123]|HW-02L|TEL-[AT]N(?:00a?|10)|KKG-AN[07]0|MXW-[AT]N00|JKM-AL00[ab]|TAH-(?:N29|AN00)m?|C8817D|T1-821W|d-01[JKH]|d-02[HK]|KRJ-(?:W09|AN00)|HWT31|Y320-U10|Y541-U02|VAT-L19|70[14]HW|60[58]HW|NOH-(?:NX9|AN0[01]|AN50|AL[01]0)|TNNH?-AN00|LIO-(?:[TA]L00|[LN]29|AN00)|KOB2K-L09|KOB2-(?:AL00|[LW]09|L03)|AGS3-(?:[WL]09|AL0[09]|W00[DE])|DNN-LX9|NEY-NX9|LON-AL00|HLK-L41|503HW|AGR-(?:[LW]09|AL09)|PPA-LX[12]|ANG-(?:AN00|LX[12])|NOP-AN00|ALA-AN70|DVC-[AT]N[02]0|302HW|Nexus 6P|DBY-W09|WKG-(?:LX9|[AT]N00)|JSC-(?:AN00|AL50)|OCE-A[NL][015]0|NZA-AL00|BRQ-A[LN]00|BZC-(?:AL|W)00|NEN-L(?:X1|22)|KOZ-AL[04]0|NTH-(?:AN00|NX9)|MRR-W[23]9|WGR-(?:W[10]9|AN19)|TET-AN[10]0|SCMR-(?:W09|AL09)|OXP-AN00|HJC-(?:AN90|LX9)|CDL-AN50|CND-AN00|NTN-(?:LX[13]|AN20|L22)|RNA-[AT]N00|CHL-(?:A[LN]00|AL60)|ELZ-AN[012]0|NAM-(?:LX9|AL00)|JLH-AN00|JAD-(?:AL[0568]0|LX9)|AGS5-(?:L09|W09)|AGS3K-(?:W20|[WL]0[09])|AGRK-[WL]09|MT2L03|LSA-AN00|KJR-W09|TET-A[NL][05]0|TYH601M|RTE-AL00|BAL-(?:AL00|L49)|BZI-(?:AL00|W00)|BZT3-(?:AL00|W09)|BZD-(?:W00|AL00)|MLD-AL[01]0|AGM3-(?:W09|AL09)HN|ABR-(?:AL[0689]0|LX9)|GIA-AN00|LEO-DLXXE?|BZA-L00|MGI-AN00|CMA-(?:LX[123]|AN[04]0)|NEW-AN90|KRJ2-(?:W09|AN00)|BRT-(?:W09|AN09)|ANY-(?:[LN]X1|LX[23]|AN00)|JLN-(?:LX[13]|AL00)|LGE-(?:NX[19]|AN[012]0)|TNA-AN00|TFY-(?:LX[123]|AN[04]0)|DIO-AN00|BZW-AL[01]0|MOGOLIA|CM990|MGA-(?:AL00|LX[39])|60[56]HW|Peppa-(?:L2[23]B|L0[23]B)|KANT-\d{3}[BCS]?|Kobe3-L09|FNE-(?:NX9|AN00)|HPB-AN00|Mate ?(?:[34]0 RS|Xs|30)|Y530|SDY-AN00|EC6108V[89]|CTR-(?:LX[123]|AL00)|VNE-(?:LX[123]|N41|AN[04]0)|HMW-W09|GLA-(?:LX[13]|AL00)|HEY-W09|GOT-(?:AL09|W[02]9)|PAL-(?:AL00|LX9)|PAN-L29|NNH-AN00|P Smart S|NCO-(?:LX[13]|AL00)|DCO-(?:AL00|LX9)|CET-(?:AL[06]0|LX9)|ADT-AN00|RMO-(?:AN00|NX1)|RKY-(?:AN00|LX[123])|M300-L09|EVE-LX9N?|BNE-(?:LX1|AL00)|dtab01|BZT4-W19|ROD-W09|ANP-AN00|WGRR-W09|HN3-U01|Holly-U19|BLM-00|ANN-AN00|VNA-(?:LX[23]|L29)|CRT-(?:NX1|LX[123]|AN00)|AGM-W09HN|PGT-(?:AN[12]0|N19)|GLL-AL01|MNA-(?:LX9|AL00)|LNA-(?:AL00|LX9)|ALT-L29|MAO-LX9N?|Enjoy 20 SE|ANB-AN00|STG-(?:AL00|LX1)|LTK-LX3|GOA-(?:LX9|AL80)|nova 6 5G| Angela-L|DBR-W09'
9605
+ regex: '(HW-)?(?:Huawei(?!Browser)|MediaPad T1|Ultym5|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANA|ANE|ARE|ARS|ASK|ATH|ATU|AUM|BAC|BAH[234]?|BG2|BGO|B[ZK]K|BKL|BL[ALN]|BND|BTV|CA[GMNZ]|CH[CM]|CHE[12]?|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|FRL|GEM|GRA|HDN|HLK|HMA|Hol|HRY|HWI|H[36]0|INE|JAT|JEF|JDN|JDN2|JKM|JMM|JSN|KII|KIW|KNT|KOB|KSA|LDN|LEO|LIO|LLD|LND|LON|LRA|LUA|LY[AO]|MAR|MHA|MRD|MYA|NCE|NEN|NEM|NEO|NXT|PAR(?!-[AH]0)|PCT|PIC|PLE|PLK|POT|PPA|PRA|RIO|RNE|RVL|SCC|SCL|SCM|SEA|SHT|SLA|SNE|SPN|STF|STK|TAG|TIT|TNY|TRT|VCE|VEN|VIE|VKY|VNS|VOG|VRD|VTR|WAS|YAL|G(?:527|620S|621|630|735)|Y(?:221|330|550|6[23]5))-(?:[A-Z]{0,2}[0-9]{1,4}[A-Z]{0,3}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))(?:[);/ ]|$))|hi6210sft|PE-(UL00|TL[12]0|TL00M)|T1-(A21?[Lw]|A2[23]L|701u|823L)|G7-(?:L01|TL00)|HW-01K|JNY-(LX[12]|AL10)|OXF-AN[01]0|TAS-(A[LN]00|L29|TL00)|WLZ-(AL10|AN00)|YOK-AN[10]0|NIC-LX1A|MRX-(AN19|AL[01]9|W[0-3]9)|CDY-(?:[AT]N00|AN[29][05]|NX9[AB]|TN[29]0)|GLK-(?:[AT]L00|LX1U)|JER-(?:[AT]N20|[AT]N10)|ELS-(?:[AT]N[10]0|NX9|N[23]9|N04)|AKA-(AL10|L29)|MON-(W|AL)19|BMH-(?:TN10|AN[12]0)|AQM-([AT]L[01]0|LX1)|MOA-([AT]L[02]0|LX9N)|NTS-AL00|ART-(?:[AT]L00[xm]|L29N?|L28)|MED-(?:[AT]L00|LX[29]N?|AL20)|EBG-(?:AN[01]0|TN00|N19)|ANA-(?:[AT]N00|NX9)|BZ[AK]-W00|BZT-(W09|AL[01]0)|HDL-(AL09|W09)|HWV3[123]|HW-02L|TEL-[AT]N(?:00a?|10)|KKG-AN[07]0|MXW-[AT]N00|JKM-AL00[ab]|TAH-(?:N29|AN00)m?|C8817D|T1-821W|d-01[JKH]|d-02[HK]|KRJ-(?:W09|AN00)|HWT31|Y320-U10|Y541-U02|VAT-L19|70[14]HW|60[58]HW|NOH-(?:NX9|AN0[01]|AN50|AL[01]0)|TNNH?-AN00|LIO-(?:[TA]L00|[LN]29|AN00)|KOB2K-L09|KOB2-(?:AL00|[LW]09|L03)|AGS3-(?:[WL]09|AL0[09]|W00[DE])|DNN-LX9|NEY-NX9|LON-AL00|HLK-L41|503HW|AGR-(?:[LW]09|AL09)|PPA-LX[12]|ANG-(?:AN00|LX[12])|NOP-AN00|ALA-AN70|DVC-[AT]N[02]0|302HW|Nexus 6P|DBY-W09|WKG-(?:LX9|[AT]N00)|JSC-(?:AN00|AL50)|OCE-A[NL][015]0|NZA-AL00|BRQ-A[LN]00|BZC-(?:AL|W)00|NEN-L(?:X1|22)|KOZ-AL[04]0|NTH-(?:AN00|NX9)|MRR-W[23]9|WGR-(?:W[10]9|AN19)|TET-AN[10]0|SCMR-(?:W09|AL09)|OXP-AN00|HJC-(?:AN90|LX9)|CDL-AN50|CND-AN00|NTN-(?:LX[13]|AN20|L22)|RNA-[AT]N00|CHL-(?:A[LN]00|AL60)|ELZ-AN[012]0|NAM-(?:LX9|AL00)|JLH-AN00|JAD-(?:AL[0568]0|LX9)|AGS5-(?:L09|W09)|AGS3K-(?:W20|[WL]0[09])|AGRK-[WL]09|MT2L03|LSA-AN00|KJR-W09|TET-A[NL][05]0|TYH601M|RTE-AL00|BAL-(?:AL00|L49)|BZI-(?:AL00|W00)|BZT3-(?:AL00|W09)|BZD-(?:W00|AL00)|MLD-AL[01]0|AGM3-(?:W09|AL09)HN|ABR-(?:AL[0689]0|LX9)|GIA-AN00|LEO-DLXXE?|BZA-L00|MGI-AN00|CMA-(?:LX[123]|AN[04]0)|NEW-AN90|KRJ2-(?:W09|AN00)|BRT-(?:W09|AN09)|ANY-(?:[LN]X1|LX[23]|AN00)|JLN-(?:LX[13]|AL00)|LGE-(?:NX[19]|AN[012]0)|TNA-AN00|TFY-(?:LX[123]|AN[04]0)|DIO-AN00|BZW-AL[01]0|MOGOLIA|CM990|MGA-(?:AL[04]0|LX[39])|60[56]HW|Peppa-(?:L2[23]B|L0[23]B)|KANT-\d{3}[BCS]?|Kobe3-L09|FNE-(?:NX9|AN00)|HPB-AN00|Mate ?(?:[34]0 RS|Xs|30)|Y530|SDY-AN00|EC6108V[89]|CTR-(?:LX[123]|AL00)|VNE-(?:LX[123]|N41|AN[04]0)|HMW-W09|GLA-(?:LX[13]|AL00)|HEY-W09|GOT-(?:AL09|W[02]9)|PAL-(?:AL00|LX9)|PAN-L29|NNH-AN00|P Smart S|NCO-(?:LX[13]|AL00)|DCO-(?:AL00|LX9)|CET-(?:AL[06]0|LX9)|ADT-AN00|RMO-(?:AN00|NX[13])|RKY-(?:AN00|LX[123])|M300-L09|EVE-LX9N?|BNE-(?:LX1|AL00)|dtab01|BZT4-W19|ROD-W09|ANP-AN00|WGRR-W09|HN3-U01|Holly-U19|BLM-00|ANN-AN00|VNA-(?:LX[23]|L29)|CRT-(?:NX1|LX[123]|AN00)|AGM-W09HN|PGT-(?:AN[12]0|N19)|GLL-AL01|MNA-(?:LX9|AL00)|LNA-(?:AL00|LX9)|ALT-L29|MAO-LX9N?|Enjoy 20 SE|ANB-AN00|STG-(?:AL00|LX1)|LTK-LX3|GOA-(?:LX9|AL80)|nova 6 5G| Angela-L|DBR-W09|WOD-LX1|REP-AN00|WDY-LX1|FOA-LX9|ALI-AN00|DBY2-(?:W09|L09)|REA-(?:NX9|AN00)|AMZ-L29|AGT-AN00'
9414
9606
  device: 'smartphone'
9415
9607
  models:
9416
9608
  - regex: 'CRT-NX1'
9417
9609
  model: 'Honor 90 Lite'
9610
+ - regex: 'REA-(?:NX9|AN00)'
9611
+ model: 'Honor 90'
9612
+ - regex: 'REP-AN00'
9613
+ model: 'Honor 90 Pro'
9418
9614
  - regex: 'FNE-AN00'
9419
9615
  model: 'Honor 70'
9420
9616
  - regex: 'FNE-NX9'
@@ -9423,6 +9619,8 @@ Huawei:
9423
9619
  model: 'Honor 70 Pro'
9424
9620
  - regex: 'ANP-AN00'
9425
9621
  model: 'Honor 80 Pro'
9622
+ - regex: 'AGT-AN00'
9623
+ model: 'Honor 80 GT'
9426
9624
  - regex: 'ANB-AN00'
9427
9625
  model: 'Honor 80 Pro Flat'
9428
9626
  - regex: 'ANN-AN00'
@@ -9483,6 +9681,8 @@ Huawei:
9483
9681
  model: 'Enjoy 5S'
9484
9682
  - regex: 'MGA-AL00'
9485
9683
  model: 'Enjoy 50'
9684
+ - regex: 'MGA-AL40'
9685
+ model: 'Enjoy 60'
9486
9686
  - regex: 'CTR-AL00'
9487
9687
  model: 'Enjoy 50 Pro'
9488
9688
  - regex: 'STG-AL00'
@@ -9713,6 +9913,8 @@ Huawei:
9713
9913
  model: 'Honor Magic 4 Pro+'
9714
9914
  - regex: 'ANY-LX1'
9715
9915
  model: 'Honor Magic 4 Lite'
9916
+ - regex: 'RMO-NX3'
9917
+ model: 'Honor Magic 5 Lite'
9716
9918
  - regex: 'MGI-AN00'
9717
9919
  model: 'Honor Magic 5'
9718
9920
  - regex: 'PGT-(?:AN10|N19)'
@@ -9751,10 +9953,10 @@ Huawei:
9751
9953
  model: 'Honor Play 4'
9752
9954
  - regex: 'CHM-[CUT]L00[HM]?(?:[);/ ]|$)'
9753
9955
  model: 'Honor Play 4C'
9956
+ - regex: '(?:OXP-AN00|Honor Play 4T Pro)(?:[);/ ]|$)'
9957
+ model: 'Honor Play 4 Pro'
9754
9958
  - regex: '(?:AKA-AL10|Honor Play 4T)(?:[);/ ]|$)'
9755
9959
  model: 'Honor Play 4T'
9756
- - regex: 'OXP-AN00(?:[);/ ]|$)'
9757
- model: 'Honor Play 4 Pro'
9758
9960
  - regex: 'RKY-AN00(?:[);/ ]|$)'
9759
9961
  model: 'Honor Play 40 Plus'
9760
9962
  - regex: 'RKY-LX[123]'
@@ -9825,6 +10027,8 @@ Huawei:
9825
10027
  model: 'Honor X8 5G'
9826
10028
  - regex: 'VNE-LX[123]'
9827
10029
  model: 'Honor X6'
10030
+ - regex: 'WDY-LX[123]'
10031
+ model: 'Honor X6a'
9828
10032
  - regex: '(?:KKG-AN00|Honor X10 Max)(?:[);/ ]|$)'
9829
10033
  device: 'phablet'
9830
10034
  model: 'Honor X10 Max'
@@ -9854,6 +10058,10 @@ Huawei:
9854
10058
  model: 'Honor X5'
9855
10059
  - regex: 'CRT-AN00'
9856
10060
  model: 'Honor X50i'
10061
+ - regex: 'ALI-AN00'
10062
+ model: 'Honor X50'
10063
+ - regex: 'WOD-LX1'
10064
+ model: 'Honor X5 Plus'
9857
10065
  - regex: 'ALA-AN70(?:[);/ ]|$)'
9858
10066
  model: 'Honor V40 Lite'
9859
10067
  - regex: 'U8500(?:[);/ ]|$)'
@@ -9902,7 +10110,7 @@ Huawei:
9902
10110
  model: 'Mate 20 RS'
9903
10111
  - regex: 'EVR-(?:[TA]L00|L29|N29|AN00)(?:[);/ ]|$)'
9904
10112
  model: 'Mate 20 X'
9905
- - regex: 'TAS-([AT]L00|L29)(?:[);/ ]|$)'
10113
+ - regex: '(?:TAS-([AT]L00|L29)|AMZ-L29)(?:[);/ ]|$)'
9906
10114
  model: 'Mate 30'
9907
10115
  - regex: 'TAS-AN00(?:[);/ ]|$)'
9908
10116
  model: 'Mate 30 5G'
@@ -10002,6 +10210,8 @@ Huawei:
10002
10210
  model: 'Nova 11i'
10003
10211
  - regex: 'GOA-(?:LX9|AL80)'
10004
10212
  model: 'Nova 11 Pro'
10213
+ - regex: 'FOA-LX9'
10214
+ model: 'Nova 11'
10005
10215
  - regex: 'JNY-LX2(?:[);/ ]|$)'
10006
10216
  model: 'Nova 7i'
10007
10217
  - regex: '(?:ANG-LX[12]|Angela-(?:L2[12]B|L02B))(?:[);/ ]|$)'
@@ -10050,7 +10260,7 @@ Huawei:
10050
10260
  model: 'Nova Y90'
10051
10261
  - regex: 'STG-LX1'
10052
10262
  model: 'Nova Y91'
10053
- - regex: 'FIG-L(?:A1|X[123])(?:[);/ ]|$)'
10263
+ - regex: 'FIG-L(?:A1|X[123]|11)(?:[);/ ]|$)'
10054
10264
  model: 'P smart'
10055
10265
  - regex: 'POT-(?:LX(?:[13]|1T|2J|1AF)|AL00|L01)(?:[);/ ]|$)'
10056
10266
  model: 'P smart (2019)'
@@ -10266,6 +10476,12 @@ Huawei:
10266
10476
  - regex: 'AGS5-L09(?:[);/ ]|$)'
10267
10477
  model: 'MatePad 10.4" SE'
10268
10478
  device: 'tablet'
10479
+ - regex: 'DBY2-W09'
10480
+ model: 'MatePad 11.5" Air WiFi'
10481
+ device: 'tablet'
10482
+ - regex: 'DBY2-L09'
10483
+ model: 'MatePad 11.5" Air'
10484
+ device: 'tablet'
10269
10485
  - regex: 'AGS5-W09(?:[);/ ]|$)'
10270
10486
  model: 'MatePad 10.4" SE WiFi'
10271
10487
  device: 'tablet'
@@ -10449,7 +10665,7 @@ Huawei:
10449
10665
  - regex: '(?:FDR-(A01[LW]|A03L)|60[56]HW)(?:[);/ ]|$)'
10450
10666
  device: 'tablet'
10451
10667
  model: 'MediaPad T2 10.0" Pro'
10452
- - regex: 'T1-(?:A21[LW]|A2[23]L)(?:[);/ ]|$)'
10668
+ - regex: '(?:T1-(?:A21[LW]|A2[23]L)|MediaPad T1 10 4G)(?:[);/ ]|$)'
10453
10669
  device: 'tablet'
10454
10670
  model: 'MediaPad T1 10'
10455
10671
  - regex: 'T1-701u(?:[);/ ]|$)'
@@ -11301,7 +11517,7 @@ Infinix:
11301
11517
  model: 'Hot 30i'
11302
11518
  - regex: 'Infinix[ _-](?:X6831|X6833B)'
11303
11519
  model: 'Hot 30'
11304
- - regex: 'Infinix[ _-]X6835B'
11520
+ - regex: 'Infinix[ _-]X6835B?'
11305
11521
  model: 'Hot 30 Play'
11306
11522
  - regex: 'Infinix[ _-]X622'
11307
11523
  model: 'Hot S3X'
@@ -11669,7 +11885,6 @@ Aquarius:
11669
11885
  - regex: 'Aquarius[_ ]([^/;)]+)(?: Build|[);])'
11670
11886
  model: '$1'
11671
11887
 
11672
-
11673
11888
  # Vsun
11674
11889
  Vsun:
11675
11890
  regex: '(?:VSUN (?:ILLUSION|RACE|V9|TOUCH)|Aqua Tough|MERCURY Tough|MARS TOUCH|MARS NOTE|MARS NOCAM|SATURN SELFIE)(?:[);/ ]|$)'
@@ -11721,10 +11936,12 @@ Turbo:
11721
11936
 
11722
11937
  # Turbo-X
11723
11938
  Turbo-X:
11724
- regex: 'Turbo[-_]X|(?:TURBOX_I4G|Hive V 3G|Calltab10.1|Calltab2GB10|Calltab7inch|Turbox_S3|Fire_II_WiFi|Breeze IV|Aqua_II|RainbowIII3G|RubikII7|Rubik 10\.1 II|Rubik_10_III|QUAD-CORE A33 inet)(?:[);/ ]|$)|(?<!Rombica TV )Mercury(?!/| HD Quad core)'
11939
+ regex: 'Turbo[-_]X|(?:TURBOX_I4G|Hive V 3G|Calltab10.1|Calltab2GB10|Calltab7inch|Turbox_S3|Fire_II_WiFi|Breeze IV|Aqua_II|RainbowIII3G|RubikII7|Rubik 10\.1 II|Rubik_10_III|QUAD-CORE A33 inet)(?:[);/ ]|$)|(?<!Rombica TV )Mercury(?!/| HD Quad core)|(?:android 8([\d.]*);(?: [\w-]+;)? Dream)(?:[);/ ]|$)'
11725
11940
  device: 'smartphone'
11726
11941
  models:
11727
11942
  # specific smartphone models
11943
+ - regex: 'Dream'
11944
+ model: 'Dream'
11728
11945
  - regex: 'Turbox_S3'
11729
11946
  model: 'S3'
11730
11947
  - regex: 'Turbo-X_A2(?:[);/ ]|$)'
@@ -11995,6 +12212,10 @@ iTel:
11995
12212
  model: 'S16 Pro'
11996
12213
  - regex: 'W5505'
11997
12214
  model: 'A36'
12215
+ - regex: 'S665LN?'
12216
+ model: 'S23'
12217
+ - regex: 'A662LM'
12218
+ model: 'A60s'
11998
12219
  - regex: 'A662L'
11999
12220
  model: 'A60'
12000
12221
  - regex: 'W5504'
@@ -12105,7 +12326,7 @@ iTel:
12105
12326
  model: 'P40'
12106
12327
  - regex: 'L6005'
12107
12328
  model: 'Vision 1'
12108
- - regex: 'P682LPN'
12329
+ - regex: 'P682LPN?'
12109
12330
  model: 'Vision 3 Plus'
12110
12331
  - regex: 'P682L'
12111
12332
  model: 'P38 Pro'
@@ -12129,7 +12350,7 @@ iTel:
12129
12350
  model: 'Power Pro'
12130
12351
  - regex: 'S11Plus(?:[);/ ]|$)'
12131
12352
  model: 'S11 Plus'
12132
- - regex: 'itel[- ](A14|A16 Plus|A44 Power|A23S|A52 Lite)'
12353
+ - regex: 'itel[- ](A14S?|A16 Plus|A44 Power|A23S|A52 Lite)'
12133
12354
  model: '$1'
12134
12355
 
12135
12356
  - regex: 'itel it1701'
@@ -12423,19 +12644,23 @@ Kocaso:
12423
12644
 
12424
12645
  # Kogan
12425
12646
  Kogan:
12426
- regex: 'Kogan|(?:Agora (?:8 Plus|XI|Go))(?:[);/ ]|$)'
12647
+ regex: 'Kogan|(?:Agora (?:8 Plus|XI|Go|Lite|4G Pro))(?:[);/ ]|$)'
12427
12648
  device: 'smartphone'
12428
12649
  models:
12429
12650
  - regex: 'Kogan ?(SmarterTV(?: 2K)?|TV|TVAP)(?:[);/ ]|$)'
12430
12651
  device: 'tv'
12431
12652
  model: '$1'
12432
12653
 
12433
- - regex: 'Agora 8 Plus'
12434
- model: 'Agora 8 Plus'
12654
+ - regex: 'Agora ([68]) ?Plus'
12655
+ model: 'Agora $1 Plus'
12435
12656
  - regex: 'Agora XI'
12436
12657
  model: 'Agora 11'
12437
12658
  - regex: 'Agora Go'
12438
12659
  model: 'Agora Go'
12660
+ - regex: 'Agora 4G Pro'
12661
+ model: 'Agora 4G Pro'
12662
+ - regex: 'Agora Lite'
12663
+ model: 'Agora Lite'
12439
12664
  - regex: 'Kogan[ _-]([^;/)]+)(?: Build|[;)])'
12440
12665
  model: '$1'
12441
12666
  - regex: 'Kogan[ _-]([a-z0-9_-]+)'
@@ -12587,7 +12812,7 @@ Diva:
12587
12812
 
12588
12813
  # kyocera (kyocera.co.jp, kyocera.com)
12589
12814
  Kyocera:
12590
- regex: 'Kyocera|KWC-|QC-[0-9]{4}|(?:QC6035|NP501KC|302KC|503KC|602KC|705KC|901KC|C51[27]0|C5155|C5215|C67[35]0|C6522N?|C6530N|C6740N?|C6743|E6[89]10|KYL2[13]|KYV3[1-9]|KYT3[123]|KYF3[1235789]|KYF4[012]|KYX31|KYG01|KYY2[1-4]|S2151|KC-S701|S[468]-KC|S9-KC|S10-KC|KYV40U?|KYY31|KYV4[1-8]|KYV4[47]|KC-S301AE|KC-S302|X3-KC|E6560[CT]|E6782[L]?|E6790(?:TM)?|SZJ-JS20[12]|KCP01K|[47]04KC|A[012]01KC|WX10K|URBANO PROGRESSO|E7110|E6921|KY-51B|C6930|A101BM)(?:[-_][uj]2?)?(?:[);/ ]|$)'
12815
+ regex: 'Kyocera|KWC-|QC-[0-9]{4}|(?:QC6035|NP501KC|302KC|503KC|602KC|705KC|901KC|C51[27]0|C5155|C5215|C67[35]0|C6522N?|C6530N|C6740N?|C6743|E6[89]10|KYL2[13]|KYV3[1-9]|KYT3[123]|KYF3[1235789]|KYF4[012]|KYX31|KYG01|KYY2[1-4]|S2151|KC-S701|S[468]-KC|S9-KC|S10-KC|KYV40U?|KYY31|KYV4[1-8]|KYV4[47]|KC-S301AE|KC-S302|X3-KC|E6560[CT]|E6782[L]?|E6790(?:TM)?|SZJ-JS20[12]|KCP01K|[47]04KC|A[012]01KC|A205KC|WX10K|URBANO PROGRESSO|E7110|E6921|KY-51B|C6930|A101BM)(?:[-_][uj]2?)?(?:[);/ ]|$)'
12591
12816
  device: 'smartphone'
12592
12817
  models:
12593
12818
  # explicit smartphone models
@@ -12739,6 +12964,8 @@ Kyocera:
12739
12964
  model: 'Katan Sumaho 2'
12740
12965
  - regex: 'A201KC(?:[);/ ]|$)'
12741
12966
  model: 'Katan Sumaho 2+'
12967
+ - regex: 'A205KC(?:[);/ ]|$)'
12968
+ model: 'Katan Sumaho 3' # simple smartphone 3
12742
12969
  - regex: 'URBANO PROGRESSO(?:[);/ ]|$)'
12743
12970
  model: 'Urbano Progresso'
12744
12971
  - regex: 'KYY31(?:[);/ ]|$)'
@@ -12828,10 +13055,10 @@ Krüger&Matz:
12828
13055
 
12829
13056
  # LAIQ
12830
13057
  LAIQ:
12831
- regex: 'LAIQ'
13058
+ regex: 'LAIQ|(?:Monaco)(?:[);/ ]|$)'
12832
13059
  device: 'smartphone'
12833
13060
  models:
12834
- - regex: '(Glam|New York|Dubai)(?:[);/ ]|$)'
13061
+ - regex: '(?:LAIQ_)?(Glam|New York|Dubai|Monaco)(?:[);/ ]|$)'
12835
13062
  model: '$1'
12836
13063
 
12837
13064
  # AIS
@@ -12844,6 +13071,12 @@ AIS:
12844
13071
  - regex: 'Kingcomm C500'
12845
13072
  model: 'Super Smart Plus X3'
12846
13073
 
13074
+ # Beko (https://www.beko.com.tr/)
13075
+ Beko:
13076
+ regex: 'Beko(?:[);/ ]|$)'
13077
+ device: 'tv'
13078
+ model: ''
13079
+
12847
13080
  # Benco (www.bencomobile.com)
12848
13081
  Benco:
12849
13082
  regex: 'Benco[_ ]|(?:AE9010|AE9950|AH9110)(?:[);/ ]|$)'
@@ -12862,6 +13095,8 @@ Lava:
12862
13095
  device: 'smartphone'
12863
13096
  models:
12864
13097
  # explicit smartphone models
13098
+ - regex: 'LZX409(?:[);/ ]|$)'
13099
+ model: 'Blaze 2'
12865
13100
  - regex: 'Flair ([ZS]1|P8)(?:[);/ ]|$)'
12866
13101
  model: 'Flair $1'
12867
13102
  - regex: 'AF9030(?:[);/ ]|$)'
@@ -13273,6 +13508,12 @@ Lephone:
13273
13508
  - regex: 'lephone(?:[ _])?([^/);]*)(?: Build|[);])'
13274
13509
  model: '$1'
13275
13510
 
13511
+ # Lemco
13512
+ Lemco:
13513
+ regex: 'Lemco (FBX-3566W?)(?:[);/ ]|$)'
13514
+ device: 'peripheral'
13515
+ model: '$1'
13516
+
13276
13517
  # lenco
13277
13518
  Lenco:
13278
13519
  regex: 'Lenco (?:[^/);]*)(?: Build|[);])|(?:TDV900)(?:[);/ ]|$)'
@@ -13297,7 +13538,7 @@ Aligator:
13297
13538
 
13298
13539
  # lenovo (lenovo.com)
13299
13540
  Lenovo:
13300
- regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|ZUK[ -_]|(?:TB2-X30L|TB3-710I|TB328FU|TB128FU|YT3-X50[MFL]|K50a40|TB-(?:X103F|8504F|X304F|X704V|X704A)|A5500-H|A2107A-H|A3500-HV|A2109A|S6000|Z2 Plus|Vibe[ _](?:P1|S6i Plus|S[23567]i|C|[ZX]2|K5(?: Plus)?|V7)|P2A42|L38011|L18011|[5-8]01LV|[67]02LV|Z2131|K350t|K31-t3|TAB 2 A8-50LC|S90-A|A101LV|P70-A|VR-1541F|d-42A|lineage_A6020|EveryPad2|A2010l36|F0CU0028RK|TB132FU|TB328XU|TB138FC|PB-6505Y|TB-X505[FL]|TB-8704V|TB3[05]0[FX]U|TB-X605[FL]|L38043|TB3-X70L|TB-X605[LF]C|A7600-HV?)(?:[);/ ]|$)'
13541
+ regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|ZUK[ -_]|(?:TB2-X30L|TB3-710I|TB328FU|TB128FU|YT3-X50[MFL]|K50a40|TB-(?:X103F|8504F|X304F|X704V|X704A)|A5500-H|A2107A-H|A3500-HV|A2109A|S6000|Z2 Plus|Vibe[ _](?:P1|S6i Plus|S[23567]i|C|[ZX]2|K5(?: Plus)?|V7)|P2A42|L38011|L18011|[5-8]01LV|[67]02LV|Z2131|K350t|K31-t3|TAB 2 A8-50LC|S90-A|A101LV|P70-A|VR-1541F|d-42A|lineage_A6020|EveryPad2|A2010l36|F0CU0028RK|TB132FU|TB328XU|TB138FC|PB-6505Y|TB-X505[FL]|TB-8704V|TB3[05]0[FX]U|TB-X605[FL]|L38043|TB3-X70L|TB-X605[LF]C|A7600-HV?|YT-X703F)(?:[);/ ]|$)'
13301
13542
  device: 'smartphone'
13302
13543
  models:
13303
13544
  - regex: 'Lenovo ?G780'
@@ -13597,8 +13838,9 @@ Lenovo:
13597
13838
  model: 'Legion Y90'
13598
13839
  - regex: 'L71091'
13599
13840
  model: 'Legion Y70'
13600
- - regex: 'Lenovo S60-?a'
13601
- model: 'S60'
13841
+ - regex: 'Lenovo S([69]0)-?[aU]'
13842
+ model: 'S$1'
13843
+
13602
13844
  - regex: 'Lenovo K30-W(?:[);/ ]|$)'
13603
13845
  model: 'K3'
13604
13846
  - regex: 'L18011(?:[);/ ]|$)'
@@ -13655,7 +13897,7 @@ Lenovo:
13655
13897
  model: 'Vibe C'
13656
13898
  - regex: '(?:VIBE X2|X2-(?:X+CU|TO|AP))(?:[);/ ]|$)'
13657
13899
  model: 'Vibe X2'
13658
- - regex: 'X3(?:a40|c[57]0)(?:[);/ ]|$)'
13900
+ - regex: '(?:X3(?:a40|c[57]0)|K51c78)(?:[);/ ]|$)'
13659
13901
  model: 'Vibe X3'
13660
13902
  - regex: 'Lenovo X3 Lite(?:[);/ ]|$)'
13661
13903
  model: 'Vibe X3 Lite'
@@ -13857,9 +14099,17 @@ Lexibook:
13857
14099
  - regex: '(MFC[0-9]{3}[a-z]{2,})'
13858
14100
  model: '$1'
13859
14101
 
14102
+ # Vargo or Ivargo
14103
+ Vargo:
14104
+ regex: 'Vargo[; _]|(?:V210101|Android 8(?:[\d.]*);(?: [\w-]+;)? VX4)(?:[);/ ]|$)'
14105
+ device: 'smartphone'
14106
+ models:
14107
+ - regex: '(V210101|VX4)(?:[);/ ]|$)'
14108
+ model: '$1'
14109
+
13860
14110
  # LG or LGE (lg.com)
13861
14111
  LG:
13862
- regex: '(?<!TECNO )LG|Web0S; Linux/SmartTV|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:(?!VX20|VX19)VX[0-9]+|L-0[12]D|L-07C|P713|(LM-[A-Z][0-9]{3}[A-Z]{0,3}(?:\(FGN?\)|\(G\)|\.FN|\.F(?:GN?)?)?)|LM-(X625N1|G820QM[0127])|G Watch|lucye)(?:[);/ ]|$)|NetCast|RS98[78]|RS500|VS(?:50[01]|835|876|880|98[05-8]|99[056]|(410|415|425|500|880)PP)|VS820|VS870 4G|Nexsus 5|LML(41[34]D|211B|713D|212V)L|VK810 4G|VK815|X5-LG|L-05[DE]|L-03K|L-01[LJK]|L-52A|L-[45]1A|901LG|A001LG|80[12]LG|402LG|LGT32|L-02K|L-01F|LM-V40|DM-01K|DM-02H|LMX130IM|VS810PP|VS425|VM670|VS930 4G'
14112
+ regex: '(?<!TECNO Mobile |TECNO )LG|Web0S; Linux/SmartTV|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:(?!VX20|VX19)VX[0-9]+|L-0[12]D|L-07C|P713|(LM-[A-Z][0-9]{3}[A-Z]{0,3}(?:\(FGN?\)|\(G\)|\.FN|\.F(?:GN?)?)?)|LM-(X625N1|G820QM[0127])|G Watch|lucye)(?:[);/ ]|$)|NetCast|RS98[78]|RS500|VS(?:50[01]|835|876|880|98[05-8]|99[056]|(410|415|425|500|880)PP)|VS820|VS870 4G|Nexsus 5|LML(41[34]D|211B|713D|212V)L|VK810 4G|VK815|X5-LG|L-05[DE]|L-03K|L-01[LJK]|L-52A|L-[45]1A|901LG|A001LG|80[12]LG|402LG|LGT32|L-02K|L-01F|LM-V40|DM-01K|DM-02H|LMX130IM|VS810PP|VS425|VM670|VS930 4G'
13863
14113
  device: 'smartphone'
13864
14114
  models:
13865
14115
  - regex: 'DM-(01K|02H)'
@@ -14743,11 +14993,13 @@ Konka:
14743
14993
 
14744
14994
  # Konrow (konrow.com)
14745
14995
  Konrow:
14746
- regex: 'KONROW[_ ]|(?:KTAB_1003|BIGCOOL|SOFT5|COOLFIVE|COOL-K|Just5|Link5|EASY ?(?:5|62|K55)|EASY_5_EEA|EASY55|CITY55?|Cool55|SKY_?55_EEA|android 11;(?: [\w-]+;)? SWEET5|SWEET 55)(?:[);/ ]|$)'
14996
+ regex: 'KONROW[_ ]|(?:LINK55|KTAB_1003|BIGCOOL|SOFT5|COOLFIVE|COOL-K|Just5|Link5|EASY ?(?:5|62|K55)|EASY_5_EEA|EASY55|CITY55?|Cool55|SKY_?55_EEA|android 11;(?: [\w-]+;)? SWEET5|SWEET 55)(?:[);/ ]|$)'
14747
14997
  device: 'smartphone'
14748
14998
  models:
14749
14999
  - regex: 'BIGCOOL(?:[);/ ]|$)'
14750
15000
  model: 'BigCool'
15001
+ - regex: 'LINK55(?:[);/ ]|$)'
15002
+ model: 'LINK55'
14751
15003
  - regex: 'COOL-K(?:[);/ ]|$)'
14752
15004
  model: 'Cool-K'
14753
15005
  - regex: 'Cool55(?:[);/ ]|$)'
@@ -15615,6 +15867,8 @@ Mobicel:
15615
15867
  model: 'Clik Plus'
15616
15868
  - regex: 'CLIK'
15617
15869
  model: 'Clik'
15870
+ - regex: 'VX(19|20) Pro'
15871
+ model: 'VX$1 Pro'
15618
15872
  - regex: 'VX(19|20)'
15619
15873
  model: 'VX$1'
15620
15874
  - regex: 'PULSE_1'
@@ -16971,7 +17225,7 @@ Nomi:
16971
17225
 
16972
17226
  # NUU Mobile
16973
17227
  NUU Mobile:
16974
- regex: 'NUU_|(?:(?:N(570[24]|500[12])L|S5701L|S6001L|[SN]5501L)|A6L-[CG]|N5502L|S6303L)(?:[);/ ]|$)'
17228
+ regex: 'NUU_|(?:(?:N(570[24]|500[12])L|S5701L|S6001L|[SN]5501L)|A6L-[CG]|N5502L|S6501L|S6303L)(?:[);/ ]|$)'
16975
17229
  device: 'smartphone'
16976
17230
  models:
16977
17231
  - regex: 'NUU_A([13]L?)'
@@ -16988,6 +17242,8 @@ NUU Mobile:
16988
17242
  model: 'M19'
16989
17243
  - regex: 'N5702L'
16990
17244
  model: 'G3'
17245
+ - regex: 'S6501L'
17246
+ model: 'G5'
16991
17247
  - regex: 'N5501L'
16992
17248
  model: 'A5L'
16993
17249
  - regex: 'N5002L'
@@ -17410,7 +17666,7 @@ Olax:
17410
17666
 
17411
17667
  # Olympia (https://www.olympia-vertrieb.de/)
17412
17668
  Olympia:
17413
- regex: 'TREK(?:[);/ ]|$)'
17669
+ regex: '(?<!Stream )TREK(?:[);/ ]|$)'
17414
17670
  device: 'smartphone'
17415
17671
  models:
17416
17672
  - regex: 'TREK(?:[);/ ]|$)'
@@ -17493,17 +17749,21 @@ Onda:
17493
17749
 
17494
17750
  # OnePlus (www.oneplus.com or oneplus.com.ru)
17495
17751
  OnePlus:
17496
- regex: '(?:du_)?ONEPLUS|(?:PGKM10|CPH244[79]|CPH240[19]|CPH24[12]3|CPH246[579]|CPH2487|CPH241[157]|CPH2459|CPH2399|CPH2381|A0001|A200[135]|AC200[13]|A300[03]|A3010|A5000|A600[03]|A601[03]|BE201[1235]|BE202[5689]|E100[135]|GM191[03517]|GM190[0135]|GM192[05]|HD191[0137]|HD190[01357]|HD1925|IN201[013579]|IN202[0135]|KB200[01357]|LE211[01357]|LE212[035]|GN2200|Nord N10 5G|LE210[01]|LE212[17]|DE211[78]|DN210[13]|EB210[13]|MT211[01]|IV2201|NE221[01357]|PGZ110|PGP110|PHK110|PHB110)(?: Build|[;)])'
17752
+ regex: '(?:du_)?ONEPLUS|(?:PGKM10|CPH251[35]|CPH2551|CPH2569|CPH249[31]|CPH244[79]|CPH240[19]|CPH24[12]3|CPH246[579]|CPH2487|CPH241[157]|CPH2419|CPH245[91]|CPH2399|CPH238[19]|A0001|A200[135]|AC200[13]|A300[03]|A3010|A5000|A600[03]|A601[03]|BE201[1235]|BE202[5689]|E100[135]|GM191[03517]|GM190[0135]|GM192[05]|HD191[0137]|HD190[01357]|HD1925|IN201[013579]|IN202[0135]|KB200[01357]|LE211[01357]|LE212[035]|GN2200|Nord N10 5G|LE210[01]|LE212[17]|DE211[78]|DN210[13]|EB210[13]|MT211[01]|IV2201|NE221[01357]|PG[PZ]110|PH[BKP]110)(?: Build|[;)])'
17497
17753
  device: 'smartphone'
17498
17754
  models:
17499
- - regex: '(?:CPH244[79]|PHB110)(?:[);/ ]|$)'
17755
+ - regex: '(?:CPH244[79]|PHB110|CPH2451)(?:[);/ ]|$)'
17500
17756
  model: '11'
17501
17757
  - regex: 'CPH2487(?:[);/ ]|$)'
17502
17758
  model: '11R 5G'
17503
- - regex: 'PGKM10(?:[);/ ]|$)'
17504
- model: 'Ace'
17759
+ - regex: 'CPH2551(?:[);/ ]|$)'
17760
+ model: 'Open'
17505
17761
  - regex: 'PHK110(?:[);/ ]|$)'
17506
17762
  model: 'Ace 2'
17763
+ - regex: 'PGKM10(?:[);/ ]|$)'
17764
+ model: 'Ace'
17765
+ - regex: 'PHP110(?:[);/ ]|$)'
17766
+ model: 'Ace 2V'
17507
17767
  - regex: 'PGP110(?:[);/ ]|$)'
17508
17768
  model: 'Ace Pro'
17509
17769
  - regex: 'PGZ110(?:[);/ ]|$)'
@@ -17518,14 +17778,22 @@ OnePlus:
17518
17778
  model: 'Nord CE 2 Lite'
17519
17779
  - regex: 'CPH246[57](?:[);/ ]|$)'
17520
17780
  model: 'Nord CE 3 Lite'
17781
+ - regex: 'CPH2569(?:[);/ ]|$)'
17782
+ model: 'Nord CE 3 5G'
17783
+ - regex: 'CPH249[13]'
17784
+ model: 'Nord 3 5G'
17521
17785
  - regex: 'BE2012(?:[);/ ]|$)'
17522
17786
  model: 'Clover'
17523
17787
  - regex: 'BE201[135](?:[);/ ]|$)'
17524
17788
  model: 'Nord N100'
17525
17789
  - regex: 'DE211[78](?:[);/ ]|$)'
17526
17790
  model: 'Nord N200 5G'
17791
+ - regex: 'CPH2389'
17792
+ model: 'Nord N300 5G'
17527
17793
  - regex: '(?:GN2200|CPH2459)(?:[);/ ]|$)'
17528
17794
  model: 'Nord N20 5G'
17795
+ - regex: '(?:CPH251[35])(?:[);/ ]|$)'
17796
+ model: 'Nord N30 5G'
17529
17797
  - regex: 'CPH2469(?:[);/ ]|$)'
17530
17798
  model: 'Nord N20 SE'
17531
17799
  - regex: 'BE2025(?:[);/ ]|$)'
@@ -17603,7 +17871,7 @@ OnePlus:
17603
17871
 
17604
17872
  # Realme (sub brand Oppo)
17605
17873
  Realme:
17606
- regex: 'Realme[ _]|(?:RMX(?:18(0[13579]|11|3[13]|2[1257]|[45]1|53|45)|19(03|4[1235]|19|9[23]|2[1579]|[01379]1|73)|20(?:[025-7]1|42|[0357]2|03|2[257]|63|7[56]|63L1|8[1356]|[2-5]0)|21(?:0[13]|1[27]|[12]1|4[24]|5[156]|6[13]|7[036]|8[0359]|9[345])|220[0125]|30(?:[3468]1|4[23]|9[23]|63|85)|31(?:15|2[125]|42|51|6[16]|71|9[1357])|32(?:0[13]|35|42|[346]1|6[0235689]|86)|33(?:[0157]0|[17]2|71|6[036]|[0186]1|57|88|9[12356])|34(?:30|78|[69]1|[67]2|7[145]|9[23])|35(?:0[1236]|1[1367]|21|[578]1|6[0123]|7[24])|36(?:1[0125]|[39]0|2[347]|8[67]|6[013])|370[0689]|3710|37[47]1)|(?:OPPO[ _]?)?CPH1861|RMP210[235-8]|4K Google TV Stick)(?:[);/ ]|$)'
17874
+ regex: 'Realme[ _]|(?:RMX(?:18(0[13579]|11|3[13]|2[1257]|[45]1|53|45)|19(03|4[1235]|19|9[23]|2[1579]|[01379]1|73)|20(?:[025-7]1|42|[0357]2|03|2[257]|63|7[56]|63L1|8[1356]|[2-5]0)|21(?:0[13]|1[27]|[12]1|4[24]|5[156]|6[13]|7[036]|8[0359]|9[345])|220[0125]|30(?:[3468]1|4[23]|9[23]|63|85)|31(?:15|2[125]|42|51|6[16]|71|9[1357])|32(?:0[13]|35|42|[346]1|6[0235689]|86)|33(?:[0157]0|[17]2|71|6[036]|[0186]1|57|88|9[12356])|34(?:30|78|[69]1|[67]2|7[145]|9[23])|35(?:0[1236]|1[1367]|21|[578]1|6[0123]|7[24])|36(?:1[01257]|[39]0|2[347]|8[67]|6[013])|370[0689]|37[146]0|37[47]1|3830)|(?:OPPO[ _]?)?CPH1861|RMP210[235-8]|4K Google TV Stick)(?:[);/ ]|$)'
17607
17875
  device: 'smartphone'
17608
17876
  models:
17609
17877
  - regex: 'RMX370[68]'
@@ -17620,7 +17888,7 @@ Realme:
17620
17888
  model: '2'
17621
17889
  - regex: 'RMX180[137]'
17622
17890
  model: '2 Pro'
17623
- - regex: 'RMX(1833|182[125])'
17891
+ - regex: 'RMX(?:182[125])'
17624
17892
  model: '3'
17625
17893
  - regex: 'RMX1827'
17626
17894
  model: '3i'
@@ -17704,12 +17972,16 @@ Realme:
17704
17972
  model: '9 Pro 5G'
17705
17973
  - regex: 'RMX36(?:30|15)'
17706
17974
  model: '10'
17975
+ - regex: 'RMX3617'
17976
+ model: '10s'
17707
17977
  - regex: 'RMX366[01]'
17708
17978
  model: '10 Pro 5G'
17709
17979
  - regex: 'RMX368[67]'
17710
17980
  model: '10 Pro+ 5G'
17711
17981
  - regex: 'RMX3741'
17712
17982
  model: '11 Pro+ 5G'
17983
+ - regex: 'RMX3740'
17984
+ model: '11 Pro+'
17713
17985
  - regex: 'RMX3771'
17714
17986
  model: '11 Pro 5G'
17715
17987
  - regex: 'RMX1925(?:[);/ ]|$)'
@@ -17754,6 +18026,10 @@ Realme:
17754
18026
  model: 'C35'
17755
18027
  - regex: 'RMX3710'
17756
18028
  model: 'C55'
18029
+ - regex: 'RMX3830'
18030
+ model: 'C51'
18031
+ - regex: 'RMX3760'
18032
+ model: 'C53'
17757
18033
  - regex: 'RMX3231'
17758
18034
  model: 'C11 (2021)'
17759
18035
  - regex: 'RMX3709'
@@ -17808,7 +18084,7 @@ Realme:
17808
18084
  model: 'Narzo 50i'
17809
18085
  - regex: 'RMX3506'
17810
18086
  model: 'Narzo 50i Prime'
17811
- - regex: 'RMX1831(?:[);/ ]|$)'
18087
+ - regex: 'RMX183[13](?:[);/ ]|$)'
17812
18088
  model: 'U1'
17813
18089
  - regex: 'RMX(?:20(?:51|[2]5)|2144)(?:[);/ ]|$)'
17814
18090
  model: 'X50 5G'
@@ -17867,7 +18143,7 @@ Realme:
17867
18143
 
17868
18144
  # Oppo (oppo.com)
17869
18145
  OPPO:
17870
- regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|R8001|R820[16]|A101OP|OPG0[1-4]|A00[12]OP|(?:X90[07][0679]|U70[57]T?|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|A33[wf]|A33fw|A37fw?|PAAM00|PAAT00|PAC[TM]00|R7kf|R7plus[fmt]?|A1601|CPH[0-9]{4}|CPH19(69|79|23|1[179])|PB(A[TM]00|CT10|BT30|CM[13]0|[FD]M00)|P(E[RFHG]M\d{2}|E[GH]T\d{2}|DAM10|ADM00|AF[TM]00|ADT00|AHM00|BBM[03]0|BBT00|BDT00|BFT00|[CB]E[MT]00|CA[MT]00|C[CDG]M00|CA[MT]10|[CD]PM00|CRM00|CDT00|CD[TM]10|CHM[013]0|CKM[08]0|CLM[15]0|DEM[13]0|DHM00|D[RK][TM]00|DPT00|DB[TM]00|DCM00|[CD]NM00|DVM00|DY[TM][12]0|DNT00|EA[TM]00|CRT01|EDM00)|PFDM00|PEG[MT]10|PEM[MT][02]0|PDCT00|PDET10|PDS[TM]00|PEC[MT]30|PE[QYPEXNLU]M00|PCHT30|PCRT00|PFGM00|PF[VU]M10|A102OP|PFCM00|PFJM10|PGCM10|PECM20|PDAT10|A103OP|PCCT00|PFTM[12]0|PFFM20|OW19W[123]|OW20W1|PGJM10|PGAM10|PF[EF]M10|Reno[45] Z 5G|Reno5 Pro 5G|Reno[56] 5G|Find X[23]|Find N| R7sf| 1201|[56].*; (?:R7[gf])|OPD210[12]A?|OPD2201|PFZM10|PGIM10|A1603|A201OP|PESM10|PGBM10|PHA120|PGGM10|PHM110|PG[WX]110|PGU110|PHJ110|PCCM40|PHQ110|CHP1723|PGT110|PGEM10|RX17Neo|R15 Dream Mirror)(?:[);/ ]|$)'
18146
+ regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|R8001|R820[16]|A101OP|OPG0[1-4]|A00[12]OP|(?:X90[07][0679]|U70[57]T?|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]|15 Neo)[KLSTW]?|N520[79]|N5117|A33[wf]|A33fw|A37fw?|PAAM00|PAAT00|PAC[TM]00|R7kf|R7plus[fmt]?|A1601|CPH[0-9]{4}|CPH19(69|79|23|1[179])|PB(A[TM]00|CT10|BT30|CM[13]0|[FD]M00)|P(E[RFHG]M\d{2}|E[GH]T\d{2}|DAM10|ADM00|AF[TM]00|ADT00|AHM00|BBM[03]0|BBT00|BDT00|BFT00|[CB]E[MT]00|CA[MT]00|C[CDG]M00|CA[MT]10|[CD]PM00|CRM00|CDT00|CD[TM]10|CHM[013]0|CKM[08]0|CLM[15]0|DEM[13]0|DHM00|D[RK][TM]00|DPT00|DB[TM]00|DCM00|[CD]NM00|DVM00|DY[TM][12]0|DNT00|EA[TM]00|CRT01|EDM00)|PFDM00|PEG[MT]10|PEM[MT][02]0|PDCT00|PDET10|PDS[TM]00|PEC[MT]30|PE[QYPEXNLU]M00|PCHT30|PCRT00|PFGM00|PF[VU]M10|A102OP|PFCM00|PFJM10|PGCM10|PECM20|PDAT10|A103OP|PCCT00|PFTM[12]0|PFFM20|OW19W[123]|OW20W1|PGJM10|PGAM10|PF[EF]M10|Reno[45] Z 5G|Reno5 Pro 5G|Reno[56] 5G|Find X[23]|Find N| R7sf| 1201|[56].*; (?:R7[gf])|OPD210[12]A?|OPD2201|PFZM10|PGIM10|A1603|A201OP|PESM10|PGBM10|PHW110|PHA120|PGGM10|PHM110|PG[WX]110|PGU110|PHJ110|PCCM40|PHQ110|CHP1723|PGT110|PGEM10|RX17Neo|R15 Dream Mirror|R9 Plustm A|PGFM10|Reno5 K 5G|A301OP|P(?:JC|H[FV])110)(?:[);/ ]|$)'
17871
18147
  device: 'smartphone'
17872
18148
  models:
17873
18149
  - regex: 'PCHM10(?:[);/ ]|$)'
@@ -17902,12 +18178,16 @@ OPPO:
17902
18178
  model: 'A1s'
17903
18179
  - regex: 'CPH22(?:69|75)(?:[);/ ]|$)'
17904
18180
  model: 'A16'
18181
+ - regex: 'CPH2591(?:[);/ ]|$)'
18182
+ model: 'A18'
17905
18183
  - regex: '(?:OPPO[ _]?)?(CPH1837|PAD[TM]00)(?:[);/ ]|$)'
17906
18184
  model: 'A3'
17907
18185
  - regex: '(?:OPPO[ _]?)?A37f(w)(?:[);/ ]|$)'
17908
18186
  model: 'A37f$1'
17909
18187
  - regex: 'A37f(?:[);/ ]|$)'
17910
18188
  model: 'A37f'
18189
+ - regex: 'CPH2579(?:[);/ ]|$)'
18190
+ model: 'A38'
17911
18191
  - regex: '(?:OPPO[ _]?)?CPH1605(?:[);/ ]|$)'
17912
18192
  model: 'A39'
17913
18193
  - regex: 'PESM10(?:[);/ ]|$)'
@@ -17956,6 +18236,8 @@ OPPO:
17956
18236
  model: 'A57 (2022)'
17957
18237
  - regex: 'PHJ110'
17958
18238
  model: 'A58 5G'
18239
+ - regex: 'CPH2577'
18240
+ model: 'A58'
17959
18241
  - regex: 'PFTM10'
17960
18242
  model: 'A97'
17961
18243
  - regex: 'PHA120'
@@ -17986,6 +18268,8 @@ OPPO:
17986
18268
  model: 'A77 5G'
17987
18269
  - regex: '(?:OPPO[ _]?)?(?:CPH2495|CPH2483)'
17988
18270
  model: 'A78 5G'
18271
+ - regex: '(?:OPPO[ _]?)?CPH2565'
18272
+ model: 'A78'
17989
18273
  - regex: '(?:OPPO[ _]?)?A79kt'
17990
18274
  model: 'A79'
17991
18275
  - regex: '(?:OPPO[ _]?)?CPH2473'
@@ -18016,6 +18300,8 @@ OPPO:
18016
18300
  model: 'A93s'
18017
18301
  - regex: 'PFUM10'
18018
18302
  model: 'A96 5G'
18303
+ - regex: 'CPH2529'
18304
+ model: 'A98 5G'
18019
18305
  - regex: '(?:CPH2203|CPH2333)(?:[);/ ]|$)'
18020
18306
  model: 'A94'
18021
18307
  - regex: '(?:CPH2197)(?:[);/ ]|$)'
@@ -18064,7 +18350,7 @@ OPPO:
18064
18350
  model: 'F9 Pro'
18065
18351
  - regex: '(?:OPPO[ _]?)?CPH2223(?:[);/ ]|$)'
18066
18352
  model: 'F19s'
18067
- - regex: '(?:OPPO[ _]?)?CPH2285(?:[);/ ]|$)'
18353
+ - regex: '(?:OPPO[ _]?)?(?:CPH2285|F19 Pro)(?:[);/ ]|$)'
18068
18354
  model: 'F19 Pro'
18069
18355
  - regex: '(?:OPPO[ _]?)?CPH2213(?:[);/ ]|$)'
18070
18356
  model: 'F19 Pro Plus'
@@ -18084,6 +18370,8 @@ OPPO:
18084
18370
  model: 'Find N2'
18085
18371
  - regex: '(?:OPPO[ _]?)?(?:CPH2437|PGT110)(?:[);/ ]|$)'
18086
18372
  model: 'Find N2 Flip'
18373
+ - regex: '(?:OPPO[ _]?)?(?:CPH2519)(?:[);/ ]|$)'
18374
+ model: 'Find N3 Flip'
18087
18375
  - regex: '(?:OPPO[ _]?)?R815[TW]?(?:[);/ ]|$)'
18088
18376
  model: 'Find Clover'
18089
18377
  - regex: '(?:OPPO[ _]?)?R8015(?:[);/ ]|$)'
@@ -18148,6 +18436,10 @@ OPPO:
18148
18436
  model: 'K10 5G'
18149
18437
  - regex: '(?:OPPO[ _]?)?PGIM10'
18150
18438
  model: 'K10 Pro 5G'
18439
+ - regex: '(?:OPPO[ _]?)?PJC110'
18440
+ model: 'K11 5G'
18441
+ - regex: '(?:OPPO[ _]?)?PHF110'
18442
+ model: 'K11x 5G'
18151
18443
  - regex: '(?:OPPO[ _]?)?N5117(?:[);/ ]|$)'
18152
18444
  model: 'N1 Mini'
18153
18445
  - regex: '(?:OPPO[ _]?)?N520[79](?:[);/ ]|$)'
@@ -18188,6 +18480,8 @@ OPPO:
18188
18480
  model: 'RX17 Neo'
18189
18481
  - regex: 'R15 Dream Mirror'
18190
18482
  model: 'R15 Dream Mirror'
18483
+ - regex: 'R15 Neo'
18484
+ model: 'R15 Neo'
18191
18485
  - regex: '(?:OPPO[ _]?)?(?:CPH1893)(?:[);/ ]|$)'
18192
18486
  model: 'R17 Neo'
18193
18487
  - regex: '(?:OPPO[ _]?)?(?:CPH1877|PBD[MT]00)(?:[);/ ]|$)'
@@ -18210,7 +18504,7 @@ OPPO:
18210
18504
  model: 'R7 Plus'
18211
18505
  - regex: '(?:OPPO[ _]?)?R7Plusf(?:[);/ ]|$)'
18212
18506
  model: 'R7 Plus F'
18213
- - regex: '(?:OPPO[ _]?)?X9079(?:[);/ ]|$)'
18507
+ - regex: '(?:OPPO[ _]?)?(?:X9079|R9 Plustm A)(?:[);/ ]|$)'
18214
18508
  model: 'R9 Plus'
18215
18509
  - regex: '(?:OPPO[ _]?)?(?:CPH1607|R9sk)(?:[);/ ]|$)'
18216
18510
  model: 'R9s'
@@ -18224,6 +18518,14 @@ OPPO:
18224
18518
  model: 'Reno 10X Zoom'
18225
18519
  - regex: 'PCCT00'
18226
18520
  model: 'Reno 10X'
18521
+ - regex: 'PHW110'
18522
+ model: 'Reno 10'
18523
+ - regex: 'CPH2531'
18524
+ model: 'Reno 10 5G'
18525
+ - regex: '(?:CPH2525|PHV110)(?:[);/ ]|$)'
18526
+ model: 'Reno 10 Pro 5G'
18527
+ - regex: 'CPH2521'
18528
+ model: 'Reno 10 Pro+ 5G'
18227
18529
  - regex: '(?:PCKM00|CPH1907)(?:[);/ ]|$)'
18228
18530
  model: 'Reno 2'
18229
18531
  - regex: 'CPH1989(?:[);/ ]|$)'
@@ -18266,6 +18568,8 @@ OPPO:
18266
18568
  model: 'Reno 5 5G'
18267
18569
  - regex: 'PEG[MT]10(?:[);/ ]|$)'
18268
18570
  model: 'Reno 5K'
18571
+ - regex: 'Reno5 K 5G'
18572
+ model: 'Reno 5K 5G'
18269
18573
  - regex: 'CPH2217(?:[);/ ]|$)'
18270
18574
  model: 'Reno 5F'
18271
18575
  - regex: '(?:CPH2211|Reno5 Z 5G)(?:[);/ ]|$)'
@@ -18312,6 +18616,8 @@ OPPO:
18312
18616
  model: 'Reno 9 Pro+'
18313
18617
  - regex: 'PGX110'
18314
18618
  model: 'Reno 9 Pro'
18619
+ - regex: 'CPH2523|A301OP'
18620
+ model: 'Reno 9 A'
18315
18621
  - regex: '(?:PEYM00)(?:[);/ ]|$)'
18316
18622
  model: 'K9 Pro 5G'
18317
18623
  - regex: '(?:PEXM00)(?:[);/ ]|$)'
@@ -18327,6 +18633,10 @@ OPPO:
18327
18633
  - regex: 'A59st(?:[);/ ]|$)'
18328
18634
  model: 'A59s'
18329
18635
 
18636
+ - regex: 'OPPO ?(CNM632)'
18637
+ device: 'tv'
18638
+ model: '$1'
18639
+
18330
18640
  - regex: 'OPD2102A?'
18331
18641
  model: 'Pad Air'
18332
18642
  device: 'tablet'
@@ -18631,6 +18941,9 @@ Panasonic:
18631
18941
  - regex: 'PANASONIC, ([a-z0-9_ \-]+), (?:wired|wireless)'
18632
18942
  model: ''
18633
18943
  device: 'tv'
18944
+ - regex: 'PANASONIC,([a-z0-9_ \-]+),(?:wired|wireless)'
18945
+ model: '$1'
18946
+ device: 'tv'
18634
18947
  - regex: 'Panasonic[ _\-]?([a-z0-9]+)'
18635
18948
  model: '$1'
18636
18949
  - regex: 'portalmmm/2.0 (P[a-z0-9]+)'
@@ -18688,6 +19001,16 @@ ArmPhone:
18688
19001
  device: 'smartphone'
18689
19002
  model: '$1'
18690
19003
 
19004
+ # Penta
19005
+ Penta:
19006
+ regex: 'Penta[ _]|(?:PS650)(?:[);/ ]|$)'
19007
+ device: 'tablet'
19008
+ models:
19009
+ - regex: 'PS650'
19010
+ model: 'Smart PS650'
19011
+ - regex: 'WS704DX'
19012
+ model: 'T-Pad WS704DX'
19013
+
18691
19014
  # Pentagram
18692
19015
  Pentagram:
18693
19016
  regex: 'Pentagram|Quadra|Monster X5'
@@ -18710,7 +19033,7 @@ Pentagram:
18710
19033
 
18711
19034
  # Tcl (tcl.com)
18712
19035
  TCL:
18713
- regex: 'TCL,|TCL[_ -][a-z0-9]+|(?:TCL[_ -][^;/]+ Build)|(?:TCLGalaG60(?:\(9108A\))?|4163D|4187[DMU]|4188[CLRSVO]|5004S|5087Z|5101A|5102[BKLMOP]|5107G|5124J|5130[JMEI]|5133A|5148A|5152D|5159[AJ]|5164D|5199I|6102[ADH]|6125[ADFH]|6127[AI]|6156[ADH]|6159[AK]|6165[AHS]|7040N|8491X|9048S|9060[GX]|9080G|9081X|9295G|9296[GQ]|A(?:50[2789]|600)DL|T(?:60[123]|701)DL|T(?:506D|671[EFGHO]|676[HJK]|766[AHJSU]|767[GHW]|770[BH]|771K|773O|774[BH]|775[BH]|776[HO]|779W|780H|781SPP|781S|781|782H|790[SY]|799[BH]|810[HS])|Percee TV|9317X1|9161G| 9061| 8182| 8167| 8095|BeyondTV\d?|T507U|T610[KE]|9132G|9137W|T430W|T431D|T501[CL]|T768S)(?:_(?:RU|EEA|TR))?(?:[);/ ]|$)'
19036
+ regex: 'TCL,|TCL[_ -][a-z0-9]+|(?:TCL[_ -][^;/]+ Build)|TCL72563C|(?:TCLGalaG60(?:\(9108A\))?|4163D|4187[DMU]|4188[CLRSVO]|5004S|5087Z|5101A|5102[BKLMOP]|5107G|5124J|5130[JMEI]|5133A|5148A|5152D|5159[AJ]|5164D|5199I|6102[ADH]|6125[ADFH]|6127[AI]|6156[ADH]|6159[AK]|6165[AHS]|7040N|8491X|9048S|9060[GX]|9080G|9081X|9295G|9296[GQ]|A(?:50[2789]|600)DL|T(?:60[123]|701)DL|T(?:506D|671[EFGHO]|676[HJK]|766[AHJSU]|767[GHW]|770[BH]|771K|773O|774[BH]|775[BH]|776[HO]|779W|780H|781SPP|781S|781|782H|790[SY]|799[BH]|810[HS])|Percee TV|9317X1|9161G| 9061| 8182| 8167| 8095|BeyondTV\d?|T507U|T610[KE]|9132G|9166G|9137W|T430W|T431[DU]|T501[CL]|T768S)(?:_(?:RU|EEA|TR))?(?:[);/ ]|$)'
18714
19037
  device: 'smartphone'
18715
19038
  models:
18716
19039
  - regex: 'TCLGalaG60(?:\(9108A\))?(?:[);/ ]|$)'
@@ -18727,7 +19050,7 @@ TCL:
18727
19050
  model: '205'
18728
19051
  - regex: '(?:4163D|4188S)(?:[);/ ]|$)'
18729
19052
  model: '304'
18730
- - regex: 'T431D(?:[);/ ]|$)'
19053
+ - regex: 'T431[DU](?:[);/ ]|$)'
18731
19054
  model: '403'
18732
19055
  - regex: '6102[AD](?:[);/ ]|$)'
18733
19056
  model: '305'
@@ -18889,6 +19212,9 @@ TCL:
18889
19212
  - regex: '9137W'
18890
19213
  device: 'tablet'
18891
19214
  model: 'Tab 8 LE'
19215
+ - regex: '9166G'
19216
+ device: 'tablet'
19217
+ model: 'Tab 11 LTE'
18892
19218
  - regex: '8491X'
18893
19219
  device: 'tablet'
18894
19220
  model: 'Tab 10L'
@@ -18905,10 +19231,16 @@ TCL:
18905
19231
  - regex: '((?:43|55)S62FS|(?:43|50)P65US|U(?:43|60|65)P60|65P4USM|(?:40|49)S62|L32S6|55P610|50P8S|55S62|(?:43|50)P6US|55DP60)'
18906
19232
  device: 'tv'
18907
19233
  model: '$1'
19234
+ - regex: 'TCL72563C'
19235
+ device: 'tv'
19236
+ model: '72563C'
19237
+ - regex: 'TCL,([a-z0-9_ \-]+),(?:wired|wireless)'
19238
+ device: 'tv'
19239
+ model: '$1'
18908
19240
 
18909
19241
  # JVC
18910
19242
  JVC:
18911
- regex: 'JVC[;,]|AV-10NT310|AFTSO001'
19243
+ regex: 'JVC[;, ]|AV-10NT310|AFTSO001'
18912
19244
  device: 'tv'
18913
19245
  models:
18914
19246
  - regex: 'JVC[;,](32D1290)'
@@ -19253,6 +19585,8 @@ Safaricom:
19253
19585
  models:
19254
19586
  - regex: 'NEON_RAY_PRO'
19255
19587
  model: 'Neon Ray Pro'
19588
+ - regex: 'Neon Ray Ultra'
19589
+ model: 'Neon Ray Ultra'
19256
19590
  - regex: 'NEON_RAY'
19257
19591
  model: 'Neon Ray'
19258
19592
  - regex: 'NEON RAY 2'
@@ -19344,7 +19678,7 @@ Soundmax:
19344
19678
 
19345
19679
  # Samsung
19346
19680
  Samsung:
19347
- regex: 'SAMSUNG(?! ?(?:Browser|Redmi))|FamilyHub|Maple (?!III)|Gear Live|(?:SEC_)?SC-(?:001|01[EFGHKLM]|02[CGHJKLMF]|03[EFJKL]|04[EFJLG]|05[GL]|(?:4[12]|5[1-4])A|5[1-5]B|5[1-5]C|56C)|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|SMART-TV|GT-|(?<!GOG|GOG )Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|beyond[02]q?|crownq?lte|vollo Vi86(?:[);/ ]|$)|(?:lineage_|aokp_|rr_)?(?:serranoltexx|j5y17lte|Santos103G|fortuna3g)|(?:OTV-)?SMT-E5015|ISW11SC|40[34]SC|SC(?:G1[6789]|V3[1-9]|V4[0-9]|51Aa|-56B|T21|G0[1-9]|G1[0-5]|L2[234])(?:-[uj])?(?:[);/ ]|$)'
19681
+ regex: 'SAMSUNG(?! ?(?:Browser|Redmi))|FamilyHub|Maple (?!III)|Maple2012|SMART-TV.+Tizen.+SamsungBrowser|Gear Live|(?:SEC_)?SC-(?:001|01[EFGHKLM]|02[CGHJKLMF]|03[EFJKL]|04[EFJLG]|05[GL]|(?:4[12]|5[1-4])A|5[1-5]B|5[1-5]C|56C|5[23]D)|N[57]100|N5110|N9100|S(?:CH|GH|PH|EC|AM|HV|HW|M)-|GT-|(?<!GOG|GOG )Galaxy|(?:portalmmm|o2imode)/2\.0 [SZ]|sam[rua]|beyond[02]q?|crownq?lte|vollo Vi86(?:[);/ ]|$)|(?:lineage_|aokp_|rr_)?(?:serranoltexx|j5y17lte|Santos103G|fortuna3g)|(?:OTV-)?SMT-E5015|ISW11SC|40[34]SC|SC(?:G1[6789]|G21|V3[1-9]|V4[0-9]|51Aa|-56B|T21|G0[1-9]|G1[0-5]|L2[234])(?:-[uj])?(?:[);/ ]|$)'
19348
19682
  device: 'smartphone'
19349
19683
  models:
19350
19684
  # explicit tv models
@@ -19360,6 +19694,9 @@ Samsung:
19360
19694
  - regex: 'Samsung, ([a-z0-9_ \-]+), (?:wired|wireless)'
19361
19695
  device: 'tv'
19362
19696
  model: '$1'
19697
+ - regex: 'Maple2012'
19698
+ device: 'tv'
19699
+ model: 'Smart TV (2012)'
19363
19700
 
19364
19701
  # explicit tablet models
19365
19702
  - regex: '(?:SAMSUNG-)?(?:GT-)?N5100'
@@ -20183,7 +20520,7 @@ Samsung:
20183
20520
  model: 'Galaxy S23'
20184
20521
  - regex: '(?:SAMSUNG-)?SM-S916'
20185
20522
  model: 'Galaxy S23+'
20186
- - regex: '(?:SAMSUNG-)?SM-S918'
20523
+ - regex: '(?:SAMSUNG-)?(?:SM-S918|SC-52D)'
20187
20524
  model: 'Galaxy S23 Ultra'
20188
20525
  - regex: '(?:SAMSUNG-)?SM-F700(?:U1|[0FNUW])|SCV47'
20189
20526
  model: 'Galaxy Z Flip'
@@ -20285,7 +20622,7 @@ Samsung:
20285
20622
  model: 'Galaxy A72'
20286
20623
  - regex: '(?:SAMSUNG-)?SM-A736'
20287
20624
  model: 'Galaxy A73 5G'
20288
- - regex: '(?:SAMSUNG-)?SM-A716(?:U1|[0BUV])(?:[);/ ]|$)'
20625
+ - regex: '(?:SAMSUNG-)?SM-A716(?:U1|[0BUVT])(?:[);/ ]|$)'
20289
20626
  model: 'Galaxy A71 5G'
20290
20627
  - regex: '(?:SAMSUNG-)?SM-A(?:530F|800[0FISXY])|SCV32'
20291
20628
  model: 'Galaxy A8'
@@ -20365,13 +20702,13 @@ Samsung:
20365
20702
  model: 'Galaxy A50s'
20366
20703
  - regex: '(?:SAMSUNG-)?SM-(?:A515[FUW]|S515DL)'
20367
20704
  model: 'Galaxy A51'
20368
- - regex: '(?:SAMSUNG-)?(?:SM-A516(?:U1|[0BNUV])|SC-54A|SCG07)'
20705
+ - regex: '(?:SAMSUNG-)?(?:SM-A516(?:U1|[0BNUVT])|SC-54A|SCG07)'
20369
20706
  model: 'Galaxy A51 5G'
20370
20707
  - regex: '(?:SAMSUNG-)?SM-A536V'
20371
20708
  model: 'Galaxy A53 5G UW'
20372
20709
  - regex: '(?:SAMSUNG-)?(?:SM-A536|SC-53C|SCG15|SM-S536DL)'
20373
20710
  model: 'Galaxy A53 5G'
20374
- - regex: '(?:SAMSUNG-)?(?:SM-A546)'
20711
+ - regex: '(?:SAMSUNG-)?(?:SM-A546|SC-53D|SCG21)'
20375
20712
  model: 'Galaxy A54 5G'
20376
20713
  - regex: '(?:SAMSUNG-)?SM-A705(?:GM|[MYF]N|[0FUWX])'
20377
20714
  model: 'Galaxy A70'
@@ -20587,8 +20924,12 @@ Samsung:
20587
20924
  model: 'Galaxy Quantum 3'
20588
20925
  - regex: '(?:SAMSUNG-)?SM-M536'
20589
20926
  model: 'Galaxy M53 5G'
20927
+ - regex: '(?:SAMSUNG-)?SM-M546'
20928
+ model: 'Galaxy M54 5G'
20590
20929
  - regex: '(?:SAMSUNG-)?SM-M625'
20591
20930
  model: 'Galaxy M62'
20931
+ - regex: '(?:SAMSUNG-)?SM-M546'
20932
+ model: 'Galaxy M54 5G'
20592
20933
  - regex: '(?:SAMSUNG-)?SM-W201([689])'
20593
20934
  model: 'Galaxy W201$1'
20594
20935
  - regex: '(?:SAMSUNG-)?SM-W2022'
@@ -20664,6 +21005,9 @@ Samsung:
20664
21005
  - regex: '(?:SAMSUNG-)?(?:SM-F721|SC-54C|SCG17)'
20665
21006
  model: 'Galaxy Z Flip 4'
20666
21007
  device: 'phablet'
21008
+ - regex: '(?:SAMSUNG-)?(?:SM-F731)'
21009
+ model: 'Galaxy Z Flip 5'
21010
+ device: 'phablet'
20667
21011
  - regex: '(?:SAMSUNG-)?SM-F916(?:U1|[0BNQUW])|SCG05'
20668
21012
  model: 'Galaxy Z Fold 2 5G'
20669
21013
  device: 'phablet'
@@ -20673,6 +21017,9 @@ Samsung:
20673
21017
  - regex: '(?:SAMSUNG-)?(?:SM-F936|SCG16|SC-55C)'
20674
21018
  model: 'Galaxy Z Fold 4'
20675
21019
  device: 'phablet'
21020
+ - regex: '(?:SAMSUNG-)?(?:SM-F946)'
21021
+ model: 'Galaxy Z Fold 5'
21022
+ device: 'phablet'
20676
21023
  - regex: '(?:SAMSUNG-)?GT-I9060(?:[);/ ]|$)'
20677
21024
  model: 'Galaxy Grand Neo'
20678
21025
  device: 'phablet'
@@ -20835,7 +21182,7 @@ Samsung:
20835
21182
  model: '$1'
20836
21183
  - regex: 'SAMSUNG[ _/\-]?([a-z0-9\-]+)'
20837
21184
  model: '$1'
20838
- - regex: 'SAMSUNG;[ ]?([a-z0-9 ]+)'
21185
+ - regex: 'SAMSUNG;(?! CPU OS)[ ]?([a-z0-9 ]+)'
20839
21186
  model: '$1'
20840
21187
  - regex: 'SEC_SC-([a-z0-9]+)'
20841
21188
  model: 'SC-$1' # NTT DoCoMo
@@ -22042,6 +22389,12 @@ COYOTE:
22042
22389
  - regex: '1090 DVR Maximus Pro'
22043
22390
  model: '1090 DVR Maximus Pro' # GPS tablet
22044
22391
 
22392
+ # Matco Tools
22393
+ Matco Tools:
22394
+ regex: '(Maximus 3\.0)'
22395
+ device: 'tablet'
22396
+ model: '$1'
22397
+
22045
22398
  # Maximus (maximus-mobile.com)
22046
22399
  Maximus:
22047
22400
  regex: 'Maximus[ _]|(Noir X|G10 max|iX Ultra)(?:[);/ ]|$)'
@@ -22508,75 +22861,6 @@ Starmobile:
22508
22861
  device: 'tablet'
22509
22862
  model: 'Engage 7 Plus'
22510
22863
 
22511
- # Toshiba
22512
- Toshiba:
22513
- regex: 'Toshiba|TSBNetTV/|portalmmm/[12].0 TS|(?:T-01C|T-0[12]D|IS04|IS11T|AT1S0|AT300SE|AFTDCT31|AT(?:7-C|10-A|10[PL]E-A|100|200|270|300|330|374|400|470|500a?|503|570|703|830)|AFTKMST12|AFTBAMR311|SATELLITE (?:C655|L50-C|Pro L300|A100))(?:[);/ ]|$)'
22514
- device: 'smartphone'
22515
- models:
22516
- # explicit smartphone models
22517
- - regex: 'T-01C'
22518
- model: 'Regza T-01C'
22519
- - regex: 'T-01D'
22520
- model: 'Regza T-01D'
22521
- - regex: 'T-02D'
22522
- model: 'Regza T-02D'
22523
- - regex: 'IS04'
22524
- model: 'Regza IS04'
22525
- - regex: 'IS11T'
22526
- model: 'Regza IS11T'
22527
-
22528
- # explicit tablet models
22529
- - regex: 'AT7-C'
22530
- model: 'Excite'
22531
- device: 'tablet'
22532
- - regex: 'AT1S0'
22533
- model: 'Regza AT1S0'
22534
- device: 'tablet'
22535
- - regex: 'AT300SE'
22536
- model: 'Regza AT300SE'
22537
- device: 'tablet'
22538
- - regex: 'AT500a'
22539
- model: 'Regza AT500a'
22540
- device: 'tablet'
22541
- - regex: 'AT(100|200|270|300|330|374|400|470|500|503|570|703|830)'
22542
- model: 'Regza AT$1'
22543
- device: 'tablet'
22544
- - regex: 'AT10([PL])E-A'
22545
- model: 'Excite AT10$1-A'
22546
- device: 'tablet'
22547
- - regex: 'AT10-A'
22548
- model: 'Excite AT10-A'
22549
- device: 'tablet'
22550
-
22551
- - regex: 'SATELLITE L50-C'
22552
- device: 'desktop'
22553
- model: 'Satellite L50C'
22554
- - regex: 'SATELLITE (C655|Pro L300|A100)'
22555
- device: 'desktop'
22556
- model: 'Satellite $1'
22557
-
22558
- - regex: 'AFTKMST12'
22559
- device: 'tv'
22560
- model: '43LF711U20'
22561
- - regex: 'AFTDCT31'
22562
- device: 'tv'
22563
- model: '4K UHD (2020)'
22564
- - regex: 'AFTBAMR311'
22565
- device: 'tv'
22566
- model: '43LF421U19'
22567
- - regex: 'TOSHIBA, ([a-z0-9_ \-]+), (?:wired|wireless)'
22568
- device: 'tv'
22569
- model: ''
22570
- - regex: 'TSBNetTV/'
22571
- device: 'tv'
22572
- model: ''
22573
- - regex: 'Toshiba[ /_\-]?([a-z0-9_ \-]+) Build'
22574
- model: '$1'
22575
- - regex: 'Toshiba[ /_\-]?([a-z0-9_\-]+)'
22576
- model: '$1'
22577
- - regex: 'portalmmm/[12].0 (TS[a-z0-9 ]+)'
22578
- model: '$1'
22579
-
22580
22864
  # Ok
22581
22865
  Ok:
22582
22866
  regex: 'AFTWI001(?:[);/ ]|$)'
@@ -22589,6 +22873,12 @@ Anker:
22589
22873
  device: 'tv'
22590
22874
  model: 'Nebula Soundbar'
22591
22875
 
22876
+ # Altus (https://www.altus.com.tr/)
22877
+ Altus:
22878
+ regex: 'Altus(?:[);/ ]|$)'
22879
+ device: 'tv'
22880
+ model: ''
22881
+
22592
22882
  # Kindle
22593
22883
  Amazon:
22594
22884
  regex: '(?:AFT[ABMNRST]|AFTSSS?|AFTKA|SD4930UR|AEO(?:BC|C[HW]|KN)|KF(?:OT|ONWI|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|TRP?WI|SAW[IA]|GIWI|KAWI|MAWI|MEWI|MUWI|SUWI))(?:[);/ ]|$)|Kindle|AlexaMediaPlayer|Amazon (?:Tate|Jem)|Silk/\d+\.\d+|Echo/1|.+FIRETVSTICK'
@@ -22647,6 +22937,8 @@ Amazon:
22647
22937
  model: 'Kindle Fire HDX 8.9" WiFi'
22648
22938
  - regex: 'KFAPWA(?:[);/ ]|$)'
22649
22939
  model: 'Kindle Fire HDX 8.9" 4G'
22940
+ - regex: 'KFSNWI(?:[);/ ]|$)'
22941
+ model: 'Fire Max 11'
22650
22942
  - regex: 'KFARWI(?:[);/ ]|$)'
22651
22943
  model: 'Fire HD 6'
22652
22944
  - regex: 'KFASWI(?:[);/ ]|$)'
@@ -22834,20 +23126,22 @@ T-Mobile:
22834
23126
 
22835
23127
  # Teclast (teclast.com)
22836
23128
  Teclast:
22837
- regex: 'Teclast|P80_G3M2|TLA00[12]|TLA016|X98 Air III|M20_4G|X98 Air II\(HG5N\)|Tbook|X80 Power\(B2N4\)|(?:[TM]40 Plus|T30|P80[XH]|P20HD|P10[_ ]HD|M40|P10SE?|M30_Pro|M40SE|P8[05]|P25(?:_T)?|P[23]0S|P[34]0HD)_(?:ROW|EEA|RUS)|P20HD\(N6H5\)|T40 Plus\(M7T3\)|T40Pro|T40 PRO(?:\(T1A1\))?|T10\(E3C[56]\)|P10S\(N4H5\)|98\(M1E[45789]\)|98\(M3E3\)|X10 \(M1D3\)|M89 Pro|M40\(N9H[123]\)|P20HD\(N6H7\)|M40SE\(M5T3\)|M40(?:SE?|Pro|Air)_(?:ROW|EEA|RUS)| P80X|P30Air|P10HD_Lite|(?:T50|M40_Plus|M40 Pro)_(?:ROW|EEA)'
23129
+ regex: 'Teclast|P80_G3M2|TLA00[12]|TLA016|X98 Air III|M20_4G|X98 Air II\(HG5N\)|Tbook|X80 Power\(B2N4\)|P80H\(D1C2\)|T20\(T2E1\)|(?:[TM]40 Plus|T30|P80[XH]|P20HD|P10[_ ]HD|M40|P10SE?|M30_Pro|M40SE|P8[05]|P25(?:_T)?|P[23]0S|P[34]0HD)_(?:ROW|EEA|RUS)|P20HD\(N6H5\)|T40 Plus\(M7T3\)|T40Pro|T40 PRO(?:\(T1A1\))?|T10\(E3C[56]\)|P10S\(N4H5\)|98\(M1E[45789]\)|98\(M3E3\)|X10 \(M1D3\)|M89 Pro|M40\(N9H[123]\)|P20HD\(N6H7\)|M40SE\(M5T3\)|M40(?:SE?|Pro|Air)_(?:ROW|EEA|RUS)| P80X|P30Air|P10HD_Lite|(?:T50|M40_Plus|M40 Pro|T50Pro_W)_(?:ROW|EEA)|P40HD_T_EEA'
22838
23130
  device: 'tablet'
22839
23131
  models:
22840
23132
  - regex: 'Tbook[_ -]([^;/]+)(?: Build|[;)]|$)'
22841
23133
  model: 'Tbook $1'
22842
23134
  - regex: 'T10\(E3C[56]\)'
22843
23135
  model: 'T10'
23136
+ - regex: 'T20\(T2E1\)'
23137
+ model: 'T20'
22844
23138
  - regex: 'X10 \(M1D3\)'
22845
23139
  model: 'X10'
22846
23140
  - regex: 'P10S(?:\(N4H5\)|_(?:ROW|EEA))(?:[);/ ]|$)'
22847
23141
  model: 'P10S'
22848
23142
  - regex: 'P20HD_?(?:ROW|EEA|RUS)|P20HD\(N6H[57]\)'
22849
23143
  model: 'P20HD'
22850
- - regex: 'P40HD_?(?:ROW|EEA|RUS)'
23144
+ - regex: 'P40HD_?(?:ROW|EEA|RUS|T_EEA)'
22851
23145
  model: 'P40HD'
22852
23146
  - regex: 'P10[_ ]HD_(?:ROW|EEA)'
22853
23147
  model: 'Apex P10HD'
@@ -22887,6 +23181,10 @@ Teclast:
22887
23181
  model: 'T40'
22888
23182
  - regex: 'T40 Plus(?:_(?:ROW|EEA)|\(M7T3\))'
22889
23183
  model: 'T40 Plus'
23184
+ - regex: 'T50Pro_W'
23185
+ model: 'T50 Pro'
23186
+ - regex: 'P80H\(D1C2\)'
23187
+ model: 'P80h'
22890
23188
  - regex: '(P80[Xh]|P30HD|T30|M40|P25(?:_T)?|P10SE|P20S|T50)[_ ](?:ROW|EEA)'
22891
23189
  model: '$1'
22892
23190
  - regex: 'P80X'
@@ -22906,11 +23204,13 @@ Teclast:
22906
23204
 
22907
23205
  # Tecno Mobile or Tecno
22908
23206
  Tecno Mobile:
22909
- regex: 'Tecno|Phantom[56]|Phantom6-Plus|DP7C Pro-SGA1'
23207
+ regex: 'Tecno|Phantom[56]|Phantom6-Plus|Phantom6S|DP7C Pro-SGA1'
22910
23208
  device: 'smartphone'
22911
23209
  models:
22912
23210
  - regex: 'Phantom6-Plus'
22913
23211
  model: 'Phantom 6 Plus'
23212
+ - regex: 'Phantom6S'
23213
+ model: 'Phantom 6S'
22914
23214
  - regex: 'Phantom([56])'
22915
23215
  model: 'Phantom $1'
22916
23216
  - regex: 'TECNO[ _]AD8'
@@ -22957,7 +23257,7 @@ Tecno Mobile:
22957
23257
  - regex: 'Tecno[ _]P701(?:[);/ ]|$)'
22958
23258
  model: 'DroidPad 7D'
22959
23259
  device: 'tablet'
22960
- - regex: 'DP7C Pro-SGA1(?:[);/ ]|$)'
23260
+ - regex: '(?:DP7C Pro-SGA1|TECNO[ _]DP7CPRO)(?:[);/ ]|$)'
22961
23261
  model: 'DroidPad 7C Pro'
22962
23262
  device: 'tablet'
22963
23263
  - regex: 'Tecno[ _]P703(?:[);/ ]|$)'
@@ -23100,13 +23400,13 @@ Tecno Mobile:
23100
23400
  model: 'Pop 6 Go'
23101
23401
  - regex: 'TECNO[ _]BE8[i]?(?:[);/ ]|$)'
23102
23402
  model: 'Pop 6 Pro'
23103
- - regex: 'TECNO[ _]BF7(?:[);/ ]|$)'
23403
+ - regex: 'TECNO[ _]BF7h?(?:[);/ ]|$)'
23104
23404
  model: 'Pop 7 Pro'
23105
23405
  - regex: 'Tecno[ _]SA1S Pro(?:[);/ ]|$)'
23106
23406
  model: 'SA1s Pro'
23107
23407
  - regex: 'Tecno[ _]KG5[mh]?(?:[);/ ]|$)'
23108
23408
  model: 'Spark Go (2022)'
23109
- - regex: 'Tecno[ _]BF7n(?:[);/ ]|$)'
23409
+ - regex: 'Tecno[ _](?:Mobile )?BF7n(?:[);/ ]|$)'
23110
23410
  model: 'Spark Go (2023)'
23111
23411
  - regex: 'Tecno[ _]KA7O?(?:[);/ ]|$)'
23112
23412
  model: 'Spark 2'
@@ -23158,9 +23458,9 @@ Tecno Mobile:
23158
23458
  model: 'Spark 9'
23159
23459
  - regex: 'TECNO[ _]KH6(?:[);/ ]|$)'
23160
23460
  model: 'Spark 9T'
23161
- - regex: 'TECNO[ _]KI5[km]'
23461
+ - regex: 'TECNO[ _](?:Mobile[ _])?KI5[km]'
23162
23462
  model: 'Spark 10C'
23163
- - regex: 'TECNO[ _]KI5'
23463
+ - regex: 'TECNO[ _](?:Mobile[ _])?KI5'
23164
23464
  model: 'Spark 10'
23165
23465
  - regex: 'TECNO[ _]KI8'
23166
23466
  model: 'Spark 10 5G'
@@ -23217,9 +23517,12 @@ Tecno Mobile:
23217
23517
  - regex: 'TECNO[ _]LE6h?(?:[);/ ]|$)'
23218
23518
  device: 'phablet'
23219
23519
  model: 'Pova Neo'
23220
- - regex: 'TECNO[ _]LG6n(?:[);/ ]|$)'
23520
+ - regex: 'TECNO[ _](?:Mobile )?LG6n(?:[);/ ]|$)'
23221
23521
  device: 'phablet'
23222
23522
  model: 'Pova Neo 2'
23523
+ - regex: 'TECNO[ _]LH6n(?:[);/ ]|$)'
23524
+ device: 'phablet'
23525
+ model: 'Pova Neo 3'
23223
23526
  - regex: 'TECNO[ _]LE7n?(?:[);/ ]|$)'
23224
23527
  device: 'phablet'
23225
23528
  model: 'Pova 2'
@@ -24085,15 +24388,23 @@ VK Mobile:
24085
24388
  device: 'feature phone'
24086
24389
  model: 'VK$1'
24087
24390
 
24391
+ # Fortis
24392
+ Fortis:
24393
+ regex: '(Apollo 5 Neo)(?:[);/ ]|$)'
24394
+ device: 'smartphone'
24395
+ model: '$1'
24396
+
24088
24397
  # Vernee
24089
24398
  Vernee:
24090
- regex: 'Vernee|(?:Mars Pro|Apollo[ _](?:Lite|X)|Thor (?:E|Plus)|X2_euro|M7_EEA|T3 Pro|V2 Pro)(?:[);/ ]|$)'
24399
+ regex: 'Vernee|(?:Mars Pro|Apollo[ _](?:Lite|X)|Thor (?:E|Plus)|X2_euro|M7_EEA|T3 Pro|V2 Pro|(?<!MAXTRON )Apollo)(?:[);/ ]|$)'
24091
24400
  device: 'smartphone'
24092
24401
  models:
24093
24402
  - regex: 'Apollo[ _]Lite'
24094
24403
  model: 'Apollo Lite'
24095
24404
  - regex: 'Apollo[ _]X'
24096
24405
  model: 'Apollo X'
24406
+ - regex: 'Apollo'
24407
+ model: 'Apollo'
24097
24408
  - regex: 'Mars Pro'
24098
24409
  model: 'Mars Pro'
24099
24410
  - regex: 'Thor E'
@@ -24275,7 +24586,7 @@ Verykool:
24275
24586
 
24276
24587
  # Vestel (vestel.com)
24277
24588
  Vestel:
24278
- regex: 'Vestel[ _]|Venus[ _](GO|E[2-5]|V[1-9]|Z[1-9]0)|(?<!Winnovo )V_?TAB|VP74|VT97PRO|VSP145M|VSP250[GS]|VSP355[GS]|V3_5580_Dual|V TAB Z[12]'
24589
+ regex: 'Vestel[ _,/]|Venus[ _](GO|E[2-5]|V[1-9]|Z[1-9]0)|(?<!Winnovo )V_?TAB|VP74|VT97PRO|VSP145M|VSP250[GS]|VSP355[GS]|V3_5580_Dual|V TAB Z[12]'
24279
24590
  device: 'smartphone'
24280
24591
  models:
24281
24592
  - regex: 'VT97PRO'
@@ -24332,6 +24643,10 @@ Vestel:
24332
24643
  - regex: 'Vestel[ _](5000|5530)'
24333
24644
  model: '$1'
24334
24645
 
24646
+ - regex: 'VESTEL, ([a-z0-9_ \-]+), (?:wired|wireless)|\+CE-HTML'
24647
+ device: 'tv'
24648
+ model: ''
24649
+
24335
24650
  # Videocon
24336
24651
  Videocon:
24337
24652
  regex: 'Videocon[_ \-]|(?:VT75C|V50DC|V406018|V512930|V50(?:2430|3630|4730|5024|5430|4630|5[98]20)|Z45_(?:Dazzle|Amaze)|Z45Q Star|Z50 Nova)(?:[);/ ]|$)'
@@ -24739,22 +25054,9 @@ Smart:
24739
25054
  - regex: '(Coral 4|Slide Lite|Notrino|Smart PRIME II)'
24740
25055
  model: '$1'
24741
25056
 
24742
- # Sunny
24743
- Sunny:
24744
- regex: '(?:SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola|SN7014S?|SN7016|SN10016|SUNNY (?:SS01|S52D))(?:[);/ ]|$)'
24745
- device: 'smartphone'
24746
- models:
24747
- - regex: '(SS4G9 Mira|SS4G7 Sole|SS4G1 Luna|SS4G8 Nora|SS4G6 Lola)(?:[);/ ]|$)'
24748
- model: '$1'
24749
- - regex: 'SUNNY (SS01|S52D)'
24750
- model: '$1'
24751
- - regex: '(SN7014S?|SN7016|SN10016)(?:[);/ ]|$)'
24752
- device: 'tablet'
24753
- model: '$1'
24754
-
24755
25057
  # Wiko (wikomobile.com)
24756
25058
  Wiko:
24757
- regex: '(?:WIKO[_ -])|(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink([^/;]*)|Highway([^/;]*)|Iggy|Stairway|Rainbow ?(Jam|Lite|Up)?|Darkside|Darkmoon|Darkfull|Darknight|Freddy|FEVER|Jerry[2]?|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom(?!4)|Getaway|Goa(?!nna|lPlus|-)|Kite|Robby|Lenny[2-9]?|(?<!iBall[_ ])Slide|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|HARRY|Ridge(?! Plus)(?: Fab)?|U FEEL(?: Prime| Lite)?|U PULSE(?: LITE)?|View2 (?:Go|Plus)|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)?|W_(?:C8[06]0|K[346]00|P130|P200|C200SN)|WC300|W-(?:V7[23]0|V745|V755|V8[035]0|P[36]11|K130|K211|K3[68]0|K420|K510S?|K521|K560|K610|K630)-(?:BYT|EEA|FRA|OPE|SU[IN]|SWI|TIM|TMV|TVM|DU|T[HV]|ID)|WIM Lite|W-V851|W-V6[08]0|W-V750BN|W-V770|W-K200|W-U300|(?:U307AS|CINK PEAX 2|HIGHWAY PURE|C210AE|v3913|U614AS|V3991AN|v12fnlite|K-KOOL|p6901|U616AT|VHEM|KENNY|View Go| WIM)(?:[);/ ]|$)'
25059
+ regex: '(?:WIKO[_ -])|(?:WIKO-)?CINK_[a-z0-9_]+|(?:WIKO-)?HIGHWAY_[a-z0-9_]+|(?:WIKO-)?(?:Cink([^/;]*)|Highway([^/;]*)|Iggy|Stairway|Rainbow ?(Jam|Lite|Up)?|Darkside|Darkmoon|Darkfull|Darknight|Freddy|FEVER|Jerry[2]?|Sublim|Ozzy|JIMMY|Barry|Birdy|Bloom(?!4)|Getaway|Goa(?!nna|lPlus|-)|Kite|Robby|Lenny[2-9]?|(?<!iBall[_ ])Slide2?|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|HARRY|Ridge(?! Plus)(?: Fab)?|U FEEL(?: Prime| Lite)?|U PULSE(?: LITE)?|View2 (?:Go|Plus)|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)?|W_(?:C8[06]0|K[346]00|P130|P200|C200SN)|WC300|W-(?:V7[23]0|V745|V755|V8[035]0|P[36]11|K130|K211|K3[68]0|K420|K510S?|K521|K560|K610|K630)-(?:BYT|EEA|FRA|OPE|SU[IN]|SWI|TIM|TMV|TVM|DU|T[HV]|ID)|WIM Lite|W-V851|W-V6[08]0|W-V750BN|W-V770|W-K200|W-U300|(?:U307AS|CINK PEAX 2|HIGHWAY PURE|C210AE|v3913|U614AS|V3991AN|v12fnlite|K-KOOL|p6901|U616AT|VHEM|KENNY|View Go| WIM)(?:[);/ ]|$)'
24758
25060
  device: 'smartphone'
24759
25061
  models:
24760
25062
  - regex: '(?:WIKO-)?W-V770'
@@ -24859,6 +25161,8 @@ Wiko:
24859
25161
  model: 'Lenny $1'
24860
25162
  - regex: '(?:WIKO-)?Lenny'
24861
25163
  model: 'Lenny'
25164
+ - regex: '(?:WIKO-)?Slide2'
25165
+ model: 'Slide 2'
24862
25166
  - regex: '(?:WIKO-)?Slide'
24863
25167
  model: 'Slide'
24864
25168
  - regex: '(?:WIKO-)?Sunset2'
@@ -25260,7 +25564,7 @@ Zopo:
25260
25564
 
25261
25565
  # Xiaomi
25262
25566
  Xiaomi:
25263
- regex: 'Xiaomi(?!/(?:Miui|Mint[ ])Browser)|MiTV-\w|MiProjA1|Mi9 Pro 5G|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?|MIX 2S ART|pomelo)(?:[);/ ]|$)|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|POCOPHONE|(?:SHARK )?KTUS-[AH]0|(?:SHARK )?(KLE|KSR|MBU|PAR)-[AH]0|SK[RW]-[AH]0|PRS-[AH]0|POCO F1|DLT-[AH]0|MIBOX[234]([_ ]PRO)?|MiTV4[ACSX]?|AWM-A0|MI CC 9 Meitu Edition|MiBOX1S|M2006J10C|M2006C3(?:L[IGC]|LVG|MN?G|MT)|M2007J1(?:7[CGI]|SC)|M2002(?:J9[SEG]|F4LG)|HM2014819|WT88047|210611(?:8C|19(?:BI|[AD]G|AL))|M2001(?:J2G|C3K3I)|M2004J1(?:5SC|9AG)|M2004J(?:7[AB]|19)[CG]|M2012K11(?:[CGI]|A[CI])|M2011K2[CG]|M2011J18C|M2006C3[ML]II|M2003J(?:15SC|15SS|6B2G|6A1G)|M2007J3S[ICYGP]|M2007J22[CG]|M2103K19[CGYI]|M2101K(?:[79]AG|7AI|7B[GI]|6[GIRP]|7BNY|9[GCR])|M2010J19S[CGYIL]|M2102(?:K1AC|K1[CG]|J2SC)|HM NOTE 1(?:LTE|W)|MI[_ ]PLAY|XIG01|Qin 1s\+|Qin ?2(?: Pro)?|MI_(NOTE_Pro|5X|4i|(?:A2|8)_Lite)|A001XM|lancelot|XIG02|2107119DC|M2101K(?:7BL|9AI)|A101XM|M2012K10C|M2104K10AC|M19(?:01F7[1S]|10F4S|08(?:F1XE|C3JGG)|08C3J[IH]|06F9S[IH]|02F1G)|21051182[CG]|21081111RG|2109119D[GI]|21091116(?:AI|[AU]?C|i|U[GI])|220111(?:7T[LGIY]|19TI|19UY|6S[IRC]|6TG|[67]SG|7SL)|21121(?:119S[CG]|23A[CG]|119VL|210C)|2204121(?:6[CI]|6UC|9[CGI]|9NY|1AC)|220333Q(?:AG|NY|L|BI)|2107113S[IGR]|22031(?:29G|116BG|21C)|PAR-H0|M2105K81A?C|2109119BC|2202(?:1119KR|1211RC|33L2[CGI])|22011(?:2[23][CG]|211C|16TI|17S[YI])|joyeuse|galahad|hydrogen|begonia|kenzo|willow|beryllium|rosemary| MDG1|KLE-AO|Mi ?Pad \d|220612(?:18C|[23]SC)|2207(?:12(?:2MC|12AG|19AI)|33S(?:F?G|[IL])|43FI)|2208(?:7RA4DI|1212(?:U?G|C)|128(?:1AC|3[GC]))|Black Shark|MZB8298IN|2210(?:1317C|1316(?:U[PG]|UCP?|[CIG])|1(?:29SG|32[CG]))|2211(?:13(?:3[CG]|17I)|1317G)|23013RK75C|23053RN02[AY]|2209(?:5RA98C|116AG|129SC)|2212(?:0RN86G|6RN91Y|ARNC4L|2RK93C|7RK46C)|2302(?:6RN54G|1RAA(?:EG|2Y)|8R(?:N4DG|A60L|NCAG))|angelican|vnd_camellia|2304(?:9RAD8C|FPN6D[GC])|2303(?:0RAC7Y|CRA44A|ERA42L)|M1906G7G|Hongmi 4A|23046RP50C|M1912G7BC'
25567
+ regex: 'Xiaomi(?!/(?:Miui|Mint[ ])Browser)| ONC(?: Build|[;)])|MiTV-\w|MiProjA1|Mi9 Pro 5G|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?|MIX 2S ART|pomelo)(?:[);/ ]|$)|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|POCOPHONE|(?:SHARK )?KTUS-[AH]0|(?:SHARK )?(KLE|KSR|MBU|PAR)-[AH]0|SK[RW]-[AH]0|PRS-[AH]0|POCO F1|DLT-[AH]0|MIBOX[234]([_ ]PRO)?|MiTV4[ACSX]?|AWM-A0|MI CC 9 Meitu Edition|MiBOX1S|M2006J10C|M2006C3(?:L[IGC]|LVG|MN?G|MT)|M2007J1(?:7[CGI]|SC)|M2002(?:J9[SEG]|F4LG)|HM2014819|WT88047|210611(?:8C|19(?:BI|[AD]G|AL))|M2001(?:J2G|C3K3I)|M2004J1(?:5SC|9AG)|M2004J(?:7[AB]|19)[CG]|M2012K11(?:[CGI]|A[CI])|M2011K2[CG]|M2011J18C|M2006C3[ML]II|M2003J(?:15SC|15SS|6B2G|6A1G)|M2007J3S[ICYGP]|M2007J22[CG]|M2103K19[CGYI]|M2101K(?:[79]AG|7AI|7B[GI]|6[GIRP]|7BNY|9[GCR])|M2010J19S[CGYIL]|M2102(?:K1AC|K1[CG]|J2SC)|HM NOTE 1(?:LTE|W)|MI[_ ]PLAY|XIG01|Qin 1s\+|Qin ?2(?: Pro)?|MI_(NOTE_Pro|5X|4i|(?:A2|8)_Lite)|A001XM|lancelot|XIG02|2107119DC|M2101K(?:7BL|9AI)|A101XM|M2012K10C|M2104K10AC|M19(?:01F7[1S]|10F4S|08(?:F1XE|C3JGG)|08C3J[IH]|06F9S[IH]|02F1G)|21051182[CG]|21081111RG|2109119D[GI]|21091116(?:AI|[AU]?C|i|U[GI])|220111(?:7T[LGIY]|19TI|19UY|6S[IRC]|6TG|[67]SG|7SL)|21121(?:119S[CG]|23A[CG]|119VL|210C)|2204121(?:6[CI]|6UC|9[CGI]|9NY|1AC)|220333Q(?:AG|NY|L|BI)|2107113S[IGR]|22031(?:29G|116BG|21C)|PAR-H0|M2105K81A?C|2109119BC|2202(?:1119KR|1211RC|33L2[CGI])|22011(?:2[23][CG]|211C|16TI|17S[YI])|joyeuse|galahad|hydrogen|begonia|kenzo|willow|beryllium|rosemary| MDG1|KLE-AO|Mi ?Pad \d|220612(?:18C|[23]SC)|2207(?:12(?:2MC|12AG|19AI)|33S(?:F?G|[IL])|43FI)|2208(?:7RA4DI|1212(?:U?G|C)|128(?:1AC|3[GC]))|Black Shark|MZB8298IN|2210(?:1317C|1316(?:U[PG]|UCP?|[CIG])|1(?:29SG|32[CG]))|2211(?:13(?:3[CG]|17I)|1317G)|23013RK75C|23053RN02[AYL]|2209(?:5RA98C|116AG|129SC)|2212(?:0RN86[GI]|6RN91Y|ARNC4L|2RK93C|7RK46C)|2302(?:6RN54G|1RAA(?:EG|2Y)|8R(?:N4D[GI]|A60L|NCAG))|angelican|vnd_camellia|2304(?:9RAD8C|FPN6D[GC])|2303(?:0RAC7Y|CRA44A|ERA42L)|M1906G7G|Hongmi 4A|23046RP50C|M1912G7BC|23076RN4BI|23043RP34[GI]'
25264
25568
  device: 'smartphone'
25265
25569
  models:
25266
25570
  # specific smartphone models
@@ -25460,7 +25764,7 @@ Xiaomi:
25460
25764
  model: 'Redmi 8A'
25461
25765
  - regex: 'Redmi 8A (Dual|Pro)(?:[);/ ]|$)'
25462
25766
  model: 'Redmi 8A $1'
25463
- - regex: '(?:M2004J7AC|M2004J15SC|Redmi 10X 4G)(?:[);/ ]|$)'
25767
+ - regex: '(?:M2004J7AC|M2004J15SC|Redmi 10X (?:4G|LTE))(?:[);/ ]|$)'
25464
25768
  model: 'Redmi 10X'
25465
25769
  - regex: '220333Q(?:AG|NY|L)(?:[);/ ]|$)'
25466
25770
  model: 'Redmi 10C'
@@ -25502,10 +25806,12 @@ Xiaomi:
25502
25806
  model: 'Redmi 10 Prime'
25503
25807
  - regex: '(?:M2004J7BC|Redmi 10X Pro)(?:[);/ ]|$)'
25504
25808
  model: 'Redmi 10X Pro'
25505
- - regex: '22120RN86G|22126RN91Y|2212ARNC4L'
25809
+ - regex: '22120RN86[GI]|22126RN91Y|2212ARNC4L'
25506
25810
  model: 'Redmi 12C'
25507
- - regex: '23053RN02[AY]'
25811
+ - regex: '23053RN02[AYL]'
25508
25812
  model: 'Redmi 12'
25813
+ - regex: '23076RN4BI(?:[);/ ]|$)'
25814
+ model: 'Redmi 12 5G'
25509
25815
  - regex: '22071219AI(?:[);/ ]|$)'
25510
25816
  model: 'Redmi 11 Prime'
25511
25817
  - regex: 'Redmi K20 Pro Premium Edition(?:[);/ ]|$)'
@@ -25554,6 +25860,8 @@ Xiaomi:
25554
25860
  model: 'Redmi 6 Pro Extreme'
25555
25861
  - regex: 'Xiaomi_M1805D1ST'
25556
25862
  model: 'Redmi 6 Pro'
25863
+ - regex: ' ONC(?: Build|[;)])'
25864
+ model: 'Redmi 7'
25557
25865
  - regex: 'Redmi (\d+) Pro(?:[);/ ]|$)'
25558
25866
  model: 'Redmi $1 Pro'
25559
25867
  - regex: 'Redmi 4 Prime(?:[);/ ]|$)'
@@ -25562,7 +25870,7 @@ Xiaomi:
25562
25870
  model: 'Redmi A1+'
25563
25871
  - regex: '220733S[GIL](?:[);/ ]|$)'
25564
25872
  model: 'Redmi A1'
25565
- - regex: '2302(?:8RN4DG|6RN54G)'
25873
+ - regex: '2302(?:8RN4D[GI]|6RN54G)'
25566
25874
  model: 'Redmi A2'
25567
25875
  - regex: '23028RNCAG'
25568
25876
  model: 'Redmi A2+'
@@ -25590,8 +25898,11 @@ Xiaomi:
25590
25898
  - regex: '23046RP50C(?:[);/ ]|$)'
25591
25899
  model: 'Pad 6 Pro'
25592
25900
  device: 'tablet'
25901
+ - regex: '23043RP34[GI](?:[);/ ]|$)'
25902
+ model: 'Pad 6'
25903
+ device: 'tablet'
25593
25904
 
25594
- - regex: 'MI PAD 4 PLUS(?:[);/ ]|$)'
25905
+ - regex: 'MI PAD ?4 ?PLUS(?:[);/ ]|$)'
25595
25906
  model: 'Mi Pad 4 Plus'
25596
25907
  device: 'tablet'
25597
25908
  - regex: 'MI PAD 4(?:[);/ ]|$)'
@@ -26680,11 +26991,13 @@ Zenek:
26680
26991
 
26681
26992
  # Nubia (www.nubia.com)
26682
26993
  Nubia:
26683
- regex: 'Nubia[ _]|(?:NX(?:403A|404H|406E|40[X2]|503A|50[5678]J|51[0123]J|521J|523J_V1|529Jq?|5[345]1J|5[48]9J|569[HJ]|5[67]3J|575J|59[157]J|60[1689]J|61[12679]J|62[79]J|65[19]J|6[126]9J|66[67]J|679J|70[129]J|711J|729J|709S|907J))(?:[);/ ]|$)'
26994
+ regex: 'Nubia[ _]|(?:NX(?:403A|404H|406E|40[X2]|503A|50[5678]J|51[0123]J|521J|523J_V1|529Jq?|5[345]1J|5[48]9J|569[HJ]|5[67]3J|575J|59[157]J|60[1689]J|61[12679]J|62[79]J|65[19]J|6[126]9J|66[67]J|679[JS]|70[129]J|71[12]J|729J|709S|907J))(?:[);/ ]|$)'
26684
26995
  device: 'smartphone'
26685
26996
  models:
26686
26997
  - regex: 'NX711J'
26687
26998
  model: 'Z50'
26999
+ - regex: 'NX712J'
27000
+ model: 'Z50 Ultra'
26688
27001
  - regex: 'NX667J'
26689
27002
  model: 'Z30 Pro'
26690
27003
  - regex: 'NX701J'
@@ -26697,7 +27010,7 @@ Nubia:
26697
27010
  model: 'Red Magic 8 Pro'
26698
27011
  - regex: 'NX709S'
26699
27012
  model: 'Red Magic 7S Pro'
26700
- - regex: 'NX679J'
27013
+ - regex: 'NX679[JS]'
26701
27014
  model: 'Red Magic 7'
26702
27015
  - regex: 'NX669J'
26703
27016
  model: 'Red Magic 6'
@@ -26800,7 +27113,7 @@ Rakuten:
26800
27113
 
26801
27114
  # ZTE
26802
27115
  ZTE:
26803
- regex: 'ZTE(?!; MegaFon)|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade[ _](?:E01|V0820|L110|L[2357]|L7A|L8|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310?|320|460|465|475|510|520|530|602|51|30|3)|V580|V Ultra|Q Lux)|N9[15]8St|N818S|N951[0579]|N91[38]0|N9101|N913[267]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:5151V|610DL|6250CC|6400C|6410S|233V|331|5031O|559DL|6621O|667T|6750M|768G|792|81[25]|818L|82[08]|83[12359]|85[125]|851M|992|(557|71[67]|798|836|861|916)BL|986DL|(232|718|828)TL|(?:233|353|558|717|799|837|862|899|917|963)VL|955A|95[678]|965|97[018]|98[1237]|986U|999|936L)|V769M|Blade Apex2|G (LTE|Lux)|Vec|Z959|V865M|Z3001S|902ZT|KIS II Max|Kis 3|K3DX-V5G|Z930L|Optus X|Blade[ _](A[357] 2019(?:-T)?|A[35] 2020-T|A7S 2020-T|A6 MAX|A0622|X9)|Z3153V|Z836F|Ctyon-A9|602ZT|MO-01[JK]|Z963U|402ZT|P545|P609|P650 Pro|dandelion|901ZT|A00[13]ZT|Z-01K|UZTE (?:GRAND V7|V808)|ZTG01|K8[37]CA|K87CC|VERGATARIO ?5(?:PLUS)?|Axon mini|KIS C341|A103ZT|Z335(?:1S|[23]CA)|Z5156CC|Z5157[VY]|B867RE|MEO Smart A80|P65[10] 2021|Z6201V|Z6252CA|Z6251V?|A2020N3|A202ZT|Z719DL|Z5158)(?:[);/ ]|$)'
27116
+ regex: 'ZTE(?!; MegaFon)|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade[ _](?:E01|V0820|L110|L[2357]|L7A|L8|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310?|320|460|465|475|510|520|530|602|51|30|3)|V580|V Ultra|Q Lux)|N9[15]8St|N818S|N951[0579]|N91[38]0|N9101|N913[267]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:5151V|610DL|6250CC|6400C|6410S|233V|331|5031O|559DL|6621O|667T|6750M|768G|792|81[25]|818L|82[08]|83[12359]|85[125]|851M|992|(557|71[67]|798|836|861|916)BL|986DL|(232|718|828)TL|(?:233|353|558|717|799|837|862|899|917|963)VL|955A|95[678]|965|97[018]|98[1237]|986U|999|936L)|V769M|Blade Apex2|G (LTE|Lux)|Vec|Z959|V865M|Z3001S|902ZT|KIS II Max|Kis 3|K3DX-V5G|Z930L|Optus X|Blade[ _](A[357] 2019(?:-T)?|A[35] 2020-T|A7S 2020-T|A6 MAX|A0622|X9)|Z3153V|Z836F|Ctyon-A9|602ZT|MO-01[JK]|Z963U|402ZT|P545|P609|P650 Pro|dandelion|901ZT|A00[13]ZT|Z-01K|UZTE (?:GRAND V7|V808)|ZTG01|K8[37]CA|K87CC|VERGATARIO ?5(?:PLUS)?|Axon mini|KIS C341|A103ZT|Z335(?:1S|[23]CA)|Z5156CC|Z5157[VY]|B867RE|MEO Smart A[48]0|SmartA35|P65[10] 2021|Z6201V|Z6252CA|Z6251V?|A2020N3|A202ZT|Z719DL|Z5158|B2017G)(?:[);/ ]|$)'
26804
27117
  device: 'smartphone'
26805
27118
  models:
26806
27119
  # explicit smartphone models
@@ -26970,6 +27283,8 @@ ZTE:
26970
27283
  model: 'Blade C2'
26971
27284
  - regex: 'ZTE[_ ]Blade[_ ](C2|V7)[_ ]Plus'
26972
27285
  model: 'Blade $1 Plus'
27286
+ - regex: '(?:ZTE[_ ])?BA521'
27287
+ model: 'Blade 521'
26973
27288
  - regex: 'Blade G Plus'
26974
27289
  model: 'Blade G Plus'
26975
27290
  - regex: 'ZTE_Blade_III'
@@ -27116,6 +27431,8 @@ ZTE:
27116
27431
  model: 'Blade V41 Smart'
27117
27432
  - regex: 'ZTE 8045'
27118
27433
  model: 'Blade V40 Vita'
27434
+ - regex: 'ZTE 8140N'
27435
+ model: 'Blade V41 Vita'
27119
27436
  - regex: 'ZTE 9046'
27120
27437
  model: 'Blade V40 Pro'
27121
27438
  - regex: 'ZTE 8046'
@@ -27292,8 +27609,10 @@ ZTE:
27292
27609
  model: 'Blade V2020 Vita'
27293
27610
  - regex: 'KIS C341'
27294
27611
  model: 'Kis C341'
27295
- - regex: 'MEO Smart A80'
27296
- model: 'MEO Smart A80'
27612
+ - regex: 'MEO Smart A([48]0)'
27613
+ model: 'MEO Smart A$1'
27614
+ - regex: 'Smart ?A(35)'
27615
+ model: 'MEO Smart A$1'
27297
27616
 
27298
27617
  - regex: 'A2121[LE]?(?:[);/ ]|$)'
27299
27618
  device: 'phablet'
@@ -27343,7 +27662,7 @@ ZTE:
27343
27662
  model: 'Blade V10'
27344
27663
  - regex: 'ZTE B(A601|A910|A510)(?:[);/ ]|$)'
27345
27664
  model: 'Blade $1'
27346
- - regex: 'ZTE Blade (A[35]1|A7s)'
27665
+ - regex: 'ZTE Blade (A[35]1|A7s|C370)'
27347
27666
  model: 'Blade $1'
27348
27667
  - regex: 'ZTE BA610T(?:[);/ ]|$)'
27349
27668
  model: 'Blade A610'
@@ -27498,6 +27817,12 @@ Lemhoov:
27498
27817
  - regex: 'Lemhoov[ _-]([^/;]+) Build'
27499
27818
  model: '$1'
27500
27819
 
27820
+ # MStar
27821
+ MStar:
27822
+ regex: 'MStar(?:[);/ ]|$)'
27823
+ device: 'tv'
27824
+ model: ''
27825
+
27501
27826
  # MTC (MTS)
27502
27827
  MTC:
27503
27828
  regex: 'MTC[ _](968|97[82]|970|982[OT]?|1078)|(?:MTC[_ ])?SMART[ _]?(?:Race[2]?|Sprint|Run|Turbo|Surf[2]?)[ _]4G|MTC975|Smart Bit|Smart_(?:LINE|Light)|(?:MTC[ _])?SMART[ _](?:Run|Start[_ ][23])|Redbox Mini 5\(MTS\)|MTS TV|DV8235|DV8304-C|Osmartphona'
@@ -27691,6 +28016,9 @@ X-TIGI:
27691
28016
  - regex: 'X-TIGI_JOY10_PRO'
27692
28017
  model: 'Joy 10 Pro'
27693
28018
  device: 'tablet'
28019
+ - regex: 'X-TIGI_JOY10'
28020
+ model: 'Joy 10'
28021
+ device: 'tablet'
27694
28022
  - regex: 'X[_ ]TIGI[_ ]JOY7_TV'
27695
28023
  model: 'Joy 7 TV'
27696
28024
  device: 'tablet'
@@ -27805,7 +28133,7 @@ NEXBOX:
27805
28133
 
27806
28134
  # True or TrueSmart
27807
28135
  'True':
27808
- regex: ' TRUE BEYOND TAB 3G|HPH07|SMART[ _](4G Adventure(?: Pro)?|MAX 4.0 PLUS|4G[ _](?:GEN C [45]\.[05]|M1 Plus|Champion|Speedy 5\.0 Plus|Speedy[_ ]5inch|P1))|Alpha 5G|SMART Champ 4\.0|TRUE SMART 7.0 Quadcore'
28136
+ regex: ' TRUE BEYOND TAB 3G|HPH07|SMART[ _](4G Adventure(?: Pro)?|MAX 4.0 PLUS|4G[ _](?:GEN C [45]\.[05]|M1 Plus|Champion|Speedy 5\.0 Plus|Speedy[_ ]5inch|P1))|Alpha 5G|SMART Champ 4\.0|TRUE SMART 7.0 Quadcore|SMART 4G M1'
27809
28137
  device: 'smartphone'
27810
28138
  models:
27811
28139
  - regex: 'Alpha 5G(?:[);/ ]|$)'
@@ -27832,6 +28160,8 @@ NEXBOX:
27832
28160
  model: 'Smart 4G P1'
27833
28161
  - regex: 'SMART[ _]4G M1 Plus'
27834
28162
  model: 'Smart 4G M1 Plus'
28163
+ - regex: 'SMART 4G M1'
28164
+ model: 'Smart 4G M1'
27835
28165
  - regex: 'TRUE BEYOND TAB 3G'
27836
28166
  device: 'tablet'
27837
28167
  model: 'Beyond Tab 3G'
@@ -27844,12 +28174,15 @@ NEXBOX:
27844
28174
  model: 'ID TV HPH07'
27845
28175
 
27846
28176
  Yandex:
27847
- regex: '(?:YNDX-?000SB|YandexModule2-00001)(?:[);/ ]|$)'
28177
+ regex: '(?:YNDX-?(?:000SB|0007[12])|YandexModule2-00001)(?:[);/ ]|$)'
27848
28178
  device: 'smartphone'
27849
28179
  models:
27850
28180
  - regex: 'YandexModule2-00001'
27851
28181
  device: 'tv'
27852
28182
  model: 'Module'
28183
+ - regex: 'YNDX-?(0007[12])'
28184
+ device: 'tv'
28185
+ model: 'YNDX-$1'
27853
28186
  - regex: 'YNDX-?000SB'
27854
28187
  model: 'YNDX-000SB'
27855
28188
 
@@ -27893,7 +28226,7 @@ HiHi:
27893
28226
 
27894
28227
  # Hi or Hi TFG (https://www.hi-online.co.za/)
27895
28228
  Hi:
27896
- regex: '(?:(?<!Thrill )Boost(?:[ _](?:Hypa|Max|Ultra))?(?: Build|[;)])|HMR(?:5012|5450)|Crusader|(?:VHIX-)?VHIX-\w+(?:-[A-Z])?|43FSY112X[cd]|32HSY119X|39HSY111X|55USY151X|50USY151X)(?:[);/ ]|$)'
28229
+ regex: '(?:(?<!Thrill )Boost(?:[ _](?:Hypa|Max|Ultra))?(?: Build|[;)])|HMR(?:5012|5450)|Crusader|(?:VHIX-)?VHIX-\w+(?:-[A-Z])?|43FSY112X[cd]|32HSY119X|39HSY111X|55USY151X|50USY151X|65USY151X)(?:[);/ ]|$)'
27897
28230
  device: 'smartphone'
27898
28231
  models:
27899
28232
  - regex: 'Boost[ _](Hypa|Max|Ultra)(?:[);/ ]|$)'
@@ -27910,7 +28243,7 @@ Hi:
27910
28243
  - regex: '(?:VHIX-)?VHIX-(\w+)'
27911
28244
  device: 'tv'
27912
28245
  model: 'VHIX-$1'
27913
- - regex: '(32HSY119X|39HSY111X|55USY151X|43FSY112X[cd]|50USY151X)(?:[);/ ]|$)'
28246
+ - regex: '(32HSY119X|39HSY111X|55USY151X|43FSY112X[cd]|50USY151X|65USY151X)(?:[);/ ]|$)'
27914
28247
  device: 'tv'
27915
28248
  model: '$1'
27916
28249
 
@@ -27930,7 +28263,7 @@ Boost:
27930
28263
 
27931
28264
  # Highscreen
27932
28265
  Highscreen:
27933
- regex: 'HIGHSCREEN|(Easy[- ]Power(?:[- ]Pro)?|Pure[_ ](?:Power|F)|Power Ice(?: Max)?|Easy[_ ]([SFL]|XL)(?:_Pro)?|Razar_Pro|Power Rage(?: Evo)?|Zera-S-Power|Zera[ _][UFS]|Power[ _]?Five[ _]?(?:Pro|Evo|Max|Max(?:Lite|2))|Power(?:Four|Five)|BOOST II(?:se)?|Fest(?:XL)?(?:-Pro)?|Tasty|Boost3|Boost 3(?: Pro)? SE|Expanse|Hercules|Alpha Rage|VergeM|Ice2|Prime [LS]|Spade|Spark 2|Alpha GT[RX]|Wallet|Thunder|Razar|COSMO DUO|Prime Mini SE| Bay|Omega Q)(?:[);/ ]|$)'
28266
+ regex: 'HIGHSCREEN|(Easy[- ]Power(?:[- ]Pro)?|Pure[_ ](?:Power|F)|Power Ice(?: Max)?|Easy[_ ]([SFL]|XL)(?:_Pro)?|Razar_Pro|Power Rage(?: Evo)?|Zera-S-Power|Zera[ _][UFS]|Power[ _]?Five[ _]?(?:Pro|Evo|Max|Max(?:Lite|2))|Power(?:Four|Five)|BOOST II(?:se)?|Fest(?:XL)?(?:-Pro)?|Tasty|Boost3|Boost 3(?: Pro)? SE|Expanse|Explosion|Hercules|Alpha Rage|VergeM|Ice2|Prime [LS]|Spade|Spark 2|Alpha GT[RX]|Wallet|Thunder|Razar|COSMO DUO|Prime Mini SE| Bay|Omega Q)(?:[);/ ]|$)'
27934
28267
  device: 'smartphone'
27935
28268
  models:
27936
28269
  - regex: '(Power Ice(?:[ ](?:Max|Evo))?|Power Rage(?: Evo)?|Zera[ _][UFS]|Alpha GT[RX]|Wallet)(?:[);/ ]|$)'
@@ -27979,6 +28312,8 @@ Highscreen:
27979
28312
  model: 'Easy Power Pro'
27980
28313
  - regex: '(?:HIGHSCREEN )?Easy-Power(?:[);/ ]|$)'
27981
28314
  model: 'Easy Power'
28315
+ - regex: 'Explosion'
28316
+ model: 'Explosion'
27982
28317
  - regex: 'BOOST II(?:[);/ ]|$)'
27983
28318
  model: 'Boost 2'
27984
28319
  - regex: 'BOOST IIse(?:[);/ ]|$)'
@@ -28133,9 +28468,9 @@ Unihertz:
28133
28468
  - regex: '(Titan|Atom_X?L)(?:[);/ ]|$)'
28134
28469
  model: '$1'
28135
28470
 
28136
- # Chuwi
28471
+ # Chuwi (www.chuwi.com)
28137
28472
  Chuwi:
28138
- regex: '(?:CW-(Hi8-super|Hi12|V99i?|V17HD3G|VX8-3G|V88-QUAD|V9-DUAL|V88S|Vi[78]|[HV]i10 (?:pro|plus))|Hi10 (?:Pro|plus)|HiPad[ -](?:X|X?Pro|Air|Max)|HiPadX|HiBox-hero|HiBook(?: pro)?|Hi[89] ?(?:Air|Pro)|HiPad ?Plus|Hi8SE|Vi8 plus|Vi10(?: ?Pro)?|Surpad|HiPadPro)(?:[);/ ]|$)'
28473
+ regex: '(?:CW-(Hi8-super|Hi12|V99i?|V17HD3G|VX8-3G|V88-QUAD|V9-DUAL|V88S|Vi[78]|[HV]i10 (?:pro|plus))|Hi10 (?:Pro|plus)|HiPad[ -](?:X|X?Pro|Air|Max)|HiPadX|HiBox-hero|HiBook(?: pro)?|Hi(?:[89]|10) ?(?:Air|X?Pro)|HiPad ?Plus|Hi8SE|Vi8 plus|Vi10(?: ?Pro)?|Surpad|HiPadPro)(?:[);/ ]|$)'
28139
28474
  device: 'tablet'
28140
28475
  models:
28141
28476
  - regex: '(CW-Hi8-super)(?:[);/ ]|$)'
@@ -28170,6 +28505,8 @@ Chuwi:
28170
28505
  model: 'Hi$1 Air'
28171
28506
  - regex: 'Hi8SE(?:[);/ ]|$)'
28172
28507
  model: 'Hi8 SE'
28508
+ - regex: 'Hi10 ?XPro'
28509
+ model: 'Hi10 XPro'
28173
28510
  - regex: 'Hi([89]) ?pro(?:[);/ ]|$)'
28174
28511
  model: 'Hi$1 Pro'
28175
28512
  - regex: 'Vi10 Plus(?:[);/ ]|$)'
@@ -28319,6 +28656,12 @@ Yxtel:
28319
28656
  device: 'smartphone'
28320
28657
  model: '$1'
28321
28658
 
28659
+ # PROFiLO
28660
+ PROFiLO:
28661
+ regex: 'PROFILO(?:[);/ ]|$)'
28662
+ device: 'tv'
28663
+ model: ''
28664
+
28322
28665
  # Proline
28323
28666
  Proline:
28324
28667
  regex: 'Proline_|(?:H10882M-TN|H1088[28]M|H1010|M504)(?:[);/ ]|$)'
@@ -28430,13 +28773,13 @@ Spectrum:
28430
28773
 
28431
28774
  # Kivi
28432
28775
  Kivi:
28433
- regex: 'KIVI [24]K|(?:24H600G[RU]|24FR50WU|24HK30B|32HR55GU|32H700GU|32F700WU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|50U730GR|55U600(?:G[RU]|KD)|65UP50GU|55U[PC]50G[RU]|50U600G[RU]|50UX10S|55UR50G[RU]|40FK30G|40FR5[02]BR|43U(?:800B[RU]|600KD|K35G)|50FK30G|50UK35G|32HR50GR|32F700GR|55UC30G|55U730GR|32HK30G|40FK30G|32HR50GU|43UK30G|32FR50(?:WR|BU)|32FK3[02]G|32H600KD|40U600KD)(?:_-Ver0[0-9])?(?:[);/ ]|$)'
28776
+ regex: 'KIVI [24]K|(?:24H600G[RU]|24FR50WU|24HK30B|32HR55GU|32H700GU|32F700WU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|50U730GR|55U600(?:G[RU]|KD)|65UP50GU|55U[PC]50G[RU]|50U600G[RU]|50UX10S|55UR50G[RU]|40FK30G|40FR5[02]BR|43U(?:800B[RU]|600KD|K35G)|50FK30G|50UK35G|32HR50GR|32F700GR|55UC30G|55U730GR|32HK30G|40FK30G|32HR50GU|43UK30G|32FR50(?:WR|BU)|32FK3[02]G|32H600KD|40U600KD|32H600GR)(?:_-Ver0[0-9])?(?:[);/ ]|$)'
28434
28777
  device: 'tv'
28435
28778
  models:
28436
- - regex: '(24H600G[RU]|24FR50WU|24HK30B|32HR55GU|32H700GU|4[39]UP50GU|32F700WU|40UR50G[RU]|40U600G[RU]|50U730GR|55U600(?:G[RU]|KD)|65UP50GU|55U[PC]50G[RU]|50UX10S|50U600G[RU]|55UR50G[RU]|55U730GR|40FK30G|40FR5[02]BR|43U(?:K35G|600KD|800B[RU])|50FK30G|50UK35G|32HR50GR|32FR50(?:WR|BU)|32FK3[02]G|32H600KD|40U600KD|32F700GR)(?:[);/ ]|$)'
28437
- model: '$1'
28438
28779
  - regex: '(55UC30G|40FK30G|43UK30G|32HR50G[RU]|32HK30G|32FK32G)_-Ver0([0-9])(?:[);/ ]|$)'
28439
28780
  model: '$1 v$2'
28781
+ - regex: '(\d{2}(?:[HFU]|U[CPRXKX]|[BHF][RK])\d{2,3}(?:[GW][RU]|B[UR]|KD|[BGS]))(?:[);/ ]|$)'
28782
+ model: '$1'
28440
28783
  - regex: 'KIVI ([24]K Android TV)'
28441
28784
  model: '$1'
28442
28785
 
@@ -28604,13 +28947,15 @@ Uhans:
28604
28947
 
28605
28948
  # Soyes
28606
28949
  Soyes:
28607
- regex: '(?:SOYES[ _](?:[67]S|XS|XS11)|S10-H)(?:[);/ ]|$)'
28950
+ regex: '(?:SOYES[ _](?:[67]S|XS|XS11)|S10-H|XS12 PRO)(?:[);/ ]|$)'
28608
28951
  device: 'smartphone'
28609
28952
  models:
28610
28953
  - regex: 'SOYES[ _]([67]S|XS11|XS)'
28611
28954
  model: '$1'
28612
28955
  - regex: 'S10-H'
28613
28956
  model: 'S10-H'
28957
+ - regex: 'XS12 PRO'
28958
+ model: 'XS12 Pro'
28614
28959
 
28615
28960
  # Zidoo
28616
28961
  Zidoo:
@@ -28720,10 +29065,10 @@ Ryte:
28720
29065
 
28721
29066
  # Vontar
28722
29067
  Vontar:
28723
- regex: '(HK1 (?:Max|MINI\+?|PLUS|PRO)|KK MAX|VONTAR[ -](?:Z[58]|[VH]1|KIII|MX-4K|X[234]))(?:[);/ ]|$)'
29068
+ regex: '(HK1 (?:Max|MINI\+?|PLUS|PRO)|KK MAX|VONTAR[ -](?:Z[58]|[VH]1|KIII|MX-4K|X[234])|H618)(?:[);/ ]|$)'
28724
29069
  device: 'tv'
28725
29070
  models:
28726
- - regex: 'VONTAR[ -](Z[58]|[VH]1|KIII|MX-4K|X[234])(?:[);/ ]|$)'
29071
+ - regex: 'VONTAR[ -](Z[58]|[VH]1|KIII|MX-4K|X[234]|H618)(?:[);/ ]|$)'
28727
29072
  model: '$1'
28728
29073
  - regex: 'HK1 Max(?:[);/ ]|$)'
28729
29074
  model: 'HK1 Max'
@@ -28746,9 +29091,13 @@ Vorke:
28746
29091
 
28747
29092
  # Wigor
28748
29093
  Wigor:
28749
- regex: 'Wigor (V4)(?:[);/ ]|$)'
29094
+ regex: '(?:Wigor (?:V4))(?:[);/ ]|$)|Android 7(?:[\d.]*);(?: [\w-]+;)? V3(?: Build|[;)])'
28750
29095
  device: 'smartphone'
28751
- model: '$1'
29096
+ models:
29097
+ - regex: 'Wigor (V4)(?:[);/ ]|$)'
29098
+ model: '$1'
29099
+ - regex: ' (V3)(?: Build|[;)])'
29100
+ model: '$1'
28752
29101
 
28753
29102
  # NEXON (nexon.ua)
28754
29103
  NEXON:
@@ -29152,12 +29501,16 @@ Multilaser:
29152
29501
  model: 'G Max'
29153
29502
  - regex: 'Multilaser[ _]GMAX_2(?:[);/ ]|$)'
29154
29503
  model: 'G Max 2'
29504
+ - regex: 'Multilaser[ _]G_?MAX_2_SE'
29505
+ model: 'G Max 2 SE'
29155
29506
  - regex: 'Multilaser[ _]G(?:[);/ ]|$)'
29156
29507
  model: 'G'
29157
29508
  - regex: 'Multilaser[ _]G[ _]2(?:[);/ ]|$)'
29158
29509
  model: 'G2'
29159
29510
  - regex: 'Multilaser[ _]E[_ ]Lite(?:[);/ ]|$)'
29160
29511
  model: 'E Lite'
29512
+ - regex: 'Multilaser[ _]([H])[_ ]5G(?:[);/ ]|$)'
29513
+ model: '$1 5G'
29161
29514
  - regex: 'Multilaser[ _]([FEH])(?:[);/ ]|$)'
29162
29515
  model: '$1'
29163
29516
  - regex: 'MS60F_PLUS(?:[);/ ]|$)'
@@ -29276,7 +29629,7 @@ Maxtron:
29276
29629
 
29277
29630
  # Philco (philco.com.br)
29278
29631
  Philco:
29279
- regex: 'PHILCO |(PCS0[12]|PH350B|PTB[78]R|PTB7PAP_PTB7PAB_PTB7PAR|Hit Max|Hit P1[023]|HIT P8|HIT P10a|TP7A4|TP10A1I)(?:[);/ ]|$)'
29632
+ regex: 'PHILCO[ /]|(PCS0[12]|PH350B|PTB[78]R|PTB7PAP_PTB7PAB_PTB7PAR|Hit Max|Hit P1[023]|HIT P8|HIT P10a|TP7A4|TP10A1I)(?:[);/ ]|$)'
29280
29633
  device: 'smartphone'
29281
29634
  models:
29282
29635
  - regex: 'HIT P10a'
@@ -29291,6 +29644,9 @@ Philco:
29291
29644
  - regex: 'PHILCO Android TV(?:[);/ ]|$)'
29292
29645
  device: 'tv'
29293
29646
  model: ''
29647
+ - regex: 'PH60D16DSGWN4K(?:[);/ ]|$)'
29648
+ device: 'tv'
29649
+ model: 'PH60D16DSGWN4K'
29294
29650
  - regex: 'PTB7PAP_PTB7PAB_PTB7PAR(?:[);/ ]|$)'
29295
29651
  device: 'tablet'
29296
29652
  model: 'PTB7PA'
@@ -29317,7 +29673,7 @@ Newman:
29317
29673
 
29318
29674
  # Swipe
29319
29675
  Swipe:
29320
- regex: '(?:Slate2|Swipe_Elite_3M?|Elite_(?:Grace|VR)|EliteDual|Elite (?:Prime|Star|Note|Sense)|Konnect (?:Prime|Power|Neo 4G))(?:[);/ ]|$)'
29676
+ regex: '(?:Slate2|Swipe_(?:Elite_3M?|Strike8)|Elite_(?:Grace|VR)|EliteDual|Elite (?:Prime|Star|Note|Sense)|Konnect (?:Prime|Power|Neo 4G))(?:[);/ ]|$)'
29321
29677
  device: 'smartphone'
29322
29678
  models:
29323
29679
  - regex: 'Konnect Power'
@@ -29331,6 +29687,9 @@ Swipe:
29331
29687
  - regex: 'Slate2(?:[);/ ]|$)'
29332
29688
  device: 'tablet'
29333
29689
  model: 'Slate 2'
29690
+ - regex: 'Swipe[_ ]Strike8'
29691
+ device: 'tablet'
29692
+ model: 'Strike 8'
29334
29693
 
29335
29694
  # Owwo
29336
29695
  Owwo:
@@ -29474,7 +29833,7 @@ Winds:
29474
29833
 
29475
29834
  # Asano
29476
29835
  Asano:
29477
- regex: '(?:32LH7010T|32LH8[10]10T|32LH7030S|32LF7130S|28LH701[10]T|43LU8010T|24LH7020T|24LH8010T|40LF7030S|5[05]LU8120T|42LF7110T|32LF7120T)(?:[);/ ]|$)'
29836
+ regex: '(?:32LH7010T|32LH8[10]10T|32LH7030S|32LF7130S|28LH701[10]T|43LU8010T|24LH7011T|24LH7020T|24LH8010T|40LF7030S|5[05]LU8120T|42LF7110T|32LF7120T|32LF8120T|50LU8110T)(?:[);/ ]|$)'
29478
29837
  device: 'tv'
29479
29838
  models:
29480
29839
  - regex: '(\d{2})(L[FHU]\d+[ST])(?:[);/ ]|$)'
@@ -29602,9 +29961,11 @@ Neo:
29602
29961
 
29603
29962
  # NEKO
29604
29963
  NEKO:
29605
- regex: 'NEKO_LT-(\w+)(?:[);/ ]|$)'
29964
+ regex: '(?:NEKO_(?:W_)?LT[-_](\w+)|LT-\d{2}N(?:H8020S|F7021S))(?:[);/ ]|$)'
29606
29965
  device: 'tv'
29607
- model: 'LT-$1'
29966
+ models:
29967
+ - regex: '(?:NEKO_)?(?:W_)?LT[-_](\w+)(?:[);/ ]|$)'
29968
+ model: 'LT-$1'
29608
29969
 
29609
29970
  # Neomi
29610
29971
  Neomi:
@@ -29930,7 +30291,7 @@ iMars:
29930
30291
 
29931
30292
  # Logic or Logic Mobility (logicmobility.com)
29932
30293
  Logic:
29933
- regex: '(?:LOGIC[_ ](X4 Plus|X50|X[135]|X4M|L4T|L5D|X5[AFT]|X60G|L50T?|L57|L6[0135]|X60_PLUS)(:?[_ ]LITE2?)?|L55[ABS])(?:[);/ ]|$)'
30294
+ regex: '(?:LOGIC[_ ](X4 Plus|X50|X[135]|X4M|L4T|L5D|X5[AFT]|X60G|L50T?|L57|L6[0135]|X60_PLUS)(:?[_ ]LITE2?)?|L55[ABS]|Q-502)(?:[);/ ]|$)'
29934
30295
  device: 'smartphone'
29935
30296
  models:
29936
30297
  - regex: 'LOGIC[_ ]X60_PLUS(?:[);/ ]|$)'
@@ -29943,7 +30304,7 @@ Logic:
29943
30304
  model: '$1 Lite 2'
29944
30305
  - regex: 'LOGIC[_ ](X4 Plus|X50|X[13]|X4M|L4T|L5D|L6[013]|X5[AFT]|X60G)(?:[);/ ]|$)'
29945
30306
  model: '$1'
29946
- - regex: '(L50T?|L55[ABS]|L57)(?:[);/ ]|$)'
30307
+ - regex: '(L50T?|L55[ABS]|L57|Q-502)(?:[);/ ]|$)'
29947
30308
  model: '$1'
29948
30309
 
29949
30310
  # Cloud or Cloud TruConnect (www.cloudmobileusa.com)
@@ -30554,6 +30915,8 @@ Fero:
30554
30915
  model: 'Pace'
30555
30916
  - regex: 'A4001 Plus 2019'
30556
30917
  model: 'A4001 Plus (2019)'
30918
+ - regex: 'A4001 Plus'
30919
+ model: 'A4001 Plus'
30557
30920
  - regex: 'Fero[ _](A4001|A450[23]|A5001|L100|Iris|Power|Mega LTE|Vibe|J1)'
30558
30921
  model: '$1'
30559
30922
 
@@ -30829,7 +31192,7 @@ TTEC:
30829
31192
 
30830
31193
  # eSTAR
30831
31194
  eSTAR:
30832
- regex: 'eSTAR[_ ](?:Grand|GO\!?|Zoom Quad|Gemini|MINI[_ ]3G|BEAUTY|MOON)|(?:MERCURY HD Quad core|MID1020L)(?:[);/ ]|$)'
31195
+ regex: 'eSTAR[_ ](?:Grand|GO\!?|Zoom Quad|Gemini|MINI[_ ]3G|BEAUTY|MOON)|(?:MERCURY HD Quad core|MID1020L|takee 1)(?:[);/ ]|$)'
30833
31196
  device: 'tablet'
30834
31197
  models:
30835
31198
  - regex: 'eSTAR (Grand|GO\!?) (HD Intel|IPS Intel|IPS|HD|Intel) Quad Core 3G'
@@ -30853,6 +31216,10 @@ eSTAR:
30853
31216
  - regex: '(MID1020L)'
30854
31217
  model: '$1'
30855
31218
 
31219
+ - regex: 'takee 1'
31220
+ device: 'smartphone'
31221
+ model: 'Takee 1'
31222
+
30856
31223
  # Hometech (hometech.com.tr)
30857
31224
  Hometech:
30858
31225
  regex: '(?:Ideal (?:10S|Tab [79]|8S)|ALFA(?:10T[BX]|7LM)|ALFA[_ ](?:10R[CX]|10BS|10TM?|8T|10MB|10YC|7RS|[78]M?RC|7M|8S[TL]|8RX|8MG)|HT[ _](?:7RT|8MZ))(?:[);/ ]|$)'
@@ -31228,6 +31595,18 @@ Spark:
31228
31595
  - regex: 'Plus 3'
31229
31596
  model: 'Plus 3'
31230
31597
 
31598
+ # Sparx (https://sparx.pk/)
31599
+ Sparx:
31600
+ regex: 'Sparx[ _]'
31601
+ device: 'smartphone'
31602
+ models:
31603
+ - regex: 'Neo 7 Ultra'
31604
+ model: 'Neo 7 Ultra'
31605
+ - regex: 'Neo 7 Pro'
31606
+ model: 'Neo 7 Pro'
31607
+ - regex: 'Neo 7'
31608
+ model: 'Neo 7'
31609
+
31231
31610
  # SPC or SPC Universe or SPC Mobile (spc.es)
31232
31611
  SPC:
31233
31612
  regex: '(?:GRAVITY [34]G(?:_2019)?|GRAVITY2-4G|GRAVITY_OCTACORE|GRAVITY[ -](?:Max|SE|PRO|2-MAX|2)|SPC (?:GEN|SMART)|SPC_ALIEN(?:_STICK)?|SPC Glow9.7|Lightyear|Laika|L70_Lite|L60 Turbo|L60 Pro|FLOW 7)(?:[);/ ]|$)'
@@ -31505,12 +31884,6 @@ Zentality:
31505
31884
  device: 'smartphone'
31506
31885
  model: '$1'
31507
31886
 
31508
- # Fortis
31509
- Fortis:
31510
- regex: '(Apollo 5 Neo)(?:[);/ ]|$)'
31511
- device: 'smartphone'
31512
- model: '$1'
31513
-
31514
31887
  # OpelMobile (opelmobile.com.au)
31515
31888
  OpelMobile:
31516
31889
  regex: 'Opel ?Mobile|(?:OpelMobile_Smart(?:JX|X1)|Easy_Smart_2)(?:[);/ ]|$)'
@@ -32271,13 +32644,13 @@ Shtrikh-M:
32271
32644
 
32272
32645
  # BBK (bbk.ru)
32273
32646
  BBK:
32274
- regex: '(?:32LEX-7272|([65]5|50|4[03]|3[29]|2[48])LEX[-_](81(?:27|39|45|58|6[12]|7[34])|71(?:[23]7|4[345]|5[45]|6[2368]|[57]8|7[15])|725[79]|7225|8243)[_/]?([FU]?TS2C)|39LEX-7289)(?:[);/ ]|$)'
32647
+ regex: '(?:32LEX-7272|([65]5|50|4[03]|3[29]|2[48])LEX[-_](81(?:27|39|45|58|6[12]|7[34])|71(?:[23]7|4[345]|5[45]|6[2368]|[57]8|7[15])|7202|725[79]|7225|7287|8243|8202)[_/]?([FU]?TS2C)|(?:3[29]|24)LEX-7289(?:-c)?)(?:[);/ ]|$)'
32275
32648
  device: 'tv'
32276
32649
  models:
32277
32650
  - regex: '(\d{2})LEX[-_](\d{3,4})[_/]?([FU]?TS2C)'
32278
32651
  model: '$1LEX-$2/$3'
32279
- - regex: '39LEX-7289(?:[);/ ]|$)'
32280
- model: '39LEX-7289/TS2C'
32652
+ - regex: '(3[29]|24)LEX-7289(?:-c)?(?:[);/ ]|$)'
32653
+ model: '$1LEX-7289/TS2C'
32281
32654
  - regex: '(\d{2})LEX[-_](\d{3,4})'
32282
32655
  model: '$1LEX-$2'
32283
32656
 
@@ -32483,7 +32856,7 @@ Philips:
32483
32856
  model: 'Xenium $1'
32484
32857
  - regex: '(?:Philips[_ ])?(S397|W5510)(?:[);/ ]|$)'
32485
32858
  model: '$1'
32486
- - regex: 'AND1E(?: TV)?(?:[);/ ]|$)'
32859
+ - regex: '(?:AND1E|Google)(?: TV)?(?:[);/ ]|$)'
32487
32860
  model: 'Android TV'
32488
32861
  device: 'tv'
32489
32862
  - regex: '(PI3210G)'
@@ -32523,6 +32896,10 @@ Philips:
32523
32896
  - regex: '(NETTV/[0-9\.]{5})'
32524
32897
  model: 'NetTV Series'
32525
32898
  device: 'tv'
32899
+ - regex: 'UHD Android TV'
32900
+ model: 'Smart TV UHD'
32901
+ device: 'tv'
32902
+
32526
32903
  - regex: 'Philips-FISIO ([a-z0-9]+)'
32527
32904
  model: 'Fisio $1'
32528
32905
  - regex: 'Philips[ _-]?([a-z0-9\-@]+)'
@@ -32834,11 +33211,13 @@ LT Mobile:
32834
33211
 
32835
33212
  # ONYX BOOX (onyx-boox.ru)
32836
33213
  ONYX BOOX:
32837
- regex: '(?:KON_TIKI(2)?|Nova3Color|Lomonosov|Poke2Color|NovaAirC|NoteAir2P?|LIVINGSTONE2)(?:[);/ ]|$)'
33214
+ regex: '(?:KON_TIKI(2)?|Nova3Color|Lomonosov|Poke2Color|NovaAirC|NoteAir2P?|LIVINGSTONE2|MC_FAUST[23]|DARWIN9|MC_DARWIN[678]|MC_GAMA4|MC_Cristo4|MC_NovaPro)(?:[);/ ]|$)'
32838
33215
  device: 'tablet'
32839
33216
  models:
32840
33217
  - regex: 'NovaAirC'
32841
33218
  model: 'Nova Air C'
33219
+ - regex: 'MC_NovaPro'
33220
+ model: 'Nova Pro'
32842
33221
  - regex: 'NoteAir2P'
32843
33222
  model: 'Nova Air 2 Plus'
32844
33223
  - regex: 'NoteAir2'
@@ -32851,6 +33230,14 @@ ONYX BOOX:
32851
33230
  model: 'Kon Tiki $1'
32852
33231
  - regex: 'Lomonosov'
32853
33232
  model: 'Lomonosov'
33233
+ - regex: 'MC_FAUST([23])'
33234
+ model: 'Faust $1'
33235
+ - regex: '(?:MC_)?DARWIN([6789])'
33236
+ model: 'Darwin $1'
33237
+ - regex: 'MC_GAMA4'
33238
+ model: 'Gama 4'
33239
+ - regex: 'MC_Cristo4'
33240
+ model: 'Monte Cristo 4'
32854
33241
  - regex: 'LIVINGSTONE2'
32855
33242
  model: 'Living Stone 2'
32856
33243
 
@@ -33072,9 +33459,9 @@ Axioo:
33072
33459
  device: 'tablet'
33073
33460
  model: 'PicoPad $1 3G'
33074
33461
 
33075
- # Pico (pico-interactive.com)
33462
+ # Pico (https://www.picoxr.com)
33076
33463
  Pico:
33077
- regex: 'Pico (G2 4K|Neo 3)(?:[);/ ]|$)'
33464
+ regex: 'Pico (G2 4K|Neo 3|4)(?:[);/ ]|$)'
33078
33465
  device: 'wearable'
33079
33466
  model: '$1'
33080
33467
 
@@ -33325,14 +33712,6 @@ Gooweel:
33325
33712
  - regex: 'M5 Pro'
33326
33713
  model: 'M5 Pro'
33327
33714
 
33328
- # Vargo or Ivargo
33329
- Vargo:
33330
- regex: 'Vargo[; _]|(?:V210101)(?:[);/ ]|$)'
33331
- device: 'smartphone'
33332
- models:
33333
- - regex: '(V210101)(?:[);/ ]|$)'
33334
- model: '$1'
33335
-
33336
33715
  # Elekta (elektagulf.com)
33337
33716
  Elekta:
33338
33717
  regex: 'ELED-(?:4[238]S[AM]{2}RT|5[05](?:CV_)?SMART_UHD|32SMART)(?:[);/ ]|$)'
@@ -33785,7 +34164,7 @@ Mara:
33785
34164
 
33786
34165
  # BMAX (www.bmaxit.com)
33787
34166
  BMAX:
33788
- regex: '(?:(?:I11|I10(Plus)?)_EEA|Android 11;(?: [\w-]+;)? I11|I10_Pro)(?:[);/ ]|$)'
34167
+ regex: '(?:(?:I11|I10(Plus)?)_EEA|Android 11;(?: [\w-]+;)? I11|I10_Pro|I10Plus)(?:[);/ ]|$)'
33789
34168
  device: 'tablet'
33790
34169
  models:
33791
34170
  - regex: 'I10_?(Plus|Pro)?(?:_(?:EEA|ROW))?(?:[);/ ]|$)'
@@ -33831,7 +34210,7 @@ Glofiish:
33831
34210
 
33832
34211
  # Polar (polar.ru)
33833
34212
  Polar:
33834
- regex: 'Polar(?:_WK)?[_ ](P32L32T2CSM|P24L51T2CSM|P40L33T2CSM|P43U51T2SCSM|P39L21T2CSM)(?:[);/ ]|$)'
34213
+ regex: 'Polar(?:_WK?)?[_ ](P32L32T2CSM|P24L51T2CSM|P40L33T2CSM|P43U51T2SCSM|P39L21T2CSM|P32L21T2SCSM|P65U51T2CSM|P42L21T2CSM|P50U51T2SCSM)(?:[);/ ]|$)'
33835
34214
  device: 'tv'
33836
34215
  model: '$1'
33837
34216
 
@@ -33867,7 +34246,7 @@ neoCore:
33867
34246
 
33868
34247
  # Novex
33869
34248
  Novex:
33870
- regex: '(NWX-40F171MSY|NVX-32H219MSY|NVX-43U329MSY|NVX-39H211MSY|NWX-43F149MSYv?|NWX-24H121MSY)(?:[);/ ]|$)'
34249
+ regex: '(NWX-40F171MSY|NVX-32H219MSY|NVX-43U329MSY|NVX-39H211MSY|NWX-43F149MSYv?|NWX-24H121MSY|NWX-32H171MSY)(?:[);/ ]|$)'
33871
34250
  device: 'tv'
33872
34251
  model: '$1'
33873
34252
 
@@ -33958,7 +34337,7 @@ Bubblegum:
33958
34337
 
33959
34338
  # Erisson
33960
34339
  Erisson:
33961
- regex: '(42FLEA73T2SM|42FLX9060T2|39LES80T2SM|32LX9051T2|55ULES92T2SM)(?:[);/ ]|$)'
34340
+ regex: '(42FLEA73T2SM|42FLX9060T2|39LES80T2SM|32LX9051T2|55ULES92T2SM|32LEA73T2SM)(?:[);/ ]|$)'
33962
34341
  device: 'tv'
33963
34342
  model: '$1'
33964
34343
 
@@ -34119,7 +34498,7 @@ Alps:
34119
34498
 
34120
34499
  # Starwind (starwind.com.ru)
34121
34500
  Starwind:
34122
- regex: 'Smart_Starwind|(?:SW-LED(?:24SG303|32SB302|42SB300|40SG300|43SG30[20]|32SG30[012]|55UG400))(?:[);/ ]|$)'
34501
+ regex: 'Smart_Starwind|(?:SW-LED(?:24SG303|32SB302|42SB300|40SG300|43SG30[20]|43UB404|32SG30[012]|55UG400|50UB401))(?:[);/ ]|$)'
34123
34502
  device: 'tv'
34124
34503
  models:
34125
34504
  - regex: 'SW-LED(\d{2}[SU][BG]\d{3})'
@@ -34182,7 +34561,7 @@ Smarty:
34182
34561
 
34183
34562
  # Leff
34184
34563
  Leff:
34185
- regex: '(32H540S|32H5[235]0T|5[05]U540S|40F540S|43F5[35]0T|32H511T)(?:[);/ ]|$)'
34564
+ regex: '(32H540S|32H5[235]0T|5[05]U540S|55U630S|40F540S|43F5[35]0T|32H511T)(?:[);/ ]|$)'
34186
34565
  device: 'tv'
34187
34566
  model: '$1'
34188
34567
 
@@ -34770,7 +35149,7 @@ Benesse:
34770
35149
  # Airtel
34771
35150
  Airtel:
34772
35151
  regex: 'Airtel[ _]'
34773
- model: 'smartphone'
35152
+ device: 'smartphone'
34774
35153
  models:
34775
35154
  - regex: 'Airpad 7-s'
34776
35155
  device: 'tablet'
@@ -35271,7 +35650,7 @@ ENACOM:
35271
35650
 
35272
35651
  # Yuno
35273
35652
  Yuno:
35274
- regex: 'YUNO\.|ULX-55UTCS3234|ULX-32TCS226|ULX-43UTCS347'
35653
+ regex: 'YUNO\.|ULX-55UTCS3234|ULX-32TCS226|ULX-43UTCS347|ULX-39TCS222'
35275
35654
  device: 'tv'
35276
35655
  models:
35277
35656
  - regex: 'ULX-(\d{2}U?TCS\d{2,4})'
@@ -35624,7 +36003,7 @@ ENIE:
35624
36003
 
35625
36004
  # Dcode (dcode.com.pk)
35626
36005
  Dcode:
35627
- regex: 'DS-(?:BD1|CR1|CL2 Pro)(?:[);/ ]|$)'
36006
+ regex: 'DS-(?:BD1|CR1|CL2 Pro|X1)(?:[);/ ]|$)'
35628
36007
  device: 'smartphone'
35629
36008
  models:
35630
36009
  - regex: 'DS-CR1'
@@ -35633,10 +36012,12 @@ Dcode:
35633
36012
  model: 'Cygnal 2 Pro'
35634
36013
  - regex: 'DS-BD1'
35635
36014
  model: 'Bold'
36015
+ - regex: 'DS-(X1)'
36016
+ model: '$1'
35636
36017
 
35637
36018
  # Pritom
35638
36019
  Pritom:
35639
- regex: 'Pritom_|(?:K7_A101(?:_EEA)?|Android 1[01];(?: [\w-]+;)? (?:M10_Lite|M10_(?:PLUS|Air)(?:_EEA)?)|P7PRO)(?:[);/ ]|$)'
36020
+ regex: 'Pritom_|(?:K7_A101(?:_EEA)?|Android 1[01];(?: [\w-]+;)? (?:M10_Lite|M10_(?:PLUS|Air)(?:_EEA)?|P7_EEA)|P7PRO)(?:[);/ ]|$)'
35640
36021
  device: 'tablet'
35641
36022
  models:
35642
36023
  - regex: 'M10_Lite'
@@ -35649,6 +36030,8 @@ Pritom:
35649
36030
  model: 'M10 Plus'
35650
36031
  - regex: 'Pritom[_ ]M10'
35651
36032
  model: 'M10'
36033
+ - regex: 'P7_EEA'
36034
+ model: 'P7'
35652
36035
  - regex: 'P7PRO'
35653
36036
  model: 'TronPad P7 Pro'
35654
36037
 
@@ -35672,7 +36055,7 @@ Chainway:
35672
36055
 
35673
36056
  # Harper (https://harper.ru/)
35674
36057
  Harper:
35675
- regex: '(?:HARPER[_ ])?(ABX-332|ABX-[12]10|40F660TS|24R490TS)(?:[);/ ]|$)'
36058
+ regex: '(?:HARPER[_ ])?(ABX-332|ABX-[12]10|40F660TS|24R490TS|65U660TS)(?:[);/ ]|$)'
35676
36059
  device: 'tv'
35677
36060
  model: '$1'
35678
36061
 
@@ -35812,7 +36195,6 @@ ECOO:
35812
36195
  - regex: 'ECOO[ _](E0[45])'
35813
36196
  model: '$1'
35814
36197
 
35815
-
35816
36198
  # Dom.ru
35817
36199
  Dom.ru:
35818
36200
  regex: '(Movix Pro(?: Voice)?|Movix Go)(?:[);/ ]|$)'
@@ -35828,7 +36210,7 @@ Carbon Mobile:
35828
36210
  # Chili Green (chiligreen.com)
35829
36211
  ChiliGreen:
35830
36212
  regex: 'E-Board[ -]MX05[45]'
35831
- model: 'tablet'
36213
+ device: 'tablet'
35832
36214
  models:
35833
36215
  - regex: 'E-Board[ -](MX05[45])'
35834
36216
  model: 'E-Board $1'
@@ -35964,12 +36346,15 @@ Blackpcs:
35964
36346
 
35965
36347
  # GoldMaster (www.goldmaster.com.tr)
35966
36348
  GoldMaster:
35967
- regex: '(?:Netta 2 Pro|Netta 3\.100m|BENGAL_6|DETROIT 3)(?:[);/ ]|$)'
36349
+ regex: '(?:Netta 2 Pro|Netta 3\.100m|BENGAL_6|DETROIT 3|i-910)(?:[);/ ]|$)'
35968
36350
  device: 'tablet'
35969
36351
  models:
35970
36352
  - regex: 'Netta 2 Pro'
35971
36353
  model: 'Netta 2 Pro'
35972
36354
  device: 'tv'
36355
+ - regex: 'i-910'
36356
+ model: 'i-910'
36357
+ device: 'tv'
35973
36358
  - regex: 'Netta 3\.100m'
35974
36359
  model: 'Netta 3'
35975
36360
  device: 'tv'
@@ -36042,9 +36427,13 @@ Skyline:
36042
36427
 
36043
36428
  # Hiberg (hiberg.ru)
36044
36429
  Hiberg:
36045
- regex: '(32Y_STV-R)(?:[);/ ]|$)'
36430
+ regex: '(?:32Y_STV-R|HIBERG43YUHD)(?:[);/ ]|$)'
36046
36431
  device: 'tv'
36047
- model: '$1'
36432
+ models:
36433
+ - regex: 'HIBERG43YUHD'
36434
+ model: '43Y UHD'
36435
+ - regex: '(32Y_STV-R)'
36436
+ model: '$1'
36048
36437
 
36049
36438
  # Hartens
36050
36439
  Hartens:
@@ -36232,6 +36621,12 @@ Mobell:
36232
36621
  - regex: 'NOVA P3'
36233
36622
  model: 'Nova P3'
36234
36623
 
36624
+ # Mobvoi (https://www.mobvoi.com/)
36625
+ Mobvoi:
36626
+ regex: 'TicWatch (C2|C2\+|Pro S|S2?)(?:[);/ ]|$)'
36627
+ device: 'wearable'
36628
+ model: 'TicWatch $1'
36629
+
36235
36630
  # Smartex
36236
36631
  Smartex:
36237
36632
  regex: '(?:Android 7(?:[\d.]*);(?: [\w-]+;)? M512| M520| M700)(?:[);/ ]|$)'
@@ -36394,9 +36789,9 @@ MwalimuPlus:
36394
36789
 
36395
36790
  # OLTO (olto.su)
36396
36791
  OLTO:
36397
- regex: 'OLTO-(43ST20U)(?:[);/ ]|$)'
36398
- device: 'tv'
36399
- model: '$1'
36792
+ regex: 'OLTO-(43ST20U)(?:[);/ ]|$)'
36793
+ device: 'tv'
36794
+ model: '$1'
36400
36795
 
36401
36796
  # DSIC
36402
36797
  DSIC:
@@ -36406,7 +36801,7 @@ DSIC:
36406
36801
 
36407
36802
  # Mascom
36408
36803
  Mascom:
36409
- regex: 'Mascom (S750|SS289)(?:[);/ ]|$)'
36804
+ regex: 'Mascom (S750|SS289|WS517)(?:[);/ ]|$)'
36410
36805
  device: 'smartphone'
36411
36806
  model: '$1'
36412
36807
 
@@ -36563,9 +36958,14 @@ Zamolxe:
36563
36958
 
36564
36959
  # REGAL
36565
36960
  REGAL:
36566
- regex: 'Regal (TAB 10\.1)'
36961
+ regex: 'Regal (?:TAB 10\.1|Google TV)'
36567
36962
  device: 'tablet'
36568
- model: '$1'
36963
+ models:
36964
+ - regex: 'Regal (TAB 10\.1)'
36965
+ model: '$1'
36966
+ - regex: 'Regal Google TV'
36967
+ device: 'tv'
36968
+ model: ''
36569
36969
 
36570
36970
  # Great Asia or GreatAsia (www.sz-tabletpc.com)
36571
36971
  Great Asia:
@@ -36703,15 +37103,15 @@ Versus:
36703
37103
 
36704
37104
  # NGPon
36705
37105
  NGpon:
36706
- regex: 'Android 4(?:[\d.]*);(?: [\w-]+;)? (3188HD)(?: Build|[;)])'
36707
- device: 'tv'
36708
- model: '$1'
37106
+ regex: 'Android 4(?:[\d.]*);(?: [\w-]+;)? (3188HD)(?: Build|[;)])'
37107
+ device: 'tv'
37108
+ model: '$1'
36709
37109
 
36710
37110
  # Rupa
36711
37111
  Rupa:
36712
- regex: 'Pyramid A5X'
36713
- device: 'tv'
36714
- model: 'Pyramid A5X'
37112
+ regex: 'Pyramid A5X'
37113
+ device: 'tv'
37114
+ model: 'Pyramid A5X'
36715
37115
 
36716
37116
  # SEBBE
36717
37117
  SEBBE:
@@ -36739,14 +37139,14 @@ Kinstone:
36739
37139
 
36740
37140
  # HIPER
36741
37141
  HIPER:
36742
- regex: 'HIPER MEDIA|(?:U(?:65|50)YQ2200GR)(?:[);/ ]|$)'
37142
+ regex: 'HIPER MEDIA|(?:U(?:43|50|65)YQ2200GR|H32YQ2200GR)(?:[);/ ]|$)'
36743
37143
  device: 'tv'
36744
37144
  models:
36745
37145
  - regex: 'MEDIA STICK 4K'
36746
37146
  model: 'Media Stick 4K'
36747
37147
  - regex: 'MEDIA TV (i4 Pro|i4|[46]K)'
36748
37148
  model: 'Media TV $1'
36749
- - regex: '(U(?:65|50)YQ2200GR)'
37149
+ - regex: '(U(?:43|50|65)YQ2200GR|H32YQ2200GR)'
36750
37150
  model: '$1'
36751
37151
 
36752
37152
  # TopDevice (https://topdevice.ru/)
@@ -36780,9 +37180,9 @@ ANXONIT:
36780
37180
  device: 'tablet'
36781
37181
  model: '$1'
36782
37182
 
36783
- # VITYAZ
37183
+ # Vityaz or vityas
36784
37184
  Vityaz:
36785
- regex: '(24LH1207)(?:[);/ ]|$)'
37185
+ regex: '(24LH1207|43LU1204)(?:[);/ ]|$)'
36786
37186
  device: 'tv'
36787
37187
  model: '$1'
36788
37188
 
@@ -36891,11 +37291,13 @@ Zoom:
36891
37291
  device: 'smartphone'
36892
37292
  model: '$1'
36893
37293
 
36894
- # Linsay
37294
+ # Linsay (linsaydigital.com)
36895
37295
  Linsay:
36896
- regex: 'LINSAY[_ ]'
37296
+ regex: 'LINSAY[_ ]|(?:F10XIPSQ)(?:[);/ ]|$)'
36897
37297
  device: 'tablet'
36898
37298
  models:
37299
+ - regex: '(F10XIPSQ)(?:[);/ ]|$)'
37300
+ model: '$1'
36899
37301
  - regex: 'LINSAY[_ ]([^/;)]+)(?: Build|[);])'
36900
37302
  model: '$1'
36901
37303
 
@@ -36983,7 +37385,7 @@ Bolva:
36983
37385
  device: 'tablet'
36984
37386
  model: 'B-TAB1021'
36985
37387
 
36986
- # DIJITSU
37388
+ # DIJITSU (http://dijitsu.com.tr/)
36987
37389
  DIJITSU:
36988
37390
  regex: 'DIJITSU_'
36989
37391
  device: 'smartphone'
@@ -37187,7 +37589,7 @@ Nanho:
37187
37589
 
37188
37590
  # Vekta (myvekta.ru)
37189
37591
  Vekta:
37190
- regex: '(LD-65SU8815BS|LD-32SR4850BS)(?:[);/ ]|$)'
37592
+ regex: '(LD-65SU8815BS|LD-32SR4850BS|LD-50SU8921BS)(?:[);/ ]|$)'
37191
37593
  device: 'tv'
37192
37594
  model: '$1'
37193
37595
 
@@ -37243,19 +37645,85 @@ Epic:
37243
37645
 
37244
37646
  # AMCV
37245
37647
  AMCV:
37246
- regex: '(LE-39ZTHS25)(?:[);/ ]|$)'
37648
+ regex: '(LE-3[29]ZTHS25)(?:[);/ ]|$)'
37247
37649
  device: 'tv'
37248
37650
  model: '$1'
37249
37651
 
37250
37652
  # F+ or F-Plus (fplusmobile.ru)
37251
37653
  F+:
37252
- regex: '(SH6[05]|SA50)_2[13]\d{3}(?:[);/ ]|$)'
37654
+ regex: '(SH6[05]|SA50|SP65)_(?:2[13]|66)\d{3}(?:[);/ ]|$)'
37655
+ device: 'smartphone'
37656
+ model: '$1'
37657
+
37658
+ # Sber (sberdevices.ru)
37659
+ Sber:
37660
+ regex: '(SberBox)(?:[);/ ]|$)'
37661
+ device: 'tv'
37662
+ model: '$1'
37663
+
37664
+ # Sveon
37665
+ Sveon:
37666
+ regex: '(SBX604)(?:[);/ ]|$)'
37667
+ device: 'tv'
37668
+ model: '$1'
37669
+
37670
+ # DSDevices
37671
+ DSDevices:
37672
+ regex: '(DSCS9)(?:[);/ ]|$)'
37673
+ device: 'tv'
37674
+ model: '$1'
37675
+
37676
+ # VOLKANO
37677
+ VOLKANO:
37678
+ regex: '(VK-740-BL)(?:[);/ ]|$)'
37679
+ device: 'tablet'
37680
+ model: '$1'
37681
+
37682
+ # A&K
37683
+ A&K:
37684
+ regex: '(G4040)'
37685
+ device: 'feature phone'
37686
+ model: '$1'
37687
+
37688
+ # BASE
37689
+ BASE:
37690
+ regex: 'BASE[_ ](Varia)'
37691
+ device: 'smartphone'
37692
+ model: '$1'
37693
+
37694
+ # BAUHN (https://bauhn.com.au/)
37695
+ BAUHN:
37696
+ regex: 'BAUHN(?:[);/ ]|$)'
37697
+ device: 'tv'
37698
+ model: ''
37699
+
37700
+ # CKK Mobile
37701
+ CKK Mobile:
37702
+ regex: 'CKK (Inspire 1|Garnet)'
37253
37703
  device: 'smartphone'
37254
37704
  model: '$1'
37255
37705
 
37706
+ # SPURT
37707
+ SPURT:
37708
+ regex: '(?: K700)(?:[);/ ]|$)'
37709
+ device: 'smartphone'
37710
+ model: 'K700'
37711
+
37712
+ # Z-Kai
37713
+ Z-Kai:
37714
+ regex: '(ZMOOTH)(?:[);/ ]|$)'
37715
+ device: 'tablet'
37716
+ model: '$1'
37717
+
37718
+ # Arçelik
37719
+ Arçelik:
37720
+ regex: 'Arcelik'
37721
+ device: 'tv'
37722
+ model: ''
37723
+
37256
37724
  # Devices with undectable brand, but detectable model
37257
37725
  Unknown:
37258
- regex: 'Plasma Mobile|WebTV/(\d+\.\d+)|TV Bro|(?:M10 Ultra|FO-R15|TVBOX|Smart[ _]?TV|SmartATV|M8S\+ 4K|PCBox|rk(?:3128|322x|3368)(?:[_-]box)?|H10 PLAY|Smart AIO TV|TVBOX_L|L-BOX|TVBOX-5G|mips.+(?:Opera TV|wireless|wired)|smartbox|TV BOX|I12Pro Max|(?:audi_)?ks1280x480|AT&T TV|RealtekATV|AOSP on r33a0|hx322x_box|X98_S500)(?:[);/ ]|$)'
37726
+ regex: 'Plasma Mobile|WebTV/(\d+\.\d+)|TV Bro|(?:M10 Ultra|FO-R15|TVBOX|Smart[ _-]?TV|SmartATV|M8S\+ 4K|PCBox|rk(?:3128|322x|3368)(?:[_-]box)?|H10 PLAY|Smart AIO TV|TVBOX_L|L-BOX|TVBOX-5G|mips.+(?:Opera TV|wireless|wired)|smartbox|TV BOX|I12Pro Max|(?:audi_)?ks1280x480|AT&T TV|RealtekATV|AOSP on r33a0|hx322x_box|X98_S500)(?:[);/ ]|$)'
37259
37727
  device: 'smartphone'
37260
37728
  models:
37261
37729
  - regex: 'WebTV/(\d+\.\d+)'
@@ -37267,7 +37735,7 @@ Unknown:
37267
37735
  - regex: '(FO-R15|X98_S500)(?:[);/ ]|$)'
37268
37736
  device: 'tv'
37269
37737
  model: '$1'
37270
- - regex: '(Smart[ _]?TV|SmartATV|PCBox|hx322x_box|rk(?:3128|322x|3368)(?:[_-]box)?|TVBOX|Smart AIO TV|TVBOX_L|L-BOX|TVBOX-5G|AT&T TV|RealtekATV|TV Bro|AOSP on r33a0)(?:[);/ ]|$)'
37738
+ - regex: '(Smart[ _-]?TV|SmartATV|PCBox|hx322x_box|rk(?:3128|322x|3368)(?:[_-]box)?|TVBOX|Smart AIO TV|TVBOX_L|L-BOX|TVBOX-5G|AT&T TV|RealtekATV|TV Bro|AOSP on r33a0)(?:[);/ ]|$)'
37271
37739
  device: 'tv'
37272
37740
  model: ''
37273
37741
  - regex: 'M8S\+ 4K(?:[);/ ]|$)'