Version Description
Download this release
Release Info
Developer | matomoteam |
Plugin | Matomo Analytics – Ethical Stats. Powerful Insights. |
Version | 4.0.3 |
Comparing to | |
See all releases |
Code changes from version 4.0.2 to 4.0.3
- app/config/global.ini.php +4 -0
- app/core/CronArchive.php +73 -6
- app/core/CronArchive/QueueConsumer.php +3 -1
- app/core/CronArchive/SegmentArchiving.php +13 -3
- app/core/DataAccess/Model.php +45 -20
- app/core/Db/BatchInsert.php +4 -0
- app/core/Plugin/Controller.php +1 -6
- app/core/Updates/4.0.0-b1.php +120 -44
- app/core/Updates/4.0.0-b3.php +60 -0
- app/core/Updates/4.0.0-rc3.php +44 -0
- app/core/Updates/4.0.0-rc4.php +68 -0
- app/core/Updates/4.0.1-b1.php +56 -0
- app/core/Updates/4.0.4-b1.php +64 -0
- app/core/Url.php +25 -18
- app/core/Version.php +1 -1
- app/lang/de.json +3 -3
- app/lang/en.json +1 -0
- app/lang/zh-tw.json +11 -11
- app/plugins/DevicesDetection/functions.php +1 -0
- app/plugins/Morpheus/icons/dist/devices/peripheral.png +0 -0
- app/plugins/PagePerformance/Tracker/PerformanceDataProcessor.php +7 -7
- app/plugins/ScheduledReports/config/tcpdf_config.php +6 -11
- app/plugins/TagManager/Dao/TagsDao.php +1 -7
- app/plugins/TagManager/Template/BaseTemplate.php +4 -1
- app/plugins/TagManager/config/config.php +1 -0
- app/plugins/TagManager/config/test.php +2 -1
- app/vendor/autoload.php +1 -1
- app/vendor/composer/InstalledVersions.php +10 -10
- app/vendor/composer/autoload_classmap.php +1 -0
- app/vendor/composer/autoload_real.php +7 -7
- app/vendor/composer/autoload_static.php +7 -6
- app/vendor/composer/installed.json +6 -6
- app/vendor/composer/installed.php +10 -10
- app/vendor/matomo/device-detector/.yamllint +11 -0
- app/vendor/matomo/device-detector/DeviceDetector.php +1 -1
- app/vendor/matomo/device-detector/Parser/AbstractParser.php +1 -1
- app/vendor/matomo/device-detector/Parser/Client/Browser.php +25 -5
- app/vendor/matomo/device-detector/Parser/Device/AbstractDeviceParser.php +28 -2
- app/vendor/matomo/device-detector/Parser/OperatingSystem.php +4 -2
- app/vendor/matomo/device-detector/README.md +4 -4
- app/vendor/matomo/device-detector/regexes/bots.yml +3 -3
- app/vendor/matomo/device-detector/regexes/client/browser_engine.yml +3 -3
- app/vendor/matomo/device-detector/regexes/client/browsers.yml +122 -17
- app/vendor/matomo/device-detector/regexes/client/feed_readers.yml +1 -1
- app/vendor/matomo/device-detector/regexes/client/mediaplayers.yml +1 -1
- app/vendor/matomo/device-detector/regexes/client/pim.yml +1 -1
- app/vendor/matomo/device-detector/regexes/device/cameras.yml +5 -5
- app/vendor/matomo/device-detector/regexes/device/consoles.yml +6 -0
- app/vendor/matomo/device-detector/regexes/device/mobiles.yml +1449 -823
- app/vendor/matomo/device-detector/regexes/device/portable_media_player.yml +1 -1
- app/vendor/matomo/device-detector/regexes/device/televisions.yml +1 -1
- app/vendor/matomo/device-detector/regexes/oss.yml +75 -78
- assets/js/asset_manager_core_js.js +2 -2
- classes/WpMatomo.php +9 -1
- classes/WpMatomo/Admin/Admin.php +4 -2
- classes/WpMatomo/Admin/SystemReport.php +27 -13
- classes/WpMatomo/Email.php +2 -1
- matomo.php +2 -2
- readme.txt +1 -1
app/config/global.ini.php
CHANGED
@@ -395,6 +395,10 @@ hash_algorithm = whirlpool
|
|
395 |
; it is recommended for security reasons to always use Matomo over https
|
396 |
force_ssl = 0
|
397 |
|
|
|
|
|
|
|
|
|
398 |
; Session garbage collection on (as on some operating systems, i.e. Debian, it may be off by default)
|
399 |
session_gc_probability = 1
|
400 |
|
395 |
; it is recommended for security reasons to always use Matomo over https
|
396 |
force_ssl = 0
|
397 |
|
398 |
+
; If set to 1 Matomo will prefer using SERVER_NAME variable over HTTP_HOST.
|
399 |
+
; This can add an additional layer of security as SERVER_NAME can not be manipulated by sending custom host headers when configure correctly.
|
400 |
+
host_validation_use_server_name = 0
|
401 |
+
|
402 |
; Session garbage collection on (as on some operating systems, i.e. Debian, it may be off by default)
|
403 |
session_gc_probability = 1
|
404 |
|
app/core/CronArchive.php
CHANGED
@@ -485,9 +485,10 @@ class CronArchive
|
|
485 |
|
486 |
$this->logArchiveJobFinished($url, $timers[$index], $visitsForPeriod, $archivesBeingQueried[$index]['plugin'], $archivesBeingQueried[$index]['report']);
|
487 |
|
488 |
-
// TODO: do in ArchiveWriter
|
489 |
$this->deleteInvalidatedArchives($archivesBeingQueried[$index]);
|
490 |
|
|
|
|
|
491 |
++$successCount;
|
492 |
}
|
493 |
|
@@ -764,11 +765,6 @@ class CronArchive
|
|
764 |
|
765 |
public function invalidateArchivedReportsForSitesThatNeedToBeArchivedAgain($idSiteToInvalidate)
|
766 |
{
|
767 |
-
if ($this->model->isInvalidationsScheduledForSite($idSiteToInvalidate)) {
|
768 |
-
$this->logger->debug("Invalidations currently exist for idSite $idSiteToInvalidate, skipping invalidating for now...");
|
769 |
-
return;
|
770 |
-
}
|
771 |
-
|
772 |
if (empty($this->segmentArchiving)) {
|
773 |
// might not be initialised if init is not called
|
774 |
$this->segmentArchiving = new SegmentArchiving($this->processNewSegmentsFrom, $this->dateLastForced);
|
@@ -938,6 +934,77 @@ class CronArchive
|
|
938 |
return !empty($idArchive);
|
939 |
}
|
940 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
941 |
private function setInvalidationTime()
|
942 |
{
|
943 |
$cache = Cache::getTransientCache();
|
485 |
|
486 |
$this->logArchiveJobFinished($url, $timers[$index], $visitsForPeriod, $archivesBeingQueried[$index]['plugin'], $archivesBeingQueried[$index]['report']);
|
487 |
|
|
|
488 |
$this->deleteInvalidatedArchives($archivesBeingQueried[$index]);
|
489 |
|
490 |
+
$this->repairInvalidationsIfNeeded($archivesBeingQueried[$index]);
|
491 |
+
|
492 |
++$successCount;
|
493 |
}
|
494 |
|
765 |
|
766 |
public function invalidateArchivedReportsForSitesThatNeedToBeArchivedAgain($idSiteToInvalidate)
|
767 |
{
|
|
|
|
|
|
|
|
|
|
|
768 |
if (empty($this->segmentArchiving)) {
|
769 |
// might not be initialised if init is not called
|
770 |
$this->segmentArchiving = new SegmentArchiving($this->processNewSegmentsFrom, $this->dateLastForced);
|
934 |
return !empty($idArchive);
|
935 |
}
|
936 |
|
937 |
+
// public for tests
|
938 |
+
public function repairInvalidationsIfNeeded($archiveToProcess)
|
939 |
+
{
|
940 |
+
$table = Common::prefixTable('archive_invalidations');
|
941 |
+
|
942 |
+
$bind = [
|
943 |
+
$archiveToProcess['idsite'],
|
944 |
+
$archiveToProcess['name'],
|
945 |
+
$archiveToProcess['period'],
|
946 |
+
$archiveToProcess['date1'],
|
947 |
+
$archiveToProcess['date2'],
|
948 |
+
];
|
949 |
+
|
950 |
+
$reportClause = '';
|
951 |
+
if (!empty($archiveToProcess['report'])) {
|
952 |
+
$reportClause = " AND report = ?";
|
953 |
+
$bind[] = $archiveToProcess['report'];
|
954 |
+
}
|
955 |
+
|
956 |
+
$sql = "SELECT DISTINCT period FROM `$table`
|
957 |
+
WHERE idsite = ? AND name = ? AND period > ? AND ? >= date1 AND date2 >= ? AND status = " . ArchiveInvalidator::INVALIDATION_STATUS_QUEUED . " $reportClause";
|
958 |
+
|
959 |
+
$higherPeriods = Db::fetchAll($sql, $bind);
|
960 |
+
$higherPeriods = array_column($higherPeriods, 'period');
|
961 |
+
|
962 |
+
$invalidationsToInsert = [];
|
963 |
+
foreach (Piwik::$idPeriods as $label => $id) {
|
964 |
+
// lower period than the one we're processing or range, don't care
|
965 |
+
if ($id <= $archiveToProcess['period'] || $label == 'range') {
|
966 |
+
continue;
|
967 |
+
}
|
968 |
+
|
969 |
+
if (in_array($id, $higherPeriods)) { // period exists in table
|
970 |
+
continue;
|
971 |
+
}
|
972 |
+
|
973 |
+
// archive is for week that is over two months, we don't need to care about the month
|
974 |
+
if ($label == 'month'
|
975 |
+
&& Date::factory($archiveToProcess['date1'])->toString('m') != Date::factory($archiveToProcess['date2'])->toString('m')
|
976 |
+
) {
|
977 |
+
continue;
|
978 |
+
}
|
979 |
+
|
980 |
+
$period = Period\Factory::build($label, $archiveToProcess['date1']);
|
981 |
+
|
982 |
+
$invalidationToInsert = [
|
983 |
+
'idarchive' => null,
|
984 |
+
'name' => $archiveToProcess['name'],
|
985 |
+
'report' => $archiveToProcess['report'],
|
986 |
+
'idsite' => $archiveToProcess['idsite'],
|
987 |
+
'date1' => $period->getDateStart()->getDatetime(),
|
988 |
+
'date2' => $period->getDateEnd()->getDatetime(),
|
989 |
+
'period' => $id,
|
990 |
+
'ts_invalidated' => $archiveToProcess['ts_invalidated'],
|
991 |
+
];
|
992 |
+
|
993 |
+
$this->logger->debug("Found dangling invalidation, inserting {invalidationToInsert}", [
|
994 |
+
'invalidationToInsert' => json_encode($invalidationToInsert),
|
995 |
+
]);
|
996 |
+
|
997 |
+
$invalidationsToInsert[] = $invalidationToInsert;
|
998 |
+
}
|
999 |
+
|
1000 |
+
if (empty($invalidationsToInsert)) {
|
1001 |
+
return;
|
1002 |
+
}
|
1003 |
+
|
1004 |
+
$fields = ['idarchive', 'name', 'report', 'idsite', 'date1', 'date2', 'period', 'ts_invalidated'];
|
1005 |
+
Db\BatchInsert::tableInsertBatch(Common::prefixTable('archive_invalidations'), $fields, $invalidationsToInsert);
|
1006 |
+
}
|
1007 |
+
|
1008 |
private function setInvalidationTime()
|
1009 |
{
|
1010 |
$cache = Cache::getTransientCache();
|
app/core/CronArchive/QueueConsumer.php
CHANGED
@@ -14,10 +14,12 @@ use Piwik\ArchiveProcessor\Loader;
|
|
14 |
use Piwik\ArchiveProcessor\Parameters;
|
15 |
use Piwik\ArchiveProcessor\Rules;
|
16 |
use Piwik\CliMulti\RequestParser;
|
|
|
17 |
use Piwik\CronArchive;
|
18 |
use Piwik\DataAccess\ArchiveSelector;
|
19 |
use Piwik\DataAccess\Model;
|
20 |
use Piwik\Date;
|
|
|
21 |
use Piwik\Exception\UnexpectedWebsiteFoundException;
|
22 |
use Piwik\Period;
|
23 |
use Piwik\Period\Factory as PeriodFactory;
|
@@ -351,7 +353,7 @@ class QueueConsumer
|
|
351 |
}
|
352 |
|
353 |
$this->logger->debug("Found invalidation for segment that does not have auto archiving enabled, skipping: {$nextArchive['idinvalidation']}");
|
354 |
-
$this->
|
355 |
|
356 |
++$iterations;
|
357 |
}
|
14 |
use Piwik\ArchiveProcessor\Parameters;
|
15 |
use Piwik\ArchiveProcessor\Rules;
|
16 |
use Piwik\CliMulti\RequestParser;
|
17 |
+
use Piwik\Common;
|
18 |
use Piwik\CronArchive;
|
19 |
use Piwik\DataAccess\ArchiveSelector;
|
20 |
use Piwik\DataAccess\Model;
|
21 |
use Piwik\Date;
|
22 |
+
use Piwik\Db;
|
23 |
use Piwik\Exception\UnexpectedWebsiteFoundException;
|
24 |
use Piwik\Period;
|
25 |
use Piwik\Period\Factory as PeriodFactory;
|
353 |
}
|
354 |
|
355 |
$this->logger->debug("Found invalidation for segment that does not have auto archiving enabled, skipping: {$nextArchive['idinvalidation']}");
|
356 |
+
$this->model->deleteInvalidations([$nextArchive]);
|
357 |
|
358 |
++$iterations;
|
359 |
}
|
app/core/CronArchive/SegmentArchiving.php
CHANGED
@@ -89,7 +89,9 @@ class SegmentArchiving
|
|
89 |
|
90 |
$segmentsForSite = $this->getAllSegments();
|
91 |
foreach ($segmentsForSite as $storedSegment) {
|
92 |
-
if (!$this->isAutoArchivingEnabledFor($storedSegment)
|
|
|
|
|
93 |
continue;
|
94 |
}
|
95 |
|
@@ -121,11 +123,19 @@ class SegmentArchiving
|
|
121 |
public function findSegmentForHash($hash, $idSite)
|
122 |
{
|
123 |
foreach ($this->getAllSegments() as $segment) {
|
124 |
-
if (!$this->isAutoArchivingEnabledFor($segment)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
continue;
|
126 |
}
|
127 |
|
128 |
-
$segmentObj = new Segment($segment['definition'], [$idSite]);
|
129 |
if ($segmentObj->getHash() == $hash) {
|
130 |
return $segment;
|
131 |
}
|
89 |
|
90 |
$segmentsForSite = $this->getAllSegments();
|
91 |
foreach ($segmentsForSite as $storedSegment) {
|
92 |
+
if (!$this->isAutoArchivingEnabledFor($storedSegment)
|
93 |
+
|| !$this->isSegmentForSite($storedSegment, $idSite)
|
94 |
+
) {
|
95 |
continue;
|
96 |
}
|
97 |
|
123 |
public function findSegmentForHash($hash, $idSite)
|
124 |
{
|
125 |
foreach ($this->getAllSegments() as $segment) {
|
126 |
+
if (!$this->isAutoArchivingEnabledFor($segment)
|
127 |
+
|| !$this->isSegmentForSite($segment, $idSite)
|
128 |
+
) {
|
129 |
+
continue;
|
130 |
+
}
|
131 |
+
|
132 |
+
try {
|
133 |
+
$segmentObj = new Segment($segment['definition'], [$idSite]);
|
134 |
+
} catch (\Exception $ex) {
|
135 |
+
$this->logger->debug("Could not process segment {$segment['definition']} for site {$idSite}. Segment should not exist for the site, but does.");
|
136 |
continue;
|
137 |
}
|
138 |
|
|
|
139 |
if ($segmentObj->getHash() == $hash) {
|
140 |
return $segment;
|
141 |
}
|
app/core/DataAccess/Model.php
CHANGED
@@ -131,8 +131,9 @@ class Model
|
|
131 |
FROM `$archiveTable`
|
132 |
WHERE idsite IN (" . implode(',', $idSites) . ")";
|
133 |
|
|
|
134 |
if (!empty($allPeriodsToInvalidate)) {
|
135 |
-
$
|
136 |
|
137 |
$isFirst = true;
|
138 |
/** @var Period $period */
|
@@ -140,21 +141,22 @@ class Model
|
|
140 |
if ($isFirst) {
|
141 |
$isFirst = false;
|
142 |
} else {
|
143 |
-
$
|
144 |
}
|
145 |
|
146 |
if ($period->getLabel() == 'range') { // for ranges, we delete all ranges that contain the given date(s)
|
147 |
-
$
|
148 |
. " AND date2 >= '" . $period->getDateStart()->getDatetime()
|
149 |
. "' AND date1 <= '" . $period->getDateEnd()->getDatetime() . "')";
|
150 |
} else {
|
151 |
-
$
|
152 |
. " AND date1 = '" . $period->getDateStart()->getDatetime() . "'"
|
153 |
. " AND date2 = '" . $period->getDateEnd()->getDatetime() . "')";
|
154 |
}
|
155 |
}
|
156 |
-
$
|
157 |
}
|
|
|
158 |
|
159 |
if (!empty($name)) {
|
160 |
if (strpos($name, '.') !== false) {
|
@@ -201,6 +203,8 @@ class Model
|
|
201 |
|
202 |
$now = Date::now()->getDatetime();
|
203 |
|
|
|
|
|
204 |
$dummyArchives = [];
|
205 |
foreach ($idSites as $idSite) {
|
206 |
try {
|
@@ -223,6 +227,12 @@ class Model
|
|
223 |
|
224 |
$date1 = $period->getDateStart()->toString();
|
225 |
$date2 = $period->getDateEnd()->toString();
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
$idArchive = $archivesToCreateInvalidationRowsFor[$idSite][$period->getId()][$date1][$date2] ?? null;
|
227 |
|
228 |
$dummyArchives[] = [
|
@@ -238,13 +248,39 @@ class Model
|
|
238 |
}
|
239 |
}
|
240 |
|
241 |
-
$
|
242 |
-
|
243 |
-
|
|
|
244 |
|
245 |
return count($idArchives);
|
246 |
}
|
247 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
248 |
/**
|
249 |
* @param string $archiveTable Prefixed table name
|
250 |
* @param int[] $idSites
|
@@ -713,7 +749,7 @@ class Model
|
|
713 |
public function getNextInvalidatedArchive($idSite, $archivingStartTime, $idInvalidationsToExclude = null, $useLimit = true)
|
714 |
{
|
715 |
$table = Common::prefixTable('archive_invalidations');
|
716 |
-
$sql = "SELECT idinvalidation, idarchive, idsite, date1, date2, period, `name`, report
|
717 |
FROM `$table`
|
718 |
WHERE idsite = ? AND status != ? AND ts_invalidated <= ?";
|
719 |
$bind = [
|
@@ -876,15 +912,4 @@ class Model
|
|
876 |
$query = Db::query($sql, $bind);
|
877 |
return $query->rowCount();
|
878 |
}
|
879 |
-
|
880 |
-
public function isInvalidationsScheduledForSite($idSite)
|
881 |
-
{
|
882 |
-
$table = Common::prefixTable('archive_invalidations');
|
883 |
-
|
884 |
-
$bind = [(int) $idSite];
|
885 |
-
|
886 |
-
$sql = "SELECT idsite FROM `$table` WHERE idsite = ? LIMIT 1";
|
887 |
-
$value = Db::fetchOne($sql, $bind);
|
888 |
-
return !empty($value);
|
889 |
-
}
|
890 |
}
|
131 |
FROM `$archiveTable`
|
132 |
WHERE idsite IN (" . implode(',', $idSites) . ")";
|
133 |
|
134 |
+
$periodCondition = '';
|
135 |
if (!empty($allPeriodsToInvalidate)) {
|
136 |
+
$periodCondition .= " AND (";
|
137 |
|
138 |
$isFirst = true;
|
139 |
/** @var Period $period */
|
141 |
if ($isFirst) {
|
142 |
$isFirst = false;
|
143 |
} else {
|
144 |
+
$periodCondition .= " OR ";
|
145 |
}
|
146 |
|
147 |
if ($period->getLabel() == 'range') { // for ranges, we delete all ranges that contain the given date(s)
|
148 |
+
$periodCondition .= "(period = " . (int)$period->getId()
|
149 |
. " AND date2 >= '" . $period->getDateStart()->getDatetime()
|
150 |
. "' AND date1 <= '" . $period->getDateEnd()->getDatetime() . "')";
|
151 |
} else {
|
152 |
+
$periodCondition .= "(period = " . (int)$period->getId()
|
153 |
. " AND date1 = '" . $period->getDateStart()->getDatetime() . "'"
|
154 |
. " AND date2 = '" . $period->getDateEnd()->getDatetime() . "')";
|
155 |
}
|
156 |
}
|
157 |
+
$periodCondition .= ")";
|
158 |
}
|
159 |
+
$sql .= $periodCondition;
|
160 |
|
161 |
if (!empty($name)) {
|
162 |
if (strpos($name, '.') !== false) {
|
203 |
|
204 |
$now = Date::now()->getDatetime();
|
205 |
|
206 |
+
$existingInvalidations = $this->getExistingInvalidations($idSites, $periodCondition, $nameCondition);
|
207 |
+
|
208 |
$dummyArchives = [];
|
209 |
foreach ($idSites as $idSite) {
|
210 |
try {
|
227 |
|
228 |
$date1 = $period->getDateStart()->toString();
|
229 |
$date2 = $period->getDateEnd()->toString();
|
230 |
+
|
231 |
+
$key = $this->makeExistingInvalidationArrayKey($idSite, $date1, $date2, $period->getId(), $doneFlag);
|
232 |
+
if (!empty($existingInvalidations[$key])) {
|
233 |
+
continue; // avoid adding duplicates where possible
|
234 |
+
}
|
235 |
+
|
236 |
$idArchive = $archivesToCreateInvalidationRowsFor[$idSite][$period->getId()][$date1][$date2] ?? null;
|
237 |
|
238 |
$dummyArchives[] = [
|
248 |
}
|
249 |
}
|
250 |
|
251 |
+
if (!empty($dummyArchives)) {
|
252 |
+
$fields = ['idarchive', 'name', 'report', 'idsite', 'date1', 'date2', 'period', 'ts_invalidated'];
|
253 |
+
Db\BatchInsert::tableInsertBatch(Common::prefixTable('archive_invalidations'), $fields, $dummyArchives);
|
254 |
+
}
|
255 |
|
256 |
return count($idArchives);
|
257 |
}
|
258 |
|
259 |
+
private function getExistingInvalidations($idSites, $periodCondition, $nameCondition)
|
260 |
+
{
|
261 |
+
$table = Common::prefixTable('archive_invalidations');
|
262 |
+
|
263 |
+
$idSites = array_map('intval', $idSites);
|
264 |
+
|
265 |
+
$sql = "SELECT idsite, date1, date2, period, name, COUNT(*) as `count` FROM `$table`
|
266 |
+
WHERE idsite IN (" . implode(',', $idSites) . ") AND status = " . ArchiveInvalidator::INVALIDATION_STATUS_QUEUED . "
|
267 |
+
$periodCondition AND $nameCondition
|
268 |
+
GROUP BY idsite, date1, date2, period, name";
|
269 |
+
$rows = Db::fetchAll($sql);
|
270 |
+
|
271 |
+
$invalidations = [];
|
272 |
+
foreach ($rows as $row) {
|
273 |
+
$key = $this->makeExistingInvalidationArrayKey($row['idsite'], $row['date1'], $row['date2'], $row['period'], $row['name']);
|
274 |
+
$invalidations[$key] = $row['count'];
|
275 |
+
}
|
276 |
+
return $invalidations;
|
277 |
+
}
|
278 |
+
|
279 |
+
private function makeExistingInvalidationArrayKey($idSite, $date1, $date2, $period, $name)
|
280 |
+
{
|
281 |
+
return implode('.', [$idSite, $date1, $date2, $period, $name]);
|
282 |
+
}
|
283 |
+
|
284 |
/**
|
285 |
* @param string $archiveTable Prefixed table name
|
286 |
* @param int[] $idSites
|
749 |
public function getNextInvalidatedArchive($idSite, $archivingStartTime, $idInvalidationsToExclude = null, $useLimit = true)
|
750 |
{
|
751 |
$table = Common::prefixTable('archive_invalidations');
|
752 |
+
$sql = "SELECT idinvalidation, idarchive, idsite, date1, date2, period, `name`, report, ts_invalidated
|
753 |
FROM `$table`
|
754 |
WHERE idsite = ? AND status != ? AND ts_invalidated <= ?";
|
755 |
$bind = [
|
912 |
$query = Db::query($sql, $bind);
|
913 |
return $query->rowCount();
|
914 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
915 |
}
|
app/core/Db/BatchInsert.php
CHANGED
@@ -35,6 +35,7 @@ class BatchInsert
|
|
35 |
$ignore = $ignoreWhenDuplicate ? 'IGNORE' : '';
|
36 |
|
37 |
foreach ($values as $row) {
|
|
|
38 |
$query = "INSERT $ignore INTO " . $tableName . "
|
39 |
$fieldList
|
40 |
VALUES (" . Common::getSqlStringFieldsArray($row) . ")";
|
@@ -243,6 +244,9 @@ class BatchInsert
|
|
243 |
} catch (Exception $e) {
|
244 |
$code = $e->getCode();
|
245 |
$message = $e->getMessage() . ($code ? "[$code]" : '');
|
|
|
|
|
|
|
246 |
$exceptions[] = "\n Try #" . (count($exceptions) + 1) . ': ' . $queryStart . ": " . $message;
|
247 |
}
|
248 |
}
|
35 |
$ignore = $ignoreWhenDuplicate ? 'IGNORE' : '';
|
36 |
|
37 |
foreach ($values as $row) {
|
38 |
+
$row = array_values($row);
|
39 |
$query = "INSERT $ignore INTO " . $tableName . "
|
40 |
$fieldList
|
41 |
VALUES (" . Common::getSqlStringFieldsArray($row) . ")";
|
244 |
} catch (Exception $e) {
|
245 |
$code = $e->getCode();
|
246 |
$message = $e->getMessage() . ($code ? "[$code]" : '');
|
247 |
+
if (\Piwik_ShouldPrintBackTraceWithMessage()) {
|
248 |
+
$message .= "\n" . $e->getTraceAsString();
|
249 |
+
}
|
250 |
$exceptions[] = "\n Try #" . (count($exceptions) + 1) . ': ' . $queryStart . ": " . $message;
|
251 |
}
|
252 |
}
|
app/core/Plugin/Controller.php
CHANGED
@@ -821,12 +821,7 @@ abstract class Controller
|
|
821 |
// invalid host, so display warning to user
|
822 |
$validHosts = Url::getTrustedHostsFromConfig();
|
823 |
$validHost = $validHosts[0];
|
824 |
-
|
825 |
-
if (!empty($_SERVER['SERVER_NAME'])) {
|
826 |
-
$invalidHost = Common::sanitizeInputValue(Url::getHostFromServerNameVar());
|
827 |
-
} else {
|
828 |
-
$invalidHost = Common::sanitizeInputValue($_SERVER['HTTP_HOST']);
|
829 |
-
}
|
830 |
|
831 |
$emailSubject = rawurlencode(Piwik::translate('CoreHome_InjectedHostEmailSubject', $invalidHost));
|
832 |
$emailBody = rawurlencode(Piwik::translate('CoreHome_InjectedHostEmailBody'));
|
821 |
// invalid host, so display warning to user
|
822 |
$validHosts = Url::getTrustedHostsFromConfig();
|
823 |
$validHost = $validHosts[0];
|
824 |
+
$invalidHost = Common::sanitizeInputValue(Url::getHost(false));
|
|
|
|
|
|
|
|
|
|
|
825 |
|
826 |
$emailSubject = rawurlencode(Piwik::translate('CoreHome_InjectedHostEmailSubject', $invalidHost));
|
827 |
$emailBody = rawurlencode(Piwik::translate('CoreHome_InjectedHostEmailBody'));
|
app/core/Updates/4.0.0-b1.php
CHANGED
@@ -10,9 +10,11 @@
|
|
10 |
namespace Piwik\Updates;
|
11 |
|
12 |
use Piwik\DataAccess\TableMetadata;
|
13 |
-
use Piwik\
|
|
|
14 |
use Piwik\DbHelper;
|
15 |
use Piwik\Plugin\Manager;
|
|
|
16 |
use Piwik\Plugins\CoreHome\Columns\Profilable;
|
17 |
use Piwik\Plugins\CoreHome\Columns\VisitorSecondsSinceFirst;
|
18 |
use Piwik\Plugins\CoreHome\Columns\VisitorSecondsSinceOrder;
|
@@ -28,6 +30,7 @@ use Piwik\Common;
|
|
28 |
use Piwik\Config;
|
29 |
use Piwik\Plugins\UserCountry\LocationProvider;
|
30 |
use Piwik\Plugins\VisitorInterest\Columns\VisitorSecondsSinceLast;
|
|
|
31 |
use Piwik\Updater;
|
32 |
use Piwik\Updates as PiwikUpdates;
|
33 |
use Piwik\Updater\Migration\Factory as MigrationFactory;
|
@@ -55,35 +58,12 @@ class Updates_4_0_0_b1 extends PiwikUpdates
|
|
55 |
|
56 |
$migrations = [];
|
57 |
|
58 |
-
|
59 |
-
$
|
60 |
-
|
61 |
-
|
62 |
-
'description' => 'VARCHAR('.Model::MAX_LENGTH_TOKEN_DESCRIPTION.') NOT NULL',
|
63 |
-
'password' => 'VARCHAR(191) NOT NULL',
|
64 |
-
'system_token' => 'TINYINT(1) NOT NULL DEFAULT 0',
|
65 |
-
'hash_algo' => 'VARCHAR(30) NOT NULL',
|
66 |
-
'last_used' => 'DATETIME NULL',
|
67 |
-
'date_created' => ' DATETIME NOT NULL',
|
68 |
-
'date_expired' => ' DATETIME NULL',
|
69 |
-
), 'idusertokenauth');
|
70 |
-
$migrations[] = $this->migration->db->addUniqueKey('user_token_auth', 'password', 'uniq_password');
|
71 |
-
|
72 |
-
$migrations[] = $this->migration->db->dropIndex('user', 'uniq_keytoken');
|
73 |
-
|
74 |
-
$userModel = new Model();
|
75 |
-
foreach ($userModel->getUsers(array()) as $user) {
|
76 |
-
if (!empty($user['token_auth'])) {
|
77 |
-
$migrations[] = $this->migration->db->insert('user_token_auth', array(
|
78 |
-
'login' => $user['login'],
|
79 |
-
'description' => 'Created by Matomo 4 migration',
|
80 |
-
'password' => $userModel->hashTokenAuth($user['token_auth']),
|
81 |
-
'date_created' => Date::now()->getDatetime()
|
82 |
-
));
|
83 |
-
}
|
84 |
-
}
|
85 |
|
86 |
-
|
87 |
|
88 |
// invalidations table
|
89 |
$migrations[] = $this->migration->db->createTable('archive_invalidations', [
|
@@ -95,7 +75,6 @@ class Updates_4_0_0_b1 extends PiwikUpdates
|
|
95 |
'date2' => 'DATE NOT NULL',
|
96 |
'period' => 'TINYINT UNSIGNED NOT NULL',
|
97 |
'ts_invalidated' => 'DATETIME NOT NULL',
|
98 |
-
'ts_started' => 'DATETIME NULL',
|
99 |
'status' => 'TINYINT(1) UNSIGNED DEFAULT 0',
|
100 |
'report' => 'VARCHAR(255) NULL',
|
101 |
], ['idinvalidation']);
|
@@ -103,13 +82,41 @@ class Updates_4_0_0_b1 extends PiwikUpdates
|
|
103 |
$migrations[] = $this->migration->db->addIndex('archive_invalidations', ['idsite', 'date1', 'period'], 'index_idsite_dates_period_name');
|
104 |
|
105 |
$migrations[] = $this->migration->db->dropColumn('user', 'alias');
|
106 |
-
$migrations[] = $this->migration->db->dropColumn('user', 'token_auth');
|
107 |
|
108 |
-
|
109 |
-
|
|
|
|
|
|
|
|
|
110 |
|
|
|
|
|
111 |
$migrations[] = $this->migration->db->changeColumn('log_link_visit_action', 'interaction_position', 'pageview_position', 'MEDIUMINT UNSIGNED DEFAULT NULL');
|
112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
// Move the site search fields of log_visit out of custom variables into their own fields
|
114 |
$columnsToAdd['log_link_visit_action']['search_cat'] = 'VARCHAR(200) NULL';
|
115 |
$columnsToAdd['log_link_visit_action']['search_count'] = 'INTEGER(10) UNSIGNED NULL';
|
@@ -152,6 +159,19 @@ class Updates_4_0_0_b1 extends PiwikUpdates
|
|
152 |
}
|
153 |
}
|
154 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
// init seconds_to_... columns
|
156 |
$logVisitColumns = $tableMetadata->getColumns(Common::prefixTable('log_visit'));
|
157 |
$hasDaysColumnInVisit = in_array('visitor_days_since_first', $logVisitColumns);
|
@@ -172,11 +192,6 @@ class Updates_4_0_0_b1 extends PiwikUpdates
|
|
172 |
visitor_seconds_since_order = visitor_days_since_order * 86400");
|
173 |
}
|
174 |
|
175 |
-
if (Manager::getInstance()->isPluginInstalled('CustomVariables')) {
|
176 |
-
$visitActionTable = Common::prefixTable('log_link_visit_action');
|
177 |
-
$migrations[] = $this->migration->db->sql("UPDATE $visitActionTable SET search_cat = if(custom_var_k4 = '_pk_scat', custom_var_v4, search_cat), search_count = if(custom_var_k5 = '_pk_scount', custom_var_v5, search_count) WHERE custom_var_k4 = '_pk_scat' or custom_var_k5 = '_pk_scount'");
|
178 |
-
}
|
179 |
-
|
180 |
// remove old days_to_... columns
|
181 |
$migrations[] = $this->migration->db->dropColumns('log_visit', [
|
182 |
'config_gears',
|
@@ -196,6 +211,9 @@ class Updates_4_0_0_b1 extends PiwikUpdates
|
|
196 |
$migrations[] = $this->migration->config->set('mail', 'type', 'Cram-md5');
|
197 |
}
|
198 |
|
|
|
|
|
|
|
199 |
$migrations[] = $this->migration->plugin->activate('PagePerformance');
|
200 |
if (!Manager::getInstance()->isPluginActivated('CustomDimensions')) {
|
201 |
$migrations[] = $this->migration->plugin->activate('CustomDimensions');
|
@@ -211,18 +229,76 @@ class Updates_4_0_0_b1 extends PiwikUpdates
|
|
211 |
$migrations[] = $this->migration->config->set('General', 'datatable_archiving_maximum_rows_subtable_custom_dimensions', $configSubTableLimit);
|
212 |
}
|
213 |
|
214 |
-
$migrations[] = $this->migration->db->changeColumnType('session', 'id', 'VARCHAR(191)');
|
215 |
-
$migrations[] = $this->migration->db->changeColumnType('site_url', 'url', 'VARCHAR(190)');
|
216 |
-
$migrations[] = $this->migration->db->changeColumnType('option', 'option_name', 'VARCHAR(191)');
|
217 |
-
|
218 |
-
$migrations[] = $this->migration->db->changeColumnType('log_action', 'name', 'VARCHAR(4096)');
|
219 |
-
$migrations[] = $this->migration->db->changeColumnType('log_conversion', 'url', 'VARCHAR(4096)');
|
220 |
return $migrations;
|
221 |
}
|
222 |
|
223 |
public function doUpdate(Updater $updater)
|
224 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
$updater->executeMigrations(__FILE__, $this->getMigrations($updater));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
}
|
227 |
|
228 |
protected function usesGeoIpLegacyLocationProvider()
|
10 |
namespace Piwik\Updates;
|
11 |
|
12 |
use Piwik\DataAccess\TableMetadata;
|
13 |
+
use Piwik\Updater\Migration\Custom as CustomMigration;
|
14 |
+
use Piwik\Db;
|
15 |
use Piwik\DbHelper;
|
16 |
use Piwik\Plugin\Manager;
|
17 |
+
use Piwik\Plugins\CoreAdminHome\Commands\MigrateTokenAuths;
|
18 |
use Piwik\Plugins\CoreHome\Columns\Profilable;
|
19 |
use Piwik\Plugins\CoreHome\Columns\VisitorSecondsSinceFirst;
|
20 |
use Piwik\Plugins\CoreHome\Columns\VisitorSecondsSinceOrder;
|
30 |
use Piwik\Config;
|
31 |
use Piwik\Plugins\UserCountry\LocationProvider;
|
32 |
use Piwik\Plugins\VisitorInterest\Columns\VisitorSecondsSinceLast;
|
33 |
+
use Piwik\SettingsPiwik;
|
34 |
use Piwik\Updater;
|
35 |
use Piwik\Updates as PiwikUpdates;
|
36 |
use Piwik\Updater\Migration\Factory as MigrationFactory;
|
58 |
|
59 |
$migrations = [];
|
60 |
|
61 |
+
$domain = Config::getLocalConfigPath() === Config::getDefaultLocalConfigPath() ? '' : Config::getHostname();
|
62 |
+
$domainArg = !empty($domain) ? "--matomo-domain=". escapeshellarg($domain) . " " : '';
|
63 |
+
$toString = sprintf('./console %score:matomo4-migrate-token-auths', $domainArg);
|
64 |
+
$custom = new CustomMigration(array(MigrateTokenAuths::class, 'migrate'), $toString);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
|
66 |
+
$migrations[] = $custom;
|
67 |
|
68 |
// invalidations table
|
69 |
$migrations[] = $this->migration->db->createTable('archive_invalidations', [
|
75 |
'date2' => 'DATE NOT NULL',
|
76 |
'period' => 'TINYINT UNSIGNED NOT NULL',
|
77 |
'ts_invalidated' => 'DATETIME NOT NULL',
|
|
|
78 |
'status' => 'TINYINT(1) UNSIGNED DEFAULT 0',
|
79 |
'report' => 'VARCHAR(255) NULL',
|
80 |
], ['idinvalidation']);
|
82 |
$migrations[] = $this->migration->db->addIndex('archive_invalidations', ['idsite', 'date1', 'period'], 'index_idsite_dates_period_name');
|
83 |
|
84 |
$migrations[] = $this->migration->db->dropColumn('user', 'alias');
|
|
|
85 |
|
86 |
+
// prevent possible duplicates when shorting session id
|
87 |
+
$migrations[] = $this->migration->db->sql('DELETE FROM `' . Common::prefixTable('session') . '` WHERE length(id) > 190');
|
88 |
+
|
89 |
+
$migrations[] = $this->migration->db->changeColumnType('session', 'id', 'VARCHAR(191)');
|
90 |
+
$migrations[] = $this->migration->db->changeColumnType('site_url', 'url', 'VARCHAR(190)');
|
91 |
+
$migrations[] = $this->migration->db->changeColumnType('option', 'option_name', 'VARCHAR(191)');
|
92 |
|
93 |
+
$migrations[] = $this->migration->db->changeColumnType('log_action', 'name', 'VARCHAR(4096)');
|
94 |
+
$migrations[] = $this->migration->db->changeColumnType('log_conversion', 'url', 'VARCHAR(4096)');
|
95 |
$migrations[] = $this->migration->db->changeColumn('log_link_visit_action', 'interaction_position', 'pageview_position', 'MEDIUMINT UNSIGNED DEFAULT NULL');
|
96 |
|
97 |
+
$customTrackerPluginActive = false;
|
98 |
+
if (in_array('CustomPiwikJs', Config::getInstance()->Plugins['Plugins'])) {
|
99 |
+
$customTrackerPluginActive = true;
|
100 |
+
}
|
101 |
+
|
102 |
+
$migrations[] = $this->migration->plugin->activate('BulkTracking');
|
103 |
+
$migrations[] = $this->migration->plugin->deactivate('CustomPiwikJs');
|
104 |
+
$migrations[] = $this->migration->plugin->uninstall('CustomPiwikJs');
|
105 |
+
|
106 |
+
if ($customTrackerPluginActive) {
|
107 |
+
$migrations[] = $this->migration->plugin->activate('CustomJsTracker');
|
108 |
+
}
|
109 |
+
|
110 |
+
// Prepare all installed tables for utf8mb4 conversions. e.g. make some indexed fields smaller so they don't exceed the maximum key length
|
111 |
+
$allTables = DbHelper::getTablesInstalled();
|
112 |
+
|
113 |
+
foreach ($allTables as $table) {
|
114 |
+
if (preg_match('/archive_/', $table) == 1) {
|
115 |
+
$tableNameUnprefixed = Common::unprefixTable($table);
|
116 |
+
$migrations[] = $this->migration->db->changeColumnType($tableNameUnprefixed, 'name', 'VARCHAR(190)');
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
// Move the site search fields of log_visit out of custom variables into their own fields
|
121 |
$columnsToAdd['log_link_visit_action']['search_cat'] = 'VARCHAR(200) NULL';
|
122 |
$columnsToAdd['log_link_visit_action']['search_count'] = 'INTEGER(10) UNSIGNED NULL';
|
159 |
}
|
160 |
}
|
161 |
|
162 |
+
if (Manager::getInstance()->isPluginInstalled('CustomVariables')) {
|
163 |
+
$visitActionTable = Common::prefixTable('log_link_visit_action');
|
164 |
+
$migrations[] = $this->migration->db->sql("UPDATE $visitActionTable SET search_cat = if(custom_var_k4 = '_pk_scat', custom_var_v4, search_cat), search_count = if(custom_var_k5 = '_pk_scount', custom_var_v5, search_count) WHERE custom_var_k4 = '_pk_scat' or custom_var_k5 = '_pk_scount'");
|
165 |
+
}
|
166 |
+
|
167 |
+
if ($this->usesGeoIpLegacyLocationProvider()) {
|
168 |
+
// activate GeoIp2 plugin for users still using GeoIp2 Legacy (others might have it disabled on purpose)
|
169 |
+
$migrations[] = $this->migration->plugin->activate('GeoIp2');
|
170 |
+
}
|
171 |
+
|
172 |
+
// remove old options
|
173 |
+
$migrations[] = $this->migration->db->sql('DELETE FROM `' . Common::prefixTable('option') . '` WHERE option_name IN ("geoip.updater_period", "geoip.loc_db_url", "geoip.isp_db_url", "geoip.org_db_url")');
|
174 |
+
|
175 |
// init seconds_to_... columns
|
176 |
$logVisitColumns = $tableMetadata->getColumns(Common::prefixTable('log_visit'));
|
177 |
$hasDaysColumnInVisit = in_array('visitor_days_since_first', $logVisitColumns);
|
192 |
visitor_seconds_since_order = visitor_days_since_order * 86400");
|
193 |
}
|
194 |
|
|
|
|
|
|
|
|
|
|
|
195 |
// remove old days_to_... columns
|
196 |
$migrations[] = $this->migration->db->dropColumns('log_visit', [
|
197 |
'config_gears',
|
211 |
$migrations[] = $this->migration->config->set('mail', 'type', 'Cram-md5');
|
212 |
}
|
213 |
|
214 |
+
// keep piwik_ignore for existing installs
|
215 |
+
$migrations[] = $this->migration->config->set('Tracker', 'ignore_visits_cookie_name', 'piwik_ignore');
|
216 |
+
|
217 |
$migrations[] = $this->migration->plugin->activate('PagePerformance');
|
218 |
if (!Manager::getInstance()->isPluginActivated('CustomDimensions')) {
|
219 |
$migrations[] = $this->migration->plugin->activate('CustomDimensions');
|
229 |
$migrations[] = $this->migration->config->set('General', 'datatable_archiving_maximum_rows_subtable_custom_dimensions', $configSubTableLimit);
|
230 |
}
|
231 |
|
|
|
|
|
|
|
|
|
|
|
|
|
232 |
return $migrations;
|
233 |
}
|
234 |
|
235 |
public function doUpdate(Updater $updater)
|
236 |
{
|
237 |
+
$salt = SettingsPiwik::getSalt();
|
238 |
+
$sessions = Db::fetchAll('SELECT id from ' . Common::prefixTable('session'));
|
239 |
+
|
240 |
+
foreach ($sessions as $session) {
|
241 |
+
if (!empty($session['id']) && Common::mb_strlen($session['id']) != 128) {
|
242 |
+
$bind = [ hash('sha512', $session['id'] . $salt), $session['id'] ];
|
243 |
+
try {
|
244 |
+
Db::query(sprintf('UPDATE %s SET id = ? WHERE id = ?', Common::prefixTable('session')), $bind);
|
245 |
+
} catch (\Exception $e) {
|
246 |
+
// ignore possible duplicate key errors
|
247 |
+
}
|
248 |
+
}
|
249 |
+
}
|
250 |
+
|
251 |
$updater->executeMigrations(__FILE__, $this->getMigrations($updater));
|
252 |
+
|
253 |
+
if ($this->usesGeoIpLegacyLocationProvider()) {
|
254 |
+
// switch to default provider if GeoIp Legacy was still in use
|
255 |
+
LocationProvider::setCurrentProvider(LocationProvider\DefaultProvider::ID);
|
256 |
+
}
|
257 |
+
|
258 |
+
// eg the case when not updating from most recent Matomo 3.X and when not using the UI updater
|
259 |
+
// afterwards the should receive a notification that the plugins are outdated
|
260 |
+
self::ensureCorePluginsThatWereMovedToMarketplaceCanBeUpdated();
|
261 |
+
ServerFilesGenerator::createFilesForSecurity();
|
262 |
+
}
|
263 |
+
|
264 |
+
public static function ensureCorePluginsThatWereMovedToMarketplaceCanBeUpdated()
|
265 |
+
{
|
266 |
+
$plugins = ['Provider', 'CustomVariables'];
|
267 |
+
$pluginManager = Manager::getInstance();
|
268 |
+
foreach ($plugins as $plugin) {
|
269 |
+
if ($pluginManager->isPluginThirdPartyAndBogus($plugin)) {
|
270 |
+
$pluginDir = Manager::getPluginDirectory($plugin);
|
271 |
+
|
272 |
+
if (is_dir($pluginDir) &&
|
273 |
+
file_exists($pluginDir . '/' . $plugin . '.php')
|
274 |
+
&& !file_exists($pluginDir . '/plugin.json')
|
275 |
+
&& is_writable($pluginDir)) {
|
276 |
+
file_put_contents($pluginDir . '/plugin.json', '{
|
277 |
+
"name": "'.$plugin.'",
|
278 |
+
"description": "'.$plugin.'",
|
279 |
+
"version": "3.14.1",
|
280 |
+
"theme": false,
|
281 |
+
"require": {
|
282 |
+
"piwik": ">=3.0.0,<4.0.0-b1"
|
283 |
+
},
|
284 |
+
"authors": [
|
285 |
+
{
|
286 |
+
"name": "Matomo",
|
287 |
+
"email": "hello@matomo.org",
|
288 |
+
"homepage": "https:\/\/matomo.org"
|
289 |
+
}
|
290 |
+
],
|
291 |
+
"homepage": "https:\/\/matomo.org",
|
292 |
+
"license": "GPL v3+",
|
293 |
+
"keywords": ["'.$plugin.'"]
|
294 |
+
}');
|
295 |
+
// otherwise cached information might be used and it won't be loaded otherwise within same request
|
296 |
+
$pluginObj = $pluginManager->loadPlugin($plugin);
|
297 |
+
$pluginObj->reloadPluginInformation();
|
298 |
+
$pluginManager->unloadPlugin($pluginObj); // prevent any events being posted to it somehow
|
299 |
+
}
|
300 |
+
}
|
301 |
+
}
|
302 |
}
|
303 |
|
304 |
protected function usesGeoIpLegacyLocationProvider()
|
app/core/Updates/4.0.0-b3.php
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Matomo - free/libre analytics platform
|
4 |
+
*
|
5 |
+
* @link https://matomo.org
|
6 |
+
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
7 |
+
*
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace Piwik\Updates;
|
11 |
+
|
12 |
+
use Piwik\Config;
|
13 |
+
use Piwik\Updater;
|
14 |
+
use Piwik\Updates as PiwikUpdates;
|
15 |
+
use Piwik\Updater\Migration\Factory as MigrationFactory;
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Update for version 4.0.0-b3.
|
19 |
+
*/
|
20 |
+
class Updates_4_0_0_b3 extends PiwikUpdates
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* @var MigrationFactory
|
24 |
+
*/
|
25 |
+
private $migration;
|
26 |
+
|
27 |
+
public function __construct(MigrationFactory $factory)
|
28 |
+
{
|
29 |
+
$this->migration = $factory;
|
30 |
+
}
|
31 |
+
|
32 |
+
public function getMigrations(Updater $updater)
|
33 |
+
{
|
34 |
+
$migrations = [];
|
35 |
+
|
36 |
+
$config = Config::getInstance();
|
37 |
+
$general = $config->General;
|
38 |
+
if (empty($general['login_whitelist_apply_to_reporting_api_requests'])) {
|
39 |
+
$migrations[] = $this->migration->config->set('General', 'login_allowlist_apply_to_reporting_api_requests', '0');
|
40 |
+
}
|
41 |
+
|
42 |
+
return $migrations;
|
43 |
+
}
|
44 |
+
|
45 |
+
public function doUpdate(Updater $updater)
|
46 |
+
{
|
47 |
+
$updater->executeMigrations(__FILE__, $this->getMigrations($updater));
|
48 |
+
|
49 |
+
$config = Config::getInstance();
|
50 |
+
$general = $config->General;
|
51 |
+
if (!empty($general['login_whitelist_ip'])) {
|
52 |
+
// the migration->config->set does not support arrays yet so we do it here.
|
53 |
+
$general['login_allowlist_ip'] = $general['login_whitelist_ip'];
|
54 |
+
$config->General = $general;
|
55 |
+
$config->forceSave();
|
56 |
+
}
|
57 |
+
|
58 |
+
}
|
59 |
+
|
60 |
+
}
|
app/core/Updates/4.0.0-rc3.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Matomo - free/libre analytics platform
|
4 |
+
*
|
5 |
+
* @link https://matomo.org
|
6 |
+
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
7 |
+
*
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace Piwik\Updates;
|
11 |
+
|
12 |
+
use Piwik\Config;
|
13 |
+
use Piwik\Updater;
|
14 |
+
use Piwik\Updates as PiwikUpdates;
|
15 |
+
use Piwik\Updater\Migration\Factory as MigrationFactory;
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Update for version 4.0.0-b3.
|
19 |
+
*/
|
20 |
+
class Updates_4_0_0_rc3 extends PiwikUpdates
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* @var MigrationFactory
|
24 |
+
*/
|
25 |
+
private $migration;
|
26 |
+
|
27 |
+
public function __construct(MigrationFactory $factory)
|
28 |
+
{
|
29 |
+
$this->migration = $factory;
|
30 |
+
}
|
31 |
+
|
32 |
+
public function getMigrations(Updater $updater)
|
33 |
+
{
|
34 |
+
$migrations = [];
|
35 |
+
$migrations[] = $this->migration->db->addColumn('archive_invalidations', 'ts_started', 'DATETIME NULL');
|
36 |
+
return $migrations;
|
37 |
+
}
|
38 |
+
|
39 |
+
public function doUpdate(Updater $updater)
|
40 |
+
{
|
41 |
+
$updater->executeMigrations(__FILE__, $this->getMigrations($updater));
|
42 |
+
}
|
43 |
+
|
44 |
+
}
|
app/core/Updates/4.0.0-rc4.php
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Matomo - free/libre analytics platform
|
4 |
+
*
|
5 |
+
* @link https://matomo.org
|
6 |
+
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
7 |
+
*
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace Piwik\Updates;
|
11 |
+
|
12 |
+
use Piwik\Config;
|
13 |
+
use Piwik\Container\StaticContainer;
|
14 |
+
use Piwik\DataAccess\ArchiveTableCreator;
|
15 |
+
use Piwik\Date;
|
16 |
+
use Piwik\DbHelper;
|
17 |
+
use Piwik\Plugin\ReleaseChannels;
|
18 |
+
use Piwik\Updater;
|
19 |
+
use Piwik\Updates as PiwikUpdates;
|
20 |
+
use Piwik\Updater\Migration\Factory as MigrationFactory;
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Update for version 4.0.0-rc4.
|
24 |
+
*/
|
25 |
+
class Updates_4_0_0_rc4 extends PiwikUpdates
|
26 |
+
{
|
27 |
+
/**
|
28 |
+
* @var MigrationFactory
|
29 |
+
*/
|
30 |
+
private $migration;
|
31 |
+
|
32 |
+
public function __construct(MigrationFactory $factory)
|
33 |
+
{
|
34 |
+
$this->migration = $factory;
|
35 |
+
}
|
36 |
+
|
37 |
+
public function getMigrations(Updater $updater)
|
38 |
+
{
|
39 |
+
$migrations = [];
|
40 |
+
|
41 |
+
$migrations[] = $this->migration->plugin->deactivate('ExampleTheme');
|
42 |
+
|
43 |
+
$channel = StaticContainer::get(ReleaseChannels::class)->getActiveReleaseChannel()->getId();
|
44 |
+
$isBeta = stripos($channel, 'beta') !== false;
|
45 |
+
|
46 |
+
if ($isBeta) {
|
47 |
+
$dates = ['2020-01-01', '2020-11-01', '2020-10-01'];
|
48 |
+
foreach ($dates as $date) {
|
49 |
+
$date = Date::factory($date);
|
50 |
+
$numericTable = ArchiveTableCreator::getBlobTable($date);
|
51 |
+
$blobTable = ArchiveTableCreator::getNumericTable($date);
|
52 |
+
|
53 |
+
if (DbHelper::tableExists($blobTable) && DbHelper::tableExists($numericTable)) {
|
54 |
+
$migrations[] = $this->migration->db->sql(
|
55 |
+
"DELETE FROM `$blobTable` WHERE idarchive NOT IN (SELECT idarchive FROM `$numericTable`)", []);
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
return $migrations;
|
61 |
+
}
|
62 |
+
|
63 |
+
public function doUpdate(Updater $updater)
|
64 |
+
{
|
65 |
+
$updater->executeMigrations(__FILE__, $this->getMigrations($updater));
|
66 |
+
}
|
67 |
+
|
68 |
+
}
|
app/core/Updates/4.0.1-b1.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Matomo - free/libre analytics platform
|
4 |
+
*
|
5 |
+
* @link https://matomo.org
|
6 |
+
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
7 |
+
*
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace Piwik\Updates;
|
11 |
+
|
12 |
+
use Piwik\Common;
|
13 |
+
use Piwik\Config;
|
14 |
+
use Piwik\Container\StaticContainer;
|
15 |
+
use Piwik\DataAccess\ArchiveTableCreator;
|
16 |
+
use Piwik\Date;
|
17 |
+
use Piwik\DbHelper;
|
18 |
+
use Piwik\Plugin\ReleaseChannels;
|
19 |
+
use Piwik\SettingsPiwik;
|
20 |
+
use Piwik\Updater;
|
21 |
+
use Piwik\Updates as PiwikUpdates;
|
22 |
+
use Piwik\Updater\Migration\Factory as MigrationFactory;
|
23 |
+
|
24 |
+
class Updates_4_0_1_b1 extends PiwikUpdates
|
25 |
+
{
|
26 |
+
/**
|
27 |
+
* @var MigrationFactory
|
28 |
+
*/
|
29 |
+
private $migration;
|
30 |
+
|
31 |
+
public function __construct(MigrationFactory $factory)
|
32 |
+
{
|
33 |
+
$this->migration = $factory;
|
34 |
+
}
|
35 |
+
|
36 |
+
public function getMigrations(Updater $updater)
|
37 |
+
{
|
38 |
+
$migrations = [];
|
39 |
+
|
40 |
+
$table = Common::prefixTable('user_token_auth');
|
41 |
+
$migrations[] = $this->migration->db->sql('UPDATE ' . $table . ' SET hash_algo = "sha512" where hash_algo is null or hash_algo = "" ');
|
42 |
+
|
43 |
+
if (SettingsPiwik::isGitDeployment()) {
|
44 |
+
return $migrations;
|
45 |
+
}
|
46 |
+
|
47 |
+
$migrations[] = $this->migration->plugin->uninstall('ExampleTheme');
|
48 |
+
return $migrations;
|
49 |
+
}
|
50 |
+
|
51 |
+
public function doUpdate(Updater $updater)
|
52 |
+
{
|
53 |
+
$updater->executeMigrations(__FILE__, $this->getMigrations($updater));
|
54 |
+
}
|
55 |
+
|
56 |
+
}
|
app/core/Updates/4.0.4-b1.php
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Matomo - free/libre analytics platform
|
4 |
+
*
|
5 |
+
* @link https://matomo.org
|
6 |
+
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
7 |
+
*
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace Piwik\Updates;
|
11 |
+
|
12 |
+
use Piwik\SettingsPiwik;
|
13 |
+
use Piwik\Updater;
|
14 |
+
use Piwik\Updates as PiwikUpdates;
|
15 |
+
use Piwik\Updater\Migration\Factory as MigrationFactory;
|
16 |
+
|
17 |
+
class Updates_4_0_4_b1 extends PiwikUpdates
|
18 |
+
{
|
19 |
+
/**
|
20 |
+
* @var MigrationFactory
|
21 |
+
*/
|
22 |
+
private $migration;
|
23 |
+
|
24 |
+
public function __construct(MigrationFactory $factory)
|
25 |
+
{
|
26 |
+
$this->migration = $factory;
|
27 |
+
}
|
28 |
+
|
29 |
+
public function getMigrations(Updater $updater)
|
30 |
+
{
|
31 |
+
$migrations = [];
|
32 |
+
|
33 |
+
if (SettingsPiwik::isGitDeployment()) {
|
34 |
+
return $migrations;
|
35 |
+
}
|
36 |
+
|
37 |
+
$migrations[] = $this->migration->plugin->deactivate('ExamplePlugin');
|
38 |
+
$migrations[] = $this->migration->plugin->deactivate('ExampleLogTables');
|
39 |
+
$migrations[] = $this->migration->plugin->deactivate('ExampleUI');
|
40 |
+
$migrations[] = $this->migration->plugin->deactivate('ExampleReport');
|
41 |
+
$migrations[] = $this->migration->plugin->deactivate('ExampleAPI');
|
42 |
+
$migrations[] = $this->migration->plugin->deactivate('ExampleCommand');
|
43 |
+
$migrations[] = $this->migration->plugin->deactivate('ExampleSettingsPlugin');
|
44 |
+
$migrations[] = $this->migration->plugin->deactivate('ExampleTracker');
|
45 |
+
$migrations[] = $this->migration->plugin->deactivate('ExampleVisualization');
|
46 |
+
|
47 |
+
$migrations[] = $this->migration->plugin->uninstall('ExamplePlugin');
|
48 |
+
$migrations[] = $this->migration->plugin->uninstall('ExampleLogTables');
|
49 |
+
$migrations[] = $this->migration->plugin->uninstall('ExampleUI');
|
50 |
+
$migrations[] = $this->migration->plugin->uninstall('ExampleReport');
|
51 |
+
$migrations[] = $this->migration->plugin->uninstall('ExampleAPI');
|
52 |
+
$migrations[] = $this->migration->plugin->uninstall('ExampleCommand');
|
53 |
+
$migrations[] = $this->migration->plugin->uninstall('ExampleSettingsPlugin');
|
54 |
+
$migrations[] = $this->migration->plugin->uninstall('ExampleTracker');
|
55 |
+
$migrations[] = $this->migration->plugin->uninstall('ExampleVisualization');
|
56 |
+
return $migrations;
|
57 |
+
}
|
58 |
+
|
59 |
+
public function doUpdate(Updater $updater)
|
60 |
+
{
|
61 |
+
$updater->executeMigrations(__FILE__, $this->getMigrations($updater));
|
62 |
+
}
|
63 |
+
|
64 |
+
}
|
app/core/Url.php
CHANGED
@@ -208,14 +208,10 @@ class Url
|
|
208 |
}
|
209 |
|
210 |
if ($host === false) {
|
211 |
-
$host = self::
|
212 |
if (empty($host)) {
|
213 |
-
//
|
214 |
-
|
215 |
-
if (empty($host)) {
|
216 |
-
// if no current host, assume valid
|
217 |
-
return true;
|
218 |
-
}
|
219 |
}
|
220 |
}
|
221 |
|
@@ -301,18 +297,9 @@ class Url
|
|
301 |
*/
|
302 |
public static function getHost($checkIfTrusted = true)
|
303 |
{
|
304 |
-
|
305 |
-
// if server_name is set we don't want to look at HTTP_HOST
|
306 |
|
307 |
-
|
308 |
-
return $host;
|
309 |
-
}
|
310 |
-
} elseif (isset($_SERVER['HTTP_HOST'])
|
311 |
-
&& strlen($host = $_SERVER['HTTP_HOST'])
|
312 |
-
&& (!$checkIfTrusted
|
313 |
-
|| self::isValidHost($host))
|
314 |
-
) {
|
315 |
-
// HTTP/1.1 request
|
316 |
return $host;
|
317 |
}
|
318 |
|
@@ -324,6 +311,26 @@ class Url
|
|
324 |
return false;
|
325 |
}
|
326 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
327 |
/**
|
328 |
* Sets the host. Useful for CLI scripts, eg. core:archive command
|
329 |
*
|
208 |
}
|
209 |
|
210 |
if ($host === false) {
|
211 |
+
$host = self::getHostFromServerVariable();
|
212 |
if (empty($host)) {
|
213 |
+
// if no current host, assume valid
|
214 |
+
return true;
|
|
|
|
|
|
|
|
|
215 |
}
|
216 |
}
|
217 |
|
297 |
*/
|
298 |
public static function getHost($checkIfTrusted = true)
|
299 |
{
|
300 |
+
$host = self::getHostFromServerVariable();
|
|
|
301 |
|
302 |
+
if (strlen($host) && (!$checkIfTrusted || self::isValidHost($host))) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
303 |
return $host;
|
304 |
}
|
305 |
|
311 |
return false;
|
312 |
}
|
313 |
|
314 |
+
protected static function getHostFromServerVariable()
|
315 |
+
{
|
316 |
+
try {
|
317 |
+
// this fails when trying to get the hostname before the config was initialized
|
318 |
+
// e.g. for loading the domain specific configuration file
|
319 |
+
// in such a case we always use HTTP_HOST
|
320 |
+
$preferServerName = Config::getInstance()->General['host_validation_use_server_name'];
|
321 |
+
} catch (\Exception $e) {
|
322 |
+
$preferServerName = false;
|
323 |
+
}
|
324 |
+
|
325 |
+
if ($preferServerName && strlen($host = self::getHostFromServerNameVar())) {
|
326 |
+
return $host;
|
327 |
+
} elseif (isset($_SERVER['HTTP_HOST']) && strlen($host = $_SERVER['HTTP_HOST'])) {
|
328 |
+
return $host;
|
329 |
+
}
|
330 |
+
|
331 |
+
return false;
|
332 |
+
}
|
333 |
+
|
334 |
/**
|
335 |
* Sets the host. Useful for CLI scripts, eg. core:archive command
|
336 |
*
|
app/core/Version.php
CHANGED
@@ -20,7 +20,7 @@ final class Version
|
|
20 |
* The current Matomo version.
|
21 |
* @var string
|
22 |
*/
|
23 |
-
const VERSION = '4.0.
|
24 |
const MAJOR_VERSION = 4;
|
25 |
|
26 |
public function isStableVersion($version)
|
20 |
* The current Matomo version.
|
21 |
* @var string
|
22 |
*/
|
23 |
+
const VERSION = '4.0.5';
|
24 |
const MAJOR_VERSION = 4;
|
25 |
|
26 |
public function isStableVersion($version)
|
app/lang/de.json
CHANGED
@@ -638,13 +638,13 @@
|
|
638 |
"ColumnClicks": "Klicks",
|
639 |
"ColumnClicksDocumentation": "Anzahl der Klicks auf diesen Link.",
|
640 |
"ColumnDownloadURL": "Download-URL",
|
641 |
-
"ColumnDownloadURLs": "
|
642 |
"ColumnEntryPageTitle": "Titel der Einstiegsseite",
|
643 |
"ColumnEntryPageURL": "URL der Einstiegsseite",
|
644 |
-
"ColumnEntryPageURLs": "Einstiegsseiten
|
645 |
"ColumnExitPageTitle": "Titel der Ausstiegsseite",
|
646 |
"ColumnExitPageURL": "URL der Ausstiegsseite",
|
647 |
-
"ColumnExitPageURLs": "Ausgangsseiten
|
648 |
"ColumnNoResultKeyword": "Suchbegriff ohne Ergebnisse",
|
649 |
"ColumnPageName": "Seitenname",
|
650 |
"ColumnPagesPerSearch": "Besuchte Ergebnisseiten",
|
638 |
"ColumnClicks": "Klicks",
|
639 |
"ColumnClicksDocumentation": "Anzahl der Klicks auf diesen Link.",
|
640 |
"ColumnDownloadURL": "Download-URL",
|
641 |
+
"ColumnDownloadURLs": "Download-URLs",
|
642 |
"ColumnEntryPageTitle": "Titel der Einstiegsseite",
|
643 |
"ColumnEntryPageURL": "URL der Einstiegsseite",
|
644 |
+
"ColumnEntryPageURLs": "Einstiegsseiten-URLs",
|
645 |
"ColumnExitPageTitle": "Titel der Ausstiegsseite",
|
646 |
"ColumnExitPageURL": "URL der Ausstiegsseite",
|
647 |
+
"ColumnExitPageURLs": "Ausgangsseiten URLs",
|
648 |
"ColumnNoResultKeyword": "Suchbegriff ohne Ergebnisse",
|
649 |
"ColumnPageName": "Seitenname",
|
650 |
"ColumnPagesPerSearch": "Besuchte Ergebnisseiten",
|
app/lang/en.json
CHANGED
@@ -1349,6 +1349,7 @@
|
|
1349 |
"GenericDevice": "Generic %s",
|
1350 |
"MobileDevice": "Mobile device",
|
1351 |
"Tablet": "Tablet",
|
|
|
1352 |
"Phablet": "Phablet",
|
1353 |
"TV": "Tv",
|
1354 |
"UserAgent": "User-Agent",
|
1349 |
"GenericDevice": "Generic %s",
|
1350 |
"MobileDevice": "Mobile device",
|
1351 |
"Tablet": "Tablet",
|
1352 |
+
"Peripheral": "Peripheral",
|
1353 |
"Phablet": "Phablet",
|
1354 |
"TV": "Tv",
|
1355 |
"UserAgent": "User-Agent",
|
app/lang/zh-tw.json
CHANGED
@@ -191,9 +191,9 @@
|
|
191 |
"ExceptionLanguageFileNotFound": "找不到語系檔案「%s」。",
|
192 |
"ExceptionMethodNotFound": "方法「%1$s」不存在或不適用於模組「%2$s」。",
|
193 |
"ExceptionMissingFile": "檔案遺失:%s",
|
194 |
-
"ExceptionUnexpectedFile": "
|
195 |
"ExceptionUnexpectedFilePleaseDelete": "請刪除這些檔案來防止錯誤。",
|
196 |
-
"ExceptionUnexpectedDirectory": "
|
197 |
"ExceptionUnexpectedDirectoryPleaseDelete": "請刪除這些資料夾來防止錯誤。",
|
198 |
"ExceptionFileToDelete": "要刪除的檔案:%s",
|
199 |
"ExceptionDirectoryToDelete": "要刪除的資料夾:%s",
|
@@ -622,7 +622,7 @@
|
|
622 |
"ReportingApiReference": "報表 API 參考資料",
|
623 |
"TopLinkTooltip": "透過簡單的 API 來取得 json、xml 等格式的網頁分析資料。",
|
624 |
"UserAuthentication": "使用者驗證",
|
625 |
-
"UsingTokenAuth": "如果你想%1$s經由程式碼或工作排程來請求資料。%2$s
|
626 |
"Glossary": "詞彙表",
|
627 |
"LearnAboutCommonlyUsedTerms2": "瞭解更多最常使用的術語,讓 Matomo 分析發揮至極。",
|
628 |
"EvolutionMetricName": "%s發展趨勢"
|
@@ -776,7 +776,7 @@
|
|
776 |
"HttpTrackingApiDescription": "%1$sHTTP 追蹤 API%2$s 允許你追蹤任何事物。當你在使用尚無 SDK 可用的程式語言時這將會很實用。或是你想要以特別方式來追蹤裝置或應用程式時也很實用。",
|
777 |
"JSTracking_CampaignKwdParam": "活動關鍵字參數",
|
778 |
"JSTracking_CampaignNameParam": "活動名稱參數",
|
779 |
-
"JSTracking_CodeNoteBeforeClosingHead": "
|
780 |
"JSTracking_CodeNoteBeforeClosingHeadEmail": "確定這段程式碼放在你的網站上的每一個網頁。我們推薦將它貼在 head 標籤結束前。",
|
781 |
"JSTracking_CustomCampaignQueryParam": "活動名稱及關鍵字使用自訂參數",
|
782 |
"JSTracking_CrossDomain": "用來辨識獨立訪客的訪客 ID 預設被儲存在瀏覽器的第一方 Cookies 中,只能被相同域名的網頁存取。啟用跨域名連結讓你可以追蹤特定訪客的在同次訪問,甚至是在瀏覽不同域名的網頁中的活動及頁面訪問。當使用者點擊了你網站的任一別名網址,將會在網址後方加上 pk_vid 參數傳遞訪客 ID。",
|
@@ -800,10 +800,10 @@
|
|
800 |
"JSTracking_VisitorCustomVars": "為此訪客追蹤自訂變數",
|
801 |
"JSTracking_VisitorCustomVarsDesc": "例如變數名稱為「類型」,值為「顧客」。",
|
802 |
"JSTracking_EndNote": "注意:你可以在管理中心的%1$s追蹤程式碼%2$s頁面中產生自訂的追蹤程式碼。",
|
803 |
-
"JSTrackingIntro1": "你可以透過多種不同的方式追蹤你的網站訪客。推薦使用 JavaScript
|
804 |
"JSTrackingIntro2": "當你有了網站的 JavaScript 追蹤程式碼,請複製並貼上到所有你想透過 Matomo 追蹤的頁面上。",
|
805 |
"JSTrackingIntro3a": "在大多數的網站、部落格、後台管理系統...等內,你可以使用預置的外掛來幫你做技術性的工作。(查看%1$s用來整合 Matomo 的外掛列表%2$s。)",
|
806 |
-
"JSTrackingIntro3b": "
|
807 |
"JSTrackingIntro4": "如果你不想透過 JavaScript 來追蹤訪客,%1$s在下方產生圖片追蹤連結%2$s。",
|
808 |
"JSTrackingIntro5": "如果你不只是想追蹤網頁訪問,可以查看%1$sMatomo Javascript 追蹤說明文件%2$s中的功能列表。可以透過這功能來追蹤目標、自訂變數、電子商務訂單、遺棄的購物車等等。",
|
809 |
"LogoNotWriteableInstruction": "要使用你的自訂標誌取代 Matomo 預設標誌,請給予此資料夾寫入權限:%1$s Matomo 需要寫入權限才能將你的標誌儲存為檔案 %2$s。",
|
@@ -1137,7 +1137,7 @@
|
|
1137 |
"PiwikWillBeUpgradedFromVersionXToVersionY": "Matomo 資料庫將從版本 %1$s 升級至新版本 %2$s 。",
|
1138 |
"ReadyToGo": "準備好了嗎?",
|
1139 |
"TheFollowingPluginsWillBeUpgradedX": "以下外掛將被更新:%s 。",
|
1140 |
-
"TheFollowingDimensionsWillBeUpgradedX": "
|
1141 |
"ThereIsNewPluginVersionAvailableForUpdate": "有些你使用外掛在市集上已經有新版本:",
|
1142 |
"ThereIsNewVersionAvailableForUpdate": "已有新版的 Matomo 可以更新",
|
1143 |
"TheUpgradeProcessMayFailExecuteCommand": "如果你有較大型的 Matomo 資料庫,在瀏覽器上更新可能需要花費較長的時間。在這個情況下,你可以透過執行以下指令來更新:%s",
|
@@ -1449,7 +1449,7 @@
|
|
1449 |
"ProfessionalServicesDedicatedSupport": "每一步都有專任的 Matomo 團隊成員幫助你。",
|
1450 |
"ProfessionalServicesOnboarding": "問卷培訓,並與 Matomo 專員會議。",
|
1451 |
"ProfessionalServicesSupport": "全年無休線上客服",
|
1452 |
-
"ProfessionalServicesTraining": "
|
1453 |
"ProfessionalServicesEmailAlerts": "Matomo 安全更新的 Email 通知",
|
1454 |
"ContactUs": "聯絡我們",
|
1455 |
"VisitTheForums": "訪問%1$s論壇%2$s從社區中的 Matomo 使用者中取得協助。",
|
@@ -1754,7 +1754,7 @@
|
|
1754 |
"SystemCheckIconvHelp": "你需要設定及重建 PHP,然後啟用 iconv 支援,--with-iconv。",
|
1755 |
"SystemCheckMailHelp": "意見回饋及忘記密碼的訊息若沒有 mail() 將無法寄送。",
|
1756 |
"SystemCheckMbstring": "mbstring",
|
1757 |
-
"SystemCheckMbstringHelp": "處理多字節的使用者介面或 API 回應資料必須使用 mbstring 擴充功能。並請檢查 php.ini 中的 mbstring.func_overload
|
1758 |
"SystemCheckMemoryLimit": "記憶體限制",
|
1759 |
"SystemCheckMemoryLimitHelp": "在一個高流量的網站,資料彙整處理過程可能超過目前所允許使用的記憶體量。<br \/>如果必要,試著變更在你 php.ini 檔案裡的 memory_limit。",
|
1760 |
"SystemCheckNoErrorsOrWarnings": "沒有錯誤或警告",
|
@@ -1808,7 +1808,7 @@
|
|
1808 |
"WelcomeToCommunity": "歡迎來到 Matomo 社區!",
|
1809 |
"CannotConnectToDb": "無法連接資料庫",
|
1810 |
"CannotConnectToDbResolvingExplanation": "這可能是暫時性的問題,試試%1$s重新整理頁面%2$s。如果問題持續發生請聯絡你的 Matomo 管理員。",
|
1811 |
-
"EmailPrivacyNotice": "你的 Email 將只用於向你寄送電子報,為此我們需要分享你的 Email 給第三方供應商。此供應商目前是 Mad Mimi,但是未來有可能變更。我們不會透漏你的 Email 給其他人,或將你的 Email
|
1812 |
},
|
1813 |
"Intl": {
|
1814 |
"Continent_afr": "非洲",
|
@@ -3816,7 +3816,7 @@
|
|
3816 |
"EnterUsernameOrEmail": "輸入使用者名稱或 Email",
|
3817 |
"ExceptionAccessValues": "參數存取必須包含其中一個值:[ %1$s ],目前僅有「%2$s」。",
|
3818 |
"ExceptionMultipleRoleSet": "只能設定一個角色,但是已被設定多個。使用其中之一:%s",
|
3819 |
-
"ExceptionAnonymousNoCapabilities": "
|
3820 |
"ExceptionAnonymousAccessNotPossible": "你只能給匿名使用者設定 %1$s 或 %2$s 存取權限。",
|
3821 |
"ExceptionDeleteDoesNotExist": "使用者「%s」不存在,所以無法刪除它。",
|
3822 |
"ExceptionDeleteOnlyUserWithSuperUserAccess": "無法刪除使用者「%s」",
|
191 |
"ExceptionLanguageFileNotFound": "找不到語系檔案「%s」。",
|
192 |
"ExceptionMethodNotFound": "方法「%1$s」不存在或不適用於模組「%2$s」。",
|
193 |
"ExceptionMissingFile": "檔案遺失:%s",
|
194 |
+
"ExceptionUnexpectedFile": "已在你的 Matomo 中找到的檔案,但並不在我們預料中。",
|
195 |
"ExceptionUnexpectedFilePleaseDelete": "請刪除這些檔案來防止錯誤。",
|
196 |
+
"ExceptionUnexpectedDirectory": "已在你的 Matomo 中找到的資料夾,但並不在我們預料中。",
|
197 |
"ExceptionUnexpectedDirectoryPleaseDelete": "請刪除這些資料夾來防止錯誤。",
|
198 |
"ExceptionFileToDelete": "要刪除的檔案:%s",
|
199 |
"ExceptionDirectoryToDelete": "要刪除的資料夾:%s",
|
622 |
"ReportingApiReference": "報表 API 參考資料",
|
623 |
"TopLinkTooltip": "透過簡單的 API 來取得 json、xml 等格式的網頁分析資料。",
|
624 |
"UserAuthentication": "使用者驗證",
|
625 |
+
"UsingTokenAuth": "如果你想%1$s經由程式碼或工作排程來請求資料。%2$s你需要增加 URL 參數 %3$s 至 API 呼叫網址來進行驗證。",
|
626 |
"Glossary": "詞彙表",
|
627 |
"LearnAboutCommonlyUsedTerms2": "瞭解更多最常使用的術語,讓 Matomo 分析發揮至極。",
|
628 |
"EvolutionMetricName": "%s發展趨勢"
|
776 |
"HttpTrackingApiDescription": "%1$sHTTP 追蹤 API%2$s 允許你追蹤任何事物。當你在使用尚無 SDK 可用的程式語言時這將會很實用。或是你想要以特別方式來追蹤裝置或應用程式時也很實用。",
|
777 |
"JSTracking_CampaignKwdParam": "活動關鍵字參數",
|
778 |
"JSTracking_CampaignNameParam": "活動名稱參數",
|
779 |
+
"JSTracking_CodeNoteBeforeClosingHead": "確定這段程式碼放在你網站內的每一個網頁中。我們推薦將它貼在 %1$s 結束標籤前。",
|
780 |
"JSTracking_CodeNoteBeforeClosingHeadEmail": "確定這段程式碼放在你的網站上的每一個網頁。我們推薦將它貼在 head 標籤結束前。",
|
781 |
"JSTracking_CustomCampaignQueryParam": "活動名稱及關鍵字使用自訂參數",
|
782 |
"JSTracking_CrossDomain": "用來辨識獨立訪客的訪客 ID 預設被儲存在瀏覽器的第一方 Cookies 中,只能被相同域名的網頁存取。啟用跨域名連結讓你可以追蹤特定訪客的在同次訪問,甚至是在瀏覽不同域名的網頁中的活動及頁面訪問。當使用者點擊了你網站的任一別名網址,將會在網址後方加上 pk_vid 參數傳遞訪客 ID。",
|
800 |
"JSTracking_VisitorCustomVars": "為此訪客追蹤自訂變數",
|
801 |
"JSTracking_VisitorCustomVarsDesc": "例如變數名稱為「類型」,值為「顧客」。",
|
802 |
"JSTracking_EndNote": "注意:你可以在管理中心的%1$s追蹤程式碼%2$s頁面中產生自訂的追蹤程式碼。",
|
803 |
+
"JSTrackingIntro1": "你可以透過多種不同的方式追蹤你的網站訪客。推薦使用 JavaScript 的追蹤方式。要使用此方法,你必須先確定你的網站中的每一頁都有一樣的 JavaScript 程式碼,你可以在這裡產生。",
|
804 |
"JSTrackingIntro2": "當你有了網站的 JavaScript 追蹤程式碼,請複製並貼上到所有你想透過 Matomo 追蹤的頁面上。",
|
805 |
"JSTrackingIntro3a": "在大多數的網站、部落格、後台管理系統...等內,你可以使用預置的外掛來幫你做技術性的工作。(查看%1$s用來整合 Matomo 的外掛列表%2$s。)",
|
806 |
+
"JSTrackingIntro3b": "如果沒有看到你想要的外掛,你可以直接編輯你的網站模板,並將 JavaScript 追蹤程式碼增加到 <\/head> 標籤內,通常出現在「header.php」、「header.tpl」等類似的模板檔案中。",
|
807 |
"JSTrackingIntro4": "如果你不想透過 JavaScript 來追蹤訪客,%1$s在下方產生圖片追蹤連結%2$s。",
|
808 |
"JSTrackingIntro5": "如果你不只是想追蹤網頁訪問,可以查看%1$sMatomo Javascript 追蹤說明文件%2$s中的功能列表。可以透過這功能來追蹤目標、自訂變數、電子商務訂單、遺棄的購物車等等。",
|
809 |
"LogoNotWriteableInstruction": "要使用你的自訂標誌取代 Matomo 預設標誌,請給予此資料夾寫入權限:%1$s Matomo 需要寫入權限才能將你的標誌儲存為檔案 %2$s。",
|
1137 |
"PiwikWillBeUpgradedFromVersionXToVersionY": "Matomo 資料庫將從版本 %1$s 升級至新版本 %2$s 。",
|
1138 |
"ReadyToGo": "準備好了嗎?",
|
1139 |
"TheFollowingPluginsWillBeUpgradedX": "以下外掛將被更新:%s 。",
|
1140 |
+
"TheFollowingDimensionsWillBeUpgradedX": "以下的資料表將被更新:%s。",
|
1141 |
"ThereIsNewPluginVersionAvailableForUpdate": "有些你使用外掛在市集上已經有新版本:",
|
1142 |
"ThereIsNewVersionAvailableForUpdate": "已有新版的 Matomo 可以更新",
|
1143 |
"TheUpgradeProcessMayFailExecuteCommand": "如果你有較大型的 Matomo 資料庫,在瀏覽器上更新可能需要花費較長的時間。在這個情況下,你可以透過執行以下指令來更新:%s",
|
1449 |
"ProfessionalServicesDedicatedSupport": "每一步都有專任的 Matomo 團隊成員幫助你。",
|
1450 |
"ProfessionalServicesOnboarding": "問卷培訓,並與 Matomo 專員會議。",
|
1451 |
"ProfessionalServicesSupport": "全年無休線上客服",
|
1452 |
+
"ProfessionalServicesTraining": "可觀看 Matomo 獨家教學影片",
|
1453 |
"ProfessionalServicesEmailAlerts": "Matomo 安全更新的 Email 通知",
|
1454 |
"ContactUs": "聯絡我們",
|
1455 |
"VisitTheForums": "訪問%1$s論壇%2$s從社區中的 Matomo 使用者中取得協助。",
|
1754 |
"SystemCheckIconvHelp": "你需要設定及重建 PHP,然後啟用 iconv 支援,--with-iconv。",
|
1755 |
"SystemCheckMailHelp": "意見回饋及忘記密碼的訊息若沒有 mail() 將無法寄送。",
|
1756 |
"SystemCheckMbstring": "mbstring",
|
1757 |
+
"SystemCheckMbstringHelp": "處理多字節的使用者介面或 API 回應資料必須使用 mbstring 擴充功能。並請檢查 php.ini 中的 mbstring.func_overload 已將值設定為「0」。",
|
1758 |
"SystemCheckMemoryLimit": "記憶體限制",
|
1759 |
"SystemCheckMemoryLimitHelp": "在一個高流量的網站,資料彙整處理過程可能超過目前所允許使用的記憶體量。<br \/>如果必要,試著變更在你 php.ini 檔案裡的 memory_limit。",
|
1760 |
"SystemCheckNoErrorsOrWarnings": "沒有錯誤或警告",
|
1808 |
"WelcomeToCommunity": "歡迎來到 Matomo 社區!",
|
1809 |
"CannotConnectToDb": "無法連接資料庫",
|
1810 |
"CannotConnectToDbResolvingExplanation": "這可能是暫時性的問題,試試%1$s重新整理頁面%2$s。如果問題持續發生請聯絡你的 Matomo 管理員。",
|
1811 |
+
"EmailPrivacyNotice": "你的 Email 將只用於向你寄送電子報,為此我們需要分享你的 Email 給第三方供應商。此供應商目前是 Mad Mimi,但是未來有可能變更。我們不會透漏你的 Email 給其他人,或將你的 Email 用於電子報以外的其他用途。你隨時可以取消訂閱。參考我們的%1$s隱私權政策%2$s以取得更多資訊。"
|
1812 |
},
|
1813 |
"Intl": {
|
1814 |
"Continent_afr": "非洲",
|
3816 |
"EnterUsernameOrEmail": "輸入使用者名稱或 Email",
|
3817 |
"ExceptionAccessValues": "參數存取必須包含其中一個值:[ %1$s ],目前僅有「%2$s」。",
|
3818 |
"ExceptionMultipleRoleSet": "只能設定一個角色,但是已被設定多個。使用其中之一:%s",
|
3819 |
+
"ExceptionAnonymousNoCapabilities": "你不能給匿名使用者任何權限。",
|
3820 |
"ExceptionAnonymousAccessNotPossible": "你只能給匿名使用者設定 %1$s 或 %2$s 存取權限。",
|
3821 |
"ExceptionDeleteDoesNotExist": "使用者「%s」不存在,所以無法刪除它。",
|
3822 |
"ExceptionDeleteOnlyUserWithSuperUserAccess": "無法刪除使用者「%s」",
|
app/plugins/DevicesDetection/functions.php
CHANGED
@@ -178,6 +178,7 @@ function getDeviceTypeLabel($label)
|
|
178 |
'portable media player' => 'DevicesDetection_PortableMediaPlayer',
|
179 |
'smart speaker' => 'DevicesDetection_SmartSpeaker',
|
180 |
'wearable' => 'DevicesDetection_Wearable',
|
|
|
181 |
);
|
182 |
|
183 |
$deviceTypes = DeviceParser::getAvailableDeviceTypes();
|
178 |
'portable media player' => 'DevicesDetection_PortableMediaPlayer',
|
179 |
'smart speaker' => 'DevicesDetection_SmartSpeaker',
|
180 |
'wearable' => 'DevicesDetection_Wearable',
|
181 |
+
'peripheral' => 'DevicesDetection_Peripheral',
|
182 |
);
|
183 |
|
184 |
$deviceTypes = DeviceParser::getAvailableDeviceTypes();
|
app/plugins/Morpheus/icons/dist/devices/peripheral.png
ADDED
Binary file
|
app/plugins/PagePerformance/Tracker/PerformanceDataProcessor.php
CHANGED
@@ -47,13 +47,6 @@ class PerformanceDataProcessor extends RequestProcessor
|
|
47 |
return;
|
48 |
}
|
49 |
|
50 |
-
$idLinkVa = $this->getPageViewId($idVisit, $pageViewId);
|
51 |
-
|
52 |
-
// ignore requests
|
53 |
-
if (empty($idLinkVa)) {
|
54 |
-
return;
|
55 |
-
}
|
56 |
-
|
57 |
/** @var ActionDimension[] $performanceDimensions */
|
58 |
$performanceDimensions = [
|
59 |
new TimeNetwork(),
|
@@ -77,6 +70,13 @@ class PerformanceDataProcessor extends RequestProcessor
|
|
77 |
return; // no values to update given with the request
|
78 |
}
|
79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
Log::info('Updating page performance metrics of page view with id ' . $pageViewId);
|
81 |
|
82 |
$model = new Model();
|
47 |
return;
|
48 |
}
|
49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
/** @var ActionDimension[] $performanceDimensions */
|
51 |
$performanceDimensions = [
|
52 |
new TimeNetwork(),
|
70 |
return; // no values to update given with the request
|
71 |
}
|
72 |
|
73 |
+
$idLinkVa = $this->getPageViewId($idVisit, $pageViewId);
|
74 |
+
|
75 |
+
// ignore requests
|
76 |
+
if (empty($idLinkVa)) {
|
77 |
+
return;
|
78 |
+
}
|
79 |
+
|
80 |
Log::info('Updating page performance metrics of page view with id ' . $pageViewId);
|
81 |
|
82 |
$model = new Model();
|
app/plugins/ScheduledReports/config/tcpdf_config.php
CHANGED
@@ -53,21 +53,16 @@ if (!defined('K_TCPDF_EXTERNAL_CONFIG')) {
|
|
53 |
if (!defined('K_PATH_URL')) {
|
54 |
// Automatic calculation for the following K_PATH_URL constant
|
55 |
$k_path_url = K_PATH_MAIN; // default value for console mode
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
}
|
62 |
-
$k_path_url .= \Piwik\Url::getHostFromServerNameVar();
|
63 |
-
$k_path_url .= str_replace('\\', '/', substr(K_PATH_MAIN, (strlen($_SERVER['DOCUMENT_ROOT']) - 1)));
|
64 |
-
} elseif (isset($_SERVER['HTTP_HOST']) AND (!empty($_SERVER['HTTP_HOST']))) {
|
65 |
-
if (isset($_SERVER['HTTPS']) AND (!empty($_SERVER['HTTPS'])) AND strtolower($_SERVER['HTTPS']) != 'off') {
|
66 |
$k_path_url = 'https://';
|
67 |
} else {
|
68 |
$k_path_url = 'http://';
|
69 |
}
|
70 |
-
$k_path_url .= $
|
71 |
$k_path_url .= str_replace('\\', '/', substr(K_PATH_MAIN, (strlen($_SERVER['DOCUMENT_ROOT']) - 1)));
|
72 |
}
|
73 |
|
53 |
if (!defined('K_PATH_URL')) {
|
54 |
// Automatic calculation for the following K_PATH_URL constant
|
55 |
$k_path_url = K_PATH_MAIN; // default value for console mode
|
56 |
+
|
57 |
+
$host = \Piwik\Url::getHost(false);
|
58 |
+
|
59 |
+
if ($host) {
|
60 |
+
if (isset($_SERVER['HTTPS']) and (!empty($_SERVER['HTTPS'])) and strtolower($_SERVER['HTTPS']) != 'off') {
|
|
|
|
|
|
|
|
|
|
|
61 |
$k_path_url = 'https://';
|
62 |
} else {
|
63 |
$k_path_url = 'http://';
|
64 |
}
|
65 |
+
$k_path_url .= $host;
|
66 |
$k_path_url .= str_replace('\\', '/', substr(K_PATH_MAIN, (strlen($_SERVER['DOCUMENT_ROOT']) - 1)));
|
67 |
}
|
68 |
|
app/plugins/TagManager/Dao/TagsDao.php
CHANGED
@@ -200,13 +200,7 @@ class TagsDao extends BaseDao implements TagManagerDao
|
|
200 |
}
|
201 |
|
202 |
usort($tags, function ($tagA, $tagB) use ($tags) {
|
203 |
-
|
204 |
-
// for php5 making sure to have same sort order as on php7
|
205 |
-
$indexA = array_search($tagA, $tags);
|
206 |
-
$indexB = array_search($tagB, $tags);
|
207 |
-
return $indexA - $indexB;
|
208 |
-
}
|
209 |
-
return $tagA['priority'] > $tagB['priority'];
|
210 |
});
|
211 |
|
212 |
return $tags;
|
200 |
}
|
201 |
|
202 |
usort($tags, function ($tagA, $tagB) use ($tags) {
|
203 |
+
return strcasecmp($tagA['priority'], $tagB['priority']);
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
});
|
205 |
|
206 |
return $tags;
|
app/plugins/TagManager/Template/BaseTemplate.php
CHANGED
@@ -9,6 +9,7 @@ namespace Piwik\Plugins\TagManager\Template;
|
|
9 |
|
10 |
use JShrink\Minifier;
|
11 |
use Piwik\Common;
|
|
|
12 |
use Piwik\Development;
|
13 |
use Piwik\Piwik;
|
14 |
use Piwik\Plugins\CorePluginsAdmin\SettingsMetadata;
|
@@ -206,7 +207,9 @@ abstract class BaseTemplate
|
|
206 |
$file = $base . 'web.js';
|
207 |
$minFile = $base . 'web.min.js';
|
208 |
|
209 |
-
if (
|
|
|
|
|
210 |
// during dev mode we prefer the non-minified version for debugging purposes, but we still use
|
211 |
// the internal minifier to make sure we debug the same as a user would receive
|
212 |
$template = $this->loadTemplateFile($file);
|
9 |
|
10 |
use JShrink\Minifier;
|
11 |
use Piwik\Common;
|
12 |
+
use Piwik\Container\StaticContainer;
|
13 |
use Piwik\Development;
|
14 |
use Piwik\Piwik;
|
15 |
use Piwik\Plugins\CorePluginsAdmin\SettingsMetadata;
|
207 |
$file = $base . 'web.js';
|
208 |
$minFile = $base . 'web.min.js';
|
209 |
|
210 |
+
if (!StaticContainer::get('TagManagerJSMinificationEnabled')) {
|
211 |
+
return $this->loadTemplateFile($file); // avoid minification in test mode
|
212 |
+
} elseif (Development::isEnabled() && $this->hasTemplateFile($file)) {
|
213 |
// during dev mode we prefer the non-minified version for debugging purposes, but we still use
|
214 |
// the internal minifier to make sure we debug the same as a user would receive
|
215 |
$template = $this->loadTemplateFile($file);
|
app/plugins/TagManager/config/config.php
CHANGED
@@ -14,6 +14,7 @@ return array(
|
|
14 |
// the prefix for any container file
|
15 |
return 'container_';
|
16 |
},
|
|
|
17 |
'fileintegrity.ignore' => DI\add(array(
|
18 |
DI\get('fileintegrityIgnoreTagManager')
|
19 |
)),
|
14 |
// the prefix for any container file
|
15 |
return 'container_';
|
16 |
},
|
17 |
+
'TagManagerJSMinificationEnabled' => true,
|
18 |
'fileintegrity.ignore' => DI\add(array(
|
19 |
DI\get('fileintegrityIgnoreTagManager')
|
20 |
)),
|
app/plugins/TagManager/config/test.php
CHANGED
@@ -18,5 +18,6 @@ return array(
|
|
18 |
$stylesheets[] = 'plugins/TagManager/tests/resources/uitest-override.css';
|
19 |
}
|
20 |
})),
|
21 |
-
))
|
|
|
22 |
);
|
18 |
$stylesheets[] = 'plugins/TagManager/tests/resources/uitest-override.css';
|
19 |
}
|
20 |
})),
|
21 |
+
)),
|
22 |
+
'TagManagerJSMinificationEnabled' => false,
|
23 |
);
|
app/vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInite73d303dda4e084c9efc3d2e6d883365::getLoader();
|
app/vendor/composer/InstalledVersions.php
CHANGED
@@ -24,12 +24,12 @@ class InstalledVersions
|
|
24 |
private static $installed = array (
|
25 |
'root' =>
|
26 |
array (
|
27 |
-
'pretty_version' => '4.0.
|
28 |
-
'version' => '4.0.
|
29 |
'aliases' =>
|
30 |
array (
|
31 |
),
|
32 |
-
'reference' => '
|
33 |
'name' => 'matomo/matomo',
|
34 |
),
|
35 |
'versions' =>
|
@@ -108,12 +108,12 @@ private static $installed = array (
|
|
108 |
),
|
109 |
'matomo/device-detector' =>
|
110 |
array (
|
111 |
-
'pretty_version' => '4.0.
|
112 |
-
'version' => '4.0.
|
113 |
'aliases' =>
|
114 |
array (
|
115 |
),
|
116 |
-
'reference' => '
|
117 |
),
|
118 |
'matomo/ini' =>
|
119 |
array (
|
@@ -126,12 +126,12 @@ private static $installed = array (
|
|
126 |
),
|
127 |
'matomo/matomo' =>
|
128 |
array (
|
129 |
-
'pretty_version' => '4.0.
|
130 |
-
'version' => '4.0.
|
131 |
'aliases' =>
|
132 |
array (
|
133 |
),
|
134 |
-
'reference' => '
|
135 |
),
|
136 |
'matomo/matomo-php-tracker' =>
|
137 |
array (
|
@@ -297,7 +297,7 @@ private static $installed = array (
|
|
297 |
array (
|
298 |
'replaced' =>
|
299 |
array (
|
300 |
-
0 => '4.0.
|
301 |
),
|
302 |
),
|
303 |
'piwik/referrer-spam-blacklist' =>
|
24 |
private static $installed = array (
|
25 |
'root' =>
|
26 |
array (
|
27 |
+
'pretty_version' => '4.0.5',
|
28 |
+
'version' => '4.0.5.0',
|
29 |
'aliases' =>
|
30 |
array (
|
31 |
),
|
32 |
+
'reference' => '5f7eb3e1f655ec2aa0d0360c3f5deb89688a4344',
|
33 |
'name' => 'matomo/matomo',
|
34 |
),
|
35 |
'versions' =>
|
108 |
),
|
109 |
'matomo/device-detector' =>
|
110 |
array (
|
111 |
+
'pretty_version' => '4.0.2',
|
112 |
+
'version' => '4.0.2.0',
|
113 |
'aliases' =>
|
114 |
array (
|
115 |
),
|
116 |
+
'reference' => '20572bbf8607cfc2f91a11fc75e9a3c6592bdc7a',
|
117 |
),
|
118 |
'matomo/ini' =>
|
119 |
array (
|
126 |
),
|
127 |
'matomo/matomo' =>
|
128 |
array (
|
129 |
+
'pretty_version' => '4.0.5',
|
130 |
+
'version' => '4.0.5.0',
|
131 |
'aliases' =>
|
132 |
array (
|
133 |
),
|
134 |
+
'reference' => '5f7eb3e1f655ec2aa0d0360c3f5deb89688a4344',
|
135 |
),
|
136 |
'matomo/matomo-php-tracker' =>
|
137 |
array (
|
297 |
array (
|
298 |
'replaced' =>
|
299 |
array (
|
300 |
+
0 => '4.0.2',
|
301 |
),
|
302 |
),
|
303 |
'piwik/referrer-spam-blacklist' =>
|
app/vendor/composer/autoload_classmap.php
CHANGED
@@ -2302,6 +2302,7 @@ return array(
|
|
2302 |
'Piwik\\Plugins\\UsersManager\\tests\\Fixtures\\ManyUsers' => $baseDir . '/plugins/UsersManager/tests/Fixtures/ManyUsers.php',
|
2303 |
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\ModelTest' => $baseDir . '/plugins/UsersManager/tests/Integration/ModelTest.php',
|
2304 |
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\UserAccessFilterTest' => $baseDir . '/plugins/UsersManager/tests/Integration/UserAccessFilterTest.php',
|
|
|
2305 |
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\UsersManagerTest' => $baseDir . '/plugins/UsersManager/tests/Integration/UsersManagerTest.php',
|
2306 |
'Piwik\\Plugins\\UsersManager\\tests\\System\\ApiTest' => $baseDir . '/plugins/UsersManager/tests/System/ApiTest.php',
|
2307 |
'Piwik\\Plugins\\VisitFrequency\\API' => $baseDir . '/plugins/VisitFrequency/API.php',
|
2302 |
'Piwik\\Plugins\\UsersManager\\tests\\Fixtures\\ManyUsers' => $baseDir . '/plugins/UsersManager/tests/Fixtures/ManyUsers.php',
|
2303 |
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\ModelTest' => $baseDir . '/plugins/UsersManager/tests/Integration/ModelTest.php',
|
2304 |
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\UserAccessFilterTest' => $baseDir . '/plugins/UsersManager/tests/Integration/UserAccessFilterTest.php',
|
2305 |
+
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\UserPreferencesTest' => $baseDir . '/plugins/UsersManager/tests/Integration/UserPreferencesTest.php',
|
2306 |
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\UsersManagerTest' => $baseDir . '/plugins/UsersManager/tests/Integration/UsersManagerTest.php',
|
2307 |
'Piwik\\Plugins\\UsersManager\\tests\\System\\ApiTest' => $baseDir . '/plugins/UsersManager/tests/System/ApiTest.php',
|
2308 |
'Piwik\\Plugins\\VisitFrequency\\API' => $baseDir . '/plugins/VisitFrequency/API.php',
|
app/vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -22,9 +22,9 @@ class ComposerAutoloaderInit99d6ebaba5ed92b541ba43a3db60d098
|
|
22 |
return self::$loader;
|
23 |
}
|
24 |
|
25 |
-
spl_autoload_register(array('
|
26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
27 |
-
spl_autoload_unregister(array('
|
28 |
|
29 |
$includePaths = require __DIR__ . '/include_paths.php';
|
30 |
$includePaths[] = get_include_path();
|
@@ -34,7 +34,7 @@ class ComposerAutoloaderInit99d6ebaba5ed92b541ba43a3db60d098
|
|
34 |
if ($useStaticLoader) {
|
35 |
require __DIR__ . '/autoload_static.php';
|
36 |
|
37 |
-
call_user_func(\Composer\Autoload\
|
38 |
} else {
|
39 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
40 |
foreach ($map as $namespace => $path) {
|
@@ -55,19 +55,19 @@ class ComposerAutoloaderInit99d6ebaba5ed92b541ba43a3db60d098
|
|
55 |
$loader->register(false);
|
56 |
|
57 |
if ($useStaticLoader) {
|
58 |
-
$includeFiles = Composer\Autoload\
|
59 |
} else {
|
60 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
61 |
}
|
62 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
63 |
-
|
64 |
}
|
65 |
|
66 |
return $loader;
|
67 |
}
|
68 |
}
|
69 |
|
70 |
-
function
|
71 |
{
|
72 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
73 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInite73d303dda4e084c9efc3d2e6d883365
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
22 |
return self::$loader;
|
23 |
}
|
24 |
|
25 |
+
spl_autoload_register(array('ComposerAutoloaderInite73d303dda4e084c9efc3d2e6d883365', 'loadClassLoader'), true, false);
|
26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
27 |
+
spl_autoload_unregister(array('ComposerAutoloaderInite73d303dda4e084c9efc3d2e6d883365', 'loadClassLoader'));
|
28 |
|
29 |
$includePaths = require __DIR__ . '/include_paths.php';
|
30 |
$includePaths[] = get_include_path();
|
34 |
if ($useStaticLoader) {
|
35 |
require __DIR__ . '/autoload_static.php';
|
36 |
|
37 |
+
call_user_func(\Composer\Autoload\ComposerStaticInite73d303dda4e084c9efc3d2e6d883365::getInitializer($loader));
|
38 |
} else {
|
39 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
40 |
foreach ($map as $namespace => $path) {
|
55 |
$loader->register(false);
|
56 |
|
57 |
if ($useStaticLoader) {
|
58 |
+
$includeFiles = Composer\Autoload\ComposerStaticInite73d303dda4e084c9efc3d2e6d883365::$files;
|
59 |
} else {
|
60 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
61 |
}
|
62 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
63 |
+
composerRequiree73d303dda4e084c9efc3d2e6d883365($fileIdentifier, $file);
|
64 |
}
|
65 |
|
66 |
return $loader;
|
67 |
}
|
68 |
}
|
69 |
|
70 |
+
function composerRequiree73d303dda4e084c9efc3d2e6d883365($fileIdentifier, $file)
|
71 |
{
|
72 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
73 |
require $file;
|
app/vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'04c6c5c2f7095ccf6c481d3e53e1776f' => __DIR__ . '/..' . '/mustangostang/spyc/Spyc.php',
|
@@ -2549,6 +2549,7 @@ class ComposerStaticInit99d6ebaba5ed92b541ba43a3db60d098
|
|
2549 |
'Piwik\\Plugins\\UsersManager\\tests\\Fixtures\\ManyUsers' => __DIR__ . '/../..' . '/plugins/UsersManager/tests/Fixtures/ManyUsers.php',
|
2550 |
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\ModelTest' => __DIR__ . '/../..' . '/plugins/UsersManager/tests/Integration/ModelTest.php',
|
2551 |
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\UserAccessFilterTest' => __DIR__ . '/../..' . '/plugins/UsersManager/tests/Integration/UserAccessFilterTest.php',
|
|
|
2552 |
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\UsersManagerTest' => __DIR__ . '/../..' . '/plugins/UsersManager/tests/Integration/UsersManagerTest.php',
|
2553 |
'Piwik\\Plugins\\UsersManager\\tests\\System\\ApiTest' => __DIR__ . '/../..' . '/plugins/UsersManager/tests/System/ApiTest.php',
|
2554 |
'Piwik\\Plugins\\VisitFrequency\\API' => __DIR__ . '/../..' . '/plugins/VisitFrequency/API.php',
|
@@ -3190,11 +3191,11 @@ class ComposerStaticInit99d6ebaba5ed92b541ba43a3db60d098
|
|
3190 |
public static function getInitializer(ClassLoader $loader)
|
3191 |
{
|
3192 |
return \Closure::bind(function () use ($loader) {
|
3193 |
-
$loader->prefixLengthsPsr4 =
|
3194 |
-
$loader->prefixDirsPsr4 =
|
3195 |
-
$loader->prefixesPsr0 =
|
3196 |
-
$loader->fallbackDirsPsr0 =
|
3197 |
-
$loader->classMap =
|
3198 |
|
3199 |
}, null, ClassLoader::class);
|
3200 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInite73d303dda4e084c9efc3d2e6d883365
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'04c6c5c2f7095ccf6c481d3e53e1776f' => __DIR__ . '/..' . '/mustangostang/spyc/Spyc.php',
|
2549 |
'Piwik\\Plugins\\UsersManager\\tests\\Fixtures\\ManyUsers' => __DIR__ . '/../..' . '/plugins/UsersManager/tests/Fixtures/ManyUsers.php',
|
2550 |
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\ModelTest' => __DIR__ . '/../..' . '/plugins/UsersManager/tests/Integration/ModelTest.php',
|
2551 |
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\UserAccessFilterTest' => __DIR__ . '/../..' . '/plugins/UsersManager/tests/Integration/UserAccessFilterTest.php',
|
2552 |
+
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\UserPreferencesTest' => __DIR__ . '/../..' . '/plugins/UsersManager/tests/Integration/UserPreferencesTest.php',
|
2553 |
'Piwik\\Plugins\\UsersManager\\tests\\Integration\\UsersManagerTest' => __DIR__ . '/../..' . '/plugins/UsersManager/tests/Integration/UsersManagerTest.php',
|
2554 |
'Piwik\\Plugins\\UsersManager\\tests\\System\\ApiTest' => __DIR__ . '/../..' . '/plugins/UsersManager/tests/System/ApiTest.php',
|
2555 |
'Piwik\\Plugins\\VisitFrequency\\API' => __DIR__ . '/../..' . '/plugins/VisitFrequency/API.php',
|
3191 |
public static function getInitializer(ClassLoader $loader)
|
3192 |
{
|
3193 |
return \Closure::bind(function () use ($loader) {
|
3194 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInite73d303dda4e084c9efc3d2e6d883365::$prefixLengthsPsr4;
|
3195 |
+
$loader->prefixDirsPsr4 = ComposerStaticInite73d303dda4e084c9efc3d2e6d883365::$prefixDirsPsr4;
|
3196 |
+
$loader->prefixesPsr0 = ComposerStaticInite73d303dda4e084c9efc3d2e6d883365::$prefixesPsr0;
|
3197 |
+
$loader->fallbackDirsPsr0 = ComposerStaticInite73d303dda4e084c9efc3d2e6d883365::$fallbackDirsPsr0;
|
3198 |
+
$loader->classMap = ComposerStaticInite73d303dda4e084c9efc3d2e6d883365::$classMap;
|
3199 |
|
3200 |
}, null, ClassLoader::class);
|
3201 |
}
|
app/vendor/composer/installed.json
CHANGED
@@ -512,17 +512,17 @@
|
|
512 |
},
|
513 |
{
|
514 |
"name": "matomo/device-detector",
|
515 |
-
"version": "4.0.
|
516 |
-
"version_normalized": "4.0.
|
517 |
"source": {
|
518 |
"type": "git",
|
519 |
"url": "https://github.com/matomo-org/device-detector.git",
|
520 |
-
"reference": "
|
521 |
},
|
522 |
"dist": {
|
523 |
"type": "zip",
|
524 |
-
"url": "https://api.github.com/repos/matomo-org/device-detector/zipball/
|
525 |
-
"reference": "
|
526 |
"shasum": ""
|
527 |
},
|
528 |
"require": {
|
@@ -545,7 +545,7 @@
|
|
545 |
"doctrine/cache": "Can directly be used for caching purpose",
|
546 |
"ext-yaml": "Necessary for using the Pecl YAML parser"
|
547 |
},
|
548 |
-
"time": "2020-
|
549 |
"type": "library",
|
550 |
"installation-source": "dist",
|
551 |
"autoload": {
|
512 |
},
|
513 |
{
|
514 |
"name": "matomo/device-detector",
|
515 |
+
"version": "4.0.2",
|
516 |
+
"version_normalized": "4.0.2.0",
|
517 |
"source": {
|
518 |
"type": "git",
|
519 |
"url": "https://github.com/matomo-org/device-detector.git",
|
520 |
+
"reference": "20572bbf8607cfc2f91a11fc75e9a3c6592bdc7a"
|
521 |
},
|
522 |
"dist": {
|
523 |
"type": "zip",
|
524 |
+
"url": "https://api.github.com/repos/matomo-org/device-detector/zipball/20572bbf8607cfc2f91a11fc75e9a3c6592bdc7a",
|
525 |
+
"reference": "20572bbf8607cfc2f91a11fc75e9a3c6592bdc7a",
|
526 |
"shasum": ""
|
527 |
},
|
528 |
"require": {
|
545 |
"doctrine/cache": "Can directly be used for caching purpose",
|
546 |
"ext-yaml": "Necessary for using the Pecl YAML parser"
|
547 |
},
|
548 |
+
"time": "2020-12-07T09:40:38+00:00",
|
549 |
"type": "library",
|
550 |
"installation-source": "dist",
|
551 |
"autoload": {
|
app/vendor/composer/installed.php
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
<?php return array (
|
2 |
'root' =>
|
3 |
array (
|
4 |
-
'pretty_version' => '4.0.
|
5 |
-
'version' => '4.0.
|
6 |
'aliases' =>
|
7 |
array (
|
8 |
),
|
9 |
-
'reference' => '
|
10 |
'name' => 'matomo/matomo',
|
11 |
),
|
12 |
'versions' =>
|
@@ -85,12 +85,12 @@
|
|
85 |
),
|
86 |
'matomo/device-detector' =>
|
87 |
array (
|
88 |
-
'pretty_version' => '4.0.
|
89 |
-
'version' => '4.0.
|
90 |
'aliases' =>
|
91 |
array (
|
92 |
),
|
93 |
-
'reference' => '
|
94 |
),
|
95 |
'matomo/ini' =>
|
96 |
array (
|
@@ -103,12 +103,12 @@
|
|
103 |
),
|
104 |
'matomo/matomo' =>
|
105 |
array (
|
106 |
-
'pretty_version' => '4.0.
|
107 |
-
'version' => '4.0.
|
108 |
'aliases' =>
|
109 |
array (
|
110 |
),
|
111 |
-
'reference' => '
|
112 |
),
|
113 |
'matomo/matomo-php-tracker' =>
|
114 |
array (
|
@@ -274,7 +274,7 @@
|
|
274 |
array (
|
275 |
'replaced' =>
|
276 |
array (
|
277 |
-
0 => '4.0.
|
278 |
),
|
279 |
),
|
280 |
'piwik/referrer-spam-blacklist' =>
|
1 |
<?php return array (
|
2 |
'root' =>
|
3 |
array (
|
4 |
+
'pretty_version' => '4.0.5',
|
5 |
+
'version' => '4.0.5.0',
|
6 |
'aliases' =>
|
7 |
array (
|
8 |
),
|
9 |
+
'reference' => '5f7eb3e1f655ec2aa0d0360c3f5deb89688a4344',
|
10 |
'name' => 'matomo/matomo',
|
11 |
),
|
12 |
'versions' =>
|
85 |
),
|
86 |
'matomo/device-detector' =>
|
87 |
array (
|
88 |
+
'pretty_version' => '4.0.2',
|
89 |
+
'version' => '4.0.2.0',
|
90 |
'aliases' =>
|
91 |
array (
|
92 |
),
|
93 |
+
'reference' => '20572bbf8607cfc2f91a11fc75e9a3c6592bdc7a',
|
94 |
),
|
95 |
'matomo/ini' =>
|
96 |
array (
|
103 |
),
|
104 |
'matomo/matomo' =>
|
105 |
array (
|
106 |
+
'pretty_version' => '4.0.5',
|
107 |
+
'version' => '4.0.5.0',
|
108 |
'aliases' =>
|
109 |
array (
|
110 |
),
|
111 |
+
'reference' => '5f7eb3e1f655ec2aa0d0360c3f5deb89688a4344',
|
112 |
),
|
113 |
'matomo/matomo-php-tracker' =>
|
114 |
array (
|
274 |
array (
|
275 |
'replaced' =>
|
276 |
array (
|
277 |
+
0 => '4.0.2',
|
278 |
),
|
279 |
),
|
280 |
'piwik/referrer-spam-blacklist' =>
|
app/vendor/matomo/device-detector/.yamllint
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
extends: relaxed
|
2 |
+
|
3 |
+
ignore: |
|
4 |
+
vendor/**
|
5 |
+
|
6 |
+
rules:
|
7 |
+
line-length: disable
|
8 |
+
|
9 |
+
trailing-spaces:
|
10 |
+
ignore: |
|
11 |
+
Tests/**
|
app/vendor/matomo/device-detector/DeviceDetector.php
CHANGED
@@ -62,7 +62,7 @@ class DeviceDetector
|
|
62 |
/**
|
63 |
* Current version number of DeviceDetector
|
64 |
*/
|
65 |
-
public const VERSION = '4.0.
|
66 |
|
67 |
/**
|
68 |
* Constant used as value for unknown browser / os
|
62 |
/**
|
63 |
* Current version number of DeviceDetector
|
64 |
*/
|
65 |
+
public const VERSION = '4.0.2';
|
66 |
|
67 |
/**
|
68 |
* Constant used as value for unknown browser / os
|
app/vendor/matomo/device-detector/Parser/AbstractParser.php
CHANGED
@@ -289,7 +289,7 @@ abstract class AbstractParser
|
|
289 |
*
|
290 |
* Example:
|
291 |
* $versionString = 'v$2'
|
292 |
-
* $matches =
|
293 |
* return value would be v1.0.1
|
294 |
*
|
295 |
* @param string $versionString
|
289 |
*
|
290 |
* Example:
|
291 |
* $versionString = 'v$2'
|
292 |
+
* $matches = ['version_1_0_1', '1_0_1']
|
293 |
* return value would be v1.0.1
|
294 |
*
|
295 |
* @param string $versionString
|
app/vendor/matomo/device-detector/Parser/Client/Browser.php
CHANGED
@@ -69,9 +69,11 @@ class Browser extends AbstractClientParser
|
|
69 |
'BJ' => 'Bunjalloo',
|
70 |
'BL' => 'B-Line',
|
71 |
'BU' => 'Blue Browser',
|
|
|
72 |
'BR' => 'Brave',
|
73 |
'BK' => 'BriskBard',
|
74 |
'BX' => 'BrowseX',
|
|
|
75 |
'CA' => 'Camino',
|
76 |
'CL' => 'CCleaner',
|
77 |
'C0' => 'Centaury',
|
@@ -95,6 +97,7 @@ class Browser extends AbstractClientParser
|
|
95 |
'CY' => 'Cyberfox',
|
96 |
'CS' => 'Cheshire',
|
97 |
'CT' => 'Crusta',
|
|
|
98 |
'CU' => 'Cunaguaro',
|
99 |
'CV' => 'Chrome Webview',
|
100 |
'DB' => 'dbrowser',
|
@@ -130,6 +133,7 @@ class Browser extends AbstractClientParser
|
|
130 |
'FN' => 'Fireweb Navigator',
|
131 |
'FU' => 'FreeU',
|
132 |
'GA' => 'Galeon',
|
|
|
133 |
'GB' => 'Glass Browser',
|
134 |
'GE' => 'Google Earth',
|
135 |
'GO' => 'GOG Galaxy',
|
@@ -161,6 +165,7 @@ class Browser extends AbstractClientParser
|
|
161 |
'KP' => 'Kapiko',
|
162 |
'KN' => 'Kinza',
|
163 |
'KW' => 'Kiwi',
|
|
|
164 |
'KY' => 'Kylo',
|
165 |
'KZ' => 'Kazehakase',
|
166 |
'LB' => 'Cheetah Browser',
|
@@ -187,8 +192,11 @@ class Browser extends AbstractClientParser
|
|
187 |
'MN' => 'Minimo',
|
188 |
'MT' => 'Mint Browser',
|
189 |
'MX' => 'Maxthon',
|
|
|
190 |
'MY' => 'Mypal',
|
191 |
'MR' => 'Monument Browser',
|
|
|
|
|
192 |
'NB' => 'Nokia Browser',
|
193 |
'NO' => 'Nokia OSS Browser',
|
194 |
'NV' => 'Nokia Ovi Browser',
|
@@ -230,8 +238,10 @@ class Browser extends AbstractClientParser
|
|
230 |
'PW' => 'Palm WebPro',
|
231 |
'PA' => 'Palmscape',
|
232 |
'PX' => 'Phoenix',
|
|
|
233 |
'PO' => 'Polaris',
|
234 |
'PT' => 'Polarity',
|
|
|
235 |
'PS' => 'Microsoft Edge',
|
236 |
'Q1' => 'QQ Browser Mini',
|
237 |
'QQ' => 'QQ Browser',
|
@@ -256,6 +266,9 @@ class Browser extends AbstractClientParser
|
|
256 |
'SK' => 'Skyfire',
|
257 |
'SS' => 'Seraphic Sraf',
|
258 |
'SL' => 'Sleipnir',
|
|
|
|
|
|
|
259 |
'SN' => 'Snowshoe',
|
260 |
'SO' => 'Sogou Mobile Browser',
|
261 |
'S2' => 'Splash',
|
@@ -264,6 +277,7 @@ class Browser extends AbstractClientParser
|
|
264 |
'SP' => 'SuperBird',
|
265 |
'SU' => 'Super Fast Browser',
|
266 |
'S3' => 'surf',
|
|
|
267 |
'S0' => 'START Internet Browser',
|
268 |
'S4' => 'Steam In-Game Overlay',
|
269 |
'ST' => 'Streamy',
|
@@ -282,6 +296,7 @@ class Browser extends AbstractClientParser
|
|
282 |
'UC' => 'UC Browser',
|
283 |
'UM' => 'UC Browser Mini',
|
284 |
'UT' => 'UC Browser Turbo',
|
|
|
285 |
'UZ' => 'Uzbl',
|
286 |
'VI' => 'Vivaldi',
|
287 |
'VV' => 'vivo Browser',
|
@@ -298,6 +313,7 @@ class Browser extends AbstractClientParser
|
|
298 |
'YA' => 'Yandex Browser',
|
299 |
'YL' => 'Yandex Browser Lite',
|
300 |
'YN' => 'Yaani Browser',
|
|
|
301 |
'XI' => 'Xiino',
|
302 |
'XV' => 'Xvast',
|
303 |
'ZV' => 'Zvu',
|
@@ -326,14 +342,15 @@ class Browser extends AbstractClientParser
|
|
326 |
'CL', 'SU', 'EU', 'UB', 'LO', 'VG', 'TV', 'A0', '1B',
|
327 |
'S4', 'EE', 'AE', 'VM', 'O0', 'TG', 'GB', 'SY', 'HH',
|
328 |
'YJ', 'LL', 'TU', 'XV', 'C2', 'QU', 'YN', 'JB', 'MR',
|
|
|
329 |
],
|
330 |
'Firefox' => [
|
331 |
'FF', 'FE', 'FM', 'SX', 'FB', 'PX', 'MB', 'EI', 'WF',
|
332 |
'CU', 'TF', 'QM', 'FR', 'I4', 'GZ', 'MO', 'F1', 'BI',
|
333 |
'MN', 'BH', 'TO', 'OS', 'MY', 'FY', 'AX', 'C0', 'LH',
|
334 |
-
'S5', 'ZV', 'IW',
|
335 |
],
|
336 |
-
'Internet Explorer' => ['IE', 'IM', 'PS'],
|
337 |
'Konqueror' => ['KO'],
|
338 |
'NetFront' => ['NF'],
|
339 |
'NetSurf' => ['NE'],
|
@@ -349,9 +366,12 @@ class Browser extends AbstractClientParser
|
|
349 |
* @var array
|
350 |
*/
|
351 |
protected static $mobileOnlyBrowsers = [
|
352 |
-
'36', 'OC', 'PU', 'SK', 'MF', 'OI', 'OM', 'DD', 'DB',
|
353 |
-
'
|
354 |
-
'
|
|
|
|
|
|
|
355 |
];
|
356 |
|
357 |
/**
|
69 |
'BJ' => 'Bunjalloo',
|
70 |
'BL' => 'B-Line',
|
71 |
'BU' => 'Blue Browser',
|
72 |
+
'BN' => 'Borealis Navigator',
|
73 |
'BR' => 'Brave',
|
74 |
'BK' => 'BriskBard',
|
75 |
'BX' => 'BrowseX',
|
76 |
+
'BZ' => 'Browzar',
|
77 |
'CA' => 'Camino',
|
78 |
'CL' => 'CCleaner',
|
79 |
'C0' => 'Centaury',
|
97 |
'CY' => 'Cyberfox',
|
98 |
'CS' => 'Cheshire',
|
99 |
'CT' => 'Crusta',
|
100 |
+
'CZ' => 'Crazy Browser',
|
101 |
'CU' => 'Cunaguaro',
|
102 |
'CV' => 'Chrome Webview',
|
103 |
'DB' => 'dbrowser',
|
133 |
'FN' => 'Fireweb Navigator',
|
134 |
'FU' => 'FreeU',
|
135 |
'GA' => 'Galeon',
|
136 |
+
'GH' => 'Ghostery Privacy Browser',
|
137 |
'GB' => 'Glass Browser',
|
138 |
'GE' => 'Google Earth',
|
139 |
'GO' => 'GOG Galaxy',
|
165 |
'KP' => 'Kapiko',
|
166 |
'KN' => 'Kinza',
|
167 |
'KW' => 'Kiwi',
|
168 |
+
'KD' => 'Kode Browser',
|
169 |
'KY' => 'Kylo',
|
170 |
'KZ' => 'Kazehakase',
|
171 |
'LB' => 'Cheetah Browser',
|
192 |
'MN' => 'Minimo',
|
193 |
'MT' => 'Mint Browser',
|
194 |
'MX' => 'Maxthon',
|
195 |
+
'NM' => 'MxNitro',
|
196 |
'MY' => 'Mypal',
|
197 |
'MR' => 'Monument Browser',
|
198 |
+
'MW' => 'MAUI WAP Browser',
|
199 |
+
'NR' => 'NFS Browser',
|
200 |
'NB' => 'Nokia Browser',
|
201 |
'NO' => 'Nokia OSS Browser',
|
202 |
'NV' => 'Nokia Ovi Browser',
|
238 |
'PW' => 'Palm WebPro',
|
239 |
'PA' => 'Palmscape',
|
240 |
'PX' => 'Phoenix',
|
241 |
+
'PB' => 'Phoenix Browser',
|
242 |
'PO' => 'Polaris',
|
243 |
'PT' => 'Polarity',
|
244 |
+
'PI' => 'PrivacyWall',
|
245 |
'PS' => 'Microsoft Edge',
|
246 |
'Q1' => 'QQ Browser Mini',
|
247 |
'QQ' => 'QQ Browser',
|
266 |
'SK' => 'Skyfire',
|
267 |
'SS' => 'Seraphic Sraf',
|
268 |
'SL' => 'Sleipnir',
|
269 |
+
'S6' => 'Slimjet',
|
270 |
+
'7S' => '7Star',
|
271 |
+
'LE' => 'Smart Lenovo Browser',
|
272 |
'SN' => 'Snowshoe',
|
273 |
'SO' => 'Sogou Mobile Browser',
|
274 |
'S2' => 'Splash',
|
277 |
'SP' => 'SuperBird',
|
278 |
'SU' => 'Super Fast Browser',
|
279 |
'S3' => 'surf',
|
280 |
+
'SG' => 'Stargon',
|
281 |
'S0' => 'START Internet Browser',
|
282 |
'S4' => 'Steam In-Game Overlay',
|
283 |
'ST' => 'Streamy',
|
296 |
'UC' => 'UC Browser',
|
297 |
'UM' => 'UC Browser Mini',
|
298 |
'UT' => 'UC Browser Turbo',
|
299 |
+
'UR' => 'UR Browser',
|
300 |
'UZ' => 'Uzbl',
|
301 |
'VI' => 'Vivaldi',
|
302 |
'VV' => 'vivo Browser',
|
313 |
'YA' => 'Yandex Browser',
|
314 |
'YL' => 'Yandex Browser Lite',
|
315 |
'YN' => 'Yaani Browser',
|
316 |
+
'YB' => 'Yolo Browser',
|
317 |
'XI' => 'Xiino',
|
318 |
'XV' => 'Xvast',
|
319 |
'ZV' => 'Zvu',
|
342 |
'CL', 'SU', 'EU', 'UB', 'LO', 'VG', 'TV', 'A0', '1B',
|
343 |
'S4', 'EE', 'AE', 'VM', 'O0', 'TG', 'GB', 'SY', 'HH',
|
344 |
'YJ', 'LL', 'TU', 'XV', 'C2', 'QU', 'YN', 'JB', 'MR',
|
345 |
+
'S6', '7S', 'NM', 'PB', 'UR', 'NR', 'SG',
|
346 |
],
|
347 |
'Firefox' => [
|
348 |
'FF', 'FE', 'FM', 'SX', 'FB', 'PX', 'MB', 'EI', 'WF',
|
349 |
'CU', 'TF', 'QM', 'FR', 'I4', 'GZ', 'MO', 'F1', 'BI',
|
350 |
'MN', 'BH', 'TO', 'OS', 'MY', 'FY', 'AX', 'C0', 'LH',
|
351 |
+
'S5', 'ZV', 'IW', 'PI', 'BN',
|
352 |
],
|
353 |
+
'Internet Explorer' => ['IE', 'IM', 'PS', 'CZ', 'BZ'],
|
354 |
'Konqueror' => ['KO'],
|
355 |
'NetFront' => ['NF'],
|
356 |
'NetSurf' => ['NE'],
|
366 |
* @var array
|
367 |
*/
|
368 |
protected static $mobileOnlyBrowsers = [
|
369 |
+
'36', 'OC', 'PU', 'SK', 'MF', 'OI', 'OM', 'DD', 'DB',
|
370 |
+
'ST', 'BL', 'IV', 'FM', 'C1', 'AL', 'SA', 'SB', 'FR',
|
371 |
+
'WP', 'HA', 'NX', 'HU', 'VV', 'RE', 'CB', 'MZ', 'UM',
|
372 |
+
'FK', 'FX', 'WI', 'MN', 'M1', 'AH', 'SU', 'EU', 'EZ',
|
373 |
+
'UT', 'DT', 'S0', 'QU', 'YN', 'JB', 'GH', 'PI', 'SG',
|
374 |
+
'KD',
|
375 |
];
|
376 |
|
377 |
/**
|
app/vendor/matomo/device-detector/Parser/Device/AbstractDeviceParser.php
CHANGED
@@ -47,6 +47,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
47 |
public const DEVICE_TYPE_PHABLET = 10;
|
48 |
public const DEVICE_TYPE_SMART_SPEAKER = 11;
|
49 |
public const DEVICE_TYPE_WEARABLE = 12; // including set watches, headsets
|
|
|
50 |
|
51 |
/**
|
52 |
* Detectable device types
|
@@ -67,6 +68,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
67 |
'phablet' => self::DEVICE_TYPE_PHABLET,
|
68 |
'smart speaker' => self::DEVICE_TYPE_SMART_SPEAKER,
|
69 |
'wearable' => self::DEVICE_TYPE_WEARABLE,
|
|
|
70 |
];
|
71 |
|
72 |
/**
|
@@ -89,6 +91,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
89 |
'00' => 'Accent',
|
90 |
'A9' => 'Advan',
|
91 |
'AD' => 'Advance',
|
|
|
92 |
'A3' => 'AGM',
|
93 |
'AZ' => 'Ainol',
|
94 |
'AI' => 'Airness',
|
@@ -179,6 +182,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
179 |
'1C' => 'Chuwi',
|
180 |
'L8' => 'Clarmin',
|
181 |
'CD' => 'Cloudfone',
|
|
|
182 |
'C0' => 'Clout',
|
183 |
'CK' => 'Cricket',
|
184 |
'C1' => 'Crosscall',
|
@@ -191,6 +195,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
191 |
'CT' => 'Capitel',
|
192 |
'CQ' => 'Compaq',
|
193 |
'3C' => 'Contixo',
|
|
|
194 |
'CO' => 'Coolpad',
|
195 |
'C5' => 'Condor',
|
196 |
'CW' => 'Cowon',
|
@@ -254,6 +259,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
254 |
'3E' => 'Enot',
|
255 |
'ER' => 'Ericy',
|
256 |
'EE' => 'Essential',
|
|
|
257 |
'EN' => 'Eton',
|
258 |
'E2' => 'Essentielb',
|
259 |
'1E' => 'Etuline',
|
@@ -261,6 +267,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
261 |
'EV' => 'Evertek',
|
262 |
'E3' => 'Evolio',
|
263 |
'EO' => 'Evolveo',
|
|
|
264 |
'EX' => 'Explay',
|
265 |
'E0' => 'EvroMedia',
|
266 |
'E5' => 'Extrem',
|
@@ -268,6 +275,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
268 |
'E8' => 'E-tel',
|
269 |
'E9' => 'Evercoss',
|
270 |
'EU' => 'Eurostar',
|
|
|
271 |
'FA' => 'Fairphone',
|
272 |
'FM' => 'Famoco',
|
273 |
'FE' => 'Fengxiang',
|
@@ -283,12 +291,14 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
283 |
'FN' => 'FNB',
|
284 |
'FU' => 'Fujitsu',
|
285 |
'FD' => 'Fondi',
|
|
|
286 |
'GT' => 'G-TiDE',
|
287 |
'GM' => 'Garmin-Asus',
|
288 |
'GA' => 'Gateway',
|
289 |
'GD' => 'Gemini',
|
290 |
'GN' => 'General Mobile',
|
291 |
'GE' => 'Geotel',
|
|
|
292 |
'GH' => 'Ghia',
|
293 |
'GI' => 'Gionee',
|
294 |
'GG' => 'Gigabyte',
|
@@ -308,12 +318,15 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
308 |
'HF' => 'Hafury',
|
309 |
'HA' => 'Haier',
|
310 |
'HS' => 'Hasee',
|
|
|
311 |
'HE' => 'HannSpree',
|
312 |
'HI' => 'Hisense',
|
313 |
'HL' => 'Hi-Level',
|
314 |
'H2' => 'Highscreen',
|
|
|
315 |
'H1' => 'Hoffmann',
|
316 |
'HM' => 'Homtom',
|
|
|
317 |
'HO' => 'Hosin',
|
318 |
'HW' => 'How',
|
319 |
'HV' => 'Hotwav',
|
@@ -442,6 +455,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
442 |
'MJ' => 'Majestic',
|
443 |
'MA' => 'Manta Multimedia',
|
444 |
'6X' => 'Maxtron',
|
|
|
445 |
'5M' => 'Mann',
|
446 |
'2M' => 'Masstel',
|
447 |
'MW' => 'Maxwest',
|
@@ -495,6 +509,8 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
495 |
'6M' => 'Mystery',
|
496 |
'1R' => 'Multilaser',
|
497 |
'N3' => 'Navon',
|
|
|
|
|
498 |
'N7' => 'National',
|
499 |
'N5' => 'NOA',
|
500 |
'NE' => 'NEC',
|
@@ -530,6 +546,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
530 |
'O3' => 'O+',
|
531 |
'OB' => 'Obi',
|
532 |
'O1' => 'Odys',
|
|
|
533 |
'OD' => 'Onda',
|
534 |
'ON' => 'OnePlus',
|
535 |
'OX' => 'Onix',
|
@@ -636,6 +653,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
636 |
'SG' => 'Sagem',
|
637 |
'SH' => 'Sharp',
|
638 |
'7S' => 'Shift Phones',
|
|
|
639 |
'3S' => 'Shuttle',
|
640 |
'SI' => 'Siemens',
|
641 |
'SJ' => 'Silent Circle',
|
@@ -659,12 +677,14 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
659 |
'SU' => 'SuperSonic',
|
660 |
'S5' => 'Supra',
|
661 |
'SV' => 'Selevision',
|
|
|
662 |
'SY' => 'Sanyo',
|
663 |
'SM' => 'Symphony',
|
664 |
'4S' => 'Syrox',
|
665 |
'SR' => 'Smart',
|
666 |
'S7' => 'Smartisan',
|
667 |
'S4' => 'Star',
|
|
|
668 |
'SB' => 'STF Mobile',
|
669 |
'S8' => 'STK',
|
670 |
'S9' => 'Savio',
|
@@ -696,6 +716,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
696 |
'T0' => 'TD Systems',
|
697 |
'TI' => 'TIANYU',
|
698 |
'2T' => 'Tinai',
|
|
|
699 |
'TG' => 'Telego',
|
700 |
'TL' => 'Telefunken',
|
701 |
'2L' => 'Tele2',
|
@@ -713,6 +734,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
713 |
'T8' => 'Touchmate',
|
714 |
'TS' => 'Toshiba',
|
715 |
'TT' => 'TechnoTrend',
|
|
|
716 |
'T6' => 'TrekStor',
|
717 |
'T3' => 'Trevi',
|
718 |
'TU' => 'Tunisie Telecom',
|
@@ -734,6 +756,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
734 |
'UN' => 'Unowhy',
|
735 |
'US' => 'Uniscope',
|
736 |
'UX' => 'Unimax',
|
|
|
737 |
'UM' => 'UMIDIGI',
|
738 |
'UU' => 'Unonu',
|
739 |
'UK' => 'UTOK',
|
@@ -756,6 +779,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
756 |
'VT' => 'Vestel',
|
757 |
'VR' => 'Vernee',
|
758 |
'V4' => 'Verizon',
|
|
|
759 |
'VL' => 'Verykool',
|
760 |
'V6' => 'VGO TEL',
|
761 |
'VV' => 'Vivo',
|
@@ -780,6 +804,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
780 |
'WN' => 'Wink',
|
781 |
'WM' => 'Weimei',
|
782 |
'WE' => 'WellcoM',
|
|
|
783 |
'WY' => 'Wexler',
|
784 |
'W2' => 'Wigor',
|
785 |
'WI' => 'Wiko',
|
@@ -808,6 +833,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
808 |
'YO' => 'Yota',
|
809 |
'YT' => 'Ytone',
|
810 |
'YX' => 'Yxtel',
|
|
|
811 |
'ZE' => 'Zeemi',
|
812 |
'ZK' => 'Zenek',
|
813 |
'ZF' => 'Zfiner',
|
@@ -822,9 +848,9 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
822 |
'ZQ' => 'ZYQ',
|
823 |
'XS' => 'Xshitou',
|
824 |
'XT' => 'X-TIGI',
|
|
|
825 |
'XB' => 'NEXBOX',
|
826 |
'X3' => 'X-BO',
|
827 |
-
|
828 |
// legacy brands, might be removed in future versions
|
829 |
'WB' => 'Web TV',
|
830 |
'XX' => 'Unknown',
|
@@ -921,7 +947,7 @@ abstract class AbstractDeviceParser extends AbstractParser
|
|
921 |
*/
|
922 |
public static function getShortCode(string $brand): string
|
923 |
{
|
924 |
-
return \array_search($brand, self::$deviceBrands) ?: '';
|
925 |
}
|
926 |
|
927 |
/**
|
47 |
public const DEVICE_TYPE_PHABLET = 10;
|
48 |
public const DEVICE_TYPE_SMART_SPEAKER = 11;
|
49 |
public const DEVICE_TYPE_WEARABLE = 12; // including set watches, headsets
|
50 |
+
public const DEVICE_TYPE_PERIPHERAL = 13; // including portable terminal, portable projector
|
51 |
|
52 |
/**
|
53 |
* Detectable device types
|
68 |
'phablet' => self::DEVICE_TYPE_PHABLET,
|
69 |
'smart speaker' => self::DEVICE_TYPE_SMART_SPEAKER,
|
70 |
'wearable' => self::DEVICE_TYPE_WEARABLE,
|
71 |
+
'peripheral' => self::DEVICE_TYPE_PERIPHERAL,
|
72 |
];
|
73 |
|
74 |
/**
|
91 |
'00' => 'Accent',
|
92 |
'A9' => 'Advan',
|
93 |
'AD' => 'Advance',
|
94 |
+
'60' => 'Andowl',
|
95 |
'A3' => 'AGM',
|
96 |
'AZ' => 'Ainol',
|
97 |
'AI' => 'Airness',
|
182 |
'1C' => 'Chuwi',
|
183 |
'L8' => 'Clarmin',
|
184 |
'CD' => 'Cloudfone',
|
185 |
+
'6C' => 'Cloudpad',
|
186 |
'C0' => 'Clout',
|
187 |
'CK' => 'Cricket',
|
188 |
'C1' => 'Crosscall',
|
195 |
'CT' => 'Capitel',
|
196 |
'CQ' => 'Compaq',
|
197 |
'3C' => 'Contixo',
|
198 |
+
'4C' => 'Conquest',
|
199 |
'CO' => 'Coolpad',
|
200 |
'C5' => 'Condor',
|
201 |
'CW' => 'Cowon',
|
259 |
'3E' => 'Enot',
|
260 |
'ER' => 'Ericy',
|
261 |
'EE' => 'Essential',
|
262 |
+
'6E' => 'eSTAR',
|
263 |
'EN' => 'Eton',
|
264 |
'E2' => 'Essentielb',
|
265 |
'1E' => 'Etuline',
|
267 |
'EV' => 'Evertek',
|
268 |
'E3' => 'Evolio',
|
269 |
'EO' => 'Evolveo',
|
270 |
+
'EH' => 'EXO',
|
271 |
'EX' => 'Explay',
|
272 |
'E0' => 'EvroMedia',
|
273 |
'E5' => 'Extrem',
|
275 |
'E8' => 'E-tel',
|
276 |
'E9' => 'Evercoss',
|
277 |
'EU' => 'Eurostar',
|
278 |
+
'XE' => 'ExMobile',
|
279 |
'FA' => 'Fairphone',
|
280 |
'FM' => 'Famoco',
|
281 |
'FE' => 'Fengxiang',
|
291 |
'FN' => 'FNB',
|
292 |
'FU' => 'Fujitsu',
|
293 |
'FD' => 'Fondi',
|
294 |
+
'F0' => 'Fonos',
|
295 |
'GT' => 'G-TiDE',
|
296 |
'GM' => 'Garmin-Asus',
|
297 |
'GA' => 'Gateway',
|
298 |
'GD' => 'Gemini',
|
299 |
'GN' => 'General Mobile',
|
300 |
'GE' => 'Geotel',
|
301 |
+
'G2' => 'GEOFOX',
|
302 |
'GH' => 'Ghia',
|
303 |
'GI' => 'Gionee',
|
304 |
'GG' => 'Gigabyte',
|
318 |
'HF' => 'Hafury',
|
319 |
'HA' => 'Haier',
|
320 |
'HS' => 'Hasee',
|
321 |
+
'HK' => 'Hardkernel',
|
322 |
'HE' => 'HannSpree',
|
323 |
'HI' => 'Hisense',
|
324 |
'HL' => 'Hi-Level',
|
325 |
'H2' => 'Highscreen',
|
326 |
+
'1H' => 'Hipstreet',
|
327 |
'H1' => 'Hoffmann',
|
328 |
'HM' => 'Homtom',
|
329 |
+
'H0' => 'Hometech',
|
330 |
'HO' => 'Hosin',
|
331 |
'HW' => 'How',
|
332 |
'HV' => 'Hotwav',
|
455 |
'MJ' => 'Majestic',
|
456 |
'MA' => 'Manta Multimedia',
|
457 |
'6X' => 'Maxtron',
|
458 |
+
'50' => 'Matrix',
|
459 |
'5M' => 'Mann',
|
460 |
'2M' => 'Masstel',
|
461 |
'MW' => 'Maxwest',
|
509 |
'6M' => 'Mystery',
|
510 |
'1R' => 'Multilaser',
|
511 |
'N3' => 'Navon',
|
512 |
+
'6N' => 'Navitech',
|
513 |
+
'7N' => 'NorthTech',
|
514 |
'N7' => 'National',
|
515 |
'N5' => 'NOA',
|
516 |
'NE' => 'NEC',
|
546 |
'O3' => 'O+',
|
547 |
'OB' => 'Obi',
|
548 |
'O1' => 'Odys',
|
549 |
+
'OA' => 'Okapia',
|
550 |
'OD' => 'Onda',
|
551 |
'ON' => 'OnePlus',
|
552 |
'OX' => 'Onix',
|
653 |
'SG' => 'Sagem',
|
654 |
'SH' => 'Sharp',
|
655 |
'7S' => 'Shift Phones',
|
656 |
+
'RS' => 'Shtrikh-M',
|
657 |
'3S' => 'Shuttle',
|
658 |
'SI' => 'Siemens',
|
659 |
'SJ' => 'Silent Circle',
|
677 |
'SU' => 'SuperSonic',
|
678 |
'S5' => 'Supra',
|
679 |
'SV' => 'Selevision',
|
680 |
+
'9G' => 'Selenga',
|
681 |
'SY' => 'Sanyo',
|
682 |
'SM' => 'Symphony',
|
683 |
'4S' => 'Syrox',
|
684 |
'SR' => 'Smart',
|
685 |
'S7' => 'Smartisan',
|
686 |
'S4' => 'Star',
|
687 |
+
'OL' => 'Starlight',
|
688 |
'SB' => 'STF Mobile',
|
689 |
'S8' => 'STK',
|
690 |
'S9' => 'Savio',
|
716 |
'T0' => 'TD Systems',
|
717 |
'TI' => 'TIANYU',
|
718 |
'2T' => 'Tinai',
|
719 |
+
'TF' => 'Tinmo',
|
720 |
'TG' => 'Telego',
|
721 |
'TL' => 'Telefunken',
|
722 |
'2L' => 'Tele2',
|
734 |
'T8' => 'Touchmate',
|
735 |
'TS' => 'Toshiba',
|
736 |
'TT' => 'TechnoTrend',
|
737 |
+
'5C' => 'TTEC',
|
738 |
'T6' => 'TrekStor',
|
739 |
'T3' => 'Trevi',
|
740 |
'TU' => 'Tunisie Telecom',
|
756 |
'UN' => 'Unowhy',
|
757 |
'US' => 'Uniscope',
|
758 |
'UX' => 'Unimax',
|
759 |
+
'U2' => 'UNIWA',
|
760 |
'UM' => 'UMIDIGI',
|
761 |
'UU' => 'Unonu',
|
762 |
'UK' => 'UTOK',
|
779 |
'VT' => 'Vestel',
|
780 |
'VR' => 'Vernee',
|
781 |
'V4' => 'Verizon',
|
782 |
+
'4V' => 'Verico',
|
783 |
'VL' => 'Verykool',
|
784 |
'V6' => 'VGO TEL',
|
785 |
'VV' => 'Vivo',
|
804 |
'WN' => 'Wink',
|
805 |
'WM' => 'Weimei',
|
806 |
'WE' => 'WellcoM',
|
807 |
+
'W0' => 'Wiseasy',
|
808 |
'WY' => 'Wexler',
|
809 |
'W2' => 'Wigor',
|
810 |
'WI' => 'Wiko',
|
833 |
'YO' => 'Yota',
|
834 |
'YT' => 'Ytone',
|
835 |
'YX' => 'Yxtel',
|
836 |
+
'0Z' => 'Zatec',
|
837 |
'ZE' => 'Zeemi',
|
838 |
'ZK' => 'Zenek',
|
839 |
'ZF' => 'Zfiner',
|
848 |
'ZQ' => 'ZYQ',
|
849 |
'XS' => 'Xshitou',
|
850 |
'XT' => 'X-TIGI',
|
851 |
+
'4X' => 'Xtouch',
|
852 |
'XB' => 'NEXBOX',
|
853 |
'X3' => 'X-BO',
|
|
|
854 |
// legacy brands, might be removed in future versions
|
855 |
'WB' => 'Web TV',
|
856 |
'XX' => 'Unknown',
|
947 |
*/
|
948 |
public static function getShortCode(string $brand): string
|
949 |
{
|
950 |
+
return (string) \array_search($brand, self::$deviceBrands) ?: '';
|
951 |
}
|
952 |
|
953 |
/**
|
app/vendor/matomo/device-detector/Parser/OperatingSystem.php
CHANGED
@@ -78,6 +78,7 @@ class OperatingSystem extends AbstractParser
|
|
78 |
'MOR' => 'MorphOS',
|
79 |
'NBS' => 'NetBSD',
|
80 |
'MTK' => 'MTK / Nucleus',
|
|
|
81 |
'WII' => 'Nintendo',
|
82 |
'NDS' => 'Nintendo Mobile',
|
83 |
'OS2' => 'OS/2',
|
@@ -88,6 +89,7 @@ class OperatingSystem extends AbstractParser
|
|
88 |
'PS3' => 'PlayStation',
|
89 |
'RHT' => 'Red Hat',
|
90 |
'ROS' => 'RISC OS',
|
|
|
91 |
'REM' => 'Remix OS',
|
92 |
'RZD' => 'RazoDroiD',
|
93 |
'SAB' => 'Sabayon',
|
@@ -142,11 +144,11 @@ class OperatingSystem extends AbstractParser
|
|
142 |
'GNU/Linux' => [
|
143 |
'LIN', 'ARL', 'DEB', 'KNO', 'MIN', 'UBT', 'KBT', 'XBT', 'LBT', 'FED',
|
144 |
'RHT', 'VLN', 'MDR', 'GNT', 'SAB', 'SLW', 'SSE', 'CES', 'BTR', 'SAF',
|
145 |
-
'ORD', 'TOS',
|
146 |
],
|
147 |
'Mac' => ['MAC'],
|
148 |
'Mobile Gaming Console' => ['PSP', 'NDS', 'XBX'],
|
149 |
-
'Real-time OS' => ['MTK', 'TDX'],
|
150 |
'Other Mobile' => ['WOS', 'POS', 'SBA', 'TIZ', 'SMG', 'MAE'],
|
151 |
'Symbian' => ['SYM', 'SYS', 'SY3', 'S60', 'S40'],
|
152 |
'Unix' => ['SOS', 'AIX', 'HPX', 'BSD', 'NBS', 'OBS', 'DFB', 'SYL', 'IRI', 'T64', 'INF'],
|
78 |
'MOR' => 'MorphOS',
|
79 |
'NBS' => 'NetBSD',
|
80 |
'MTK' => 'MTK / Nucleus',
|
81 |
+
'MRE' => 'MRE',
|
82 |
'WII' => 'Nintendo',
|
83 |
'NDS' => 'Nintendo Mobile',
|
84 |
'OS2' => 'OS/2',
|
89 |
'PS3' => 'PlayStation',
|
90 |
'RHT' => 'Red Hat',
|
91 |
'ROS' => 'RISC OS',
|
92 |
+
'RSO' => 'Rosa',
|
93 |
'REM' => 'Remix OS',
|
94 |
'RZD' => 'RazoDroiD',
|
95 |
'SAB' => 'Sabayon',
|
144 |
'GNU/Linux' => [
|
145 |
'LIN', 'ARL', 'DEB', 'KNO', 'MIN', 'UBT', 'KBT', 'XBT', 'LBT', 'FED',
|
146 |
'RHT', 'VLN', 'MDR', 'GNT', 'SAB', 'SLW', 'SSE', 'CES', 'BTR', 'SAF',
|
147 |
+
'ORD', 'TOS', 'RSO',
|
148 |
],
|
149 |
'Mac' => ['MAC'],
|
150 |
'Mobile Gaming Console' => ['PSP', 'NDS', 'XBX'],
|
151 |
+
'Real-time OS' => ['MTK', 'TDX', 'MRE'],
|
152 |
'Other Mobile' => ['WOS', 'POS', 'SBA', 'TIZ', 'SMG', 'MAE'],
|
153 |
'Symbian' => ['SYM', 'SYS', 'SY3', 'S60', 'S40'],
|
154 |
'Unix' => ['SOS', 'AIX', 'HPX', 'BSD', 'NBS', 'OBS', 'DFB', 'SYL', 'IRI', 'T64', 'INF'],
|
app/vendor/matomo/device-detector/README.md
CHANGED
@@ -203,15 +203,15 @@ There are already a few ports of this tool to other languages:
|
|
203 |
|
204 |
The lists below are auto generated and updated from time to time. Some of them might not be complete.
|
205 |
|
206 |
-
*Last update: 2020/
|
207 |
|
208 |
### List of detected operating systems:
|
209 |
|
210 |
-
AIX, Android, AmigaOS, Apple TV, Arch Linux, BackTrack, Bada, BeOS, BlackBerry OS, BlackBerry Tablet OS, Brew, CentOS, Chrome OS, CyanogenMod, Debian, DragonFly, Fedora, Firefox OS, Fire OS, FreeBSD, Gentoo, Google TV, HP-UX, Haiku OS, IRIX, Inferno, KaiOS, Knoppix, Kubuntu, GNU/Linux, Lubuntu, VectorLinux, Mac, Maemo, Mandriva, MeeGo, MocorDroid, Mint, MildWild, MorphOS, NetBSD, MTK / Nucleus, Nintendo, Nintendo Mobile, OS/2, OSF1, OpenBSD, Ordissimo, PlayStation Portable, PlayStation, Red Hat, RISC OS, Remix OS, RazoDroiD, Sabayon, SUSE, Sailfish OS, Slackware, Solaris, Syllable, Symbian, Symbian OS, Symbian OS Series 40, Symbian OS Series 60, Symbian^3, ThreadX, Tizen, TmaxOS, Ubuntu, WebTV, Windows, Windows CE, Windows IoT, Windows Mobile, Windows Phone, Windows RT, Xbox, Xubuntu, YunOs, iOS, palmOS, webOS
|
211 |
|
212 |
### List of detected browsers:
|
213 |
|
214 |
-
115 Browser, 2345 Browser, 360 Phone Browser, 360 Browser, Avant Browser, ABrowse, ANT Fresco, ANTGalio, Aloha Browser, Aloha Browser Lite, Amaya, Amigo, Android Browser, AOL Desktop, AOL Shield, Arora, Arctic Fox, Amiga Voyager, Amiga Aweb, Atom, Atomic Web Browser, Avast Secure Browser, AVG Secure Browser, Beaker Browser, Beamrise, BlackBerry Browser, Baidu Browser, Baidu Spark, Basilisk, Beonex, BlackHawk, Bunjalloo, B-Line, Blue Browser, Brave, BriskBard, BrowseX, Camino, CCleaner, Centaury, Coc Coc, Colibri, Comodo Dragon, Coast, Charon, CM Browser, Chrome Frame, Headless Chrome, Chrome, Chrome Mobile iOS, Conkeror, Chrome Mobile, CoolNovo, CometBird, COS Browser, ChromePlus, Chromium, Cyberfox, Cheshire, Crusta, Cunaguaro, Chrome Webview, dbrowser, Deepnet Explorer, Delta Browser, Dolphin, Dorado, Dooble, Dillo, DuckDuckGo Privacy Browser, Ecosia, Epic, Elinks, Element Browser, Elements Browser, eZ Browser, EUI Browser, GNOME Web, Espial TV Browser, Falkon, Faux Browser, Firefox Mobile iOS, Firebird, Fluid, Fennec, Firefox, Firefox Focus, Firefox Reality, Firefox Rocket, Flock, Firefox Mobile, Fireweb, Fireweb Navigator, FreeU, Galeon, Glass Browser, Google Earth, GOG Galaxy, Hawk Turbo Browser, hola! Browser, HotJava, Huawei Browser, IBrowse, iCab, iCab Mobile, Iridium, Iron Mobile, IceCat, IceDragon, Isivioo, Iceweasel, Internet Explorer, IE Mobile, Iron, Japan Browser, Jasmine, Jig Browser, Jig Browser Plus, Jio Browser, K.Browser, Kindle Browser, K-meleon, Konqueror, Kapiko, Kinza, Kiwi, Kylo, Kazehakase, Cheetah Browser, LieBaoFast, LG Browser, Light, Links, Lovense Browser, LuaKit, Lulumi, Lunascape, Lunascape Lite, Lynx, mCent, MicroB, NCSA Mosaic, Meizu Browser, Mercury, Mobile Safari, Midori, Mobicip, MIUI Browser, Mobile Silk, Minimo, Mint Browser, Maxthon, Mypal, Monument Browser, Nokia Browser, Nokia OSS Browser, Nokia Ovi Browser, Nox Browser, NetSurf, NetFront, NetFront Life, NetPositive, Netscape, NTENT Browser, Oculus Browser, Opera Mini iOS, Obigo, Odyssey Web Browser, Off By One, OhHai Browser, ONE Browser, Opera GX, Opera Neon, Opera Devices, Opera Mini, Opera Mobile, Opera, Opera Next, Opera Touch, Ordissimo, Oregano, Origin In-Game Overlay, Origyn Web Browser, Openwave Mobile Browser, OmniWeb, Otter Browser, Palm Blazer, Pale Moon, Polypane, Oppo Browser, Palm Pre, Puffin, Palm WebPro, Palmscape, Phoenix, Polaris, Polarity, Microsoft Edge, QQ Browser Mini, QQ Browser, Qutebrowser, Quark, QupZilla, Qwant Mobile, QtWebEngine, Realme Browser, Rekonq, RockMelt, Samsung Browser, Sailfish Browser, SEMC-Browser, Sogou Explorer, Safari, Safe Exam Browser, SalamWeb, Shiira, SimpleBrowser, Sizzy, Skyfire, Seraphic Sraf, Sleipnir, Snowshoe, Sogou Mobile Browser, Splash, Sputnik Browser, Sunrise, SuperBird, Super Fast Browser, surf, START Internet Browser, Steam In-Game Overlay, Streamy, Swiftfox, Seznam Browser, t-online.de Browser, Tao Browser, TenFourFox, Tenta Browser, Tizen Browser, Tungsten, ToGate, TweakStyle, TV Bro, UBrowser, UC Browser, UC Browser Mini, UC Browser Turbo, Uzbl, Vivaldi, vivo Browser, Vision Mobile Browser, VMware AirWatch, Wear Internet Browser, Web Explorer, WebPositive, Waterfox, Whale Browser, wOSBrowser, WeTab Browser, Yahoo! Japan Browser, Yandex Browser, Yandex Browser Lite, Yaani Browser, Xiino, Xvast, Zvu
|
215 |
|
216 |
### List of detected browser engines:
|
217 |
|
@@ -239,7 +239,7 @@ Akregator, Apple PubSub, BashPodder, Breaker, Downcast, FeedDemon, Feeddler RSS
|
|
239 |
|
240 |
### List of brands with detected devices:
|
241 |
|
242 |
-
2E, 3Q, 4Good, 360, 8848, A1, Accent, Ace, Acer, Advan, Advance, AGM, Ainol, Airness, Airties, AIS, Aiwa, Akai, Alba, Alcatel, Alcor, Alfawise, Aligator, AllCall, AllDocube, Allview, Allwinner, Altech UEC, altron, Amazon, AMGOO, Amigoo, Amoi, Anry, ANS, Aoson, Apple, Archos, Arian Space, Ark, ArmPhone, Arnova, ARRIS, Artel, Asano, Ask, Assistant, Asus, AT&T, Atom, Audiovox, Avenzo, AVH, Avvio, Axxion, Azumi Mobile, BangOlufsen, Barnes & Noble, BBK, BB Mobile, BDF, Becker, Beeline, Beelink, Beetel, BenQ, BenQ-Siemens, Bezkam, BGH, BIHEE, Billion, Bird, Bitel, Bitmore, Black Fox, Blackview, Blaupunkt, Blu, Bluboo, Bluegood, Bmobile, Bobarry, bogo, Boway, bq, Bravis, Brondi, Bush, CAGI, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Celkon, Changhong, Cherry Mobile, China Mobile, Chuwi, Clarmin, Cloudfone, Clout, CnM, Coby Kyros, Comio, Compal, Compaq, ComTrade Tesla, Concord, ConCorde, Condor, Contixo, Coolpad, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crony, Crosscall, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datang, Datawind, Datsun, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, Dialog, Dicam, Digi, Digicel, Digiland, Digma, Divisat, DMM, DNS, DoCoMo, Doffler, Dolamee, Doogee, Doopro, Doov, Dopod, Doro, Droxio, Dune HD, E-Boda, E-Ceros, E-tel, Easypix, EBEST, Echo Mobiles, ECS, EE, EKO, Eks Mobility, Element, Elenberg, Elephone, Eltex, Energizer, Energy Sistem, Enot, Ergo, Ericsson, Ericy, Essential, Essentielb, Eton, eTouch, Etuline, Eurostar, Evercoss, Evertek, Evolio, Evolveo, EvroMedia, Explay, Extrem, Ezio, Ezze, Fairphone, Famoco, Fengxiang, Fero, FiGO, FinePower, FireFly Mobile, Fly, FNB, Fondi, FORME, Forstar, Foxconn, Freetel, Fujitsu, G-TiDE, Garmin-Asus, Gateway, Gemini, General Mobile, Geotel, Ghia, Ghong, Gigabyte, Gigaset, Ginzzu, Gionee, Globex, GOCLEVER, Goly, Gome, GoMobile, Google, Goophone, Gradiente, Grape, Gree, Grundig, Hafury, Haier, HannSpree, Hasee, Hi-Level, Highscreen, Hisense, Hoffmann, Homtom, Hoozo, Hosin, Hotwav, How, HP, HTC, Huadoo, Huawei, Humax, Hyrican, Hyundai, i-Cherry, i-Joy, i-mate, i-mobile, iBall, iBerry, iBrit, IconBIT, iDroid, iGet, iHunt, Ikea, iKoMo, iLA, iLife, iMars, IMO Mobile, Impression, iNew, Infinix, InFocus, Inkti, InnJoo, Innostream, Inoi, INQ, Insignia, Intek, Intex, Inverto, Invin, iOcean, iPro, IQM, Irbis, Iris, iRola, iRulu, iTel, iTruck, iVA, iView, iVooMi, iZotron, JAY-Tech, JFone, Jiayu, Jinga, JKL, Jolla, Just5, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, KATV1, Kazam, KDDI, Kempler & Strauss, Keneksi, Kenxinda, Kiano, Kingsun, Kivi, Klipad, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, Kooper, KOPO, Koridy, KRONO, Krüger&Matz, KT-Tech, Kuliao, Kumai, Kyocera, Kzen, LAIQ, Land Rover, Landvo, Lanix, Lark, Lava, LCT, Leagoo, Ledstar, LeEco, Lemhoov, Lenco, Lenovo, Leotec, Le Pan, Lephone, Lesia, Lexand, Lexibook, LG, Lingwin, Loewe, Logic, Logicom, Lumigon, Lumus, Luna, LYF, M.T.T., M4tel, Macoox, Majestic, Mann, Manta Multimedia, Masstel, Maxcom, Maxtron, MAXVI, Maxwest, Maze, meanIT, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Melrose, Memup, Metz, MEU, MicroMax, Microsoft, Minix, Mio, Miray, Mito, Mitsubishi, MIXC, MiXzo, MLLED, MLS, Mobicel, Mobiistar, Mobiola, Mobistel, Mobo, Modecom, Mofut, Motorola, Movic, Mpman, MSI, MTC, MTN, Multilaser, MYFON, MyPhone, Myria, Mystery, MyTab, MyWigo, National, Navon, NEC, Neffos, Neomi, Netgear, NeuImage, Newgen, Newland, Newman, NewsMy, NEXBOX, Nexian, NEXON, Nextbit, NextBook, NextTab, NGM, NG Optics, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, Nokia, Nomi, Nomu, Nos, Nous, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Obi, Odys, Onda, OnePlus, Onix, ONN, Openbox, OPPO, Opsson, Orange, Orbic, Ordissimo, Ouki, Oukitel, OUYA, Overmax, Ovvi, Owwo, Oysters, Oyyu, OzoneHD, P-UP, Palm, Panacom, Panasonic, Pantech, PCBOX, PCD, PCD Argentina, PEAQ, Pentagram, Phicomm, Philco, Philips, Phonemax, phoneOne, Pioneer, Pixelphone, Pixus, Ployer, Plum, PocketBook, POCO, Point of View, Polaroid, PolyPad, Polytron, Pomp, Positivo, Positivo BGH, PPTV, Prestigio, Primepad, Primux, Prixton, Proline, ProScan, Protruly, PULID, Q-Touch, Q.Bell, Qilive, QMobile, Qtek, Quantum, Quechua, Qumo, R-TV, Ramos, Ravoz, Razer, RCA Tablets, Readboy, Realme, RED, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Roadrover, Rokit, Roku, Rombica, Ross&Moor, Rover, RoverPad, RT Project, RugGear, Runbo, Ryte, Safaricom, Sagem, Samsung, Sanei, Santin, Sanyo, Savio, Schneider, Sega, Selevision, Selfix, SEMP TCL, Sencor, Sendo, Senkatel, Senseit, Senwa, SFR, Sharp, Shift Phones, Shuttle, Siemens, Sigma, Silent Circle, Simbans, Sky, Skyworth, Smart, Smartfren, Smartisan, Softbank, Sonim, Sony, Sony Ericsson, Soundmax, Soyes, Spectrum, Spice, SQOOL, Star, Starway, STF Mobile, STK, Stonex, Storex, Sugar, Sumvision, Sunstech, SunVan, Sunvell, SuperSonic, Supra, Swipe, SWISSMOBILITY, Swisstone, Symphony, Syrox, T-Mobile, Takara, TB Touch, TCL, TD Systems, TechniSat, TechnoTrend, TechPad, Teclast, Tecno Mobile, Tele2, Telefunken, Telego, Telenor, Telit, Tesco, Tesla, Tetratab, teXet, ThL, Thomson, TIANYU, Time2, Timovi, Tinai, TiPhone, Tolino, Tone, Tooky, Top House, Toplux, Torex, Toshiba, Touchmate, Transpeed, TrekStor, Trevi, Tronsmart, True, Tunisie Telecom, Turbo, Turbo-X, TurboKids, TVC, TWM, Twoe, U.S. Cellular, Ugoos, Uhans, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, Unknown, Unnecto, Unonu, Unowhy, UTOK, UTStarcom, Vastking, Venso, Verizon, Vernee, Vertex, Vertu, Verykool, Vesta, Vestel, VGO TEL, Videocon, Videoweb, ViewSonic, Vinga, Vinsoc, Vipro, Vitelcom, Vivax, Vivo, Vizio, VK Mobile, VKworld, Vodacom, Vodafone, Vonino, Vontar, Vorago, Vorke, Voto, Voxtel, Voyo, Vsmart, Vsun, Vulcan, VVETIME, Walton, Web TV, Weimei, WellcoM, Wexler, Wieppo, Wigor, Wiko, Wileyfox, Winds, Wink, Wolder, Wolfgang, Wonu, Woo, Wortmann, Woxter, X-BO, X-TIGI, X-View, Xgody, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Xshitou, Yandex, Yarvik, Yes, Yezz, Yota, Ytone, Yu, Yuandao, Yusun, Yxtel, Zeemi, Zen, Zenek, Zfiner, Zidoo, Ziox, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, öwn
|
243 |
|
244 |
### List of detected bots:
|
245 |
|
203 |
|
204 |
The lists below are auto generated and updated from time to time. Some of them might not be complete.
|
205 |
|
206 |
+
*Last update: 2020/12/05*
|
207 |
|
208 |
### List of detected operating systems:
|
209 |
|
210 |
+
AIX, Android, AmigaOS, Apple TV, Arch Linux, BackTrack, Bada, BeOS, BlackBerry OS, BlackBerry Tablet OS, Brew, CentOS, Chrome OS, CyanogenMod, Debian, DragonFly, Fedora, Firefox OS, Fire OS, FreeBSD, Gentoo, Google TV, HP-UX, Haiku OS, IRIX, Inferno, KaiOS, Knoppix, Kubuntu, GNU/Linux, Lubuntu, VectorLinux, Mac, Maemo, Mandriva, MeeGo, MocorDroid, Mint, MildWild, MorphOS, NetBSD, MTK / Nucleus, MRE, Nintendo, Nintendo Mobile, OS/2, OSF1, OpenBSD, Ordissimo, PlayStation Portable, PlayStation, Red Hat, RISC OS, Rosa, Remix OS, RazoDroiD, Sabayon, SUSE, Sailfish OS, Slackware, Solaris, Syllable, Symbian, Symbian OS, Symbian OS Series 40, Symbian OS Series 60, Symbian^3, ThreadX, Tizen, TmaxOS, Ubuntu, WebTV, Windows, Windows CE, Windows IoT, Windows Mobile, Windows Phone, Windows RT, Xbox, Xubuntu, YunOs, iOS, palmOS, webOS
|
211 |
|
212 |
### List of detected browsers:
|
213 |
|
214 |
+
115 Browser, 2345 Browser, 360 Phone Browser, 360 Browser, Avant Browser, ABrowse, ANT Fresco, ANTGalio, Aloha Browser, Aloha Browser Lite, Amaya, Amigo, Android Browser, AOL Desktop, AOL Shield, Arora, Arctic Fox, Amiga Voyager, Amiga Aweb, Atom, Atomic Web Browser, Avast Secure Browser, AVG Secure Browser, Beaker Browser, Beamrise, BlackBerry Browser, Baidu Browser, Baidu Spark, Basilisk, Beonex, BlackHawk, Bunjalloo, B-Line, Blue Browser, Borealis Navigator, Brave, BriskBard, BrowseX, Browzar, Camino, CCleaner, Centaury, Coc Coc, Colibri, Comodo Dragon, Coast, Charon, CM Browser, Chrome Frame, Headless Chrome, Chrome, Chrome Mobile iOS, Conkeror, Chrome Mobile, CoolNovo, CometBird, COS Browser, ChromePlus, Chromium, Cyberfox, Cheshire, Crusta, Crazy Browser, Cunaguaro, Chrome Webview, dbrowser, Deepnet Explorer, Delta Browser, Dolphin, Dorado, Dooble, Dillo, DuckDuckGo Privacy Browser, Ecosia, Epic, Elinks, Element Browser, Elements Browser, eZ Browser, EUI Browser, GNOME Web, Espial TV Browser, Falkon, Faux Browser, Firefox Mobile iOS, Firebird, Fluid, Fennec, Firefox, Firefox Focus, Firefox Reality, Firefox Rocket, Flock, Firefox Mobile, Fireweb, Fireweb Navigator, FreeU, Galeon, Ghostery Privacy Browser, Glass Browser, Google Earth, GOG Galaxy, Hawk Turbo Browser, hola! Browser, HotJava, Huawei Browser, IBrowse, iCab, iCab Mobile, Iridium, Iron Mobile, IceCat, IceDragon, Isivioo, Iceweasel, Internet Explorer, IE Mobile, Iron, Japan Browser, Jasmine, Jig Browser, Jig Browser Plus, Jio Browser, K.Browser, Kindle Browser, K-meleon, Konqueror, Kapiko, Kinza, Kiwi, Kylo, Kazehakase, Cheetah Browser, LieBaoFast, LG Browser, Light, Links, Lovense Browser, LuaKit, Lulumi, Lunascape, Lunascape Lite, Lynx, mCent, MicroB, NCSA Mosaic, Meizu Browser, Mercury, Mobile Safari, Midori, Mobicip, MIUI Browser, Mobile Silk, Minimo, Mint Browser, Maxthon, MxNitro, Mypal, Monument Browser, MAUI WAP Browser, NFS Browser, Nokia Browser, Nokia OSS Browser, Nokia Ovi Browser, Nox Browser, NetSurf, NetFront, NetFront Life, NetPositive, Netscape, NTENT Browser, Oculus Browser, Opera Mini iOS, Obigo, Odyssey Web Browser, Off By One, OhHai Browser, ONE Browser, Opera GX, Opera Neon, Opera Devices, Opera Mini, Opera Mobile, Opera, Opera Next, Opera Touch, Ordissimo, Oregano, Origin In-Game Overlay, Origyn Web Browser, Openwave Mobile Browser, OmniWeb, Otter Browser, Palm Blazer, Pale Moon, Polypane, Oppo Browser, Palm Pre, Puffin, Palm WebPro, Palmscape, Phoenix, Phoenix Browser, Polaris, Polarity, PrivacyWall, Microsoft Edge, QQ Browser Mini, QQ Browser, Qutebrowser, Quark, QupZilla, Qwant Mobile, QtWebEngine, Realme Browser, Rekonq, RockMelt, Samsung Browser, Sailfish Browser, SEMC-Browser, Sogou Explorer, Safari, Safe Exam Browser, SalamWeb, Shiira, SimpleBrowser, Sizzy, Skyfire, Seraphic Sraf, Sleipnir, Slimjet, 7Star, Smart Lenovo Browser, Snowshoe, Sogou Mobile Browser, Splash, Sputnik Browser, Sunrise, SuperBird, Super Fast Browser, surf, Stargon, START Internet Browser, Steam In-Game Overlay, Streamy, Swiftfox, Seznam Browser, t-online.de Browser, Tao Browser, TenFourFox, Tenta Browser, Tizen Browser, Tungsten, ToGate, TweakStyle, TV Bro, UBrowser, UC Browser, UC Browser Mini, UC Browser Turbo, Uzbl, Vivaldi, vivo Browser, Vision Mobile Browser, VMware AirWatch, Wear Internet Browser, Web Explorer, WebPositive, Waterfox, Whale Browser, wOSBrowser, WeTab Browser, Yahoo! Japan Browser, Yandex Browser, Yandex Browser Lite, Yaani Browser, Yolo Browser, Xiino, Xvast, Zvu
|
215 |
|
216 |
### List of detected browser engines:
|
217 |
|
239 |
|
240 |
### List of brands with detected devices:
|
241 |
|
242 |
+
2E, 3Q, 4Good, 360, 8848, A1, Accent, Ace, Acer, Advan, Advance, AGM, Ainol, Airness, Airties, AIS, Aiwa, Akai, Alba, Alcatel, Alcor, Alfawise, Aligator, AllCall, AllDocube, Allview, Allwinner, Altech UEC, altron, Amazon, AMGOO, Amigoo, Amoi, Anry, ANS, Aoson, Apple, Archos, Arian Space, Ark, ArmPhone, Arnova, ARRIS, Artel, Asano, Ask, Assistant, Asus, AT&T, Atom, Audiovox, Avenzo, AVH, Avvio, Axxion, Azumi Mobile, BangOlufsen, Barnes & Noble, BBK, BB Mobile, BDF, Becker, Beeline, Beelink, Beetel, BenQ, BenQ-Siemens, Bezkam, BGH, BIHEE, Billion, Bird, Bitel, Bitmore, Black Fox, Blackview, Blaupunkt, Blu, Bluboo, Bluegood, Bmobile, Bobarry, bogo, Boway, bq, Bravis, Brondi, Bush, CAGI, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Celkon, Changhong, Cherry Mobile, China Mobile, Chuwi, Clarmin, Cloudfone, Cloudpad, Clout, CnM, Coby Kyros, Comio, Compal, Compaq, ComTrade Tesla, Concord, ConCorde, Condor, Conquest, Contixo, Coolpad, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crony, Crosscall, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datang, Datawind, Datsun, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, Dialog, Dicam, Digi, Digicel, Digiland, Digma, Divisat, DMM, DNS, DoCoMo, Doffler, Dolamee, Doogee, Doopro, Doov, Dopod, Doro, Droxio, Dune HD, E-Boda, E-Ceros, E-tel, Easypix, EBEST, Echo Mobiles, ECS, EE, EKO, Eks Mobility, Element, Elenberg, Elephone, Eltex, Energizer, Energy Sistem, Enot, Ergo, Ericsson, Ericy, Essential, Essentielb, eSTAR, Eton, eTouch, Etuline, Eurostar, Evercoss, Evertek, Evolio, Evolveo, EvroMedia, ExMobile, EXO, Explay, Extrem, Ezio, Ezze, Fairphone, Famoco, Fengxiang, Fero, FiGO, FinePower, FireFly Mobile, Fly, FNB, Fondi, Fonos, FORME, Forstar, Foxconn, Freetel, Fujitsu, G-TiDE, Garmin-Asus, Gateway, Gemini, General Mobile, GEOFOX, Geotel, Ghia, Ghong, Gigabyte, Gigaset, Ginzzu, Gionee, Globex, GOCLEVER, Goly, Gome, GoMobile, Google, Goophone, Gradiente, Grape, Gree, Grundig, Hafury, Haier, HannSpree, Hasee, Hi-Level, Highscreen, Hipstreet, Hisense, Hoffmann, Hometech, Homtom, Hoozo, Hosin, Hotwav, How, HP, HTC, Huadoo, Huawei, Humax, Hyrican, Hyundai, i-Cherry, i-Joy, i-mate, i-mobile, iBall, iBerry, iBrit, IconBIT, iDroid, iGet, iHunt, Ikea, iKoMo, iLA, iLife, iMars, IMO Mobile, Impression, iNew, Infinix, InFocus, Inkti, InnJoo, Innostream, Inoi, INQ, Insignia, Intek, Intex, Inverto, Invin, iOcean, iPro, IQM, Irbis, Iris, iRola, iRulu, iTel, iTruck, iVA, iView, iVooMi, iZotron, JAY-Tech, JFone, Jiayu, Jinga, JKL, Jolla, Just5, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, KATV1, Kazam, KDDI, Kempler & Strauss, Keneksi, Kenxinda, Kiano, Kingsun, Kivi, Klipad, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, Kooper, KOPO, Koridy, KRONO, Krüger&Matz, KT-Tech, Kuliao, Kumai, Kyocera, Kzen, LAIQ, Land Rover, Landvo, Lanix, Lark, Lava, LCT, Leagoo, Ledstar, LeEco, Lemhoov, Lenco, Lenovo, Leotec, Le Pan, Lephone, Lesia, Lexand, Lexibook, LG, Lingwin, Loewe, Logic, Logicom, Lumigon, Lumus, Luna, LYF, M.T.T., M4tel, Macoox, Majestic, Mann, Manta Multimedia, Masstel, Matrix, Maxcom, Maxtron, MAXVI, Maxwest, Maze, meanIT, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Melrose, Memup, Metz, MEU, MicroMax, Microsoft, Minix, Mio, Miray, Mito, Mitsubishi, MIXC, MiXzo, MLLED, MLS, Mobicel, Mobiistar, Mobiola, Mobistel, Mobo, Modecom, Mofut, Motorola, Movic, Mpman, MSI, MTC, MTN, Multilaser, MYFON, MyPhone, Myria, Mystery, MyTab, MyWigo, National, Navitech, Navon, NEC, Neffos, Neomi, Netgear, NeuImage, Newgen, Newland, Newman, NewsMy, NEXBOX, Nexian, NEXON, Nextbit, NextBook, NextTab, NGM, NG Optics, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, Nokia, Nomi, Nomu, Nos, Nous, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Obi, Odys, Okapia, Onda, OnePlus, Onix, ONN, Openbox, OPPO, Opsson, Orange, Orbic, Ordissimo, Ouki, Oukitel, OUYA, Overmax, Ovvi, Owwo, Oysters, Oyyu, OzoneHD, P-UP, Palm, Panacom, Panasonic, Pantech, PCBOX, PCD, PCD Argentina, PEAQ, Pentagram, Phicomm, Philco, Philips, Phonemax, phoneOne, Pioneer, Pixelphone, Pixus, Ployer, Plum, PocketBook, POCO, Point of View, Polaroid, PolyPad, Polytron, Pomp, Positivo, Positivo BGH, PPTV, Prestigio, Primepad, Primux, Prixton, Proline, ProScan, Protruly, PULID, Q-Touch, Q.Bell, Qilive, QMobile, Qtek, Quantum, Quechua, Qumo, R-TV, Ramos, Ravoz, Razer, RCA Tablets, Readboy, Realme, RED, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Roadrover, Rokit, Roku, Rombica, Ross&Moor, Rover, RoverPad, RT Project, RugGear, Runbo, Ryte, Safaricom, Sagem, Samsung, Sanei, Santin, Sanyo, Savio, Schneider, Sega, Selenga, Selevision, Selfix, SEMP TCL, Sencor, Sendo, Senkatel, Senseit, Senwa, SFR, Sharp, Shift Phones, Shtrikh-M, Shuttle, Siemens, Sigma, Silent Circle, Simbans, Sky, Skyworth, Smart, Smartfren, Smartisan, Softbank, Sonim, Sony, Sony Ericsson, Soundmax, Soyes, Spectrum, Spice, SQOOL, Star, Starlight, Starway, STF Mobile, STK, Stonex, Storex, Sugar, Sumvision, Sunstech, SunVan, Sunvell, SuperSonic, Supra, Swipe, SWISSMOBILITY, Swisstone, Symphony, Syrox, T-Mobile, Takara, TB Touch, TCL, TD Systems, TechniSat, TechnoTrend, TechPad, Teclast, Tecno Mobile, Tele2, Telefunken, Telego, Telenor, Telit, Tesco, Tesla, Tetratab, teXet, ThL, Thomson, TIANYU, Time2, Timovi, Tinai, Tinmo, TiPhone, Tolino, Tone, Tooky, Top House, Toplux, Torex, Toshiba, Touchmate, Transpeed, TrekStor, Trevi, Tronsmart, True, TTEC, Tunisie Telecom, Turbo, Turbo-X, TurboKids, TVC, TWM, Twoe, U.S. Cellular, Ugoos, Uhans, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, Unknown, Unnecto, Unonu, Unowhy, UTOK, UTStarcom, Vastking, Venso, Verico, Verizon, Vernee, Vertex, Vertu, Verykool, Vesta, Vestel, VGO TEL, Videocon, Videoweb, ViewSonic, Vinga, Vinsoc, Vipro, Vitelcom, Vivax, Vivo, Vizio, VK Mobile, VKworld, Vodacom, Vodafone, Vonino, Vontar, Vorago, Vorke, Voto, Voxtel, Voyo, Vsmart, Vsun, Vulcan, VVETIME, Walton, Web TV, Weimei, WellcoM, Wexler, Wieppo, Wigor, Wiko, Wileyfox, Winds, Wink, Wiseasy, Wolder, Wolfgang, Wonu, Woo, Wortmann, Woxter, X-BO, X-TIGI, X-View, Xgody, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Xshitou, Xtouch, Yandex, Yarvik, Yes, Yezz, Yota, Ytone, Yu, Yuandao, Yusun, Yxtel, Zatec, Zeemi, Zen, Zenek, Zfiner, Zidoo, Ziox, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, öwn
|
243 |
|
244 |
### List of detected bots:
|
245 |
|
app/vendor/matomo/device-detector/regexes/bots.yml
CHANGED
@@ -112,7 +112,7 @@
|
|
112 |
name: 'Castro 2'
|
113 |
category: 'Service Agent'
|
114 |
url: 'http://supertop.co/castro/'
|
115 |
-
producer:
|
116 |
name: 'Supertop'
|
117 |
url: 'http://supertop.co'
|
118 |
|
@@ -788,7 +788,7 @@
|
|
788 |
name: ''
|
789 |
url: ''
|
790 |
|
791 |
-
- regex
|
792 |
name: 'masscan'
|
793 |
url: 'https://github.com/robertdavidgraham/masscan'
|
794 |
category: 'Crawler'
|
@@ -941,7 +941,7 @@
|
|
941 |
category: 'Crawler'
|
942 |
producer:
|
943 |
name: 'Nuzzel'
|
944 |
-
url: https://www.nuzzel.com/
|
945 |
|
946 |
- regex: 'Octopus [0-9]'
|
947 |
name: 'Octopus'
|
112 |
name: 'Castro 2'
|
113 |
category: 'Service Agent'
|
114 |
url: 'http://supertop.co/castro/'
|
115 |
+
producer:
|
116 |
name: 'Supertop'
|
117 |
url: 'http://supertop.co'
|
118 |
|
788 |
name: ''
|
789 |
url: ''
|
790 |
|
791 |
+
- regex: 'masscan'
|
792 |
name: 'masscan'
|
793 |
url: 'https://github.com/robertdavidgraham/masscan'
|
794 |
category: 'Crawler'
|
941 |
category: 'Crawler'
|
942 |
producer:
|
943 |
name: 'Nuzzel'
|
944 |
+
url: 'https://www.nuzzel.com/'
|
945 |
|
946 |
- regex: 'Octopus [0-9]'
|
947 |
name: 'Octopus'
|
app/vendor/matomo/device-detector/regexes/client/browser_engine.yml
CHANGED
@@ -23,6 +23,9 @@
|
|
23 |
- regex: 'Presto'
|
24 |
name: 'Presto'
|
25 |
|
|
|
|
|
|
|
26 |
- regex: '(?<!like )Gecko'
|
27 |
name: 'Gecko'
|
28 |
|
@@ -34,6 +37,3 @@
|
|
34 |
|
35 |
- regex: 'Servo'
|
36 |
name: 'Servo'
|
37 |
-
|
38 |
-
- regex: 'Goanna'
|
39 |
-
name: 'Goanna'
|
23 |
- regex: 'Presto'
|
24 |
name: 'Presto'
|
25 |
|
26 |
+
- regex: 'Goanna'
|
27 |
+
name: 'Goanna'
|
28 |
+
|
29 |
- regex: '(?<!like )Gecko'
|
30 |
name: 'Gecko'
|
31 |
|
37 |
|
38 |
- regex: 'Servo'
|
39 |
name: 'Servo'
|
|
|
|
|
|
app/vendor/matomo/device-detector/regexes/client/browsers.yml
CHANGED
@@ -5,6 +5,86 @@
|
|
5 |
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6 |
###############
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
# Safe Exam Browser (https://safeexambrowser.org/)
|
9 |
- regex: 'SEB/(?:(\d+[\.\d]+))?'
|
10 |
name: 'Safe Exam Browser'
|
@@ -276,6 +356,27 @@
|
|
276 |
engine:
|
277 |
default: 'Blink'
|
278 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
279 |
# Huawei Browser
|
280 |
- regex: 'HuaweiBrowser(?:/(\d+[\.\d]+))?'
|
281 |
name: 'Huawei Browser'
|
@@ -569,7 +670,7 @@
|
|
569 |
version: '$1'
|
570 |
|
571 |
# t-online.de Browser (https://www.t-online.de/computer/browser/)
|
572 |
-
- regex: 'TO-Browser
|
573 |
name: 't-online.de Browser'
|
574 |
version: '$1'
|
575 |
|
@@ -893,13 +994,6 @@
|
|
893 |
engine:
|
894 |
default: 'Blink'
|
895 |
|
896 |
-
# Yaani Browser
|
897 |
-
- regex: 'YaaniBrowser(?:/(\d+[\.\d]+))?'
|
898 |
-
name: 'Yaani Browser'
|
899 |
-
version: '$1'
|
900 |
-
engine:
|
901 |
-
default: 'Blink'
|
902 |
-
|
903 |
#Vivaldi
|
904 |
- regex: 'Vivaldi(?:/(\d+[\.\d]+))?'
|
905 |
name: 'Vivaldi'
|
@@ -1481,7 +1575,7 @@
|
|
1481 |
name: 'iCab Mobile'
|
1482 |
version: '$1'
|
1483 |
engine:
|
1484 |
-
|
1485 |
|
1486 |
#iCab
|
1487 |
- regex: 'iCab(?:[ /](\d+[\.\d]+))?'
|
@@ -1499,6 +1593,13 @@
|
|
1499 |
engine:
|
1500 |
default: '' # multi engine
|
1501 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1502 |
#Internet Explorer
|
1503 |
- regex: 'IEMobile[ /](\d+[\.\d]+)'
|
1504 |
name: 'IE Mobile'
|
@@ -1512,22 +1613,22 @@
|
|
1512 |
default: 'Trident'
|
1513 |
- regex: 'MSIE.*Trident/4.0'
|
1514 |
name: 'Internet Explorer'
|
1515 |
-
version: 8.0
|
1516 |
engine:
|
1517 |
default: 'Trident'
|
1518 |
- regex: 'MSIE.*Trident/5.0'
|
1519 |
name: 'Internet Explorer'
|
1520 |
-
version: 9.0
|
1521 |
engine:
|
1522 |
default: 'Trident'
|
1523 |
- regex: 'MSIE.*Trident/6.0'
|
1524 |
name: 'Internet Explorer'
|
1525 |
-
version: 10.0
|
1526 |
engine:
|
1527 |
default: 'Trident'
|
1528 |
- regex: 'Trident/[78].0'
|
1529 |
name: 'Internet Explorer'
|
1530 |
-
version: 11.0
|
1531 |
engine:
|
1532 |
default: 'Trident'
|
1533 |
- regex: 'MSIE (\d+[\.\d]+)'
|
@@ -1738,13 +1839,13 @@
|
|
1738 |
version: '$1'
|
1739 |
engine:
|
1740 |
default: 'WebKit'
|
1741 |
-
|
1742 |
-
#Dorado
|
1743 |
- regex: 'Dorado WAP-Browser[/ ](\d+[\.\d]+)'
|
1744 |
name: 'Dorado'
|
1745 |
version: '$1'
|
1746 |
|
1747 |
-
#NetSurf
|
1748 |
- regex: 'NetSurf(?:/(\d+[\.\d]+))?'
|
1749 |
name: 'NetSurf'
|
1750 |
version: '$1'
|
@@ -1772,4 +1873,8 @@
|
|
1772 |
- regex: 'GOGGalaxyClient/(?:(\d+[\.\d]+))?'
|
1773 |
name: 'GOG Galaxy'
|
1774 |
version: '$1'
|
1775 |
-
|
|
|
|
|
|
|
|
5 |
# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
|
6 |
###############
|
7 |
|
8 |
+
# Kode Browser (https://www.kodebrowser.com/ | https://play.google.com/store/apps/details?id=com.app.downloadmanager | https://apps.apple.com/us/app/kode-browser-fast-private/id625458492)
|
9 |
+
- regex: '(?:Kode(?:iOS)?/(?:(\d+[\.\d]+))?|TansoDL)'
|
10 |
+
name: 'Kode Browser'
|
11 |
+
version: '$1'
|
12 |
+
|
13 |
+
# UR Browser (https://www.ur-browser.com/)
|
14 |
+
- regex: 'UR/(?:(\d+[\.\d]+))'
|
15 |
+
name: 'UR Browser'
|
16 |
+
version: '$1'
|
17 |
+
engine:
|
18 |
+
default: 'Blink'
|
19 |
+
|
20 |
+
# Smart Lenovo Browser (https://www.lenovo.com.cn/)
|
21 |
+
- regex: 'Chrome/.+ SLBrowser/(?:(\d+[\.\d]+))?'
|
22 |
+
name: 'Smart Lenovo Browser'
|
23 |
+
version: '$1'
|
24 |
+
engine:
|
25 |
+
default: 'Blink'
|
26 |
+
- regex: 'SLBrowser/(?:(\d+[\.\d]+))?'
|
27 |
+
name: 'Smart Lenovo Browser'
|
28 |
+
version: '$1'
|
29 |
+
|
30 |
+
# Browzar (https://www.browzar.com/)
|
31 |
+
- regex: 'Browzar'
|
32 |
+
name: 'Browzar'
|
33 |
+
version: '$1'
|
34 |
+
|
35 |
+
# Stargon (http://www.stargon.org/ | https://play.google.com/store/apps/details?id=net.onecook.browser)
|
36 |
+
- regex: 'Stargon/(?:(\d+[\.\d]+))?'
|
37 |
+
name: 'Stargon'
|
38 |
+
version: '$1'
|
39 |
+
engine:
|
40 |
+
default: 'Blink'
|
41 |
+
|
42 |
+
# NFS Browser (https://github.com/nfschina/nfs-browser)
|
43 |
+
- regex: 'NFSBrowser/(?:(\d+[\.\d]+))?'
|
44 |
+
name: 'NFS Browser'
|
45 |
+
version: '$1'
|
46 |
+
engine:
|
47 |
+
default: 'Blink'
|
48 |
+
|
49 |
+
# Borealis Navigator (https://binaryoutcast.com/projects/borealis/)
|
50 |
+
- regex: 'Borealis/(\d+[\.\d]+)'
|
51 |
+
name: 'Borealis Navigator'
|
52 |
+
version: '$1'
|
53 |
+
|
54 |
+
# Yolo Browser
|
55 |
+
- regex: 'YoloBrowser/(?:(\d+[\.\d]+))?'
|
56 |
+
name: 'Yolo Browser'
|
57 |
+
version: '$1'
|
58 |
+
engine:
|
59 |
+
default: 'Blink'
|
60 |
+
|
61 |
+
# Phoenix Browser (http://phoenix-browser.com/ | https://play.google.com/store/apps/details?id=com.transsion.phoenix)
|
62 |
+
- regex: 'PHX/(?:(\d+[\.\d]+))?'
|
63 |
+
name: 'Phoenix Browser'
|
64 |
+
version: '$1'
|
65 |
+
|
66 |
+
# PrivacyWall (https://play.google.com/store/apps/details?id=org.privacywall.browser)
|
67 |
+
- regex: 'PrivacyWall/(?:(\d+[\.\d]+))?'
|
68 |
+
name: 'PrivacyWall'
|
69 |
+
version: '$1'
|
70 |
+
|
71 |
+
# Ghostery Privacy Browser (https://play.google.com/store/apps/details?id=com.ghostery.android.ghostery | https://apps.apple.com/us/app/ghostery-privacy-browser/id472789016)
|
72 |
+
- regex: 'Ghostery:?(\d+[\.\d]+)?'
|
73 |
+
name: 'Ghostery Privacy Browser'
|
74 |
+
version: '$1'
|
75 |
+
|
76 |
+
# Yaani Browser
|
77 |
+
- regex: 'Firefox/.*(?:Turkcell-)?YaaniBrowser(?:/(\d+[\.\d]+))?'
|
78 |
+
name: 'Yaani Browser'
|
79 |
+
version: '$1'
|
80 |
+
engine:
|
81 |
+
default: 'Gecko'
|
82 |
+
- regex: '(?:Turkcell-)?YaaniBrowser(?:/(\d+[\.\d]+))?'
|
83 |
+
name: 'Yaani Browser'
|
84 |
+
version: '$1'
|
85 |
+
engine:
|
86 |
+
default: 'Blink'
|
87 |
+
|
88 |
# Safe Exam Browser (https://safeexambrowser.org/)
|
89 |
- regex: 'SEB/(?:(\d+[\.\d]+))?'
|
90 |
name: 'Safe Exam Browser'
|
356 |
engine:
|
357 |
default: 'Blink'
|
358 |
|
359 |
+
# Slimjet (https://slimjet.com)
|
360 |
+
- regex: 'Slimjet/(?:(\d+[\.\d]+))'
|
361 |
+
name: 'Slimjet'
|
362 |
+
version: '$1'
|
363 |
+
engine:
|
364 |
+
default: 'Blink'
|
365 |
+
|
366 |
+
# 7Star
|
367 |
+
- regex: '7Star/(?:(\d+[\.\d]+))'
|
368 |
+
name: '7Star'
|
369 |
+
version: '$1'
|
370 |
+
engine:
|
371 |
+
default: 'Blink'
|
372 |
+
|
373 |
+
# MxNitro
|
374 |
+
- regex: 'MxNitro/(?:(\d+[\.\d]+))'
|
375 |
+
name: 'MxNitro'
|
376 |
+
version: '$1'
|
377 |
+
engine:
|
378 |
+
default: 'Blink'
|
379 |
+
|
380 |
# Huawei Browser
|
381 |
- regex: 'HuaweiBrowser(?:/(\d+[\.\d]+))?'
|
382 |
name: 'Huawei Browser'
|
670 |
version: '$1'
|
671 |
|
672 |
# t-online.de Browser (https://www.t-online.de/computer/browser/)
|
673 |
+
- regex: '(?:TO-Browser/TOB|DT-Browser/DTB)(\d+[\.\d]+)'
|
674 |
name: 't-online.de Browser'
|
675 |
version: '$1'
|
676 |
|
994 |
engine:
|
995 |
default: 'Blink'
|
996 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
997 |
#Vivaldi
|
998 |
- regex: 'Vivaldi(?:/(\d+[\.\d]+))?'
|
999 |
name: 'Vivaldi'
|
1575 |
name: 'iCab Mobile'
|
1576 |
version: '$1'
|
1577 |
engine:
|
1578 |
+
default: 'WebKit'
|
1579 |
|
1580 |
#iCab
|
1581 |
- regex: 'iCab(?:[ /](\d+[\.\d]+))?'
|
1593 |
engine:
|
1594 |
default: '' # multi engine
|
1595 |
|
1596 |
+
# Crazy Browser
|
1597 |
+
- regex: 'Crazy Browser (\d+[\.\d]+)'
|
1598 |
+
name: 'Crazy Browser'
|
1599 |
+
version: '$1'
|
1600 |
+
engine:
|
1601 |
+
default: 'Trident'
|
1602 |
+
|
1603 |
#Internet Explorer
|
1604 |
- regex: 'IEMobile[ /](\d+[\.\d]+)'
|
1605 |
name: 'IE Mobile'
|
1613 |
default: 'Trident'
|
1614 |
- regex: 'MSIE.*Trident/4.0'
|
1615 |
name: 'Internet Explorer'
|
1616 |
+
version: '8.0'
|
1617 |
engine:
|
1618 |
default: 'Trident'
|
1619 |
- regex: 'MSIE.*Trident/5.0'
|
1620 |
name: 'Internet Explorer'
|
1621 |
+
version: '9.0'
|
1622 |
engine:
|
1623 |
default: 'Trident'
|
1624 |
- regex: 'MSIE.*Trident/6.0'
|
1625 |
name: 'Internet Explorer'
|
1626 |
+
version: '10.0'
|
1627 |
engine:
|
1628 |
default: 'Trident'
|
1629 |
- regex: 'Trident/[78].0'
|
1630 |
name: 'Internet Explorer'
|
1631 |
+
version: '11.0'
|
1632 |
engine:
|
1633 |
default: 'Trident'
|
1634 |
- regex: 'MSIE (\d+[\.\d]+)'
|
1839 |
version: '$1'
|
1840 |
engine:
|
1841 |
default: 'WebKit'
|
1842 |
+
|
1843 |
+
# Dorado
|
1844 |
- regex: 'Dorado WAP-Browser[/ ](\d+[\.\d]+)'
|
1845 |
name: 'Dorado'
|
1846 |
version: '$1'
|
1847 |
|
1848 |
+
# NetSurf
|
1849 |
- regex: 'NetSurf(?:/(\d+[\.\d]+))?'
|
1850 |
name: 'NetSurf'
|
1851 |
version: '$1'
|
1873 |
- regex: 'GOGGalaxyClient/(?:(\d+[\.\d]+))?'
|
1874 |
name: 'GOG Galaxy'
|
1875 |
version: '$1'
|
1876 |
+
|
1877 |
+
# MAUI Wap Browser
|
1878 |
+
- regex: 'WAP Browser/MAUI|(?:\w+)?Maui Wap Browser|MAUI[- ]Browser'
|
1879 |
+
name: 'MAUI WAP Browser'
|
1880 |
+
version: ''
|
app/vendor/matomo/device-detector/regexes/client/feed_readers.yml
CHANGED
@@ -22,7 +22,7 @@
|
|
22 |
version: ''
|
23 |
url: 'http://lincgeek.org/bashpodder/'
|
24 |
type: 'Feed Reader'
|
25 |
-
|
26 |
- regex: 'Breaker/v([\d\.]+)'
|
27 |
name: 'Breaker'
|
28 |
version: '$1'
|
22 |
version: ''
|
23 |
url: 'http://lincgeek.org/bashpodder/'
|
24 |
type: 'Feed Reader'
|
25 |
+
|
26 |
- regex: 'Breaker/v([\d\.]+)'
|
27 |
name: 'Breaker'
|
28 |
version: '$1'
|
app/vendor/matomo/device-detector/regexes/client/mediaplayers.yml
CHANGED
@@ -32,7 +32,7 @@
|
|
32 |
- regex: 'FlyCast(?:/([\d\.]+))?'
|
33 |
name: 'FlyCast'
|
34 |
version: '$1'
|
35 |
-
|
36 |
- regex: 'foobar2000(?:/([\d\.]+))?'
|
37 |
name: 'Foobar2000'
|
38 |
version: '$1'
|
32 |
- regex: 'FlyCast(?:/([\d\.]+))?'
|
33 |
name: 'FlyCast'
|
34 |
version: '$1'
|
35 |
+
|
36 |
- regex: 'foobar2000(?:/([\d\.]+))?'
|
37 |
name: 'Foobar2000'
|
38 |
version: '$1'
|
app/vendor/matomo/device-detector/regexes/client/pim.yml
CHANGED
@@ -48,4 +48,4 @@
|
|
48 |
# SeaMonkey
|
49 |
- regex: '(?:SeaMonkey|Iceape)(?:/(\d+[\.\d]+))?'
|
50 |
name: 'SeaMonkey'
|
51 |
-
version: '$1'
|
48 |
# SeaMonkey
|
49 |
- regex: '(?:SeaMonkey|Iceape)(?:/(\d+[\.\d]+))?'
|
50 |
name: 'SeaMonkey'
|
51 |
+
version: '$1'
|
app/vendor/matomo/device-detector/regexes/device/cameras.yml
CHANGED
@@ -17,12 +17,12 @@ Samsung:
|
|
17 |
device: 'camera'
|
18 |
models:
|
19 |
- regex: 'EK-GN120'
|
20 |
-
model: '
|
21 |
- regex: 'EK-GC100'
|
22 |
-
model: '
|
23 |
- regex: 'EK-GC110'
|
24 |
-
model: '
|
25 |
- regex: 'EK-GC200'
|
26 |
-
model: '
|
27 |
- regex: 'EK-GC([0-9]{3})'
|
28 |
-
model: '
|
17 |
device: 'camera'
|
18 |
models:
|
19 |
- regex: 'EK-GN120'
|
20 |
+
model: 'Galaxy NX'
|
21 |
- regex: 'EK-GC100'
|
22 |
+
model: 'Galaxy Camera'
|
23 |
- regex: 'EK-GC110'
|
24 |
+
model: 'Galaxy Camera WiFi only'
|
25 |
- regex: 'EK-GC200'
|
26 |
+
model: 'Galaxy Camera 2'
|
27 |
- regex: 'EK-GC([0-9]{3})'
|
28 |
+
model: 'Galaxy Camera $1'
|
app/vendor/matomo/device-detector/regexes/device/consoles.yml
CHANGED
@@ -14,8 +14,14 @@ Microsoft:
|
|
14 |
regex: 'Xbox'
|
15 |
device: 'console'
|
16 |
models:
|
|
|
|
|
|
|
|
|
17 |
- regex: 'Xbox One'
|
18 |
model: 'Xbox One'
|
|
|
|
|
19 |
- regex: 'Xbox'
|
20 |
model: 'Xbox 360'
|
21 |
|
14 |
regex: 'Xbox'
|
15 |
device: 'console'
|
16 |
models:
|
17 |
+
- regex: 'Xbox Series X'
|
18 |
+
model: 'Xbox Series X'
|
19 |
+
- regex: 'Xbox One X'
|
20 |
+
model: 'Xbox One X'
|
21 |
- regex: 'Xbox One'
|
22 |
model: 'Xbox One'
|
23 |
+
- regex: 'XBOX_ONE_ED'
|
24 |
+
model: 'Xbox One S'
|
25 |
- regex: 'Xbox'
|
26 |
model: 'Xbox 360'
|
27 |
|
app/vendor/matomo/device-detector/regexes/device/mobiles.yml
CHANGED
@@ -176,6 +176,8 @@ Microsoft:
|
|
176 |
model: 'Lumia 435'
|
177 |
- regex: 'RM-1031|Lumia 532'
|
178 |
model: 'Lumia 532'
|
|
|
|
|
179 |
- regex: 'RM-109[02]|RM-1089|Lumia 535'
|
180 |
model: 'Lumia 535'
|
181 |
- regex: 'RM-1141|Lumia 540'
|
@@ -184,9 +186,18 @@ Microsoft:
|
|
184 |
model: 'Lumia 550'
|
185 |
- regex: 'RM-1010'
|
186 |
model: 'Lumia 638'
|
|
|
|
|
|
|
187 |
- regex: 'RM-106[57]|RM-1096|Lumia 640 XL'
|
188 |
model: 'Lumia 640 XL'
|
189 |
device: 'phablet'
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
- regex: 'RM-1109|RM-1113|RM-107[23467]|Lumia 640'
|
191 |
model: 'Lumia 640'
|
192 |
- regex: 'RM-1154|Lumia 650'
|
@@ -195,9 +206,14 @@ Microsoft:
|
|
195 |
model: 'Lumia 650 SS'
|
196 |
- regex: 'Lumia 850'
|
197 |
model: 'Lumia 850'
|
|
|
|
|
|
|
198 |
- regex: 'Lumia 950 XL'
|
199 |
model: 'Lumia 950 XL'
|
200 |
device: 'phablet'
|
|
|
|
|
201 |
- regex: 'Lumia 950'
|
202 |
model: 'Lumia 950'
|
203 |
- regex: 'RM-994|Lumia 1320'
|
@@ -690,6 +706,11 @@ MicroMax:
|
|
690 |
model: 'Bolt Selfie'
|
691 |
- regex: 'Q426'
|
692 |
model: 'Canvas Mega 2'
|
|
|
|
|
|
|
|
|
|
|
693 |
- regex: 'MicroMax(?:[ \-\_])?(P[a-z0-9]+)'
|
694 |
model: '$1'
|
695 |
device: 'tablet'
|
@@ -811,6 +832,8 @@ Bravis:
|
|
811 |
model: 'A510 Jeans 4G'
|
812 |
- regex: 'A509_Jeans'
|
813 |
model: 'A509 Jeans'
|
|
|
|
|
814 |
- regex: 'N1_550_Cruiser'
|
815 |
model: 'N1-550 Cruiser'
|
816 |
- regex: 'BRAVIS OMEGA'
|
@@ -819,6 +842,8 @@ Bravis:
|
|
819 |
model: 'Biz'
|
820 |
- regex: 'BRAVIS POWER'
|
821 |
model: 'Power'
|
|
|
|
|
822 |
|
823 |
- regex: 'BRAVIS[ _]SLIM[ _]3G'
|
824 |
model: 'Slim 3G'
|
@@ -842,7 +867,7 @@ Bravis:
|
|
842 |
|
843 |
# Acer
|
844 |
Acer:
|
845 |
-
regex: 'acer|(?<!Satellite |ZTE BLADE |ImSmart |ERGO |X-Style Tab )a(?:101|110|2[10]0|211|50[10]|51[10]|70[10])(?:[);/ ]|$)|Android.*V3[67]0(?:[);/ ]|$)|Android.*Z1[23456]0 Build|Android.*Z5\d{2} Build|Android.*T0[234678] Build|Android.*S55(?:[);/ ]|$)|(?:A1-(713(HD)?|7[23]4|830|841|840FHD|81[01])|A3-A[1234][01]|B1-(7[1235-8][01](HD)?|7[23]3|7A0|8[1235]0|A71|860A)|B3-(A[125]0|A3[02]|A40FHD)|E39)(?:[);/ ]|$)|S5[12]0 Build|(DA[0-9]+HQ?L|Aspire V5-121|Chromebook 14 \(CB3-431\)|Predator G9-793|GT-810|B1-870|B3-A4[02])(?:[);/ ]|$)'
|
846 |
device: 'smartphone'
|
847 |
models:
|
848 |
# smart displays
|
@@ -860,6 +885,9 @@ Acer:
|
|
860 |
- regex: 'A1-81[01]'
|
861 |
model: 'Iconia A'
|
862 |
device: 'tablet'
|
|
|
|
|
|
|
863 |
- regex: 'A1-84(1|0FHD)'
|
864 |
model: 'Iconia Tab 8'
|
865 |
device: 'tablet'
|
@@ -890,7 +918,7 @@ Acer:
|
|
890 |
- regex: 'B1-8[123567]0'
|
891 |
model: 'Iconia One 8'
|
892 |
device: 'tablet'
|
893 |
-
- regex: 'B3-A([125]0|3[02]|
|
894 |
model: 'Iconia One 10'
|
895 |
device: 'tablet'
|
896 |
- regex: 'A101'
|
@@ -974,7 +1002,7 @@ Acer:
|
|
974 |
- regex: '(?:Acer )?(Chromebook 14)'
|
975 |
model: '$1'
|
976 |
device: 'desktop'
|
977 |
-
- regex: '(Aspire V5-121)'
|
978 |
model: '$1'
|
979 |
device: 'desktop'
|
980 |
- regex: '(Predator G9-793)'
|
@@ -1088,9 +1116,9 @@ Arian Space:
|
|
1088 |
- regex: '70 ST7001RW'
|
1089 |
model: '70'
|
1090 |
|
1091 |
-
# Alcatel
|
1092 |
Alcatel:
|
1093 |
-
regex: 'Alcatel|Alc(?!or )[a-z0-9]+|One[ _]?Touch|idol3|TIMXL|(?:(?:4003[AJ]|4009[ADEFIKMSX]|4013[DEJKMX]|4014[ADEKMX]|4015[ADNTX]|4016[ADX]|4017[ADEFSX]|4018[ADEFMX]|4024[EDX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|4034L|4034[ADEFGX]|4035[ADXY]|4045[ADEX]|4047[ADFGNX]|4049[DEGMX]|4060[SW]|A466BG|A621BL|4114E|5001[ADJTU]|5002[ADF]|5003[ADG]|5007[AU]|5008[DUY]|5009[AD]|5010[DEGSUX]|5011A|5012[DFG]|5015[ADEX]|5016[AXJ]|5017[ABDEOX]|5019D|5022[EDX]|5023[EF]|5024[
|
1094 |
device: 'smartphone'
|
1095 |
models:
|
1096 |
- regex: '5022[EDX]|5070D'
|
@@ -1159,7 +1187,7 @@ Alcatel:
|
|
1159 |
model: 'One Touch Astro'
|
1160 |
- regex: '5027B'
|
1161 |
model: 'One Touch Dawn'
|
1162 |
-
- regex: '5024[
|
1163 |
model: '1S'
|
1164 |
- regex: '5002[AD]'
|
1165 |
model: '1B (2020)'
|
@@ -1171,8 +1199,10 @@ Alcatel:
|
|
1171 |
model: 'One Touch Fierce 2'
|
1172 |
- regex: '5056[NW]'
|
1173 |
model: 'One Touch Fierce 4'
|
1174 |
-
- regex: '
|
1175 |
model: 'One Touch Fierce XL'
|
|
|
|
|
1176 |
- regex: '6016[AX]'
|
1177 |
model: 'One Touch Idol 2 mini'
|
1178 |
- regex: '6016[DE]'
|
@@ -1242,6 +1272,9 @@ Alcatel:
|
|
1242 |
- regex: '9007[TX]'
|
1243 |
model: 'One Touch Pixi 3 7" 4G'
|
1244 |
device: 'tablet'
|
|
|
|
|
|
|
1245 |
- regex: '9022X'
|
1246 |
model: 'One Touch Pixi 3 8"'
|
1247 |
device: 'phablet'
|
@@ -1301,7 +1334,7 @@ Alcatel:
|
|
1301 |
model: 'A30 Fierce'
|
1302 |
- regex: '5085[GO]'
|
1303 |
model: 'A50'
|
1304 |
-
- regex: '5048[
|
1305 |
model: '3X (2019)'
|
1306 |
- regex: '5049W'
|
1307 |
model: 'Revvl'
|
@@ -1399,10 +1432,14 @@ Alcatel:
|
|
1399 |
model: '1V (2020)'
|
1400 |
- regex: '5003[ADG]'
|
1401 |
model: '1C (2019)'
|
|
|
|
|
1402 |
- regex: '5024J'
|
1403 |
model: '1S'
|
1404 |
-
- regex: '
|
1405 |
model: '1S (2020)'
|
|
|
|
|
1406 |
- regex: '5001[ADJTU]'
|
1407 |
model: '1V'
|
1408 |
- regex: '5059[ADXYZIT]'
|
@@ -1416,7 +1453,7 @@ Alcatel:
|
|
1416 |
model: '3'
|
1417 |
- regex: '5029E'
|
1418 |
model: '3 (2020)'
|
1419 |
-
- regex: '
|
1420 |
model: '3L (2020)'
|
1421 |
- regex: '5032W|5099[ADYUI]'
|
1422 |
model: '3V'
|
@@ -1427,6 +1464,8 @@ Alcatel:
|
|
1427 |
device: 'phablet'
|
1428 |
- regex: '5058[AIY]'
|
1429 |
model: '3X'
|
|
|
|
|
1430 |
- regex: '5086[ADY]'
|
1431 |
model: '5'
|
1432 |
- regex: '6062W'
|
@@ -1451,7 +1490,7 @@ Alcatel:
|
|
1451 |
|
1452 |
# Allview
|
1453 |
Allview:
|
1454 |
-
regex: 'Allview|A4You|A5_(?:Easy(?:_TM)?|Ready(?:_TM)?|Quad|Quad_Plus_TM)|A[56789]_Lite|A5Smiley|A6_Duo|A10_Lite_2019|A10_Plus|AX2_Frenzy|AX4Nano|AX5NanoQ|C6_Duo|E[23]_Living|E3_(?:Jump|Sign)|E4_Lite|M9_Connect|P(?:43_Easy|[5689]_Energy|6_Energy_Lite|[68]_Energy_Mini(?:_TM)?|(41|[458])_eMagic(?:_TM)?|[589](?:_)?Life(?:_TM)?|[567]_Lite(?:_TM)?|6_plus|[45678]_Pro|7_Seon|10_Life|10_Max|10_Style|7_Xtreme|6_Qmax|4_Quad)|V(?:[134]_Viper|1_Viper_I|2_Viper_(?:E|I|S|X|X_plus|Xe))|X(?:[
|
1455 |
device: 'smartphone'
|
1456 |
models:
|
1457 |
- regex: 'A4You'
|
@@ -1524,7 +1563,9 @@ Allview:
|
|
1524 |
model: 'V2 Viper X Plus'
|
1525 |
- regex: 'V2_Viper_(E|I|S|X(?:e)?)'
|
1526 |
model: 'V2 Viper $1'
|
1527 |
-
- regex: '
|
|
|
|
|
1528 |
model: 'X$1 Soul Xtreme'
|
1529 |
- regex: 'X4_Soul_Infinity_(L|N|S|Z)'
|
1530 |
model: 'X4 Soul Infinity $1'
|
@@ -1540,7 +1581,7 @@ Allview:
|
|
1540 |
model: 'X$1 Soul Pro'
|
1541 |
- regex: 'X2_Soul_Style_Plus'
|
1542 |
model: 'X2 Soul Style Plus'
|
1543 |
-
- regex: 'X([
|
1544 |
model: 'X$1 Soul Style'
|
1545 |
- regex: 'X([12345])_Soul'
|
1546 |
model: 'X$1 Soul'
|
@@ -1587,7 +1628,7 @@ Allview:
|
|
1587 |
- regex: 'Allview3SpeedQuad'
|
1588 |
device: 'tablet'
|
1589 |
model: 'Alldro 3 Speed Quad'
|
1590 |
-
- regex: 'Viva_(H801|100[13]G|H1001_LTE)'
|
1591 |
device: 'tablet'
|
1592 |
model: 'Viva $1'
|
1593 |
- regex: 'ALLVIEW ?SPEEDI'
|
@@ -1616,10 +1657,10 @@ Allwinner:
|
|
1616 |
regex: '(?:QUAD-CORE A64 p3|ZY-07B)(?:[);/ ]|$)'
|
1617 |
device: 'tablet'
|
1618 |
models:
|
1619 |
-
|
1620 |
-
|
1621 |
-
|
1622 |
-
|
1623 |
|
1624 |
# altron
|
1625 |
altron:
|
@@ -1683,7 +1724,7 @@ Amoi:
|
|
1683 |
|
1684 |
# Ainol
|
1685 |
Ainol:
|
1686 |
-
regex: 'Numy|novo[0-9]|Novo 10 Hero|AX10PRO|NUMY3GAX9|NOVO10 Spark'
|
1687 |
device: 'tablet'
|
1688 |
models:
|
1689 |
- regex: 'Numy 3G AX1'
|
@@ -1702,6 +1743,8 @@ Ainol:
|
|
1702 |
model: 'Numy 3G AX9'
|
1703 |
- regex: '(Novo 10 Hero QuadCore)'
|
1704 |
model: '$1'
|
|
|
|
|
1705 |
- regex: 'Novo7 Flame(?:[);/ ]|$)'
|
1706 |
model: 'Novo 7 Flame'
|
1707 |
- regex: 'NOVO7(?:[);/ ]|$)'
|
@@ -1898,7 +1941,7 @@ Assistant:
|
|
1898 |
|
1899 |
# Ark (Ark Electronic Technology)
|
1900 |
Ark:
|
1901 |
-
regex: '(ARK[_ -])?Benefit[_ -]([^/;]*)(?: Build|\))|EDGE A5HD|Elf_S8|ICON (R40\+|R45)|Impulse[ _](P[12])|
|
1902 |
device: 'smartphone'
|
1903 |
models:
|
1904 |
- regex: '(?:ARK[_ -])?Benefit[_ -]([^/;]*)(?: Build|\))'
|
@@ -1911,8 +1954,8 @@ Ark:
|
|
1911 |
model: 'Edge $1'
|
1912 |
- regex: 'ICON (R40\+|R45)'
|
1913 |
model: 'Icon $1'
|
1914 |
-
- regex: '
|
1915 |
-
model: 'Wizard 1'
|
1916 |
- regex: 'Elf_S8(?:[);/ ]|$)'
|
1917 |
model: 'Elf S8'
|
1918 |
|
@@ -1930,7 +1973,7 @@ Garmin-Asus:
|
|
1930 |
|
1931 |
# Asus
|
1932 |
Asus:
|
1933 |
-
regex: 'Asus|Transformer|ZenFone Max|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|P(?:00[18ACIL]|01[MTVWYZ]|01MA|01T_1|02[13478])(?: Build|\))|X015D|X018D|X003|X00[7ABT]D|Z00D|Z00[MTY]D|Z01[7FGHKMR]D)(?:[);/ ]|$)|G55[023]KL|ZB(631|602|633|55[135]|50[01])KL|ZC(55[134]|520|600)KL|ZA550KL|ZE(520|620|55[2345])KL|ZD55[23]KL|
|
1934 |
device: 'smartphone'
|
1935 |
models:
|
1936 |
# explicit tablet models
|
@@ -2065,7 +2108,7 @@ Asus:
|
|
2065 |
model: 'ZenFone Max Pro M1'
|
2066 |
- regex: '(?:ASUS_)?(X01([AB]D)|ZB633KL)(?:[);/ ]|$)'
|
2067 |
model: 'ZenFone Max M2'
|
2068 |
-
- regex: '(?:ASUS_)?(?:Z00[AD]|Z008D|Z008|Z00AD[AB]
|
2069 |
model: 'ZenFone 2'
|
2070 |
- regex: '(?:ASUS_)?(?:ZenFone 2E)'
|
2071 |
model: 'ZenFone 2E'
|
@@ -2109,7 +2152,7 @@ Asus:
|
|
2109 |
model: 'ZenFone Go Life'
|
2110 |
- regex: '(?:ASUS_)?G550KL'
|
2111 |
model: 'ZenFone Go TV'
|
2112 |
-
- regex: '(?:ASUS_)?
|
2113 |
model: 'ZenFone Go'
|
2114 |
- regex: '(?:ASUS_)?(X00[23])'
|
2115 |
model: 'ZenFone Pegasus'
|
@@ -2159,7 +2202,7 @@ Asus:
|
|
2159 |
model: 'ROG Phone'
|
2160 |
- regex: '(?:ASUS_)?(?:I001D[ABCE]?|ZS660KL)'
|
2161 |
model: 'ROG Phone 2'
|
2162 |
-
- regex: '(?:ASUS_)?(?:I003DD
|
2163 |
model: 'ROG Phone 3'
|
2164 |
|
2165 |
# general detections
|
@@ -2172,9 +2215,9 @@ Asus:
|
|
2172 |
- regex: '(?:Asus|Transformer) ((?:Pad |Prime )?TF[0-9a-z]+)'
|
2173 |
device: 'tablet'
|
2174 |
model: 'Transformer $1'
|
2175 |
-
- regex: 'Chromebook Flip C100PA'
|
2176 |
-
device: '
|
2177 |
-
model: 'Chromebook Flip
|
2178 |
|
2179 |
# Audiovox
|
2180 |
Audiovox:
|
@@ -2266,69 +2309,76 @@ Bitel:
|
|
2266 |
|
2267 |
# Blu
|
2268 |
Blu:
|
2269 |
-
regex: 'BLU |(?:blu|Dash)[ _]([^/;]+) Build|Studio (5.0K|5.5|View XL|Mega|C 8\+8|C HD|C|G|Selfie LTE|Touch|M HD|M5 Plus|J[1258]|X|X8 HD)|Advance (4.0 ?[LM]|5.[02](?: HD)?|A4|L5)|ENERGY (DIAMOND|XL)|LIFE XL|B110DL|Dash (?:X[2L]|L3)|PURE XL|Life One X2|GRAND (?:5.5 HD|XL LTE)|R1 (HD|PLUS)|Tank Xtreme 5.0|Tank Xtreme Pro|STUDIO SELFIE'
|
2270 |
-
device: 'smartphone'
|
2271 |
-
models:
|
2272 |
-
|
2273 |
-
|
2274 |
-
|
2275 |
-
|
2276 |
-
|
2277 |
-
|
2278 |
-
|
2279 |
-
|
2280 |
-
|
2281 |
-
|
2282 |
-
|
2283 |
-
|
2284 |
-
|
2285 |
-
|
2286 |
-
|
2287 |
-
|
2288 |
-
|
2289 |
-
|
2290 |
-
|
2291 |
-
|
2292 |
-
|
2293 |
-
|
2294 |
-
|
2295 |
-
|
2296 |
-
|
2297 |
-
|
2298 |
-
|
2299 |
-
|
2300 |
-
|
2301 |
-
|
2302 |
-
|
2303 |
-
|
2304 |
-
|
2305 |
-
|
2306 |
-
|
2307 |
-
|
2308 |
-
|
2309 |
-
|
2310 |
-
|
2311 |
-
|
2312 |
-
|
2313 |
-
|
2314 |
-
|
2315 |
-
|
2316 |
-
|
2317 |
-
|
2318 |
-
|
2319 |
-
|
2320 |
-
|
2321 |
-
|
2322 |
-
|
2323 |
-
|
2324 |
-
|
2325 |
-
|
2326 |
-
|
2327 |
-
|
2328 |
-
|
2329 |
-
|
2330 |
-
|
2331 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2332 |
|
2333 |
# Bluegood
|
2334 |
Bluegood:
|
@@ -2340,7 +2390,7 @@ Bluegood:
|
|
2340 |
|
2341 |
# Blackview
|
2342 |
Blackview:
|
2343 |
-
regex: 'Blackview|(BV([24-9]000|(5[589]|9[15689])00|6[138]00)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550|BV9700Pro|(?<!Lenovo[_ ])A[68]0(?:Pro)?\))'
|
2344 |
device: 'smartphone'
|
2345 |
models:
|
2346 |
- regex: 'A60Pro\)'
|
@@ -2353,7 +2403,7 @@ Blackview:
|
|
2353 |
model: '$1'
|
2354 |
- regex: '(BV9700)Pro'
|
2355 |
model: '$1 Pro'
|
2356 |
-
- regex: 'Blackview (
|
2357 |
model: '$1'
|
2358 |
- regex: 'BV9000Pro-F'
|
2359 |
model: 'BV9000 Pro F'
|
@@ -2362,7 +2412,7 @@ Blackview:
|
|
2362 |
- regex: '(BV6100)(?:[);/ ]|$)'
|
2363 |
model: '$1'
|
2364 |
device: 'phablet'
|
2365 |
-
- regex: '(BV([24-9]000|(5[589]|9[15689])00)(?:[ _](?:PRO))?)'
|
2366 |
model: '$1'
|
2367 |
- regex: '(P10000(?:[ _](?:PRO))?)'
|
2368 |
model: '$1'
|
@@ -2391,13 +2441,15 @@ Bluboo:
|
|
2391 |
|
2392 |
# Black Fox
|
2393 |
'Black Fox':
|
2394 |
-
regex: 'BMM[ _-]?(?:44[123]D|
|
2395 |
device: 'smartphone'
|
2396 |
models:
|
2397 |
- regex: 'BMM443D'
|
2398 |
model: 'B7 Fox+'
|
2399 |
- regex: 'BMM441S'
|
2400 |
model: 'B8 Fox'
|
|
|
|
|
2401 |
- regex: 'BMM442D'
|
2402 |
model: 'B7'
|
2403 |
- regex: 'BMM531D'
|
@@ -2488,7 +2540,7 @@ VGO TEL:
|
|
2488 |
|
2489 |
# Vivo (vivo.com.cn, vivo.com)
|
2490 |
Vivo:
|
2491 |
-
regex: '((?:VIV-|BBG-)?(?<!FBCR/)vivo(?!(?:Browser)))|(?:V1730(D[AT]|GA)|V18(18CA|01A0|13B[AT]|18T|09[AT]|1[346][AT]|[13]8[AT]|14A|24[B]?A|2[19][AT]|3[12][AT]|36[AT])|V1731CA|V1732[AT]|V1818CT|V19[01]1[AT]|V1932[AT]|V191[3469][AT]|V192[1348]A|V193[04]A|V194[15]A|V1938CT|V1955A|V1938T|V1730EA|V19[26]2A|V196[35]A|V198[16]A|V1936A[L]?|V19[59]0A|V200[125]A|1819|V201[12]A|V202[0345]C?A|V202[
|
2492 |
device: 'smartphone'
|
2493 |
models:
|
2494 |
- regex: 'V1824[B]?A(?:[);/ ]|$)'
|
@@ -2517,6 +2569,8 @@ Vivo:
|
|
2517 |
model: 'iQOO 5'
|
2518 |
- regex: 'V2025A(?:[);/ ]|$)'
|
2519 |
model: 'iQOO 5 Pro'
|
|
|
|
|
2520 |
- regex: 'vivo 1805(?:[);/ ]|$)'
|
2521 |
model: 'Nex'
|
2522 |
- regex: 'V1923A(?:[);/ ]|$)'
|
@@ -2553,6 +2607,8 @@ Vivo:
|
|
2553 |
model: 'V15 Pro'
|
2554 |
- regex: 'vivo 1909(?:[);/ ]|$)'
|
2555 |
model: 'V17 Pro'
|
|
|
|
|
2556 |
- regex: '(?:VIV-|BBG-)?vivo[ _]1601(?:[);/ ]|$)'
|
2557 |
model: 'V5'
|
2558 |
- regex: 'vivo 1609(?:[);/ ]|$)'
|
@@ -2746,13 +2802,17 @@ BenQ-Siemens:
|
|
2746 |
|
2747 |
# BenQ
|
2748 |
BenQ:
|
2749 |
-
regex: 'BENQ(?:[ \-])?([a-z0-9]+)'
|
2750 |
device: 'feature phone'
|
2751 |
-
|
|
|
|
|
|
|
|
|
2752 |
|
2753 |
# Blaupunkt
|
2754 |
Blaupunkt:
|
2755 |
-
regex: 'Blaupunkt|Atlantis[_ ](?:1001A|1010A|A10\.G40[23])|Discovery[_ ](?:A10_302|111C|1000C|1001A?)|Endeavour[_ ](?:785|101[GLM]|1000|1001|101[03]|1100)|Polaris[_ ]803'
|
2756 |
device: 'tablet'
|
2757 |
models:
|
2758 |
- regex: 'Discovery[_ ]111C'
|
@@ -2771,13 +2831,15 @@ Blaupunkt:
|
|
2771 |
model: 'Polaris $1'
|
2772 |
- regex: 'Atlantis[_ ](1001A|1010A|A10\.G40[23])'
|
2773 |
model: 'Atlantis $1'
|
|
|
|
|
2774 |
- regex: 'Blaupunkt (SL 0[124]|SM 01)'
|
2775 |
device: 'smartphone'
|
2776 |
model: '$1'
|
2777 |
|
2778 |
# Bmobile
|
2779 |
Bmobile:
|
2780 |
-
regex: 'Bmobile[_ ]|AX-?([1-9][0-9]{2,3}[eEO+]?|7OO)'
|
2781 |
device: 'smartphone'
|
2782 |
models:
|
2783 |
- regex: 'AX-?([1-9][0-9]{2,3}[eEO+]?)'
|
@@ -2798,14 +2860,18 @@ bq:
|
|
2798 |
model: 'Strike LTE'
|
2799 |
- regex: 'BQ(?:ru)?-(?:6035L)(?:[);/ ]|$)'
|
2800 |
model: 'Strike Power Max'
|
2801 |
-
- regex: 'BQ(?:ru)?-(5535L)(?:[);/ ]|$)'
|
2802 |
model: 'Strike Power Plus'
|
2803 |
-
- regex: 'BQ(S|ru)?-(5070|6040L)(?:[);/ ]|$)'
|
2804 |
model: 'Magic'
|
|
|
|
|
2805 |
- regex: 'BQ(?:S|ru)?-(?:5730L)(?:[);/ ]|$)'
|
2806 |
model: 'Magic C'
|
2807 |
- regex: 'BQ(?:S|ru)?-(?:5731L)(?:[);/ ]|$)'
|
2808 |
model: 'Magic S'
|
|
|
|
|
2809 |
- regex: 'BQ-9011[G]?(?:[);/ ]|$)'
|
2810 |
model: 'Vision'
|
2811 |
device: 'tablet'
|
@@ -2856,7 +2922,7 @@ bq:
|
|
2856 |
model: 'Aura'
|
2857 |
- regex: 'BQ(ru)?[ -]6015L'
|
2858 |
model: 'Universe'
|
2859 |
-
- regex: 'BQ
|
2860 |
model: 'Practic'
|
2861 |
- regex: 'BQ-6001L|BQ-6050'
|
2862 |
model: 'Jumbo'
|
@@ -2866,7 +2932,7 @@ bq:
|
|
2866 |
model: 'Spring'
|
2867 |
- regex: 'BQ-5700L(?:[);/ ]|$)'
|
2868 |
model: 'Space X'
|
2869 |
-
- regex: 'BQ-(?:5591|
|
2870 |
model: 'Jeans'
|
2871 |
- regex: 'BQ-5522'
|
2872 |
model: 'Next'
|
@@ -2902,6 +2968,10 @@ bq:
|
|
2902 |
model: 'Strike Selfie Max'
|
2903 |
- regex: 'BQ(?:ru)?-5503(?:[);/ ]|$)'
|
2904 |
model: 'Nice 2'
|
|
|
|
|
|
|
|
|
2905 |
- regex: 'BQS-5502(?:[);/ ]|$)'
|
2906 |
model: 'Hammer'
|
2907 |
- regex: 'BQS-5501(?:[);/ ]|$)'
|
@@ -2930,6 +3000,8 @@ bq:
|
|
2930 |
model: 'Space'
|
2931 |
- regex: 'BQ-5082(?:[);/ ]|$)'
|
2932 |
model: 'Sense 2'
|
|
|
|
|
2933 |
- regex: 'BQ-5071(?:[);/ ]|$)'
|
2934 |
model: 'Belief'
|
2935 |
- regex: 'BQ[S]?-(?:5065|5340)(?:[);/ ]|$)'
|
@@ -3191,10 +3263,10 @@ Bush:
|
|
3191 |
regex: 'Bush[ _-]'
|
3192 |
device: 'smartphone'
|
3193 |
models:
|
3194 |
-
- regex: 'BUSH ([^;/]+)Tablet Build'
|
3195 |
model: '$1Tablet'
|
3196 |
device: 'tablet'
|
3197 |
-
- regex: 'BUSH ([^;/]+) Build'
|
3198 |
model: '$1'
|
3199 |
|
3200 |
# CAGI
|
@@ -3257,7 +3329,7 @@ Casper:
|
|
3257 |
|
3258 |
# Cat (Caterpillar, Catphones)
|
3259 |
Cat:
|
3260 |
-
regex: 'Cat ?(tablet|stargate|nova)|B15Q|CAT B35'
|
3261 |
device: 'tablet'
|
3262 |
models:
|
3263 |
- regex: 'B15Q'
|
@@ -3271,6 +3343,10 @@ Cat:
|
|
3271 |
- regex: 'Cat ?tablet'
|
3272 |
model: 'Nova'
|
3273 |
|
|
|
|
|
|
|
|
|
3274 |
# Carrefour
|
3275 |
Carrefour:
|
3276 |
regex: 'CT(?:10[0123]0|7[12]0|820)(?:W|FR)?(?:[);/ ]|$)'
|
@@ -3285,12 +3361,14 @@ Carrefour:
|
|
3285 |
|
3286 |
# Celkon
|
3287 |
Celkon:
|
3288 |
-
regex: 'Celkon'
|
3289 |
device: 'smartphone'
|
3290 |
models:
|
3291 |
- regex: 'Celkon[ _*](C[78]20)'
|
3292 |
model: '$1'
|
3293 |
device: 'tablet'
|
|
|
|
|
3294 |
- regex: 'Celkon[ _*](CT[^;/]+) Build'
|
3295 |
model: '$1'
|
3296 |
device: 'tablet'
|
@@ -3390,7 +3468,7 @@ Compal:
|
|
3390 |
|
3391 |
# Artel
|
3392 |
Artel:
|
3393 |
-
regex: 'Artel[_ ]'
|
3394 |
device: 'smartphone'
|
3395 |
models:
|
3396 |
- regex: 'Artel[_ ](Quadro(?: Pro)?|Tesla|Air|Tomchi|Premium|U3_4G|Z5|Sentinel (?:X 8G|X D5|X))'
|
@@ -3401,6 +3479,10 @@ Artel:
|
|
3401 |
model: '$1'
|
3402 |
device: 'tablet'
|
3403 |
|
|
|
|
|
|
|
|
|
3404 |
# ComTrade Tesla
|
3405 |
ComTrade Tesla:
|
3406 |
regex: 'Tesla|Impulse 7.85 3G|Smartphone_6.1|SP(?:6.2|6.2_Lite)|TTL(?:713G|8)'
|
@@ -3595,7 +3677,7 @@ Condor:
|
|
3595 |
|
3596 |
# Coolpad
|
3597 |
Coolpad:
|
3598 |
-
regex: '(?:YL-)?Coolpad|(?:Cool_9S|8190Q|1831-A0|8676-
|
3599 |
device: 'smartphone'
|
3600 |
models:
|
3601 |
- regex: 'VCR-[AI]0'
|
@@ -3607,18 +3689,24 @@ Coolpad:
|
|
3607 |
device: 'phablet'
|
3608 |
- regex: '8190Q(?:[);/ ]|$)'
|
3609 |
model: '8190Q'
|
|
|
|
|
3610 |
- regex: 'CP3705A[S]?(?:[);/ ]|$)'
|
3611 |
model: 'Legacy'
|
3612 |
- regex: 'CP3648A(?:[);/ ]|$)'
|
3613 |
model: 'Legacy S'
|
3614 |
- regex: 'MTS-T0(?:[);/ ]|$)'
|
3615 |
model: 'N2M'
|
3616 |
-
- regex: 'C106-
|
3617 |
model: 'Cool 1'
|
|
|
|
|
3618 |
- regex: 'ORL-C0(?:[);/ ]|$)'
|
3619 |
model: 'Cool 9'
|
3620 |
- regex: 'Cool_9S(?:[);/ ]|$)'
|
3621 |
model: 'Cool 9S'
|
|
|
|
|
3622 |
- regex: '(5860S|8295) Build'
|
3623 |
model: '$1'
|
3624 |
- regex: 'CP8676_I02(?:[);/ ]|$)'
|
@@ -3627,7 +3715,7 @@ Coolpad:
|
|
3627 |
model: 'Note 3 Plus'
|
3628 |
- regex: 'CP8298_I00(?:[);/ ]|$)'
|
3629 |
model: 'Note 3 Lite'
|
3630 |
-
- regex: '(8676-
|
3631 |
model: '$1'
|
3632 |
- regex: '(?:YL-)?Coolpad[ _\-]?([^/;]+) Build'
|
3633 |
model: '$1'
|
@@ -3674,14 +3762,14 @@ Crosscall:
|
|
3674 |
|
3675 |
# AllDocube (https://www.alldocube.com/)
|
3676 |
AllDocube:
|
3677 |
-
regex: '(?:T1001XS?|iPlay_20|
|
3678 |
device: 'tablet'
|
3679 |
models:
|
3680 |
- regex: 'T1001XS(?:[);/ ]|$)'
|
3681 |
model: 'M5XS'
|
3682 |
- regex: 'T1001X(?:[);/ ]|$)'
|
3683 |
model: 'M5X'
|
3684 |
-
- regex: '
|
3685 |
model: 'iPlay 10 Pro 10.1"'
|
3686 |
- regex: 'iPlay_20(?:[);/ ]|$)'
|
3687 |
model: 'iPlay 20'
|
@@ -3717,7 +3805,7 @@ Cube:
|
|
3717 |
|
3718 |
# CUBOT
|
3719 |
CUBOT:
|
3720 |
-
regex: 'CUBOT|RAINBOW 2|KING_KONG_3|KINGKONG_MINI|KING KONG CS|(?<!QUMO )QUEST(?: LITE)?'
|
3721 |
device: 'smartphone'
|
3722 |
models:
|
3723 |
- regex: 'CHEETAH 2'
|
@@ -3842,7 +3930,7 @@ Datsun:
|
|
3842 |
|
3843 |
# Danew
|
3844 |
Danew:
|
3845 |
-
regex: 'Dslide ?([^;/]+) Build|Konnect_?(402|504|60[127])'
|
3846 |
device: 'smartphone'
|
3847 |
models:
|
3848 |
- regex: 'Konnect_?(402|504|60[127])'
|
@@ -3850,6 +3938,9 @@ Danew:
|
|
3850 |
- regex: 'Dslide ?([^;/]+) Build'
|
3851 |
device: 'tablet'
|
3852 |
model: 'DSlide $1'
|
|
|
|
|
|
|
3853 |
|
3854 |
# Denver Electronics
|
3855 |
Denver:
|
@@ -3898,14 +3989,23 @@ Desay:
|
|
3898 |
|
3899 |
# DEXP
|
3900 |
DEXP:
|
3901 |
-
regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|(SENIOR|F4[38]D8000K|VA[12]10|VA170|ML450|MS[56]50|BL[
|
3902 |
device: 'smartphone'
|
3903 |
models:
|
3904 |
-
|
3905 |
- regex: 'Ixion[_ ]([^;/]+)(?: Build|\))'
|
3906 |
model: 'Ixion $1'
|
3907 |
- regex: '(ML450|MS[56]50)(?:[);/ ]|$)'
|
3908 |
model: 'Ixion $1'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3909 |
- regex: 'AS260(?:[);/ ]|$)'
|
3910 |
model: '5.85" AS260'
|
3911 |
device: 'phablet'
|
@@ -3913,7 +4013,7 @@ DEXP:
|
|
3913 |
- regex: 'Ursus ([^;/)]+)(?: Build|\))'
|
3914 |
model: 'Ursus $1'
|
3915 |
device: 'tablet'
|
3916 |
-
- regex: '(VA[21]10|VA170)(?:[);/ ]|$)'
|
3917 |
model: 'Ursus $1'
|
3918 |
device: 'tablet'
|
3919 |
|
@@ -3922,10 +4022,14 @@ DEXP:
|
|
3922 |
- regex: 'SENIOR(?:[);/ ]|$)'
|
3923 |
model: 'Senior'
|
3924 |
|
|
|
|
|
|
|
|
|
3925 |
- regex: 'H135[ _]Build'
|
3926 |
model: 'Atlas'
|
3927 |
device: 'desktop'
|
3928 |
-
- regex: '(BL[
|
3929 |
model: '$1'
|
3930 |
- regex: 'DEXP[ _]([^;/]+) Build'
|
3931 |
model: '$1'
|
@@ -3981,7 +4085,7 @@ Digiland:
|
|
3981 |
|
3982 |
# Digma
|
3983 |
Digma:
|
3984 |
-
regex: 'Digma[_ ]([^;/]+) Build|HIT HT707[10]MG|CITI ATL 4G|CITI Octa
|
3985 |
device: 'smartphone'
|
3986 |
models:
|
3987 |
- regex: 'HIT(?: 3G)? HT707[10]MG'
|
@@ -4027,10 +4131,18 @@ Digma:
|
|
4027 |
model: 'CITI ATL 4G'
|
4028 |
- regex: '(CITI Z530 3G)'
|
4029 |
model: '$1'
|
|
|
|
|
4030 |
|
|
|
|
|
|
|
4031 |
- regex: 'PS1043MG'
|
4032 |
model: 'Plane 10.3" 3G'
|
4033 |
device: 'tablet'
|
|
|
|
|
|
|
4034 |
- regex: 'MVM900H(?:WZ|C)'
|
4035 |
model: 'iDx8'
|
4036 |
device: 'tablet'
|
@@ -4047,13 +4159,10 @@ Digma:
|
|
4047 |
- regex: 'HIT 4G HT7074ML'
|
4048 |
model: 'HIT 4G'
|
4049 |
device: 'tablet'
|
4050 |
-
- regex: '(CITI 1902 3G)'
|
4051 |
model: '$1'
|
4052 |
device: 'tablet'
|
4053 |
-
- regex: '(
|
4054 |
-
model: '$1'
|
4055 |
-
device: 'tablet'
|
4056 |
-
- regex: '(CITI[ _](?:[A-Z0-9]+)[ _][34]G)[ _][TC][ST](?:3001ML|500[67]PG|8209MG|11[459]4MG|1195MG|1196ML|3001ML|8152ML|1050PL|7113PL|7193MG|8205PG|7203MG|8143MG)'
|
4057 |
model: '$1'
|
4058 |
device: 'tablet'
|
4059 |
- regex: 'iDxD8 3G'
|
@@ -4074,6 +4183,15 @@ Digma:
|
|
4074 |
- regex: 'TT7025MG'
|
4075 |
model: 'Optima 7.5" 3G'
|
4076 |
device: 'tablet'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4077 |
- regex: '((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.STNM]+|Prime)(?:[ _][43]G)?)'
|
4078 |
model: '$1'
|
4079 |
device: 'tablet'
|
@@ -4095,7 +4213,7 @@ DoCoMo:
|
|
4095 |
|
4096 |
# Doogee
|
4097 |
Doogee:
|
4098 |
-
regex: 'DOOGEE[ _-]|Valencia2_Y100_?(?:pro|plus)|Y100_Plus|X5max(?:[_ ]PRO)?|(KISSME|BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)(?:[);/ ]|$)|BL[579]000(?:[);/ ]|$)|BL12000|BL5500[_ ]Lite|X9 Mini|LEO_DG280|Y9Plus|Hitman_DG850'
|
4099 |
device: 'smartphone'
|
4100 |
models:
|
4101 |
- regex: '(?:Valencia2_)?Y100_Plus(?:[);/ ]|$)'
|
@@ -4104,7 +4222,7 @@ Doogee:
|
|
4104 |
model: 'Valencia2 Y100 Pro'
|
4105 |
- regex: 'LEO_(DG280)'
|
4106 |
model: 'Leo $1'
|
4107 |
-
- regex: '(BL[579]000)(?:[);/ ]|$)'
|
4108 |
model: '$1'
|
4109 |
- regex: 'BL12000 PRO'
|
4110 |
model: 'BL12000 Pro'
|
@@ -4112,12 +4230,20 @@ Doogee:
|
|
4112 |
model: 'BL5500 Lite'
|
4113 |
- regex: 'BL12000'
|
4114 |
model: 'BL12000'
|
|
|
|
|
|
|
|
|
4115 |
- regex: 'KISSME-DG580'
|
4116 |
model: 'Kissme DG580'
|
4117 |
- regex: 'Hitman_DG850'
|
4118 |
model: 'Hitman DG580'
|
4119 |
- regex: 'X9 Mini'
|
4120 |
model: 'X9 Mini'
|
|
|
|
|
|
|
|
|
4121 |
- regex: '(X5max(?:[_ ]PRO)?)'
|
4122 |
model: '$1'
|
4123 |
- regex: '(?:DOOGEE[ _-])?(BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|Valencia2_Y100pro|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)(?:[);/ ]|$)'
|
@@ -4198,8 +4324,8 @@ Easypix:
|
|
4198 |
models:
|
4199 |
- regex: '(EasyPhone[^/;]+) Build'
|
4200 |
model: '$1'
|
4201 |
-
- regex: '(
|
4202 |
-
model: '$1'
|
4203 |
device: 'tablet'
|
4204 |
|
4205 |
# Ebest
|
@@ -4384,13 +4510,13 @@ Riviera:
|
|
4384 |
|
4385 |
# Senseit
|
4386 |
Senseit:
|
4387 |
-
|
4388 |
-
|
4389 |
-
|
4390 |
|
4391 |
# Sony & Sony Ericsson (combined as they are mixed up)
|
4392 |
Sony:
|
4393 |
-
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)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5316|D5322|D5503|D58[03]3|D65(?:0[23]|43|63)|D66[03458]3|D66[14]6|D6708|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|65[35]3|66[0358]3|68[358]3)|I[34]312|I4332|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3416|G342[136]|G823[12]|G834[123]|G8[14]4[12]|H(?:3113|3123|3133|3213|3223|3311|3321|4113|4133|4213|4233|4311|4331|4413|4433|82[167]6|83[12]4|8416|9436)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|SOG01|SOL2[246]|SOV3[1-9]|SOV4[0-3]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[345]D|[234]E|[1-5]F|[1-5]G|[1-4]H|[1-4]J|[1-5]K|1M|[1-3]L)|R800[aix]|J3173|J82[17]0|J9110|J92[16]0|J81[17]0|I[34]113|I3[12]23|I42[19]3|H9493|H8296|H8166|H4493|LiveWithWalkman|BRAVIA|SGP771|E3 Dual|A001SO|I4193|E6508|SOT31|SO-[45]1A|XQ-A[DT]51|XQ-AT42|XQ-A[TSU]52|SOL25|SOG02|A002SO|NW-A100Series'
|
4394 |
device: 'smartphone'
|
4395 |
models:
|
4396 |
# SONY ERICSSON: explicit smartphone models
|
@@ -4546,7 +4672,7 @@ Sony:
|
|
4546 |
model: 'Xperia 5 Dual'
|
4547 |
- regex: '(?:Sony(?:Ericsson)?)?(?:J82[17]0|SO-01M|SOV41|901SO)'
|
4548 |
model: 'Xperia 5'
|
4549 |
-
- regex: '(?:Sony(?:Ericsson)?)?(?:SOG02|A002SO|XQ-
|
4550 |
model: 'Xperia 5 II'
|
4551 |
- regex: '(?:Sony(?:Ericsson)?)?(?:SOV42|902SO)'
|
4552 |
model: 'Xperia 8'
|
@@ -4911,6 +5037,13 @@ Ergo:
|
|
4911 |
- regex: 'ERGO[_ ]Tab[ _]Hero[ _]II'
|
4912 |
model: 'Tab Hero II'
|
4913 |
device: 'tablet'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4914 |
|
4915 |
# Ericsson
|
4916 |
Ericsson:
|
@@ -4994,17 +5127,22 @@ Evolveo:
|
|
4994 |
regex: 'EVOLVEO'
|
4995 |
device: 'smartphone'
|
4996 |
models:
|
|
|
|
|
|
|
4997 |
- regex: 'Smart TV ([^;/]*) Build'
|
4998 |
device: 'tv'
|
4999 |
model: 'Smart TV $1'
|
5000 |
- regex: 'EVOLVEO StrongPhone G([248])'
|
5001 |
model: 'StrongPhone G$1'
|
|
|
|
|
5002 |
- regex: 'EVOLVEO[ _]([^;/]*) Build'
|
5003 |
model: '$1'
|
5004 |
|
5005 |
# Explay
|
5006 |
Explay:
|
5007 |
-
regex: 'Explay|ActiveD[ _]|Atlant |Informer[ _][0-9]+|CinemaTV 3G|Surfer[ _][0-9\.]|sQuad[ _][0-9\.]|Onliner[1-3]|RioPlay|Leader|Infinityll|Imperium[78]'
|
5008 |
device: 'tablet'
|
5009 |
models:
|
5010 |
- regex: 'ActiveD[ _]7.4[ _]3G'
|
@@ -5028,6 +5166,12 @@ Explay:
|
|
5028 |
- regex: 'Atlant(?:[);/ ]|$)'
|
5029 |
device: 'smartphone'
|
5030 |
model: 'Atlant'
|
|
|
|
|
|
|
|
|
|
|
|
|
5031 |
- regex: 'Explay[ _-]([^;/]+) Build'
|
5032 |
model: '$1'
|
5033 |
- regex: 'Explay[ _-]([^;/]+)(?:[;/)]|$)'
|
@@ -5040,13 +5184,15 @@ Explay:
|
|
5040 |
|
5041 |
# EvroMedia
|
5042 |
EvroMedia:
|
5043 |
-
regex: 'EVROMEDIA|Playpad[ _]'
|
5044 |
device: 'tablet'
|
5045 |
models:
|
5046 |
- regex: 'Playpad 3G GOO'
|
5047 |
model: 'Play Pad 3G Goo'
|
5048 |
- regex: 'Play Pad PRO'
|
5049 |
model: 'Play Pad Pro'
|
|
|
|
|
5050 |
- regex: 'PlayPad 3GTab XL'
|
5051 |
model: 'Play Pad 3G Tab XL'
|
5052 |
# EKO
|
@@ -5287,17 +5433,21 @@ Gemini:
|
|
5287 |
|
5288 |
# General Mobile
|
5289 |
General Mobile:
|
5290 |
-
regex: 'GM 5 Plus|GM8 go|GM
|
5291 |
device: 'smartphone'
|
5292 |
models:
|
5293 |
- regex: 'GM 5 Plus'
|
5294 |
model: 'GM 5 Plus'
|
5295 |
-
- regex: 'GM
|
5296 |
-
model: 'GM
|
5297 |
- regex: 'GM 8'
|
5298 |
model: 'GM 8'
|
5299 |
- regex: 'GM8 go'
|
5300 |
model: 'GM 8 Go'
|
|
|
|
|
|
|
|
|
5301 |
|
5302 |
# Geotel
|
5303 |
Geotel:
|
@@ -5324,13 +5474,17 @@ Ghia:
|
|
5324 |
|
5325 |
# Gigabyte
|
5326 |
Gigabyte:
|
5327 |
-
regex: 'GSmart[ _][a-z0-9 ]+(?: Build|\))|Gigabyte-[a-z0-9]
|
5328 |
device: 'smartphone'
|
5329 |
models:
|
5330 |
- regex: '(GSmart[ _][a-z0-9 ]+)(?: Build|\))'
|
5331 |
model: '$1'
|
5332 |
- regex: 'Gigabyte-([a-z0-9]+)'
|
5333 |
model: '$1'
|
|
|
|
|
|
|
|
|
5334 |
|
5335 |
# Gigaset
|
5336 |
Gigaset:
|
@@ -5359,17 +5513,17 @@ Gigaset:
|
|
5359 |
|
5360 |
# Ginzzu
|
5361 |
Ginzzu:
|
5362 |
-
regex: 'GINZZU[_ ]|((?:RS(?:7[14]|81|9[67])D)|S50[45]0|S5120|RS(6[12]|9[45])D|S40[23]0|RS850[12]|RS9602)(?:[);/ ]|$)'
|
5363 |
device: 'smartphone'
|
5364 |
models:
|
5365 |
-
- regex: 'GINZZU[_ ]?(S40[17]0|S4710|
|
5366 |
model: '$1'
|
5367 |
-
- regex: 'GINZZU[_ ]?(GT-(?:1050|7105|70[1-4]0|7115|7210|[WX]831|
|
5368 |
model: '$1'
|
5369 |
device: 'tablet'
|
5370 |
- regex: '(RS6[12]D) ULTIMATE'
|
5371 |
model: '$1 Ultimate'
|
5372 |
-
- regex: '(?:GINZZU[ _])?((?:RS(?:7[14]|81|9[4-7])D)|S50[45]0|S5120|S40[23]0|RS850[12]|RS9602|RS94D)(?:[);/ ]|$)'
|
5373 |
model: '$1'
|
5374 |
|
5375 |
# Gionee
|
@@ -5565,9 +5719,11 @@ Hafury:
|
|
5565 |
|
5566 |
# Haier
|
5567 |
Haier:
|
5568 |
-
regex: 'Haier|I6_Infinity|Titan[ _]T[
|
5569 |
device: 'smartphone'
|
5570 |
models:
|
|
|
|
|
5571 |
- regex: 'HM-N505-FL'
|
5572 |
model: 'I8'
|
5573 |
- regex: 'S5 Silk'
|
@@ -5578,7 +5734,7 @@ Haier:
|
|
5578 |
model: 'L56'
|
5579 |
- regex: '(?:HM-)?(G(?:152|353|552|70[01])|G(?:303)|I(?:557))'
|
5580 |
model: '$1'
|
5581 |
-
- regex: '(Titan[_ ]T[
|
5582 |
model: '$1'
|
5583 |
- regex: '(?:HW-)?W(716|757|860|970)(?:[);/ ]|$)'
|
5584 |
model: 'W$1'
|
@@ -5773,7 +5929,7 @@ Minix:
|
|
5773 |
|
5774 |
# Huawei
|
5775 |
Huawei:
|
5776 |
-
regex: '(HW-)?(?:Huawei|MediaPad T1|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANE|ARE|ARS|ASK|ATH|ATU|AUM|BAC|BAH[23]?|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|GEM|GRA|HDN|HLK|HMA|Hol|HRY|HWI|H[36]0|INE|JAT|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|NEM|NEO|NXT|PAR|PCT|PIC|PLE|PLK|POT|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]|A23L|701u|823L)|G7-(?:L01|TL00)|HW-01K|JNY-(LX[12]|AL10)|OXF-AN[01]0|TAS-(A[LN]00|L29|TL00)|WLZ-(AL10|AN00)|NIC-LX1A|MRX-(AL09|W09)|CDY-(?:[AT]N00|AN90|NX9A)|GLK-[AT]L00|JER-[AT]N10|ELS-(?:[AT]N[10]0|NX9|N39|N04)|AKA-(AL10|L29)|MON-(W|AL)19|BMH-AN[12]0|AQM-([AT]L[01]0|LX1)|MOA-(AL00|LX9N)|NTS-AL00|ART-(?:[AT]L00[xm]|L29N?)|JEF-(?:[AT]N00|AN20)|MED-(?:[AT]L00|LX9N?)|EBG-AN[01]0|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-AN00|MXW-AN00|JKM-AL00[ab]|TAH-(?:N29|AN00)m|C8817D|T1-821W|d-01J|d-02[HK]|HWT31|Y320-U10|Y541-U02|VAT-L19|70[14]HW|60[58]HW|TNNH-AN00|LIO-(?:[TA]L00|[LN]29|AN00)|KOB2-[LW]09|PPA-LX2|AGS3-L09'
|
5777 |
device: 'smartphone'
|
5778 |
models:
|
5779 |
- regex: 'POT-[TA]L00a(?:[);/ ]|$)'
|
@@ -6036,6 +6192,8 @@ Huawei:
|
|
6036 |
model: 'Honor X10'
|
6037 |
- regex: 'KKG-AN00(?:[);/ ]|$)'
|
6038 |
model: 'Honor X10 Max'
|
|
|
|
|
6039 |
- regex: 'U8500(?:[);/ ]|$)'
|
6040 |
model: 'Ideos X2'
|
6041 |
- regex: 'U8510(?:[);/ ]|$)'
|
@@ -6146,6 +6304,8 @@ Huawei:
|
|
6146 |
model: 'P smart'
|
6147 |
- regex: 'POT-(?:LX(?:[13]|1T|2J|1AF)|AL00)(?:[);/ ]|$)'
|
6148 |
model: 'P smart (2019)'
|
|
|
|
|
6149 |
- regex: 'PPA-LX2(?:[);/ ]|$)'
|
6150 |
model: 'P smart (2021)'
|
6151 |
- regex: 'STK-LX1(?:[);/ ]|$)'
|
@@ -6168,7 +6328,7 @@ Huawei:
|
|
6168 |
model: 'P30'
|
6169 |
- regex: '(?:MAR-(?:LX(?:1[BM]|2J?|3BM)|TL00)|NIC-LX1A|HWV33)(?:[);/ ]|$)'
|
6170 |
model: 'P30 Lite'
|
6171 |
-
- regex: 'MAR-LX[13]
|
6172 |
model: 'P30 Lite Dual SIM'
|
6173 |
- regex: '(?:VOG-(?:L(?:04|09|29)|TL00|AL10)|HW-02L)(?:[);/ ]|$)'
|
6174 |
model: 'P30 Pro'
|
@@ -6178,7 +6338,7 @@ Huawei:
|
|
6178 |
model: 'P40 Lite E'
|
6179 |
- regex: 'ART-L29N(?:[);/ ]|$)'
|
6180 |
model: 'P40 Lite E NFC'
|
6181 |
-
- regex: 'ELS-(?:[AT]N00|NX9|N04)(?:[);/ ]|$)'
|
6182 |
model: 'P40 Pro'
|
6183 |
- regex: 'ELS-(?:AN10|N39)(?:[);/ ]|$)'
|
6184 |
model: 'P40 Pro Plus'
|
@@ -6218,6 +6378,8 @@ Huawei:
|
|
6218 |
model: 'Y5 (2019)'
|
6219 |
- regex: 'DRA-LX5(?:[);/ ]|$)'
|
6220 |
model: 'Y5 lite'
|
|
|
|
|
6221 |
- regex: 'CRO-L[02]3(?:[);/ ]|$)'
|
6222 |
model: 'Y5 Lite (2017)'
|
6223 |
- regex: 'CAG-L[02]3(?:[);/ ]|$)'
|
@@ -6470,11 +6632,13 @@ Hyundai:
|
|
6470 |
|
6471 |
# iBall
|
6472 |
iBall:
|
6473 |
-
regex: 'iBall[ _]([^;/)]+)[ _]Build|(Snap_4G2)(?:[);/ ]|$)'
|
6474 |
device: 'tablet'
|
6475 |
models:
|
6476 |
- regex: '(Snap_4G2)(?:[);/ ]|$)'
|
6477 |
model: '$1'
|
|
|
|
|
6478 |
- regex: 'iBall[ _]([^;/)]+)[ _]Build'
|
6479 |
model: '$1'
|
6480 |
|
@@ -6492,13 +6656,18 @@ iRola:
|
|
6492 |
|
6493 |
# iRulu
|
6494 |
iRulu:
|
6495 |
-
regex: 'iRULU[ _](X11|V[34])(?:[);/ ]|$)'
|
6496 |
device: 'tablet'
|
6497 |
-
|
|
|
|
|
|
|
|
|
|
|
6498 |
|
6499 |
# Irbis
|
6500 |
Irbis:
|
6501 |
-
regex: 'IRBIS|TZ(1(?:0[04]|42|
|
6502 |
device: 'tablet'
|
6503 |
models:
|
6504 |
- regex: '(TZ(?:[0-9]+)|TZ(?:one|art|HIT|81L))(?:[);/ ]|$)'
|
@@ -6545,7 +6714,7 @@ iHunt:
|
|
6545 |
|
6546 |
# IconBIT
|
6547 |
IconBIT:
|
6548 |
-
regex: 'IconBIT|NT-(3506M|0704S|0909T|1009T|10[01]1T|1017T|3601P/3602P|3603P|3702S|3805C|3905T|3701S|0701S|0805C|0902S|370[23]M)|XDS[789]4K'
|
6549 |
device: 'tablet'
|
6550 |
models:
|
6551 |
- regex: 'NT-3506M'
|
@@ -6584,7 +6753,7 @@ IconBIT:
|
|
6584 |
- regex: 'NT-3703M'
|
6585 |
model: 'NetTAB Matrix 3GT'
|
6586 |
|
6587 |
-
- regex: '(?:iconBIT )?(Movie Ultra HD 4K|XDS[789]4K)'
|
6588 |
model: '$1'
|
6589 |
device: 'tv'
|
6590 |
|
@@ -7128,7 +7297,7 @@ Impression:
|
|
7128 |
|
7129 |
#iLife or i-life (lifedigital.com)
|
7130 |
iLife:
|
7131 |
-
regex: '(
|
7132 |
device: 'tablet'
|
7133 |
model: '$1'
|
7134 |
|
@@ -7170,15 +7339,15 @@ JAY-Tech:
|
|
7170 |
|
7171 |
# Jiayu
|
7172 |
Jiayu:
|
7173 |
-
regex: 'JIAYU[ _-]|(?:JY-G4[\\_]G5|(?:JY-[a-z0-9]+))(?:[);/ ]|$)'
|
7174 |
device: 'smartphone'
|
7175 |
models:
|
7176 |
- regex: '(?:JIAYU G4_G5|JY-G4[\\_]G5)(?:[);/ ]|$)'
|
7177 |
model: 'G4/G5'
|
7178 |
- regex: 'JIAYU[ _-](G4[S]?|G2F|G3[S]?|S[23])(?:[);/ ]|$)'
|
7179 |
model: '$1'
|
7180 |
-
- regex: '
|
7181 |
-
model: '
|
7182 |
|
7183 |
# Jolla
|
7184 |
Jolla:
|
@@ -7224,13 +7393,15 @@ Kaan:
|
|
7224 |
|
7225 |
# Kazam
|
7226 |
Kazam:
|
7227 |
-
regex: 'Kazam|Trooper_X[0-9][0-9](?:[);/ ]|$)|Tornado 348'
|
7228 |
device: 'smartphone'
|
7229 |
models:
|
7230 |
- regex: 'Tornado 348'
|
7231 |
model: 'Tornado 348'
|
7232 |
- regex: 'Thunder 450W'
|
7233 |
model: 'Thunder 450W'
|
|
|
|
|
7234 |
- regex: 'Trooper_X([0-9])([0-9])(?:[);/ ]|$)'
|
7235 |
model: 'Trooper X$1.$2'
|
7236 |
- regex: 'Kazam[; _]([^;/)]+)(?: Build|\))'
|
@@ -7447,7 +7618,7 @@ K-Touch:
|
|
7447 |
|
7448 |
# kyocera (kyocera.co.jp, kyocera.com)
|
7449 |
Kyocera:
|
7450 |
-
regex: 'Kyocera|KWC-|QC-|(?:NP501KC|503KC|602KC|705KC|C51[27]0|C5155|C5215|C67[35]0|C6522N?|C6530N|C6740N?|C6743|E6[89]10|KYL2[13]|KYV3[13-9]|KYT3[123]|KYF3[123579]|KYY2[1-4]|S2151|KC-S701|S4-KC|KYV40U?|KYV4[1-8]|KYV4[47][-_]u|KC-S301AE|X3-KC|S6-KC|E6560[CT]|E6782[L]?|E6790(?:TM)?|704KC|A001KC)(?:[);/ ]|$)'
|
7451 |
device: 'smartphone'
|
7452 |
models:
|
7453 |
# explicit smartphone models
|
@@ -7465,6 +7636,8 @@ Kyocera:
|
|
7465 |
model: 'Digno E'
|
7466 |
- regex: '704KC(?:[);/ ]|$)'
|
7467 |
model: 'Digno J'
|
|
|
|
|
7468 |
- regex: 'NP501KC(?:[);/ ]|$)'
|
7469 |
model: 'Digno'
|
7470 |
- regex: 'KYV36(?:[);/ ]|$)'
|
@@ -7581,7 +7754,7 @@ Kyocera:
|
|
7581 |
|
7582 |
# Krüger&Matz (Kruger&Matz)
|
7583 |
Krüger&Matz:
|
7584 |
-
regex: 'Kruger[ _&]Matz|KrugerMatz[ _]|MOVE_|LIVE4_KM043[89]|KM(?:106[67]|1065G|0701_1|0702|0805_1)'
|
7585 |
device: 'smartphone'
|
7586 |
models:
|
7587 |
- regex: 'MOVE_6_mini'
|
@@ -7590,11 +7763,11 @@ Krüger&Matz:
|
|
7590 |
model: 'MOVE $1'
|
7591 |
- regex: 'DRIVE 4 mini LTE'
|
7592 |
model: 'DRIVE 4 mini LTE'
|
7593 |
-
- regex: 'DRIVE (
|
7594 |
model: 'DRIVE $1'
|
7595 |
-
- regex: '
|
7596 |
-
model: '
|
7597 |
-
- regex: 'FLOW (
|
7598 |
model: 'FLOW $1'
|
7599 |
- regex: 'LIVE4_(KM043[89])(?:[);/ ]|$)'
|
7600 |
model: 'LIVE 4 $1'
|
@@ -7602,6 +7775,10 @@ Krüger&Matz:
|
|
7602 |
model: 'LIVE 4'
|
7603 |
- regex: '_LIVE5_(KM0450)(?:[);/ ]|$)'
|
7604 |
model: 'LIVE 5 $1'
|
|
|
|
|
|
|
|
|
7605 |
|
7606 |
- regex: 'KM(106[67])(?:[);/ ]|$)'
|
7607 |
device: 'tablet'
|
@@ -7637,9 +7814,9 @@ AIS:
|
|
7637 |
- regex: 'Kingcomm C500'
|
7638 |
model: 'Super Smart Plus X3'
|
7639 |
|
7640 |
-
# Lava
|
7641 |
Lava:
|
7642 |
-
regex: 'Lava[ _]|iris[ _]?([^/;]+)(?:\)| Build)|A(?:67|76) Build|X1 Selfie Build|X41 Plus Build|(?:Flair Z1|PixelV1|Z61_2GB|A97 IPS)(?:[);/ ]|$)'
|
7643 |
device: 'smartphone'
|
7644 |
models:
|
7645 |
- regex: 'Flair Z1(?:[);/ ]|$)'
|
@@ -7656,12 +7833,23 @@ Lava:
|
|
7656 |
model: 'Iris X1 Selfie'
|
7657 |
- regex: 'X41 Plus Build'
|
7658 |
model: 'X41 Plus'
|
7659 |
-
- regex: '
|
7660 |
-
model: '
|
7661 |
- regex: 'LAVA_R1'
|
7662 |
model: 'R1'
|
7663 |
- regex: 'Z61_2GB(?:[);/ ]|$)'
|
7664 |
model: 'Z61'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7665 |
- regex: 'iris[ _]?([^/;]+)(?:\)| Build)'
|
7666 |
model: 'Iris $1'
|
7667 |
- regex: 'Lava[ _]?([^/;]+)(?:/| Build)'
|
@@ -7766,7 +7954,7 @@ LCT:
|
|
7766 |
|
7767 |
# Leagoo
|
7768 |
Leagoo:
|
7769 |
-
regex: 'LEAGOO[ _-]?|(?:M5 EDGE|KIICAA (POWER|MIX)|Leapad[ _]7s|Elite 1|Venture 1)(?:[);/ ]|$)'
|
7770 |
device: 'smartphone'
|
7771 |
models:
|
7772 |
- regex: 'LEAGOO[- _]M8[_-]?Pro(?:[);/ ]|$)'
|
@@ -7785,6 +7973,8 @@ Leagoo:
|
|
7785 |
model: 'Elite 1'
|
7786 |
- regex: 'Venture 1(?:[);/ ]|$)'
|
7787 |
model: 'Venture 1'
|
|
|
|
|
7788 |
|
7789 |
- regex: '(Leapad[ _]7s)'
|
7790 |
model: '$1'
|
@@ -7802,7 +7992,7 @@ Ledstar:
|
|
7802 |
|
7803 |
# LeEco
|
7804 |
LeEco:
|
7805 |
-
regex: 'Letv|LeEco|
|
7806 |
device: 'smartphone'
|
7807 |
models:
|
7808 |
- regex: 'X800\+'
|
@@ -7815,7 +8005,7 @@ LeEco:
|
|
7815 |
model: '$1'
|
7816 |
- regex: 'X900 Build'
|
7817 |
model: 'Le X900'
|
7818 |
-
- regex: '(?:Le ?X526|Le2[_ ]x527|Le 2)(?:[);/ ]|$)'
|
7819 |
model: 'Le 2'
|
7820 |
- regex: 'Le ?X([^;/]+) Build'
|
7821 |
model: 'Le X$1'
|
@@ -7847,13 +8037,13 @@ Leotec:
|
|
7847 |
|
7848 |
# Lephone
|
7849 |
Lephone:
|
7850 |
-
regex: 'lephone[ _]'
|
7851 |
device: 'smartphone'
|
7852 |
models:
|
7853 |
- regex: 'lephone[ _](K7|K10)'
|
7854 |
device: 'feature phone'
|
7855 |
model: '$1'
|
7856 |
-
- regex: 'lephone[ _](W(1[0125]|[279])|T2)(?:[);/ ]|$)'
|
7857 |
model: '$1'
|
7858 |
- regex: 'lephone_W7_plus'
|
7859 |
model: 'W7 Plus'
|
@@ -7866,7 +8056,7 @@ Lenco:
|
|
7866 |
|
7867 |
# lenovo
|
7868 |
Lenovo:
|
7869 |
-
regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|ZUK[ -_]|(?:TB2-X30L|TB3-710I|YT3-X50[ML]|K50a40|TB-(?:8504F|X304F|X704V|X704A)|A2107A-H|S6000|Z2 Plus|VIBE
|
7870 |
device: 'smartphone'
|
7871 |
models:
|
7872 |
- regex: 'Lenovo ?G780'
|
@@ -7878,7 +8068,7 @@ Lenovo:
|
|
7878 |
- regex: 'Lenovo ?A3500-(H|HV|F)'
|
7879 |
model: 'IdeaTab A7-50'
|
7880 |
device: 'tablet'
|
7881 |
-
- regex: 'Lenovo ?A5500-[HF]'
|
7882 |
model: 'IdeaTab A8-50'
|
7883 |
device: 'tablet'
|
7884 |
- regex: 'Lenovo ?A7600-[HF]'
|
@@ -7917,6 +8107,9 @@ Lenovo:
|
|
7917 |
- regex: '801LV(?:[);/ ]|$)'
|
7918 |
model: 'TAB5 10.1"'
|
7919 |
device: 'tablet'
|
|
|
|
|
|
|
7920 |
- regex: 'TB-X704A(?:[);/ ]|$)'
|
7921 |
model: 'Moto Tab'
|
7922 |
device: 'tablet'
|
@@ -8026,6 +8219,8 @@ Lenovo:
|
|
8026 |
model: 'Vibe K5'
|
8027 |
- regex: 'VIBE Z2(?:[);/ ]|$)'
|
8028 |
model: 'Vibe Z2'
|
|
|
|
|
8029 |
- regex: 'VIBE X2(?:[);/ ]|$)'
|
8030 |
model: 'Vibe X2'
|
8031 |
- regex: 'k33a48(?:[);/ ]|$)'
|
@@ -8038,7 +8233,7 @@ Lenovo:
|
|
8038 |
model: 'K6 Power'
|
8039 |
- regex: 'P1ma40(?:[);/ ]|$)'
|
8040 |
model: 'Vibe P1m'
|
8041 |
-
- regex: 'P1(?:a42|c72)(?:[);/ ]|$)'
|
8042 |
model: 'Vibe P1'
|
8043 |
- regex: 'A2016a40(?:[);/ ]|$)'
|
8044 |
model: 'Vibe B'
|
@@ -8152,7 +8347,7 @@ Lexibook:
|
|
8152 |
|
8153 |
# LG
|
8154 |
LG:
|
8155 |
-
regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?: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]))(?:[);/ ]|$)|NetCast|RS98[78]|RS500|VS(?:50[01]|835|876|880|98[0578]|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-05D|L-03K|L-01[LJK]|L-[45]1A|901LG|A001LG|802LG|402LG|LGT32|L-02K|L-01F'
|
8156 |
device: 'smartphone'
|
8157 |
models:
|
8158 |
- regex: 'LG-D325'
|
@@ -8305,7 +8500,7 @@ LG:
|
|
8305 |
model: 'Aristo 2'
|
8306 |
- regex: 'LM-X220'
|
8307 |
model: 'Aristo 3'
|
8308 |
-
- regex: 'LM-V40(5|9N)'
|
8309 |
model: 'V40 ThinQ'
|
8310 |
- regex: 'LM-V500N'
|
8311 |
model: 'V50'
|
@@ -8574,9 +8769,9 @@ Konrow:
|
|
8574 |
- regex: 'Link5(?:[);/ ]|$)'
|
8575 |
model: 'Link 5'
|
8576 |
|
8577 |
-
# Karbonn
|
8578 |
Karbonn:
|
8579 |
-
regex: '(?:Browser-)?Karbonn|K9 Kavach 4G|K9 Music 4G|K9 Smart|K9 VIRAAT 4G|Aura Sleek Plus|Aura Note Play|Titanium (?:Vista 4G|Jumbo)'
|
8580 |
device: 'smartphone'
|
8581 |
models:
|
8582 |
- regex: 'K9 Kavach 4G'
|
@@ -8601,14 +8796,20 @@ Karbonn:
|
|
8601 |
model: 'K9 Viraat 4G'
|
8602 |
- regex: 'Titanium[ _]S2[ _]Plus'
|
8603 |
model: 'Titanium S2 Plus'
|
8604 |
-
- regex: '
|
8605 |
-
model: 'Titanium
|
8606 |
- regex: 'Titanium Vista 4G'
|
8607 |
model: 'Titanium Vista 4G'
|
8608 |
- regex: 'Titanium Jumbo 2'
|
8609 |
model: 'Titanium Jumbo 2'
|
8610 |
- regex: 'Titanium Jumbo'
|
8611 |
model: 'Titanium Jumbo'
|
|
|
|
|
|
|
|
|
|
|
|
|
8612 |
- regex: 'Karbonn ([a-z0-9]+) WAP-Browser'
|
8613 |
model: '$1'
|
8614 |
device: 'feature phone'
|
@@ -8663,34 +8864,36 @@ Majestic:
|
|
8663 |
regex: 'MAJESTIC[ _-]|CRONO ?[0-9]+|TAB (?:647|411) 3G|URANO 77LTE'
|
8664 |
device: 'smartphone'
|
8665 |
models:
|
8666 |
-
|
8667 |
-
|
8668 |
-
|
8669 |
-
|
8670 |
-
|
8671 |
-
|
8672 |
-
|
8673 |
-
|
8674 |
-
|
8675 |
-
|
8676 |
-
|
8677 |
-
|
8678 |
-
|
8679 |
-
|
8680 |
-
|
8681 |
-
|
8682 |
-
|
8683 |
-
|
8684 |
-
|
8685 |
|
8686 |
# Manta Multimedia
|
8687 |
Manta Multimedia:
|
8688 |
-
regex: 'MSP950(1[
|
8689 |
device: 'smartphone'
|
8690 |
models:
|
8691 |
- regex: '((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))(?:[);/ ]|$)'
|
8692 |
device: 'tablet'
|
8693 |
model: '$1'
|
|
|
|
|
8694 |
- regex: 'MSP95014'
|
8695 |
model: 'Titano 3'
|
8696 |
- regex: 'MSP95015'
|
@@ -8843,10 +9046,10 @@ Mediacom:
|
|
8843 |
- regex: 'M[_-]PP[Ax]X(470|510|520)U(?:[);/ ]|$)'
|
8844 |
model: 'PhonePad Duo X$1U'
|
8845 |
device: 'smartphone'
|
8846 |
-
- regex: 'M-PPxG(400|501)(?:[);/ ]|$)'
|
8847 |
model: 'PhonePad Duo G$1'
|
8848 |
device: 'smartphone'
|
8849 |
-
- regex: 'M-PPxS(470|501)(?:[);/ ]|$)'
|
8850 |
model: 'PhonePad Duo S$1'
|
8851 |
device: 'smartphone'
|
8852 |
|
@@ -8999,13 +9202,15 @@ Meitu:
|
|
8999 |
|
9000 |
# Memup
|
9001 |
Memup:
|
9002 |
-
regex: 'SlidePad ?([^;/]*) Build|SPNG?[0-9]{2,4}[a-z]{0,2}(?:[);/ ]|$)|SP704CE
|
9003 |
device: 'tablet'
|
9004 |
models:
|
9005 |
- regex: 'SlidePad ?([^;/]*) Build'
|
9006 |
model: 'SlidePad $1'
|
9007 |
- regex: 'SPNG([0-9]{2,4}[a-z]{0,2})(?:[);/ ]|$)'
|
9008 |
model: 'SlidePad NG$1'
|
|
|
|
|
9009 |
- regex: 'SP704(CE?)'
|
9010 |
model: 'SlidePad 704$1'
|
9011 |
|
@@ -9027,13 +9232,16 @@ Mecer:
|
|
9027 |
|
9028 |
# mio
|
9029 |
Mio:
|
9030 |
-
regex: 'MIO(?:/)?([a-z0-9]+)|MOBIX M6(?:[);/ ]|$)'
|
9031 |
device: 'smartphone'
|
9032 |
models:
|
9033 |
- regex: 'MOBIX M6(?:[);/ ]|$)'
|
9034 |
model: 'Mobix M6'
|
9035 |
- regex: 'MIO(?:/)?([a-z0-9]+)'
|
9036 |
model: '$1'
|
|
|
|
|
|
|
9037 |
|
9038 |
# Miray
|
9039 |
Miray:
|
@@ -9106,11 +9314,13 @@ Mobiola:
|
|
9106 |
|
9107 |
# Mobicel
|
9108 |
Mobicel:
|
9109 |
-
regex: 'Mobicel_(R1)|Matrix'
|
9110 |
device: 'smartphone'
|
9111 |
models:
|
9112 |
- regex: 'Matrix'
|
9113 |
model: 'Matrix'
|
|
|
|
|
9114 |
- regex: 'Mobicel_(R1)'
|
9115 |
model: '$1'
|
9116 |
|
@@ -9467,20 +9677,29 @@ MyTab:
|
|
9467 |
- regex: 'MyTAB-U55GT(?:[);/ ]|$)'
|
9468 |
model: 'U55GT'
|
9469 |
|
9470 |
-
# myphone
|
9471 |
MyPhone:
|
9472 |
-
regex: '(?:MyPhone|MyPad|MyTab)[ _][^;/)]+( Build|\))|Cube_LTE|myTab10II|HAMMER[ _](Blade2_PRO|ENERGY|Titan 2|AXE[_ ](?:M[_ ]LTE|Pro)|Iron 2|Active[2]?(_LTE)?)|C-Smart_pix|myPhone_Fun_8|myA17'
|
9473 |
device: 'smartphone'
|
9474 |
models:
|
|
|
9475 |
- regex: 'MyPad[ _]([^;/]+) Build'
|
9476 |
model: 'MyPad $1'
|
9477 |
device: 'tablet'
|
9478 |
- regex: 'MyTab[ _]([^;/]+) Build'
|
9479 |
model: 'MyTab $1'
|
9480 |
device: 'tablet'
|
|
|
|
|
|
|
9481 |
- regex: 'myTab10II'
|
9482 |
model: 'MyTab 10 II'
|
9483 |
device: 'tablet'
|
|
|
|
|
|
|
|
|
|
|
9484 |
- regex: 'Cube_LTE'
|
9485 |
model: 'Cube LTE'
|
9486 |
- regex: 'HAMMER[ _]ENERGY'
|
@@ -9489,8 +9708,10 @@ MyPhone:
|
|
9489 |
model: 'Hammer Axe M LTE'
|
9490 |
- regex: 'Hammer Titan 2'
|
9491 |
model: 'Hammer Titan 2'
|
9492 |
-
- regex: 'Hammer Iron 2'
|
9493 |
-
model: 'Hammer Iron
|
|
|
|
|
9494 |
- regex: 'Hammer Active(?:[);/ ]|$)'
|
9495 |
model: 'Hammer Active'
|
9496 |
- regex: 'Hammer_Active2(?:[);/ ]|$)'
|
@@ -9503,10 +9724,22 @@ MyPhone:
|
|
9503 |
model: 'Hammer Blade 2 Pro'
|
9504 |
- regex: 'C-Smart_pix'
|
9505 |
model: 'C-Smart Pix'
|
|
|
|
|
9506 |
- regex: 'myA17(?:[);/ ]|$)'
|
9507 |
model: 'myA17'
|
9508 |
- regex: 'myPhone_Fun_8'
|
9509 |
model: 'FUN 8'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9510 |
- regex: 'MyPhone[ _]([^;/)]+)( Build|\))'
|
9511 |
model: '$1'
|
9512 |
|
@@ -9552,7 +9785,7 @@ M.T.T.:
|
|
9552 |
|
9553 |
# Navon
|
9554 |
Navon:
|
9555 |
-
regex: '(?:Superme_Max|Supreme[_ ](?:Fine|Chief|Pure|Pro)(?:[_ ](?:Mini|Plus))
|
9556 |
device: 'smartphone'
|
9557 |
models:
|
9558 |
- regex: 'Superme_Max(?:[);/ ]|$)'
|
@@ -9573,16 +9806,20 @@ Navon:
|
|
9573 |
model: 'Supreme Pro'
|
9574 |
- regex: 'Navon[_ ]Infinity(?:[);/ ]|$)'
|
9575 |
model: 'Infinity'
|
|
|
|
|
9576 |
|
9577 |
# NOA
|
9578 |
NOA:
|
9579 |
-
regex: 'NOA[ _]|
|
9580 |
device: 'smartphone'
|
9581 |
models:
|
9582 |
- regex: 'NOA[_ ]CORE[_ ]FORTE'
|
9583 |
model: 'Core Forte'
|
9584 |
- regex: 'HummerLE'
|
9585 |
model: 'Hummer LE'
|
|
|
|
|
9586 |
- regex: 'NOA[_ ]Hummer[_ ]Lite'
|
9587 |
model: 'Hummer Lite'
|
9588 |
- regex: 'NOA[_ ]MOVEse'
|
@@ -9615,11 +9852,13 @@ Nobby:
|
|
9615 |
|
9616 |
# nec
|
9617 |
NEC:
|
9618 |
-
regex: 'NEC[ _\-]|KGT/2\.0|PC-TE508HAW|portalmmm/1\.0 (?:DB|N)|(?:portalmmm|o2imode)/2.0[ ,]N|N-06C(?:[);/ ]|$)'
|
9619 |
device: 'smartphone'
|
9620 |
models:
|
9621 |
- regex: 'N-06C(?:[);/ ]|$)'
|
9622 |
model: 'Medias Amadana'
|
|
|
|
|
9623 |
- regex: '(?:NEC[ _\-]|KGT/2\.0 )([a-z0-9]+)'
|
9624 |
model: '$1'
|
9625 |
- regex: 'portalmmm/1\.0 ((?:DB|N)[a-z0-9]+)'
|
@@ -9663,8 +9902,8 @@ Netgear:
|
|
9663 |
regex: 'GTV100'
|
9664 |
device: 'tv'
|
9665 |
models:
|
9666 |
-
|
9667 |
-
|
9668 |
|
9669 |
# NeuImage
|
9670 |
NeuImage:
|
@@ -9676,13 +9915,19 @@ NeuImage:
|
|
9676 |
|
9677 |
# NextBook
|
9678 |
NextBook:
|
9679 |
-
regex: 'Next[0-9]|
|
9680 |
device: 'tablet'
|
9681 |
models:
|
9682 |
- regex: 'NX008HD8G'
|
9683 |
model: 'Premium 8 HD'
|
9684 |
- regex: 'NXA8QC116'
|
9685 |
model: 'Ares 8'
|
|
|
|
|
|
|
|
|
|
|
|
|
9686 |
- regex: 'NXM908HC'
|
9687 |
model: 'Premium 9'
|
9688 |
- regex: 'NX010HI8G'
|
@@ -9743,21 +9988,27 @@ Noblex:
|
|
9743 |
|
9744 |
# Nomu
|
9745 |
Nomu:
|
9746 |
-
regex: 'Nomu[ _-](?:T18|S30mini)(?:[);/ ]|$)'
|
9747 |
device: 'smartphone'
|
9748 |
models:
|
9749 |
- regex: 'Nomu[ _-]T18(?:[);/ ]|$)'
|
9750 |
model: 'T18'
|
|
|
|
|
9751 |
- regex: 'Nomu[ _-]S30mini(?:[);/ ]|$)'
|
9752 |
model: 'S30 Mini'
|
|
|
|
|
9753 |
|
9754 |
# Nomi
|
9755 |
Nomi:
|
9756 |
-
regex: 'Nomi[ _-]|(C101010 Ultra2|i501[234]|i5032|
|
9757 |
device: 'smartphone'
|
9758 |
models:
|
9759 |
- regex: 'i501[23](?:[);/ ]|$)'
|
9760 |
model: 'Evo M2'
|
|
|
|
|
9761 |
- regex: 'i5014(?:[);/ ]|$)'
|
9762 |
model: 'Evo M4'
|
9763 |
- regex: 'i5032(?:[);/ ]|$)'
|
@@ -9894,7 +10145,7 @@ O2:
|
|
9894 |
|
9895 |
# Odys
|
9896 |
Odys:
|
9897 |
-
regex: 'ODYS[ _-]|IEOS[_ ]([^/;]+)|NOON(?:_PRO)? Build|SPACE10_(?:PLUS|PRO)_3G|THOR_?10|TAO_X10|RAPID_?(?:10|7)_?LTE|MAVEN_?10_|CONNECT[78]|ELEMENT10_PLUS_3G|XELIO[_0-9P]|ADM816HC|ADM8000KP|NEO6_LTE|EOS10|AEON|FALCON_10_PLUS_3G|FUSION|THANOS_10|MAVEN_X10_HD(?:_LTE)?|JUNIOR_8_PRO'
|
9898 |
device: 'tablet'
|
9899 |
models:
|
9900 |
- regex: 'XELIO[_ ]A10'
|
@@ -9911,6 +10162,10 @@ Odys:
|
|
9911 |
model: 'Xelio 10 Xtreme'
|
9912 |
- regex: 'XELIO10_PLUS_3G'
|
9913 |
model: 'Xelio 10 Plus 3G'
|
|
|
|
|
|
|
|
|
9914 |
- regex: 'ELEMENT10_PLUS_3G'
|
9915 |
model: 'Element 10 Plus 3G'
|
9916 |
- regex: 'CONNECT8PLUS'
|
@@ -9941,6 +10196,8 @@ Odys:
|
|
9941 |
model: 'Space 10 Pro 3G'
|
9942 |
- regex: 'THOR_?10 Build'
|
9943 |
model: 'Thor 10'
|
|
|
|
|
9944 |
- regex: 'JUNIOR_8_PRO'
|
9945 |
model: 'Junior 8 Pro'
|
9946 |
- regex: 'ADM816HC'
|
@@ -9953,13 +10210,28 @@ Odys:
|
|
9953 |
model: 'Falcon 10 Plus 3G'
|
9954 |
- regex: 'FUSION'
|
9955 |
model: 'Fusion 7'
|
9956 |
-
- regex: '
|
9957 |
-
model: '
|
9958 |
-
device: 'smartphone'
|
9959 |
- regex: 'ADM8000KP'
|
9960 |
model: 'Titan'
|
|
|
|
|
|
|
|
|
|
|
|
|
9961 |
- regex: 'THOR_?10_PLUS_3G'
|
9962 |
model: 'Thor 10 Plus 3G'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9963 |
- regex: 'IEOS[ _]([^/;]+) Build'
|
9964 |
model: 'Ieos $1'
|
9965 |
- regex: '(?:ODYS[ _-])?NOON Build'
|
@@ -10009,9 +10281,17 @@ Obi:
|
|
10009 |
- regex: 'Obi[ _-]([^;/)]+)(?:[;/)]|$)'
|
10010 |
model: '$1'
|
10011 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10012 |
# onda
|
10013 |
Onda:
|
10014 |
-
regex: 'Onda|(?:(?:V820w|V891[w]?|V919(?: 3G)? Air)[ _-]DualOS|(?:V919 4G Air|V989 Air)
|
10015 |
device: 'smartphone'
|
10016 |
models:
|
10017 |
# explicit tablet models
|
@@ -10039,6 +10319,9 @@ Onda:
|
|
10039 |
- regex: 'V919 4G Air Core8'
|
10040 |
model: 'V919 4G Air Core 8'
|
10041 |
device: 'tablet'
|
|
|
|
|
|
|
10042 |
- regex: 'V989 Air Core8'
|
10043 |
model: 'V989 Air Core 8'
|
10044 |
device: 'tablet'
|
@@ -10104,7 +10387,7 @@ OnePlus:
|
|
10104 |
|
10105 |
# Realme (sub brand Oppo)
|
10106 |
Realme:
|
10107 |
-
regex: 'Realme[ _]|(?:RMX(?:19(03|4[1235]|19|9[23]|2[157]|[01379]1|73)|20(?:[025-7]1|[037]2|2[57]|63|7[56]|8[56]|[234]0)|21(?:[12]1|42|7[60]|8[059])|2200|18(0[1579]|11|3[13]|2[157]|[45]1|45))|(?:OPPO[ _]?)?CPH1861)(?:[);/ ]|$)'
|
10108 |
device: 'smartphone'
|
10109 |
models:
|
10110 |
- regex: '(?:OPPO[ _]?)?CPH1861(?:[);/ ]|$)'
|
@@ -10147,6 +10430,8 @@ Realme:
|
|
10147 |
model: '6S'
|
10148 |
- regex: 'RMX206[13](?:[);/ ]|$)'
|
10149 |
model: '6 Pro'
|
|
|
|
|
10150 |
- regex: 'RMX2170'
|
10151 |
model: '7 Pro'
|
10152 |
- regex: 'RMX1925(?:[);/ ]|$)'
|
@@ -10187,7 +10472,7 @@ Realme:
|
|
10187 |
|
10188 |
# Oppo (oppo.com)
|
10189 |
OPPO:
|
10190 |
-
regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|OPG01|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|A33f|A33fw|A37fw?|PAAM00|PAAT00|PAC[TM]00)(?:[);/ ]|$)|R7kf|R7plusf|R7Plusm|A1601|CPH[0-9]{4}|CPH19(69|79|23|1[179])|PB(A[TM]00|CT10|BT30|CM[13]0|[FD]M00)|P(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|DK[TM]00|DPT00|DB[TM]00|DCM00|[CD]NM00|DVM00|DY[TM]20|DNT00|EA[TM]00)'
|
10191 |
device: 'smartphone'
|
10192 |
models:
|
10193 |
- regex: 'PCHM10(?:[);/ ]|$)'
|
@@ -10266,10 +10551,12 @@ OPPO:
|
|
10266 |
model: 'AX7'
|
10267 |
- regex: '(?:OPPO[ _]?)?X9009(?:[);/ ]|$)'
|
10268 |
model: 'F1 Plus'
|
10269 |
-
- regex: '
|
10270 |
model: 'F11'
|
10271 |
- regex: 'CPH19(?:69|87)(?:[);/ ]|$)'
|
10272 |
model: 'F11 Pro'
|
|
|
|
|
10273 |
- regex: '(?:OPPO[ _]?)?A1601(?:[);/ ]|$)'
|
10274 |
model: 'F1s'
|
10275 |
- regex: '(?:OPPO[ _]?)?CPH1609(?:[);/ ]|$)'
|
@@ -10344,6 +10631,8 @@ OPPO:
|
|
10344 |
model: 'Piano'
|
10345 |
- regex: '(?:OPPO[ _]?)?CPH1707(?:[);/ ]|$)'
|
10346 |
model: 'R11'
|
|
|
|
|
10347 |
- regex: '(?:OPPO[ _]?)?CPH1719(?:[);/ ]|$)'
|
10348 |
model: 'R11s'
|
10349 |
- regex: '(?:OPPO[ _]?)?CPH1721(?:[);/ ]|$)'
|
@@ -10358,7 +10647,7 @@ OPPO:
|
|
10358 |
model: 'R17'
|
10359 |
- regex: '(?:OPPO[ _]?)?(?:CPH1893)(?:[);/ ]|$)'
|
10360 |
model: 'R17 Neo'
|
10361 |
-
- regex: '(?:OPPO[ _]?)?(?:CPH1877|
|
10362 |
model: 'R17 Pro'
|
10363 |
- regex: '(?:OPPO[ _]?)?R8006(?:[);/ ]|$)'
|
10364 |
model: 'R1L'
|
@@ -10477,20 +10766,22 @@ Orange:
|
|
10477 |
|
10478 |
# Oukitel
|
10479 |
Oukitel:
|
10480 |
-
regex: 'OUKITEL|(?:(?:C15|C16|K10000|K[46]000)(?:[ _]Pro)|U20_Plus|
|
10481 |
device: 'smartphone'
|
10482 |
models:
|
10483 |
-
- regex: '(C15|C16|K10000|K[46]000|WP[
|
10484 |
model: '$1 Pro'
|
10485 |
- regex: 'OUKITEL K([37])(?:[);/ ]|$)'
|
10486 |
model: 'K$1'
|
10487 |
- regex: '(K10000)[ _]Max(?:[);/ ]|$)'
|
10488 |
model: '$1 Max'
|
10489 |
-
- regex: '(U20|K[46]000)[_ ]Plus(?:[);/ ]|$)'
|
10490 |
model: '$1 Plus'
|
10491 |
- regex: '(K4000)[_ ]Lite(?:[);/ ]|$)'
|
10492 |
model: '$1 Lite'
|
10493 |
-
- regex: '(Y4800|K10000|K[4567]000|WP2)(?:[);/ ]|$)'
|
|
|
|
|
10494 |
model: '$1'
|
10495 |
|
10496 |
# Ouki
|
@@ -10534,7 +10825,7 @@ Overmax:
|
|
10534 |
|
10535 |
# Oysters
|
10536 |
Oysters:
|
10537 |
-
regex: 'Oysters|T84ERI[ _]3G|T72HM(s_)?3G|T102MS_3G|T102ER3G|(T74HMi|T84Bi)[_ ]4G|T74MR4G|T84Ni[_ ][34]G|Pacific[ ]?800i|T104B_[34]G|IndianV|T72HA_3G|T74D_3G|T74N_3G|T74SC_3G|T74Mai_3G|T104MBi_3G|T104SCi_3G|T104ER4G|Atlantic4G|AntarcticE'
|
10538 |
device: 'tablet'
|
10539 |
models:
|
10540 |
- regex: 'Pacific[ ]?800i'
|
@@ -10554,7 +10845,7 @@ Oysters:
|
|
10554 |
model: '$1'
|
10555 |
- regex: '(T84ERI[ _]3G|T72HM(s_)?3G|(?:(T74HMi|T84Bi)[_ ]4G)|T84Ni[_ ][34]G)'
|
10556 |
model: '$1'
|
10557 |
-
- regex: '(T74MR|T102MS|T104B|T74SC|T74[DN]|T72HA|T102ER|T104SCi|T104MBi|T104ER)[ _]?([34]G)'
|
10558 |
model: '$1 $2'
|
10559 |
- regex: 'T74Mai_3G'
|
10560 |
model: 'T74MAi 3G'
|
@@ -10662,7 +10953,7 @@ PCD Argentina:
|
|
10662 |
|
10663 |
# ArmPhone
|
10664 |
ArmPhone:
|
10665 |
-
regex: '(TSD Octa A0520P|TSD Quadra
|
10666 |
device: 'smartphone'
|
10667 |
model: '$1'
|
10668 |
|
@@ -10688,11 +10979,13 @@ Pentagram:
|
|
10688 |
|
10689 |
# philips
|
10690 |
Philips:
|
10691 |
-
regex: 'Philips|AND1E(?:[);/ ]|$)|NETTV/|PI3210G|TLE(821L|722G)|TPM1[79]1E|70PUH6774_96|QM16[134]E|Xenium S[25]66'
|
10692 |
device: 'smartphone'
|
10693 |
models:
|
10694 |
- regex: '(?:Philips[_ ])?Xenium[ _](S[25]66|V787)(?:[);/ ]|$)'
|
10695 |
model: 'Xenium $1'
|
|
|
|
|
10696 |
- regex: 'AND1E(?: TV)?(?:[);/ ]|$)'
|
10697 |
model: 'Android TV'
|
10698 |
device: 'tv'
|
@@ -10768,6 +11061,10 @@ Pixus:
|
|
10768 |
model: 'Play Three v$1'
|
10769 |
- regex: 'Play Two'
|
10770 |
model: 'Play Two'
|
|
|
|
|
|
|
|
|
10771 |
- regex: 'Touch 7 3G'
|
10772 |
model: 'Touch 7 3G'
|
10773 |
- regex: 'Pixus[ _]hiMax'
|
@@ -10776,6 +11073,8 @@ Pixus:
|
|
10776 |
model: 'Blast 10.1"'
|
10777 |
- regex: 'Pixus[ _]Joker'
|
10778 |
model: 'Joker 10.1"'
|
|
|
|
|
10779 |
|
10780 |
- regex: 'Raze'
|
10781 |
model: 'Raze'
|
@@ -10914,17 +11213,18 @@ Rover:
|
|
10914 |
|
10915 |
# RoverPad or Rover Pad
|
10916 |
RoverPad:
|
10917 |
-
regex: '(Rover[ ]?Pad|RoverPhone)(?:[);/ ]|$)'
|
10918 |
device: 'tablet'
|
10919 |
models:
|
10920 |
- regex: 'RoverPhone(?:[);/ ]|$)'
|
10921 |
model: ''
|
10922 |
device: 'smartphone'
|
10923 |
-
- regex: 'Rover[ ]?Pad
|
10924 |
-
model: 'Sky 7.85'
|
10925 |
- regex: 'RoverPad (10.4|Air S70|9.7 3G|Sky 9.7|3W A73|3W7|3WT70|3W9.4)(?:[);/ ]|$)'
|
10926 |
model: '$1'
|
10927 |
|
|
|
10928 |
# Roadrover
|
10929 |
Roadrover:
|
10930 |
regex: 'Roadrover ChangAn S'
|
@@ -10992,9 +11292,9 @@ Siemens:
|
|
10992 |
|
10993 |
# Soundmax
|
10994 |
Soundmax:
|
10995 |
-
|
10996 |
-
|
10997 |
-
|
10998 |
|
10999 |
# Samsung
|
11000 |
Samsung:
|
@@ -11015,450 +11315,450 @@ Samsung:
|
|
11015 |
# explicit tablet models
|
11016 |
- regex: '(?:SAMSUNG-)?(?:GT-)?N5100'
|
11017 |
device: 'tablet'
|
11018 |
-
model: '
|
11019 |
- regex: '(?:SAMSUNG-)?SM-T677(?:[ATV]|N[KL])?(?:[);/ ]|$)'
|
11020 |
device: 'tablet'
|
11021 |
-
model: '
|
11022 |
- regex: '(?:SAMSUNG-)?SM-T670(?:[);/ ]|$)'
|
11023 |
device: 'tablet'
|
11024 |
-
model: '
|
11025 |
- regex: '(?:SAMSUNG-)?(?:GT-)?N5110'
|
11026 |
device: 'tablet'
|
11027 |
-
model: '
|
11028 |
- regex: '(?:SAMSUNG-)?GT-N5120'
|
11029 |
device: 'tablet'
|
11030 |
-
model: '
|
11031 |
- regex: '(?:SAMSUNG-)?GT-N8000'
|
11032 |
device: 'tablet'
|
11033 |
-
model: '
|
11034 |
- regex: '(?:SAMSUNG-)?GT-N8010'
|
11035 |
device: 'tablet'
|
11036 |
-
model: '
|
11037 |
- regex: '(?:SAMSUNG-)?GT-N8020'
|
11038 |
device: 'tablet'
|
11039 |
-
model: '
|
11040 |
- regex: '(?:SAMSUNG-)?GT-P1000M?|SCH-I800'
|
11041 |
device: 'tablet'
|
11042 |
-
model: '
|
11043 |
- regex: '(?:SAMSUNG-)?GT-P3100B?'
|
11044 |
device: 'tablet'
|
11045 |
-
model: '
|
11046 |
- regex: '(?:SAMSUNG-)?GT-P311[03]'
|
11047 |
device: 'tablet'
|
11048 |
-
model: '
|
11049 |
- regex: '(?:SAMSUNG-)?GT-P5100|SCH-I915'
|
11050 |
device: 'tablet'
|
11051 |
-
model: '
|
11052 |
- regex: '(?:SAMSUNG-)?GT-P511[03]'
|
11053 |
device: 'tablet'
|
11054 |
-
model: '
|
11055 |
- regex: '(?:SAMSUNG-)?SM-T217T'
|
11056 |
device: 'tablet'
|
11057 |
-
model: '
|
11058 |
- regex: '(?:SAMSUNG-)?GT-P5200'
|
11059 |
device: 'tablet'
|
11060 |
-
model: '
|
11061 |
- regex: '(?:SAMSUNG-)?GT-P5210'
|
11062 |
device: 'tablet'
|
11063 |
-
model: '
|
11064 |
- regex: '(?:SAMSUNG-)?GT-P5220'
|
11065 |
device: 'tablet'
|
11066 |
-
model: '
|
11067 |
- regex: '(?:SAMSUNG-)?GT-P6200'
|
11068 |
device: 'tablet'
|
11069 |
-
model: '
|
11070 |
- regex: '(?:SAMSUNG-)?GT-P6201'
|
11071 |
device: 'tablet'
|
11072 |
-
model: '
|
11073 |
- regex: '(?:SAMSUNG-)?GT-P6810'
|
11074 |
device: 'tablet'
|
11075 |
-
model: '
|
11076 |
- regex: '(?:SAMSUNG-)?GT-P7100'
|
11077 |
device: 'tablet'
|
11078 |
-
model: '
|
11079 |
- regex: '(?:SAMSUNG-)?GT-P75[01]0'
|
11080 |
device: 'tablet'
|
11081 |
-
model: '
|
11082 |
- regex: '(?:SAMSUNG-)?SM-P600'
|
11083 |
device: 'tablet'
|
11084 |
-
model: '
|
11085 |
- regex: '(?:SAMSUNG-)?SM-P60[12]'
|
11086 |
device: 'tablet'
|
11087 |
-
model: '
|
11088 |
- regex: '(?:SAMSUNG-)?SM-(?:P605|P607T)'
|
11089 |
device: 'tablet'
|
11090 |
-
model: '
|
11091 |
- regex: '(?:SAMSUNG-)?SM-P900'
|
11092 |
device: 'tablet'
|
11093 |
-
model: '
|
11094 |
- regex: '(?:SAMSUNG-)?SM-P901'
|
11095 |
device: 'tablet'
|
11096 |
-
model: '
|
11097 |
- regex: '(?:SAMSUNG-)?SM-P905'
|
11098 |
device: 'tablet'
|
11099 |
-
model: '
|
11100 |
- regex: '(?:SAMSUNG-)?SM-P587(?:[);/ ]|$)'
|
11101 |
device: 'tablet'
|
11102 |
-
model: '
|
11103 |
- regex: '(?:SAMSUNG-)?SM-P205(?:[);/ ]|$)'
|
11104 |
device: 'tablet'
|
11105 |
-
model: '
|
11106 |
- regex: '(?:SAMSUNG-)?SM-P200(?:[);/ ]|$)'
|
11107 |
device: 'tablet'
|
11108 |
-
model: '
|
11109 |
- regex: '(?:SAMSUNG-)?SM-T11[03]'
|
11110 |
device: 'tablet'
|
11111 |
-
model: '
|
11112 |
- regex: '(?:SAMSUNG-)?SM-(?:T830[X]?|T837R4)(?:[);/ ]|$)'
|
11113 |
device: 'tablet'
|
11114 |
-
model: '
|
11115 |
- regex: '(?:SAMSUNG-)?SM-(?:T835[CN]?|T837[VTA])(?:[);/ ]|$)'
|
11116 |
device: 'tablet'
|
11117 |
-
model: '
|
11118 |
- regex: '(?:SAMSUNG-)?SM-(?:T725[N]?|T720X|T727[AV])(?:[);/ ]|$)'
|
11119 |
device: 'tablet'
|
11120 |
-
model: '
|
11121 |
- regex: '(?:SAMSUNG-)?SM-T720(?:[);/ ]|$)'
|
11122 |
device: 'tablet'
|
11123 |
-
model: '
|
11124 |
- regex: '(?:SAMSUNG-)?SM-T865N?(?:[);/ ]|$)'
|
11125 |
device: 'tablet'
|
11126 |
-
model: '
|
11127 |
- regex: '(?:SAMSUNG-)?SM-T867[V]?(?:[);/ ]|$)'
|
11128 |
device: 'tablet'
|
11129 |
-
model: '
|
11130 |
- regex: '(?:SAMSUNG-)?SM-P615(?:[);/ ]|$)'
|
11131 |
device: 'tablet'
|
11132 |
-
model: '
|
11133 |
- regex: '(?:SAMSUNG-)?SM-P610(?:[);/ ]|$)'
|
11134 |
device: 'tablet'
|
11135 |
-
model: '
|
11136 |
- regex: '(?:SAMSUNG-)?SM-T860(?:[);/ ]|$)'
|
11137 |
device: 'tablet'
|
11138 |
-
model: '
|
11139 |
- regex: '(?:SAMSUNG-)?SM-T111[M]?(?:[);/ ]|$)'
|
11140 |
device: 'tablet'
|
11141 |
-
model: '
|
11142 |
- regex: '(?:SAMSUNG-)?SM-T116(?:BU|NU|NY)?'
|
11143 |
device: 'tablet'
|
11144 |
-
model: '
|
11145 |
- regex: '(?:SAMSUNG-)?SM-(?:T2105|T212)'
|
11146 |
device: 'tablet'
|
11147 |
-
model: '
|
11148 |
- regex: '(?:SAMSUNG-)?SM-T210R?'
|
11149 |
device: 'tablet'
|
11150 |
-
model: '
|
11151 |
- regex: '(?:SAMSUNG-)?SM-T21(?:[15]|7[AS])'
|
11152 |
device: 'tablet'
|
11153 |
-
model: '
|
11154 |
- regex: '(?:SAMSUNG-)?SM-T230(?:NU)?'
|
11155 |
device: 'tablet'
|
11156 |
-
model: '
|
11157 |
- regex: '(?:SAMSUNG-)?SM-T23[15]|403SC'
|
11158 |
device: 'tablet'
|
11159 |
-
model: '
|
11160 |
- regex: '(?:SAMSUNG-)?SM-(?:T239|T237P)'
|
11161 |
device: 'tablet'
|
11162 |
-
model: '
|
11163 |
- regex: '(?:SAMSUNG-)?SM-T310'
|
11164 |
device: 'tablet'
|
11165 |
-
model: '
|
11166 |
- regex: '(?:SAMSUNG-)?SM-T311'
|
11167 |
device: 'tablet'
|
11168 |
-
model: '
|
11169 |
- regex: '(?:SAMSUNG-)?SM-T315'
|
11170 |
device: 'tablet'
|
11171 |
-
model: '
|
11172 |
- regex: '(?:SAMSUNG-)?SM-T330'
|
11173 |
device: 'tablet'
|
11174 |
-
model: '
|
11175 |
- regex: '(?:SAMSUNG-)?SM-(?:T33[215]|T337[AVT])'
|
11176 |
device: 'tablet'
|
11177 |
-
model: '
|
11178 |
- regex: '(?:SAMSUNG-)?SM-T520'
|
11179 |
device: 'tablet'
|
11180 |
-
model: '
|
11181 |
- regex: '(?:SAMSUNG-)?SM-(?:T53[15]|T537[AV])'
|
11182 |
device: 'tablet'
|
11183 |
-
model: '
|
11184 |
- regex: '(?:SAMSUNG-)?SM-T536(?:[);/ ]|$)'
|
11185 |
device: 'tablet'
|
11186 |
-
model: '
|
11187 |
- regex: '(?:SAMSUNG-)?SM-T320'
|
11188 |
device: 'tablet'
|
11189 |
-
model: '
|
11190 |
- regex: '(?:SAMSUNG-)?SM-T325'
|
11191 |
device: 'tablet'
|
11192 |
-
model: '
|
11193 |
- regex: '(?:SAMSUNG-)?SM-T525'
|
11194 |
device: 'tablet'
|
11195 |
-
model: '
|
11196 |
- regex: '(?:SAMSUNG-)?SM-(?:T530(?:NU)?|T533)'
|
11197 |
device: 'tablet'
|
11198 |
-
model: '
|
11199 |
- regex: '(?:SAMSUNG-)?SM-T700'
|
11200 |
device: 'tablet'
|
11201 |
-
model: '
|
11202 |
- regex: '(?:SAMSUNG-)?SM-(?:T705|T707A)'
|
11203 |
device: 'tablet'
|
11204 |
-
model: '
|
11205 |
- regex: '(?:SAMSUNG-)?SM-T800'
|
11206 |
device: 'tablet'
|
11207 |
-
model: '
|
11208 |
- regex: '(?:SAMSUNG-)?(?:SM-(?:T805|T807[VP]?)|SCT21)'
|
11209 |
device: 'tablet'
|
11210 |
-
model: '
|
11211 |
- regex: '(?:SAMSUNG-)?SM-(?:T813|T810)'
|
11212 |
device: 'tablet'
|
11213 |
-
model: '
|
11214 |
- regex: '(?:SAMSUNG-)?SM-(?:T719[YC]?|T715(?:[YC]|N0)?)(?:[);/ ]|$)'
|
11215 |
device: 'tablet'
|
11216 |
-
model: '
|
11217 |
- regex: '(?:SAMSUNG-)?SM-(?:T71[03]|T710X)(?:[);/ ]|$)'
|
11218 |
device: 'tablet'
|
11219 |
-
model: '
|
11220 |
- regex: '(?:SAMSUNG-)?SM-(?:T815|T817[ATW]?|T818[ATW]|T819[Y]?)'
|
11221 |
device: 'tablet'
|
11222 |
-
model: '
|
11223 |
- regex: '(?:SAMSUNG-)?SM-T820'
|
11224 |
device: 'tablet'
|
11225 |
-
model: '
|
11226 |
- regex: '(?:SAMSUNG-)?SM-T82[57]'
|
11227 |
device: 'tablet'
|
11228 |
-
model: '
|
11229 |
- regex: '(?:SAMSUNG-)?SM-T900'
|
11230 |
device: 'tablet'
|
11231 |
-
model: '
|
11232 |
- regex: '(?:SAMSUNG-)?SM-T280'
|
11233 |
device: 'tablet'
|
11234 |
-
model: '
|
11235 |
- regex: '(?:SAMSUNG-)?SM-T285'
|
11236 |
device: 'tablet'
|
11237 |
-
model: '
|
11238 |
- regex: '(?:SAMSUNG-)?SM-T3[58]0'
|
11239 |
device: 'tablet'
|
11240 |
-
model: '
|
11241 |
- regex: '(?:SAMSUNG-)?SM-(?:P350|T3[58]5|T357[TW])'
|
11242 |
device: 'tablet'
|
11243 |
-
model: '
|
11244 |
- regex: '(?:SAMSUNG-)?SM-T387(?:R4|VK|AA|[WVT])'
|
11245 |
device: 'tablet'
|
11246 |
-
model: '
|
11247 |
- regex: '(?:SAMSUNG-)?SM-T295'
|
11248 |
device: 'tablet'
|
11249 |
-
model: '
|
11250 |
- regex: '(?:SAMSUNG-)?SM-T290'
|
11251 |
device: 'tablet'
|
11252 |
-
model: '
|
11253 |
- regex: '(?:SAMSUNG-)?SM-(?:P355([MY])?|T550)'
|
11254 |
device: 'tablet'
|
11255 |
-
model: '
|
11256 |
- regex: '(?:SAMSUNG-)?SM-(?:P550|P555(M)?|T555)'
|
11257 |
device: 'tablet'
|
11258 |
-
model: '
|
11259 |
- regex: '(?:SAMSUNG-)?SM-(?:T58[05]|P58[05])'
|
11260 |
device: 'tablet'
|
11261 |
-
model: '
|
11262 |
- regex: '(?:SAMSUNG-)?SM-T587[P]?'
|
11263 |
device: 'tablet'
|
11264 |
-
model: '
|
11265 |
- regex: '(?:SAMSUNG-)?SM-T59[057]'
|
11266 |
device: 'tablet'
|
11267 |
-
model: '
|
11268 |
- regex: '(?:SAMSUNG-)?SM-T51[05]'
|
11269 |
device: 'tablet'
|
11270 |
-
model: '
|
11271 |
- regex: '(?:SAMSUNG-)?SM-(?:T37[57]|T378[KLSV])'
|
11272 |
device: 'tablet'
|
11273 |
-
model: '
|
11274 |
- regex: '(?:SAMSUNG-)?SM-T56[02]'
|
11275 |
device: 'tablet'
|
11276 |
-
model: '
|
11277 |
- regex: '(?:SAMSUNG-)?SM-T561'
|
11278 |
device: 'tablet'
|
11279 |
-
model: '
|
11280 |
- regex: '(?:SAMSUNG-)?SM-T567V'
|
11281 |
device: 'tablet'
|
11282 |
-
model: '
|
11283 |
- regex: '(?:SAMSUNG-)?SM-T365(?:[);/ ]|$)'
|
11284 |
device: 'tablet'
|
11285 |
-
model: '
|
11286 |
- regex: '(?:SAMSUNG-)?SM-T360(?:[);/ ]|$)'
|
11287 |
device: 'tablet'
|
11288 |
-
model: '
|
11289 |
- regex: '(?:SAMSUNG-)?SM-T39[057][U]?(?:[);/ ]|$)'
|
11290 |
device: 'tablet'
|
11291 |
-
model: '
|
11292 |
- regex: '(?:SAMSUNG-)?SM-P902(?:[);/ ]|$)'
|
11293 |
device: 'tablet'
|
11294 |
-
model: '
|
11295 |
|
11296 |
# explicit wearable models
|
11297 |
- regex: '(?:SAMSUNG )?SM-R820'
|
11298 |
device: 'wearable'
|
11299 |
-
model: '
|
11300 |
|
11301 |
# explicit smartphone models
|
11302 |
- regex: '(?:SAMSUNG-)?SM-G850[AMSWYKLX]'
|
11303 |
-
model: '
|
11304 |
- regex: '(?:SAMSUNG-)?GT-B5330'
|
11305 |
-
model: '
|
11306 |
- regex: '(?:SAMSUNG-)?SM-A605K'
|
11307 |
-
model: '
|
11308 |
- regex: '(?:SAMSUNG-)?SM-A202K'
|
11309 |
-
model: '
|
11310 |
- regex: '(?:SAMSUNG-)?GT-B5510'
|
11311 |
-
model: '
|
11312 |
- regex: '(?:SAMSUNG-)?GT-B5512'
|
11313 |
-
model: '
|
11314 |
- regex: '(?:SAMSUNG-)?GT-B7510'
|
11315 |
-
model: '
|
11316 |
- regex: '(?:SAMSUNG-)?GT-I5700'
|
11317 |
-
model: '
|
11318 |
- regex: '(?:SAMSUNG-)?GT-I5801'
|
11319 |
-
model: '
|
11320 |
- regex: '(?:SAMSUNG-)?GT-I5800'
|
11321 |
-
model: '
|
11322 |
- regex: '(?:SAMSUNG-)?GT-I8000'
|
11323 |
model: 'Omnia II'
|
11324 |
- regex: '(?:SAMSUNG-)?(?:GT-I8150|SM-T255S)'
|
11325 |
-
model: '
|
11326 |
- regex: 'SC-01H(?:[);/ ]|$)'
|
11327 |
-
model: '
|
11328 |
- regex: '(?:SAMSUNG-)?GT-S5830'
|
11329 |
-
model: '
|
11330 |
- regex: '(?:SAMSUNG-)?SM-(?:G357(?:FZ|M)|G310HN)'
|
11331 |
-
model: '
|
11332 |
- regex: '(?:SAMSUNG-)?GT-I8160'
|
11333 |
-
model: '
|
11334 |
- regex: '(?:SAMSUNG-)?SM-G313(?:HY|M[LUY]|[FM])'
|
11335 |
-
model: '
|
11336 |
- regex: '(?:SAMSUNG-)?SM-G316M'
|
11337 |
-
model: '
|
11338 |
- regex: '(?:SAMSUNG-)?SM-G313[HU]'
|
11339 |
-
model: '
|
11340 |
- regex: '(?:SAMSUNG-)?SM-G318(?:H|ML)(?:[);/ ]|$)'
|
11341 |
-
model: '
|
11342 |
- regex: '(?:SAMSUNG-)?SM-G9100(?:[);/ ]|$)'
|
11343 |
-
model: '
|
11344 |
- regex: '(?:SAMSUNG-)?SHV-E120S(?:[);/ ]|$)'
|
11345 |
-
model: '
|
11346 |
- regex: '(?:SAMSUNG-)?GT-I8190'
|
11347 |
-
model: '
|
11348 |
- regex: '(?:SAMSUNG-)?GT-I8200'
|
11349 |
-
model: '
|
11350 |
- regex: '(?:SAMSUNG-)?GT-I826[02]'
|
11351 |
-
model: '
|
11352 |
- regex: '(?:SAMSUNG-)?SM-G386W'
|
11353 |
-
model: '
|
11354 |
- regex: '(?:SAMSUNG-)?GT-I8320'
|
11355 |
model: 'H1'
|
11356 |
- regex: '(?:SAMSUNG-)?GT-I85[23]0'
|
11357 |
-
model: '
|
11358 |
- regex: '(?:SAMSUNG-)?SM-G3858'
|
11359 |
-
model: '
|
11360 |
- regex: '(?:SAMSUNG-)?SM-G600S'
|
11361 |
-
model: '
|
11362 |
- regex: '(?:SAMSUNG-)?GT-I855[028]'
|
11363 |
-
model: '
|
11364 |
- regex: '(?:SAMSUNG-)?SM-G381[28]'
|
11365 |
-
model: '
|
11366 |
- regex: '(?:SAMSUNG-)?GT-I8580'
|
11367 |
-
model: '
|
11368 |
- regex: '(?:SAMSUNG-)?GT-I8730'
|
11369 |
-
model: '
|
11370 |
- regex: '(?:SAMSUNG-)?SM-(?:E500(?:HQ|YZ|[0FHM])|S978L)'
|
11371 |
-
model: '
|
11372 |
- regex: '(?:SAMSUNG-)?SM-E700(?:0|9|F|H|M)'
|
11373 |
-
model: '
|
11374 |
- regex: '(?:SAMSUNG-)?GT-I90(?:00|08|18|88)'
|
11375 |
-
model: '
|
11376 |
- regex: '(?:SAMSUNG-)?GT-I9001'
|
11377 |
-
model: '
|
11378 |
- regex: '(?:SAMSUNG-)?GT-I9003'
|
11379 |
-
model: '
|
11380 |
- regex: '(?:SAMSUNG-)?GT-I9010'
|
11381 |
-
model: '
|
11382 |
- regex: '(?:SAMSUNG-)?GT-I9070'
|
11383 |
-
model: '
|
11384 |
- regex: '(?:SAMSUNG-)?GT-I910[08]'
|
11385 |
-
model: '
|
11386 |
- regex: '(?:SAMSUNG-)?ISW11SC'
|
11387 |
-
model: '
|
11388 |
- regex: '(?:SAMSUNG-)?GT-I9103'
|
11389 |
-
model: '
|
11390 |
- regex: '(?:SAMSUNG-)?GT-I9105'
|
11391 |
-
model: '
|
11392 |
- regex: '(?:SAMSUNG-)?SM-G730(?:W8|[AV])'
|
11393 |
-
model: '
|
11394 |
- regex: '(?:SAMSUNG-)?(?:GT-I919[025]|SCH-I435)'
|
11395 |
-
model: '
|
11396 |
- regex: '(?:SAMSUNG-)?GT-I9515'
|
11397 |
-
model: '
|
11398 |
- regex: '(?:SAMSUNG-)?GT-I9295'
|
11399 |
-
model: '
|
11400 |
- regex: '(?:SAMSUNG-)?(?:GT-I9300|SCH-I535|SCH-L710|SCH-I939)'
|
11401 |
-
model: '
|
11402 |
- regex: '(?:SAMSUNG-)?(?:GT-I9305|SCH-R530)'
|
11403 |
-
model: '
|
11404 |
-
- regex: '(?:SAMSUNG-)?(?:SM-S975L|GT-I9500|GT-I9502|GT-I9505|SCH-I545|SCH-I959|SCH-R970|
|
11405 |
-
model: '
|
11406 |
- regex: '(?:SAMSUNG-)?GT-I9506'
|
11407 |
-
model: '
|
11408 |
- regex: '(?:SAMSUNG-)?GT-S5280'
|
11409 |
-
model: '
|
11410 |
- regex: '(?:SAMSUNG-)?GT-S5301'
|
11411 |
-
model: '
|
11412 |
- regex: '(?:SAMSUNG-)?GT-S5310'
|
11413 |
-
model: '
|
11414 |
- regex: '(?:SAMSUNG-)?SM-G110[BHM]'
|
11415 |
-
model: '
|
11416 |
- regex: '(?:SAMSUNG-)?GT-S5360'
|
11417 |
-
model: '
|
11418 |
- regex: '(?:SAMSUNG-)?GT-S6310'
|
11419 |
-
model: '
|
11420 |
- regex: '(?:SAMSUNG-)?GT-S6312'
|
11421 |
-
model: '
|
11422 |
- regex: '(?:SAMSUNG-)?SM-G130(?:BT|HN|[EHMU])'
|
11423 |
-
model: '
|
11424 |
- regex: '(?:SAMSUNG-)?SM-G130BU'
|
11425 |
-
model: '
|
11426 |
- regex: '(?:SAMSUNG-)?GT-S6790'
|
11427 |
-
model: '
|
11428 |
- regex: '(?:SAMSUNG-)?GT-S6810'
|
11429 |
-
model: '
|
11430 |
- regex: '(?:SAMSUNG-)?GT-S6812'
|
11431 |
-
model: '
|
11432 |
- regex: 'SC-04J(?:[);/ ]|$)'
|
11433 |
-
model: '
|
11434 |
- regex: '(?:SAMSUNG-)?GT-S7275'
|
11435 |
-
model: '
|
11436 |
- regex: '(?:SAMSUNG-)?GT-S7500'
|
11437 |
-
model: '
|
11438 |
- regex: '(?:SAMSUNG-)?(?:GT-S7560|SCH-I699)'
|
11439 |
-
model: '
|
11440 |
- regex: '(?:SAMSUNG-)?GT-S7390'
|
11441 |
-
model: '
|
11442 |
- regex: '(?:SAMSUNG-)?GT-S7580'
|
11443 |
-
model: '
|
11444 |
- regex: '(?:SAMSUNG-)?SCH-I739'
|
11445 |
-
model: '
|
11446 |
- regex: '(?:SAMSUNG-)?(?:GT-S7562|SCH-I919)'
|
11447 |
-
model: '
|
11448 |
- regex: '(?:SAMSUNG-)?GT-S7582'
|
11449 |
-
model: '
|
11450 |
- regex: '(?:SAMSUNG-)?SM-(?:G31[36]HU|G313HZ)'
|
11451 |
-
model: '
|
11452 |
- regex: '(?:SAMSUNG-)?GT-S7710'
|
11453 |
-
model: '
|
11454 |
- regex: '(?:SAMSUNG-)?SM-G389F'
|
11455 |
-
model: '
|
11456 |
- regex: '(?:SAMSUNG-)?SM-G715FN'
|
11457 |
-
model: '
|
11458 |
- regex: '(?:SAMSUNG-)?SM-G398FN'
|
11459 |
-
model: '
|
11460 |
- regex: '(?:SAMSUNG-)?SM-G390Y'
|
11461 |
-
model: '
|
11462 |
- regex: '(?:SAMSUNG-)?GT-S8500'
|
11463 |
model: 'Wave'
|
11464 |
- regex: '(?:SAMSUNG-)?GT-S8530'
|
@@ -11478,519 +11778,519 @@ Samsung:
|
|
11478 |
- regex: '(?:SAMSUNG-)?GT-S7230'
|
11479 |
model: 'Wave 723'
|
11480 |
- regex: '(?:SAMSUNG-)?SM-(?:C101|C105([AL])?)'
|
11481 |
-
model: '
|
11482 |
- regex: '(?:SAMSUNG-)?SM-(?:C111(M)?|C115)'
|
11483 |
-
model: '
|
11484 |
- regex: '(?:SAMSUNG-)?SM-G318[HM]Z'
|
11485 |
-
model: '
|
11486 |
- regex: '(?:SAMSUNG-)?SM-(?:G355[HM]|G3556D)'
|
11487 |
-
model: '
|
11488 |
- regex: '(?:SAMSUNG-)?SM-G350'
|
11489 |
-
model: '
|
11490 |
- regex: '(?:SAMSUNG-)?SM-(?:G360[FH]?|S820L)'
|
11491 |
-
model: '
|
11492 |
- regex: '(?:SAMSUNG-)?SM-G361[FH]?'
|
11493 |
-
model: '
|
11494 |
- regex: '(?:SAMSUNG-)?SM-(?:G386F|G3586V)'
|
11495 |
-
model: '
|
11496 |
- regex: '(?:SAMSUNG-)?SM-G3568V'
|
11497 |
-
model: '
|
11498 |
- regex: '(?:SAMSUNG-)?SM-G5108Q'
|
11499 |
-
model: '
|
11500 |
- regex: '(?:SAMSUNG-)?SM-G3815'
|
11501 |
-
model: '
|
11502 |
- regex: '(?:SAMSUNG-)?SM-G388F'
|
11503 |
-
model: '
|
11504 |
- regex: '(?:SAMSUNG-)?SM-G390[FW]'
|
11505 |
-
model: '
|
11506 |
- regex: '(?:SAMSUNG-)?SM-G800'
|
11507 |
-
model: '
|
11508 |
- regex: '(?:SAMSUNG-)?SM-G9009D'
|
11509 |
-
model: '
|
11510 |
-
- regex: '(?:SAMSUNG-)?SM-(?:G900|G906[KLS]|S902L|S903VL)|
|
11511 |
-
model: '
|
11512 |
- regex: '(?:SAMSUNG-)?SM-G901F'
|
11513 |
-
model: '
|
11514 |
- regex: '(?:SAMSUNG-)?SM-G870[AFW]|SC-02G'
|
11515 |
-
model: '
|
11516 |
- regex: '(?:SAMSUNG-)?SM-G903[FMW]'
|
11517 |
-
model: '
|
11518 |
- regex: '(?:SAMSUNG-)?SM-G860P'
|
11519 |
-
model: '
|
11520 |
- regex: '(?:SAMSUNG-)?(?:SM-G920(?:F[DQ]|W8|[089AFIKLPRSTVX])?|SM-S907VL)|SC-05G'
|
11521 |
-
model: '
|
11522 |
- regex: '(?:SAMSUNG-)?SM-G890A'
|
11523 |
-
model: '
|
11524 |
- regex: '(?:SAMSUNG-)?SM-G925[0ADFIKLPRSTVWX]|SCV31|404SC'
|
11525 |
-
model: '
|
11526 |
- regex: '(?:SAMSUNG-)?SM-G928(?:7C|R4|W8|[07ACFGIKLPSTVX])'
|
11527 |
-
model: '
|
11528 |
- regex: '(?:SAMSUNG-)?SM-G930(?:FD|W8|[0AFKLPRSTUVX8])?(?:[);/ ]|$)'
|
11529 |
-
model: '
|
11530 |
- regex: '(?:SAMSUNG-)?SM-G935(?:R4|W8|[0AFKLPSTUVX])|SC-02H|SCV33'
|
11531 |
-
model: '
|
11532 |
- regex: '(?:SAMSUNG-)?SM-G891A'
|
11533 |
-
model: '
|
11534 |
- regex: '(?:SAMSUNG-)?SM-G950[08FNUW]?|SCV36|SC-02J'
|
11535 |
-
model: '
|
11536 |
- regex: '(?:SAMSUNG-)?SM-G8750'
|
11537 |
-
model: '
|
11538 |
- regex: '(?:SAMSUNG-)?SM-G892[AU]'
|
11539 |
-
model: '
|
11540 |
- regex: '(?:SAMSUNG-)?SM-G955[AFKLNPRTUVW0X]?|SCV35|SC-03J'
|
11541 |
-
model: '
|
11542 |
- regex: '(?:SAMSUNG-)?SM-G960[FNUWX0]?|SCV38|SC-02K'
|
11543 |
-
model: '
|
11544 |
- regex: '(?:SAMSUNG-)?SM-G965[FNUWX0]|SCV39|SC-03K'
|
11545 |
-
model: '
|
11546 |
- regex: '(?:SAMSUNG-)?(?:SM-(?:G973|G977[PUTNB])|SCV41|SC-03L)'
|
11547 |
-
model: '
|
11548 |
- regex: '(?:SAMSUNG-)?SM-G770F'
|
11549 |
-
model: '
|
11550 |
- regex: '(?:SAMSUNG-)?(?:SM-G975[0FUWNX]|SCV42|SC-04L)'
|
11551 |
-
model: '
|
11552 |
- regex: '(?:SAMSUNG-)?SM-G970[08FUNWX](?:[);/ ]|$)'
|
11553 |
-
model: '
|
11554 |
- regex: '(?:SAMSUNG-)?SM-G980F'
|
11555 |
-
model: '
|
11556 |
- regex: '(?:SAMSUNG-)?SM-G981(?:[0BNUW]|U1)|SCG01'
|
11557 |
-
model: '
|
11558 |
- regex: '(?:SAMSUNG-)?SM-G988(?:[0BNUW]|U1)'
|
11559 |
-
model: '
|
11560 |
- regex: '(?:SAMSUNG-)?SM-G985F|SCG02'
|
11561 |
-
model: '
|
11562 |
- regex: '(?:SAMSUNG-)?SM-G986(?:[0BNUW]|U1)|SC-52A'
|
11563 |
-
model: '
|
11564 |
- regex: '(?:SAMSUNG-)?SM-F700(?:[0FNUW]|U1)|SCV47'
|
11565 |
-
model: '
|
11566 |
- regex: '(?:SAMSUNG-)?SCH-I200'
|
11567 |
-
model: '
|
11568 |
- regex: '(?:SAMSUNG-)?SCH-I829'
|
11569 |
-
model: '
|
11570 |
- regex: '(?:SAMSUNG-)?(?:SGH-S730|SCH-R740)'
|
11571 |
-
model: '
|
11572 |
- regex: '(?:SAMSUNG-)?SCH-S738'
|
11573 |
-
model: '
|
11574 |
- regex: 'vollo Vi86(?:[);/ ]|$)'
|
11575 |
model: 'Vollo Vi86'
|
11576 |
- regex: '(?:SAMSUNG-)?SM-G386(?:T1|T)'
|
11577 |
-
model: '
|
11578 |
- regex: '(?:SAMSUNG-)?SM-A015[AFGM]'
|
11579 |
-
model: '
|
11580 |
- regex: '(?:SAMSUNG-)?SM-A260[FG]'
|
11581 |
-
model: '
|
11582 |
- regex: '(?:SAMSUNG-)?SM-A300(?:FU|YZ|XU|[09FGHMY])'
|
11583 |
-
model: '
|
11584 |
- regex: '(?:SAMSUNG-)?SM-A310(?:N0|[FMYX])'
|
11585 |
-
model: '
|
11586 |
- regex: '(?:SAMSUNG-)?SM-A320(?:FL|[FYX])'
|
11587 |
-
model: '
|
11588 |
- regex: '(?:SAMSUNG-)?SM-A500[LSWY9]?(?:[);/ ]|$)'
|
11589 |
-
model: '
|
11590 |
- regex: '(?:SAMSUNG-)?SM-A500[FGHKM0]'
|
11591 |
-
model: '
|
11592 |
- regex: '(?:SAMSUNG-)?SM-A500(?:FU|X)'
|
11593 |
-
model: '
|
11594 |
- regex: '(?:SAMSUNG-)?SM-A510[08FKLMSYX]'
|
11595 |
-
model: '
|
11596 |
- regex: '(?:SAMSUNG-)?SM-A520[FKLSWX]'
|
11597 |
-
model: '
|
11598 |
- regex: '(?:SAMSUNG-)?SM-A600(?:AZ|FN|GN|T1|[AFGNPTUX])'
|
11599 |
-
model: '
|
11600 |
- regex: '(?:SAMSUNG-)?SM-A605(?:[FG]N|[08FGX])'
|
11601 |
-
model: '
|
11602 |
- regex: '(?:SAMSUNG-)?SM-G6200'
|
11603 |
-
model: '
|
11604 |
- regex: '(?:SAMSUNG-)?SM-A60(?:60|6Y)'
|
11605 |
-
model: '
|
11606 |
- regex: '(?:SAMSUNG-)?SM-A700(?:YD|[09FHKLSX])'
|
11607 |
-
model: '
|
11608 |
- regex: '(?:SAMSUNG-)?SM-A710[08FKLMSYX]'
|
11609 |
-
model: '
|
11610 |
- regex: '(?:SAMSUNG-)?SM-A720[FSX]'
|
11611 |
-
model: '
|
11612 |
- regex: '(?:SAMSUNG-)?SM-A750(?:GN|[FGCNX])'
|
11613 |
-
model: '
|
11614 |
- regex: '(?:SAMSUNG-)?SM-A71(?:5[FW])?(?:[);/ ]|$)'
|
11615 |
-
model: '
|
11616 |
- regex: '(?:SAMSUNG-)?SM-A716U(?:[);/ ]|$)'
|
11617 |
-
model: '
|
11618 |
- regex: '(?:SAMSUNG-)?SM-A(?:530F|800[0FISY])|SCV32'
|
11619 |
-
model: '
|
11620 |
- regex: '(?:SAMSUNG-)?SM-G885[FSY]'
|
11621 |
-
model: '
|
11622 |
- regex: '(?:SAMSUNG-)?SM-A810(?:YZ|[FS])'
|
11623 |
-
model: '
|
11624 |
- regex: '(?:SAMSUNG-)?SM-G887[0F]'
|
11625 |
-
model: '
|
11626 |
- regex: '(?:SAMSUNG-)?SM-A530[NWXM]'
|
11627 |
-
model: '
|
11628 |
- regex: '(?:SAMSUNG-)?SM-A730F'
|
11629 |
-
model: '
|
11630 |
- regex: '(?:SAMSUNG-)?SM-A9000'
|
11631 |
-
model: '
|
11632 |
- regex: 'SM-A9\[7\]'
|
11633 |
-
model: '
|
11634 |
- regex: '(?:SAMSUNG-)?SM-A920[0FXN]'
|
11635 |
-
model: '
|
11636 |
- regex: '(?:SAMSUNG-)?SM-G885[08]'
|
11637 |
-
model: '
|
11638 |
- regex: '(?:SAMSUNG-)?SM-(?:A910[0F]|G887N)'
|
11639 |
-
model: '
|
11640 |
- regex: '(?:SAMSUNG-)?SM-A105[FGMN]'
|
11641 |
-
model: '
|
11642 |
- regex: '(?:SAMSUNG-)?SM-A107[FM]'
|
11643 |
-
model: '
|
11644 |
- regex: '(?:SAMSUNG-)?SM-(?:S102DL|A102[NWU])'
|
11645 |
-
model: '
|
11646 |
- regex: '(?:SAMSUNG-)?SM-A115F'
|
11647 |
-
model: '
|
11648 |
- regex: '(?:SAMSUNG-)?SM-(?:A205(?:[FGSWU]|YN|U1)|S205DL)|SC-02M|SCV46'
|
11649 |
-
model: '
|
11650 |
- regex: '(?:SAMSUNG-)?SM-A215U(?:[);/ ]|$)'
|
11651 |
-
model: '
|
11652 |
- regex: '(?:SAMSUNG-)?SM-A217F(?:[);/ ]|$)'
|
11653 |
-
model: '
|
11654 |
- regex: '(?:SAMSUNG-)?SM-A202[FG]'
|
11655 |
-
model: '
|
11656 |
- regex: '(?:SAMSUNG-)?SM-A207[0FM]'
|
11657 |
-
model: '
|
11658 |
- regex: '(?:SAMSUNG-)?(?:SM-A305(?:[GYF]N|GT|[NFG])|SCV43)'
|
11659 |
-
model: '
|
11660 |
- regex: '(?:SAMSUNG-)?SM-A307(?:FN|GN|GT|[FG])'
|
11661 |
-
model: '
|
11662 |
- regex: '(?:SAMSUNG-)?SM-A315[FNG](?:[);/ ]|$)'
|
11663 |
-
model: '
|
11664 |
- regex: '(?:SAMSUNG-)?SM-A405(?:F[NM]|S)'
|
11665 |
-
model: '
|
11666 |
- regex: '(?:SAMSUNG-)?SM-A305[01](?:[);/ ]|$)'
|
11667 |
-
model: '
|
11668 |
- regex: '(?:SAMSUNG-)?(?:SM-A415F|SCV48)(?:[);/ ]|$)'
|
11669 |
-
model: '
|
11670 |
- regex: '(?:SAMSUNG-)?SM-(?:A505(?:F[NG]|[FGNWUX]|YN|U1?)|S506DL|505FN)'
|
11671 |
-
model: '
|
11672 |
- regex: '(?:SAMSUNG-)?SM-A5070(?:[);/ ]|$)'
|
11673 |
-
model: '
|
11674 |
- regex: '(?:SAMSUNG-)?SM-A507FN'
|
11675 |
-
model: '
|
11676 |
- regex: '(?:SAMSUNG-)?SM-A515[F]'
|
11677 |
-
model: '
|
11678 |
- regex: '(?:SAMSUNG-)?SM-A705(?:GM|[MYF]N|F|[W0X])'
|
11679 |
-
model: '
|
11680 |
- regex: '(?:SAMSUNG-)?SM-A707[0F]'
|
11681 |
-
model: '
|
11682 |
- regex: '(?:SAMSUNG-)?SM-A805[0FNX]'
|
11683 |
-
model: '
|
11684 |
- regex: '(?:SAMSUNG-)?SM-A908[BN]'
|
11685 |
-
model: '
|
11686 |
- regex: '(?:SAMSUNG-)?GT-I9301I'
|
11687 |
-
model: '
|
11688 |
- regex: '(?:SAMSUNG-)?SM-S120VL(?:[);/ ]|$)'
|
11689 |
-
model: '
|
11690 |
- regex: '(?:SAMSUNG-)?SM-J100(?:FN|VPP|MU|[FHMY])'
|
11691 |
-
model: '
|
11692 |
- regex: '(?:SAMSUNG-)?SM-J105[BFHYM]'
|
11693 |
-
model: '
|
11694 |
- regex: '(?:SAMSUNG-)?SM-J106[FMHB]'
|
11695 |
-
model: '
|
11696 |
- regex: '(?:SAMSUNG-)?SM-(?:J120(?:ZN|[AFHGMTW])|J05H)'
|
11697 |
-
model: '
|
11698 |
- regex: '(?:SAMSUNG-)?SM-(?:J110[FHMLG]|J111[FM])'
|
11699 |
-
model: '
|
11700 |
- regex: '(?:SAMSUNG-)?SM-J200[FGHYM]'
|
11701 |
-
model: '
|
11702 |
- regex: '(?:SAMSUNG-)?SM-J200BT'
|
11703 |
-
model: '
|
11704 |
- regex: '(?:SAMSUNG-)?SM-J260AZ'
|
11705 |
-
model: '
|
11706 |
- regex: '(?:SAMSUNG-)?SM-(?:J260([AFGMY]|T1)|S260DL)'
|
11707 |
-
model: '
|
11708 |
- regex: '(?:SAMSUNG-)?SM-J(?:210F|250[FNMGY])'
|
11709 |
-
model: '
|
11710 |
- regex: '(?:SAMSUNG-)?SM-(?:S367VL|S357BL)'
|
11711 |
-
model: '
|
11712 |
- regex: '(?:SAMSUNG-)?SM-J311(?:[09]|9S)'
|
11713 |
-
model: '
|
11714 |
- regex: '(?:SAMSUNG-)?SM-S320VL(?:[);/ ]|$)'
|
11715 |
-
model: '
|
11716 |
- regex: '(?:SAMSUNG-)?SM-S327VL(?:[);/ ]|$)'
|
11717 |
-
model: '
|
11718 |
- regex: '(?:SAMSUNG-)?SM-J327(?:T1|[ATW])(?:[);/ ]|$)'
|
11719 |
-
model: '
|
11720 |
- regex: '(?:SAMSUNG-)?SM-J327(?:[FP]|R4)'
|
11721 |
-
model: '
|
11722 |
- regex: '(?:SAMSUNG-)?SM-J337R4(?:[);/ ]|$)'
|
11723 |
-
model: '
|
11724 |
- regex: '(?:SAMSUNG-)?SM-J337T(?:[);/ ]|$)'
|
11725 |
-
model: '
|
11726 |
- regex: '(?:SAMSUNG-)?SM-J327V'
|
11727 |
-
model: '
|
11728 |
- regex: '(?:SAMSUNG-)?SM-S337TL'
|
11729 |
-
model: '
|
11730 |
- regex: '(?:SAMSUNG-)?SM-J3109'
|
11731 |
-
model: '
|
11732 |
- regex: '(?:SAMSUNG-)?SM-J320(?:[ZF]N|R4|W8|YZ|[AFGHMNPVY])'
|
11733 |
-
model: '
|
11734 |
- regex: '(?:SAMSUNG-)?SM-(?:J330(?:[08FGLN]|FN)|J327(?:R7|U))(?:[);/ ]|$)'
|
11735 |
-
model: '
|
11736 |
- regex: '(?:SAMSUNG-)?SM-J337(?:[AWPUV]|VPP)(?:[);/ ]|$)'
|
11737 |
-
model: '
|
11738 |
- regex: '(?:SAMSUNG-)?SM-J400[FGM]'
|
11739 |
-
model: '
|
11740 |
- regex: '(?:SAMSUNG-)?SM-J500(?:[8F]|FN|[7GYMH]|N0)(?:[);/ ]|$)'
|
11741 |
-
model: '
|
11742 |
- regex: '(?:SAMSUNG-)?SM-(?:J510(?:[8FHKLSYG]|[UFMG]N)|5108|G510H)(?:[);/ ]|$)'
|
11743 |
-
model: '
|
11744 |
- regex: '(?:SAMSUNG-)?SM-J530'
|
11745 |
-
model: '
|
11746 |
- regex: '(?:SAMSUNG-)?SM-G570[0FMY]'
|
11747 |
-
model: '
|
11748 |
- regex: '(?:SAMSUNG-)?SM-J600[NFGL]' # 2018
|
11749 |
-
model: '
|
11750 |
- regex: '(?:SAMSUNG-)?SM-J610[FG]'
|
11751 |
-
model: '
|
11752 |
- regex: '(?:SAMSUNG-)?SM-J410[FG]'
|
11753 |
-
model: '
|
11754 |
- regex: '(?:SAMSUNG-)?SM-J415(?:[FNG]|[FG]N)'
|
11755 |
-
model: '
|
11756 |
- regex: '(?:SAMSUNG-)?SM-J7[01]0(?:8|F|FN|H|K|M|MN)'
|
11757 |
-
model: '
|
11758 |
- regex: '(?:SAMSUNG-)?SM-J700P'
|
11759 |
-
model: '
|
11760 |
- regex: '(?:SAMSUNG-)?SM-(?:J700(?:T1|T)|J710GN|J7109)'
|
11761 |
-
model: '
|
11762 |
- regex: '(?:SAMSUNG-)?SM-(?:J730[K]|J727(?:[AUSF]|R4))(?:[);/ ]|$)'
|
11763 |
-
model: '
|
11764 |
- regex: '(?:SAMSUNG-)?SM-J737(?:[AVPUS]|T1?|VPP|R4)(?:[);/ ]|$)'
|
11765 |
-
model: '
|
11766 |
- regex: '(?:SAMSUNG-)?SM-C710F'
|
11767 |
-
model: '
|
11768 |
- regex: '(?:SAMSUNG-)?SM-G610[FMY]'
|
11769 |
-
model: '
|
11770 |
- regex: '(?:SAMSUNG-)?SM-G611(?:FF|MT|M)'
|
11771 |
-
model: '
|
11772 |
- regex: '(?:SAMSUNG-)?SM-G615[F]'
|
11773 |
-
model: '
|
11774 |
- regex: '(?:SAMSUNG-)?SM-(?:S727VL|S737TL)'
|
11775 |
-
model: '
|
11776 |
- regex: '(?:SAMSUNG-)?SM-J730(?:F|G|GM)'
|
11777 |
-
model: '
|
11778 |
- regex: '(?:SAMSUNG-)?SM-J701(?:F|M)'
|
11779 |
-
model: '
|
11780 |
- regex: '(?:SAMSUNG-)?SM-J720[FM]'
|
11781 |
-
model: '
|
11782 |
- regex: '(?:SAMSUNG-)?SM-(?:S767VL|S757BL)'
|
11783 |
-
model: '
|
11784 |
- regex: '(?:SAMSUNG-)?SM-J727(?:P|T|V)'
|
11785 |
-
model: '
|
11786 |
- regex: 'SM-J7\[7\]'
|
11787 |
-
model: '
|
11788 |
- regex: '(?:SAMSUNG-)?SM-J810'
|
11789 |
-
model: '
|
11790 |
- regex: 'SM-J8 Pro'
|
11791 |
-
model: '
|
11792 |
- regex: 'SM-J9\[7\] Prime'
|
11793 |
-
model: '
|
11794 |
- regex: 'SM-J9\[8\] Pro'
|
11795 |
-
model: '
|
11796 |
- regex: '(?:SAMSUNG-)?SM-M015[FG]'
|
11797 |
-
model: '
|
11798 |
- regex: '(?:SAMSUNG-)?SM-M105[FGM]'
|
11799 |
-
model: '
|
11800 |
- regex: '(?:SAMSUNG-)?SM-M107F'
|
11801 |
-
model: '
|
11802 |
- regex: '(?:SAMSUNG-)?SM-M115F'
|
11803 |
-
model: '
|
11804 |
- regex: '(?:SAMSUNG-)?SM-M205[FGNM]'
|
11805 |
-
model: '
|
11806 |
- regex: '(?:SAMSUNG-)?SM-M215F'
|
11807 |
-
model: '
|
11808 |
- regex: '(?:SAMSUNG-)?SM-M307([0F]|FN)'
|
11809 |
-
model: '
|
11810 |
- regex: '(?:SAMSUNG-)?SM-M305'
|
11811 |
-
model: '
|
11812 |
- regex: '(?:SAMSUNG-)?SM-M315F'
|
11813 |
-
model: '
|
11814 |
- regex: '(?:SAMSUNG-)?SM-M317F'
|
11815 |
-
model: '
|
11816 |
- regex: '(?:SAMSUNG-)?SM-M405'
|
11817 |
-
model: '
|
11818 |
- regex: '(?:SAMSUNG-)?SM-W201([689])'
|
11819 |
-
model: '
|
11820 |
|
11821 |
- regex: '(?:SAMSUNG-)?SM-G850F'
|
11822 |
-
model: '
|
11823 |
- regex: '(?:SAMSUNG-)?SM-G910S'
|
11824 |
-
model: '
|
11825 |
- regex: '(?:SAMSUNG-)?SM-(?:G550(?:FY|T[12]?)|S550TL|G55[01]0|G5520)'
|
11826 |
-
model: '
|
11827 |
- regex: '(?:SAMSUNG-)?SM-G5528'
|
11828 |
-
model: '
|
11829 |
- regex: '(?:SAMSUNG-)?SM-G600(?:FY|[0F])'
|
11830 |
-
model: '
|
11831 |
- regex: '(?:SAMSUNG-)?SM-G610[0KLS]'
|
11832 |
-
model: '
|
11833 |
- regex: '(?:SAMSUNG-)?SM-G611[FSKL]'
|
11834 |
-
model: '
|
11835 |
- regex: '(?:SAMSUNG-)?SM-C5000'
|
11836 |
-
model: '
|
11837 |
- regex: '(?:SAMSUNG-)?SM-C501[08]'
|
11838 |
-
model: '
|
11839 |
- regex: '(?:SAMSUNG-)?SM-C7000'
|
11840 |
-
model: '
|
11841 |
- regex: '(?:SAMSUNG-)?SM-C701[08F]'
|
11842 |
-
model: '
|
11843 |
- regex: '(?:SAMSUNG-)?SM-C710[08]'
|
11844 |
-
model: '
|
11845 |
- regex: '(?:SAMSUNG-)?SM-C900[08FY]'
|
11846 |
-
model: '
|
11847 |
- regex: '(?:SAMSUNG-)?SM-Z130H'
|
11848 |
-
model: '
|
11849 |
- regex: '(?:SAMSUNG-)?SM-Z200[FMY]'
|
11850 |
-
model: '
|
11851 |
- regex: '(?:SAMSUNG-)?SM-Z300H'
|
11852 |
-
model: '
|
11853 |
- regex: '(?:SAMSUNG-)?SM-Z400[FY]'
|
11854 |
-
model: '
|
11855 |
- regex: '(?:SAMSUNG-)?SM-(?:G150|G155S)(?:[);/ ]|$)'
|
11856 |
-
model: '
|
11857 |
- regex: '(?:SAMSUNG-)?(?:SM-G16(?:[05]0?|0N))(?:[);/ ]|$)'
|
11858 |
-
model: '
|
11859 |
- regex: '(?:SAMSUNG-)?SM-J321AZ(?:[);/ ]|$)'
|
11860 |
-
model: '
|
11861 |
- regex: '(?:SAMSUNG-)?SM-J326AZ(?:[);/ ]|$)'
|
11862 |
-
model: '
|
11863 |
- regex: '(?:SAMSUNG-)?SM-J336AZ(?:[);/ ]|$)'
|
11864 |
-
model: '
|
11865 |
- regex: '(?:SAMSUNG-)?SM-J727AZ(?:[);/ ]|$)'
|
11866 |
-
model: '
|
11867 |
- regex: '(?:SAMSUNG-)?SM-J327AZ'
|
11868 |
-
model: '
|
11869 |
- regex: '(?:SAMSUNG-)?SM-J337AZ'
|
11870 |
-
model: '
|
11871 |
|
11872 |
# explicit phablet models
|
11873 |
- regex: '(?:SAMSUNG-)?SM-(?:F900[0FU]|F907[BN])|SCV44'
|
11874 |
-
model: '
|
11875 |
device: 'phablet'
|
11876 |
- regex: '(?:SAMSUNG-)?GT-I9060(?:[);/ ]|$)'
|
11877 |
-
model: '
|
11878 |
device: 'phablet'
|
11879 |
- regex: '(?:SAMSUNG-)?GT-I9063'
|
11880 |
-
model: '
|
11881 |
device: 'phablet'
|
11882 |
- regex: '(?:SAMSUNG-)?GT-I9(?:080|128)'
|
11883 |
-
model: '
|
11884 |
device: 'phablet'
|
11885 |
- regex: '(?:SAMSUNG-)?GT-I9168'
|
11886 |
-
model: '
|
11887 |
device: 'phablet'
|
11888 |
- regex: '(?:SAMSUNG-)?GT-I9082'
|
11889 |
-
model: '
|
11890 |
device: 'phablet'
|
11891 |
- regex: '(?:SAMSUNG-)?GT-N7000'
|
11892 |
-
model: '
|
11893 |
device: 'phablet'
|
11894 |
- regex: '(?:SC-01G|SCL24)(?:[);/ ]|$)'
|
11895 |
-
model: '
|
11896 |
device: 'phablet'
|
11897 |
- regex: '(?:SAMSUNG-)?SM-N935[FSLK](?:[);/ ]|$)'
|
11898 |
-
model: '
|
11899 |
device: 'phablet'
|
11900 |
- regex: '(?:SAMSUNG-)?(?:(?:GT-)?N7100|SCH-I605|SCH-N719|SCH-R950|SPH-L900)(?:[);/ ]|$)'
|
11901 |
-
model: '
|
11902 |
device: 'phablet'
|
11903 |
- regex: '(?:SAMSUNG-)?GT-N7105'
|
11904 |
-
model: '
|
11905 |
device: 'phablet'
|
11906 |
- regex: '(?:SAMSUNG-)?SM-G710[25L]?(?:[);/ ]|$)'
|
11907 |
-
model: '
|
11908 |
device: 'phablet'
|
11909 |
- regex: '(?:SAMSUNG-)?SM-G720(?:AX|N0|[02])(?:[);/ ]|$)'
|
11910 |
-
model: '
|
11911 |
- regex: '(?:SAMSUNG-)?SM-(?:G53(?:0[AFTYHWMP]|0[AF]Z|1[FH]|0[689]W|0MU|0BT|0R[47])|S920L)(?:[);/ ]|$)'
|
11912 |
-
model: '
|
11913 |
device: 'phablet'
|
11914 |
- regex: '(?:SAMSUNG-)?SM-G531(?:BT|[MY])(?:[);/ ]|$)'
|
11915 |
-
model: '
|
11916 |
device: 'phablet'
|
11917 |
- regex: '(?:SAMSUNG-)?SM-G532F(?:[);/ ]|$)'
|
11918 |
-
model: '
|
11919 |
device: 'phablet'
|
11920 |
- regex: '(?:SAMSUNG-)?SM-G532MT(?:[);/ ]|$)'
|
11921 |
-
model: '
|
11922 |
device: 'phablet'
|
11923 |
- regex: '(?:SAMSUNG-)?SM-G532[MG](?:[);/ ]|$)'
|
11924 |
-
model: '
|
11925 |
device: 'phablet'
|
11926 |
- regex: '(?:SAMSUNG-)?SM-N7502(?:[);/ ]|$)'
|
11927 |
-
model: '
|
11928 |
device: 'phablet'
|
11929 |
- regex: '(?:SAMSUNG-)?SM-N750[QL50]?'
|
11930 |
-
model: '
|
11931 |
device: 'phablet'
|
11932 |
- regex: '(?:SAMSUNG-)?SM-N9002(?:[);/ ]|$)'
|
11933 |
-
model: '
|
11934 |
device: 'phablet'
|
11935 |
- regex: '(?:SAMSUNG-)?SM-9005(?:[);/ ]|$)'
|
11936 |
-
model: '
|
11937 |
device: 'phablet'
|
11938 |
- regex: '(?:SAMSUNG-)?(?:SM-N900(?:[05689][VQ]?|[AKLPSTV]|W8)?|SCL22|SC-01F(?:[);/ ]|$))'
|
11939 |
-
model: '
|
11940 |
device: 'phablet'
|
11941 |
- regex: '(?:SAMSUNG-)?SM-(?:N910|910U)|N9100(?:[);/ ]|$)'
|
11942 |
-
model: '
|
11943 |
device: 'phablet'
|
11944 |
- regex: '(?:SAMSUNG-)?SM-N916[SKL]'
|
11945 |
-
model: '
|
11946 |
device: 'phablet'
|
11947 |
- regex: '(?:SAMSUNG-)?SM-N915'
|
11948 |
-
model: '
|
11949 |
device: 'phablet'
|
11950 |
- regex: '(?:SAMSUNG-)?SM-N920(?:[0ACGIKLSTPFVX]|R[467]|W8)'
|
11951 |
-
model: '
|
11952 |
device: 'phablet'
|
11953 |
- regex: '(?:SAMSUNG-)?SM-N9208'
|
11954 |
-
model: '
|
11955 |
device: 'phablet'
|
11956 |
- regex: '(?:SAMSUNG-)?SM-G750(?:8Q|[9AFH])'
|
11957 |
-
model: '
|
11958 |
device: 'phablet'
|
11959 |
- regex: '(?:SAMSUNG-)?GT-I915[028]'
|
11960 |
-
model: '
|
11961 |
device: 'phablet'
|
11962 |
- regex: '(?:SAMSUNG-)?GT-I920[05]'
|
11963 |
-
model: '
|
11964 |
device: 'phablet'
|
11965 |
- regex: '(?:SAMSUNG-)?(?:SM-N930[VFST0P]|SCV34)'
|
11966 |
-
model: '
|
11967 |
device: 'phablet'
|
11968 |
- regex: '(?:SAMSUNG[- ])?SM-N950|SCV37|SC-01K'
|
11969 |
-
model: '
|
11970 |
device: 'phablet'
|
11971 |
- regex: '(?:SAMSUNG[- ])?(?:SM-N960|SCV40|SC-01L)'
|
11972 |
-
model: '
|
11973 |
device: 'phablet'
|
11974 |
- regex: '(?:SAMSUNG[- ])?SM-(?:N970(?:U1|W8|[089DFJKLSXUW])|N971N)'
|
11975 |
-
model: '
|
11976 |
device: 'phablet'
|
11977 |
- regex: '(?:SAMSUNG[- ])?SM-N770[FX]'
|
11978 |
-
model: '
|
11979 |
device: 'phablet'
|
11980 |
- regex: '(?:SAMSUNG[- ])?(?:SM-N975(?:[0FUXW]|U1|Xu)|SM-N976[0BVNUQ]|SC-01M|SCV45)'
|
11981 |
-
model: '
|
11982 |
device: 'phablet'
|
11983 |
- regex: '(?:SAMSUNG[- ])?(?:SM-N980(?:F|F/DS))'
|
11984 |
-
model: '
|
11985 |
device: 'phablet'
|
11986 |
- regex: '(?:SAMSUNG[- ])?(?:SM-N981(?:B|B/DS|N|U|U1|W))'
|
11987 |
-
model: '
|
11988 |
device: 'phablet'
|
11989 |
- regex: '(?:SAMSUNG[- ])?(?:SM-N985(?:F|F/DS))'
|
11990 |
-
model: '
|
11991 |
device: 'phablet'
|
11992 |
- regex: '(?:SAMSUNG[- ])?(?:SM-N986(?:B/DS|U1|[BNWU])|SCG06)'
|
11993 |
-
model: '
|
11994 |
device: 'phablet'
|
11995 |
|
11996 |
- regex: '(?:SAMSUNG-)?SM-W750V'
|
@@ -12008,7 +12308,7 @@ Samsung:
|
|
12008 |
device: 'tablet'
|
12009 |
model: '$1'
|
12010 |
- regex: 'SC-02C'
|
12011 |
-
model: '
|
12012 |
- regex: '(?:SAMSUNG-)?((?:SM-[TNP]|GT-P)[a-z0-9_\-]+)'
|
12013 |
device: 'tablet'
|
12014 |
model: '$1'
|
@@ -12018,9 +12318,9 @@ Samsung:
|
|
12018 |
device: 'tv'
|
12019 |
model: 'Smart TV'
|
12020 |
- regex: 'Galaxy ([^/;]+) Build'
|
12021 |
-
model: '
|
12022 |
- regex: 'Galaxy ([a-z0-9]+)'
|
12023 |
-
model: '
|
12024 |
- regex: 'SAMSUNG[\-][ ]?([a-z0-9]+[\-_][a-z0-9]+)'
|
12025 |
model: '$1'
|
12026 |
- regex: 'SAMSUNG;[ ]?([a-z0-9]+[\-_][a-z0-9]+)'
|
@@ -12064,10 +12364,12 @@ Selfix:
|
|
12064 |
|
12065 |
# Sencor
|
12066 |
Sencor:
|
12067 |
-
regex: 'Sencor|ELEMENT[ _]?(?:7|8|9\.7|10[ _]1)(?:[ _]?V[23])?(?:[);/ ]|$)|ELEMENT[ _]?(?:P[0-9]
|
12068 |
device: 'tablet'
|
12069 |
models:
|
12070 |
# explicit tablet models
|
|
|
|
|
12071 |
- regex: '(?:SENCOR[ _])?ELEMENT[ _]?7[ _]?V3'
|
12072 |
model: 'Element 7 V3'
|
12073 |
- regex: '(?:SENCOR[ _])?ELEMENT[ _]?7[ _]?V2[ _]BASIC'
|
@@ -12282,7 +12584,7 @@ SunVan:
|
|
12282 |
|
12283 |
# SWISSMOBILITY
|
12284 |
SWISSMOBILITY:
|
12285 |
-
regex: 'SCHR9GR|
|
12286 |
device: 'smartphone'
|
12287 |
models:
|
12288 |
- regex: 'SCHR9GR'
|
@@ -12291,6 +12593,10 @@ SWISSMOBILITY:
|
|
12291 |
device: 'phablet'
|
12292 |
model: 'Z72 go'
|
12293 |
|
|
|
|
|
|
|
|
|
12294 |
# Thomson
|
12295 |
Thomson:
|
12296 |
regex: '(?:Primo(7|8)|QM73[45]-8G|QM734-2|QM736-8G\(HD\)|8950|MID1002|5014G)(?:[);/ ]|$)|(?:Tlink|Every)[0-9]+'
|
@@ -12299,7 +12605,7 @@ Thomson:
|
|
12299 |
# already detected as manta device
|
12300 |
#- regex: 'MID1002'
|
12301 |
# model: 'MID1002'
|
12302 |
-
- regex
|
12303 |
model: 'Primo $1'
|
12304 |
- regex: 'QM734-2'
|
12305 |
model: 'QM734-2'
|
@@ -12368,7 +12674,7 @@ Plum:
|
|
12368 |
|
12369 |
# Polaroid
|
12370 |
Polaroid:
|
12371 |
-
regex: 'Polaroid|(?:PMID|MIDC)[0-9a-z]+(?:[);/ ]|$)|MID(?:1014|0714)|PRO[VG]?(?:[0-9]{3,}[a-z]*|[0-9]{2}[a-z])|(?:P(?:400[56]|4526|500[56]|502[56]|504[67]|552[56])A|PSPC(?:505|550|[MZL]20A0|K21NA)|SIGMA 5)(?:[);/ ]|$)'
|
12372 |
device: 'smartphone'
|
12373 |
models:
|
12374 |
# explicit smartphone models
|
@@ -12421,6 +12727,9 @@ Polaroid:
|
|
12421 |
- regex: '((?:PMID|MIDC)[0-9a-z]+)(?:[);/ ]|$)'
|
12422 |
model: '$1'
|
12423 |
device: 'tablet'
|
|
|
|
|
|
|
12424 |
- regex: 'Polaroid'
|
12425 |
model: ''
|
12426 |
device: 'tablet'
|
@@ -12522,7 +12831,7 @@ Positivo:
|
|
12522 |
|
12523 |
# Prestigio
|
12524 |
Prestigio:
|
12525 |
-
regex: '(?:PMP|PAP|PMT|PSP|PGPS)[0-9]+[a-z0-9_]+(?:[);/ ]|$)|Muze C3'
|
12526 |
device: 'tablet'
|
12527 |
models:
|
12528 |
- regex: 'PMT3277_3G'
|
@@ -12537,6 +12846,9 @@ Prestigio:
|
|
12537 |
model: 'Grace S5'
|
12538 |
- regex: 'PMT3287_3G'
|
12539 |
model: 'MultiPad Ranger 8.0 3G'
|
|
|
|
|
|
|
12540 |
- regex: 'PMT3208[_ ]3G'
|
12541 |
model: 'MultiPad Wize 8.0 3G'
|
12542 |
- regex: 'PSP7546DUO([ _][A-Z]{2})?'
|
@@ -12657,9 +12969,13 @@ Quechua:
|
|
12657 |
|
12658 |
# Ramos
|
12659 |
Ramos:
|
12660 |
-
regex: 'Ramos ?([^/;]+) Build'
|
12661 |
device: 'tablet'
|
12662 |
-
|
|
|
|
|
|
|
|
|
12663 |
|
12664 |
# Razer
|
12665 |
Razer:
|
@@ -12738,7 +13054,7 @@ Sigma:
|
|
12738 |
|
12739 |
# Spice
|
12740 |
Spice:
|
12741 |
-
regex: 'Spice'
|
12742 |
device: 'smartphone'
|
12743 |
models:
|
12744 |
- regex: 'Spice[ _\-]?([^/;]+)(?:[\)]| Build)'
|
@@ -12748,7 +13064,7 @@ Spice:
|
|
12748 |
|
12749 |
# Sharp (jp.sharp)
|
12750 |
Sharp:
|
12751 |
-
regex: 'SHARP|SBM|SH-?[0-9]+[a-z]?(?:[);/ ]|$)|AQUOS|(?:SH-M0[45789]|SH-M1[123]|S[357]-SH|SH-[MZ](10|01)|SH-[CL]02|SH-RM(?:1[12]|02)|[34]04SH|[45]02SH|[36]05SH|70[1246]SH|80[138]SH|90[1678]SH|50[3679]SH|SHL22|SHV4[0-8]|SHV3[1-9](?:[-_]u)?|FS80(?:1[08]|32|28|0[29])|TG-L900S|NP601SH|603SH|SHV4[035][-_]u|SW001SH|SHG0[12]|X4-SH|A002SH|DM-01J)(?:[);/ ]|$)'
|
12752 |
device: 'smartphone'
|
12753 |
models:
|
12754 |
# explicit smartphone models
|
@@ -12814,7 +13130,7 @@ Sharp:
|
|
12814 |
model: 'Aquos Ever'
|
12815 |
- regex: 'SH-02H(?:[);/ ]|$)'
|
12816 |
model: 'Aquos Compact'
|
12817 |
-
- regex: '
|
12818 |
model: 'Aquos Crystal'
|
12819 |
- regex: '402SH(?:[);/ ]|$)'
|
12820 |
model: 'Aquos Crystal X'
|
@@ -12848,6 +13164,8 @@ Sharp:
|
|
12848 |
model: 'Aquos U'
|
12849 |
- regex: 'TG-L900S(?:[);/ ]|$)'
|
12850 |
model: 'Luna S'
|
|
|
|
|
12851 |
- regex: '(?:FS8002|SHV47)(?:[);/ ]|$)'
|
12852 |
model: 'Z2'
|
12853 |
- regex: 'FS8009(?:[);/ ]|$)'
|
@@ -12860,6 +13178,8 @@ Sharp:
|
|
12860 |
model: 'Star Wars'
|
12861 |
- regex: 'SH-RM02'
|
12862 |
model: 'Aquos SH-RM02'
|
|
|
|
|
12863 |
- regex: 'DM-01J'
|
12864 |
model: 'Disney Mobile'
|
12865 |
|
@@ -12999,9 +13319,11 @@ Amazon:
|
|
12999 |
|
13000 |
# Symphony
|
13001 |
Symphony:
|
13002 |
-
regex: 'SYMPHONY[ \_]([a-z0-9]+)|roar (V20|E80)'
|
13003 |
device: 'smartphone'
|
13004 |
models:
|
|
|
|
|
13005 |
- regex: 'roar V20'
|
13006 |
model: 'Roar V20'
|
13007 |
- regex: 'roar E80'
|
@@ -13053,7 +13375,7 @@ T-Mobile:
|
|
13053 |
|
13054 |
# Tcl
|
13055 |
TCL:
|
13056 |
-
regex: 'TCL[_ -][a-z0-9]+|(?:TCL[_ -][^;/]+ Build)|(?:TCLGalaG60(?:\(9108A\))?|A502DL|T780H|5199I|7040N|5133A|5159[AJ]|5152D)(?:[);/ ]|$)'
|
13057 |
device: 'smartphone'
|
13058 |
models:
|
13059 |
- regex: 'TCLGalaG60(?:\(9108A\))?(?:[);/ ]|$)'
|
@@ -13076,6 +13398,8 @@ TCL:
|
|
13076 |
model: 'LX'
|
13077 |
- regex: '5159[AJ](?:[);/ ]|$)'
|
13078 |
model: 'L9'
|
|
|
|
|
13079 |
|
13080 |
# Teclast
|
13081 |
Teclast:
|
@@ -13171,7 +13495,7 @@ Tesco:
|
|
13171 |
|
13172 |
# teXet
|
13173 |
teXet:
|
13174 |
-
regex: 'Texet|(NaviPad [^/;]*) Build|TM-(?:1046|1058|1057|1067|3000|3200R|3500|4003|4071|450[34]|451[30]|4377|4082R|550[
|
13175 |
device: 'tablet'
|
13176 |
models:
|
13177 |
- regex: 'TM-9749'
|
@@ -13245,6 +13569,18 @@ teXet:
|
|
13245 |
- regex: 'TM_5011'
|
13246 |
device: 'smartphone'
|
13247 |
model: 'X-Omega'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13248 |
- regex: 'TM-5201'
|
13249 |
device: 'smartphone'
|
13250 |
model: 'Rock'
|
@@ -13260,6 +13596,9 @@ teXet:
|
|
13260 |
- regex: 'TM-4982'
|
13261 |
device: 'smartphone'
|
13262 |
model: 'iX-Maxi'
|
|
|
|
|
|
|
13263 |
- regex: 'TM-5010'
|
13264 |
device: 'smartphone'
|
13265 |
model: 'X-Selfie'
|
@@ -13278,10 +13617,13 @@ teXet:
|
|
13278 |
- regex: 'X-Plus[\(-]?TM-5577\)?'
|
13279 |
device: 'smartphone'
|
13280 |
model: 'X-Plus'
|
|
|
|
|
|
|
13281 |
|
13282 |
# Telefunken
|
13283 |
Telefunken:
|
13284 |
-
regex: 'TELEFUNKEN|Foxtrot|TEL-1013GIQA|TF-
|
13285 |
device: 'tablet'
|
13286 |
models:
|
13287 |
- regex: 'TEL-1013GIQA'
|
@@ -13289,10 +13631,10 @@ Telefunken:
|
|
13289 |
- regex: 'Foxtrot2'
|
13290 |
model: 'Foxtrot 2'
|
13291 |
device: 'smartphone'
|
13292 |
-
- regex: '(?:TELEFUNKEN)?(TF-
|
13293 |
model: '$1'
|
13294 |
device: 'smartphone'
|
13295 |
-
- regex: '(TF-MID(?:[78]02G|9705RG|7805G|1010G))'
|
13296 |
model: '$1'
|
13297 |
- regex: '(TF-LED(?:65S75T2SU|32S39T2S|32S5[289]T2S|32S70T2S))'
|
13298 |
model: '$1'
|
@@ -13408,16 +13750,16 @@ Toplux:
|
|
13408 |
|
13409 |
# Touchmate
|
13410 |
Touchmate:
|
13411 |
-
regex: 'TOUCHMATE|(TM-(?:MID1020A|MID710|MID798|MID792|MID788D|SM500N|SM410))'
|
13412 |
device: 'smartphone'
|
13413 |
models:
|
13414 |
-
- regex: '(TM-(?:MID1020A|MID710|MID798|MID792|MID788D))'
|
13415 |
device: 'tablet'
|
13416 |
model: '$1'
|
13417 |
- regex: '(TM-(?:SM500N|SM410))'
|
13418 |
-
model:
|
13419 |
- regex: 'Touchmate ([^/;]+) Build'
|
13420 |
-
model:
|
13421 |
|
13422 |
# TrekStor
|
13423 |
TrekStor:
|
@@ -13532,7 +13874,7 @@ UTStarcom:
|
|
13532 |
|
13533 |
# Ulefone
|
13534 |
Ulefone:
|
13535 |
-
regex: 'Ulefone|Gemini Pro|Power_[356]|S10_Pro|(?:Armor(?:(?:[ _])(?:[2367]|X[236]|6[SE]|X))?|U00[78][ _]Pro|Be[ _]X|Be[ _]Touch(?:[ _][23])?|Be[ _](?:One|Pure)(?:[ _]Lite)?)(?:[);/ ]|$)'
|
13536 |
device: 'smartphone'
|
13537 |
models:
|
13538 |
- regex: 'S10_Pro'
|
@@ -13553,26 +13895,24 @@ Ulefone:
|
|
13553 |
model: 'U007 Pro'
|
13554 |
- regex: 'U008 Pro'
|
13555 |
model: 'U008 Pro'
|
13556 |
-
- regex: 'Armor[ _]2(?:[);/ ]|$)'
|
13557 |
-
model: 'Armor 2'
|
13558 |
-
- regex: 'Armor[ _]3(?:[);/ ]|$)'
|
13559 |
-
model: 'Armor 3'
|
13560 |
-
- regex: 'Armor[ _]7(?:[);/ ]|$)'
|
13561 |
-
model: 'Armor 7'
|
13562 |
- regex: 'Armor[ _]X([236])(?:[);/ ]|$)'
|
13563 |
model: 'Armor X$1'
|
13564 |
- regex: 'Armor[ _]6S(?:[);/ ]|$)'
|
13565 |
model: 'Armor 6S'
|
13566 |
- regex: 'Armor[ _]6E(?:[);/ ]|$)'
|
13567 |
model: 'Armor 6E'
|
13568 |
-
- regex: 'Armor[ _]6(?:[);/ ]|$)'
|
13569 |
-
model: 'Armor 6'
|
13570 |
- regex: 'Armor[ _]X5(?:[);/ ]|$)'
|
13571 |
model: 'Armor X5'
|
13572 |
- regex: 'Armor[ _]5S(?:[);/ ]|$)'
|
13573 |
model: 'Armor 5S'
|
13574 |
- regex: 'Armor[ _]X(?:[);/ ]|$)'
|
13575 |
model: 'Armor X'
|
|
|
|
|
|
|
|
|
|
|
|
|
13576 |
- regex: 'Armor(?:[);/ ]|$)'
|
13577 |
model: 'Armor'
|
13578 |
- regex: 'Gemini Pro(?:[);/ ]|$)'
|
@@ -13588,7 +13928,7 @@ Ulefone:
|
|
13588 |
|
13589 |
# UMIDIGI
|
13590 |
UMIDIGI:
|
13591 |
-
regex: 'UMI(?:DIGI)?[ _]|A5_Pro'
|
13592 |
device: 'smartphone'
|
13593 |
models:
|
13594 |
- regex: 'A5_Pro'
|
@@ -13597,6 +13937,8 @@ UMIDIGI:
|
|
13597 |
model: 'Touch X'
|
13598 |
- regex: 'UMI TOUCH'
|
13599 |
model: 'Touch'
|
|
|
|
|
13600 |
- regex: 'UMI_(London|Diamond(?:_X)?)'
|
13601 |
model: '$1'
|
13602 |
- regex: 'UMI(?:DIGI)?[ _]([^/;)]+)(?: Build|\))'
|
@@ -13708,12 +14050,12 @@ VK Mobile:
|
|
13708 |
|
13709 |
# Vernee
|
13710 |
Vernee:
|
13711 |
-
regex: 'Vernee|Mars Pro|Apollo (?:Lite|X)|Thor (?:E|Plus)'
|
13712 |
device: 'smartphone'
|
13713 |
models:
|
13714 |
-
- regex: 'Apollo Lite'
|
13715 |
model: 'Apollo Lite'
|
13716 |
-
- regex: 'Apollo X'
|
13717 |
model: 'Apollo X'
|
13718 |
- regex: 'Mars Pro'
|
13719 |
model: 'Mars Pro'
|
@@ -13723,6 +14065,8 @@ Vernee:
|
|
13723 |
model: 'Thor Plus'
|
13724 |
- regex: 'Vernee_M5'
|
13725 |
model: 'M5'
|
|
|
|
|
13726 |
- regex: 'Vernee[ _-]([^;/]+) Build'
|
13727 |
model: '$1'
|
13728 |
- regex: 'Vernee[ _-]([a-z0-9_-]+)'
|
@@ -13778,9 +14122,9 @@ Verykool:
|
|
13778 |
- regex: 'verykool[ _]?([^/;]+);'
|
13779 |
model: '$1'
|
13780 |
|
13781 |
-
# Vestel
|
13782 |
Vestel:
|
13783 |
-
regex: 'Venus[ _](GO|V[1-9]|Z[1-9]0)|V_?TAB|VP74|VT97PRO|VSP145M|VSP250[GS]|VSP355[GS]|V3_5580_Dual'
|
13784 |
device: 'smartphone'
|
13785 |
models:
|
13786 |
- regex: 'VT97PRO'
|
@@ -13816,12 +14160,23 @@ Vestel:
|
|
13816 |
model: 'Venus Z$1'
|
13817 |
- regex: 'Venus[ _]GO'
|
13818 |
model: 'Venus Go'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13819 |
|
13820 |
# Videocon
|
13821 |
Videocon:
|
13822 |
regex: 'Videocon[_ \-]|VT75C|V502430'
|
13823 |
device: 'smartphone'
|
13824 |
models:
|
|
|
|
|
|
|
13825 |
- regex: 'Videocon[_ \-]([a-z0-9]+)'
|
13826 |
model: '$1'
|
13827 |
- regex: 'VT75C(?:[);/ ]|$)'
|
@@ -14060,7 +14415,7 @@ WellcoM:
|
|
14060 |
|
14061 |
# Wexler
|
14062 |
Wexler:
|
14063 |
-
regex: 'Wexler|ULTIMA 7 TWIST PLUS|TAB[ _]10Q(?:[);/ ]|$)|ZEN[ _](?:4\.5|4\.7|5)'
|
14064 |
device: 'tablet'
|
14065 |
models:
|
14066 |
- regex: '(?:Wexler[ _\-\.])?ZEN[ _]4\.5(?:[);/ ]|$)'
|
@@ -14074,6 +14429,8 @@ Wexler:
|
|
14074 |
device: 'smartphone'
|
14075 |
- regex: '(?:Wexler[ _\-\.])?TAB[ _]10Q(?:[);/ ]|$)'
|
14076 |
model: 'TAB 10Q'
|
|
|
|
|
14077 |
- regex: 'Wexler[ _\-\.]([^;/]+) Build'
|
14078 |
model: '$1'
|
14079 |
- regex: 'Wexler[ _\-\.]([^);/]+)(?:[);/]|$)'
|
@@ -14083,7 +14440,7 @@ Wexler:
|
|
14083 |
|
14084 |
# Wiko (wikomobile.com)
|
14085 |
Wiko:
|
14086 |
-
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|Getaway|Goa(?!nna)|Kite|Robby|Lenny[2-9]?|Slide|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|HARRY|Ridge(?: Fab)?|U FEEL(?: Prime| Lite)?|U PULSE(?: LITE)?|View2 Go|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)?|W_(?:
|
14087 |
device: 'smartphone'
|
14088 |
models:
|
14089 |
- regex: '(?:WIKO-)?Cink Peax 2'
|
@@ -14092,6 +14449,10 @@ Wiko:
|
|
14092 |
model: 'Cink$1'
|
14093 |
- regex: '(?:WIKO-)?CINK_([a-z0-9_]+)'
|
14094 |
model: 'Cink $1'
|
|
|
|
|
|
|
|
|
14095 |
- regex: '(?:Wiko-)?Highway([^/;]*) Build'
|
14096 |
model: 'Highway$1'
|
14097 |
- regex: '(?:WIKO-)?HIGHWAY_([a-z0-9_]+)'
|
@@ -14136,6 +14497,8 @@ Wiko:
|
|
14136 |
model: 'Jerry Max'
|
14137 |
- regex: 'W_K300'
|
14138 |
model: 'Jerry 3'
|
|
|
|
|
14139 |
- regex: '(?:WIKO-)?Jerry2'
|
14140 |
model: 'Jerry 2'
|
14141 |
- regex: '(?:WIKO-)?Jerry'
|
@@ -14168,12 +14531,16 @@ Wiko:
|
|
14168 |
model: 'Sunset'
|
14169 |
- regex: '(?:WIKO-)?Sunny3'
|
14170 |
model: 'Sunny 3'
|
|
|
|
|
14171 |
- regex: '(?:WIKO-)?Sunny2 Plus'
|
14172 |
model: 'Sunny 2 Plus'
|
14173 |
- regex: '(?:WIKO-)?Sunny2'
|
14174 |
model: 'Sunny 2'
|
14175 |
- regex: 'W-K360-TV'
|
14176 |
model: 'Sunny 4 Plus'
|
|
|
|
|
14177 |
- regex: '(?:WIKO-)?Sunny'
|
14178 |
model: 'Sunny'
|
14179 |
- regex: '(?:W_K600|Tommy3|W_C200SN)'
|
@@ -14188,6 +14555,8 @@ Wiko:
|
|
14188 |
model: 'Wax'
|
14189 |
- regex: '(?:WIKO-)?HARRY'
|
14190 |
model: 'Harry'
|
|
|
|
|
14191 |
- regex: '(?:WIKO-)?WIM Lite'
|
14192 |
model: 'WIM Lite'
|
14193 |
- regex: '(?:WIKO-)?Pulp Fab 4G'
|
@@ -14220,19 +14589,25 @@ Wiko:
|
|
14220 |
model: 'View Lite'
|
14221 |
- regex: 'W_C800'
|
14222 |
model: 'View 2'
|
|
|
|
|
14223 |
- regex: 'W_P200'
|
14224 |
model: 'View Max'
|
14225 |
-
- regex: '
|
|
|
|
|
14226 |
model: 'View 3 Lite'
|
|
|
|
|
14227 |
- regex: 'W-K420-EEA'
|
14228 |
model: 'Y50'
|
14229 |
-
- regex: 'W-K510-(TVM|EEA|OPE|SUN)'
|
14230 |
model: 'Y60'
|
14231 |
-
- regex: 'W-V720-(EEA|OPE)'
|
14232 |
model: 'Y80'
|
14233 |
-
- regex: 'W-P311-(EEA|OPE)'
|
14234 |
model: 'View 3'
|
14235 |
-
- regex: 'W-P611-EEA'
|
14236 |
model: 'View 3 Pro'
|
14237 |
- regex: 'W-V830-EEA'
|
14238 |
model: 'View 4'
|
@@ -14247,7 +14622,7 @@ Wiko:
|
|
14247 |
|
14248 |
# Wieppo
|
14249 |
Wieppo:
|
14250 |
-
regex: 'Wieppo (S6 Lite|S[658])(?:[);/ ]|$)'
|
14251 |
device: 'smartphone'
|
14252 |
model: '$1'
|
14253 |
|
@@ -14352,7 +14727,7 @@ POCO:
|
|
14352 |
|
14353 |
# Xiaomi
|
14354 |
Xiaomi:
|
14355 |
-
regex: 'Xiaomi(?!/(?:Miui|Mint[ ])Browser)|Mi9 Pro 5G|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?)(?:[);/ ]|$)|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|MI_NOTE_Pro|POCOPHONE|(?:SHARK )?(KLE|MBU)-[AH]0|SKR-[AH]0|SKW-[AH]0|POCO F1|DLT-[AH]0|MIBOX[234]([_ ]PRO)?|MiTV4[CSX]?|MiTV-(
|
14356 |
device: 'smartphone'
|
14357 |
models:
|
14358 |
# specific smartphone models
|
@@ -14392,7 +14767,7 @@ Xiaomi:
|
|
14392 |
model: 'MI CC 9'
|
14393 |
- regex: 'Xiaomi_M2001J2E_TD-LTE(?:[);/ ]|$)'
|
14394 |
model: 'MI 10'
|
14395 |
-
- regex: '
|
14396 |
model: 'MI 10T 5G'
|
14397 |
- regex: 'M2007J3SG(?:[);/ ]|$)'
|
14398 |
model: 'MI 10T Pro 5G'
|
@@ -14442,7 +14817,7 @@ Xiaomi:
|
|
14442 |
model: 'Redmi 1'
|
14443 |
- regex: 'M2004J7AC(?:[);/ ]|$)'
|
14444 |
model: 'Redmi 10X'
|
14445 |
-
- regex: 'M2004J19C(?:[);/ ]|$)'
|
14446 |
model: 'Redmi 9'
|
14447 |
- regex: 'M2006C3L[GCI](?:[);/ ]|$)'
|
14448 |
model: 'Redmi 9A'
|
@@ -14486,7 +14861,7 @@ Xiaomi:
|
|
14486 |
- regex: 'MiTV-MSSP1(?:[);/ ]|$)'
|
14487 |
model: 'MiTV 4S'
|
14488 |
device: 'tv'
|
14489 |
-
- regex: '(?:MiTV-AXSO0|MiTV4(?:A|-ANSM0))(?:[);/ ]|$)'
|
14490 |
model: 'MiTV 4A'
|
14491 |
device: 'tv'
|
14492 |
- regex: '(MiTV)(4[CSX]|4)(?:[);/ ]|$)'
|
@@ -14634,11 +15009,13 @@ Yezz:
|
|
14634 |
|
14635 |
# Yu
|
14636 |
Yu:
|
14637 |
-
regex: '(?:YU5[05]10[A]?|YU4711|AO5510|YU5050|
|
14638 |
device: 'smartphone'
|
14639 |
models:
|
14640 |
- regex: 'YU5010[A]?(?:[);/ ]|$)'
|
14641 |
model: 'Yuphoria'
|
|
|
|
|
14642 |
- regex: 'YU5050(?:[);/ ]|$)'
|
14643 |
model: 'Yutopia'
|
14644 |
- regex: 'AO5510(?:[);/ ]|$)'
|
@@ -14647,8 +15024,6 @@ Yu:
|
|
14647 |
model: 'Yureka Plus'
|
14648 |
- regex: 'YU4711(?:[);/ ]|$)'
|
14649 |
model: 'Yunique'
|
14650 |
-
- regex: 'YU4711(?:[);/ ]|$)'
|
14651 |
-
model: 'Yunique'
|
14652 |
- regex: 'YU5014(?:[);/ ]|$)'
|
14653 |
model: 'Ace'
|
14654 |
|
@@ -15197,36 +15572,36 @@ Freetel:
|
|
15197 |
regex: '(?:FTJ17A00|FTJ152[ABCD]|FT141B|FT142D_LTEXM|FT142A?|FTJ161[AB]|FTJ1[56]2E|FTJ162D|FTE161[GE])(?:[);/ ]|$)'
|
15198 |
device: 'smartphone'
|
15199 |
models:
|
15200 |
-
|
15201 |
-
|
15202 |
-
|
15203 |
-
|
15204 |
-
|
15205 |
-
|
15206 |
-
|
15207 |
-
|
15208 |
-
|
15209 |
-
|
15210 |
-
|
15211 |
-
|
15212 |
-
|
15213 |
-
|
15214 |
-
|
15215 |
-
|
15216 |
-
|
15217 |
-
|
15218 |
-
|
15219 |
-
|
15220 |
-
|
15221 |
-
|
15222 |
-
|
15223 |
-
|
15224 |
-
|
15225 |
-
|
15226 |
-
|
15227 |
-
|
15228 |
-
|
15229 |
-
|
15230 |
|
15231 |
# Zeemi
|
15232 |
Zeemi:
|
@@ -15259,8 +15634,10 @@ Zopo:
|
|
15259 |
regex: 'ZOPO|(?:ZOPO[_ ])?(Flash X3|ZP[0-9]{2,}[^/;]+)(?:\)| Build)'
|
15260 |
device: 'smartphone'
|
15261 |
models:
|
15262 |
-
- regex: '(ZOPO_C2_MOD|ZP998)(?:[);/ ]|$)'
|
15263 |
model: 'C2 II'
|
|
|
|
|
15264 |
- regex: '(?:ZOPO_)?ZP980[+](?:[);/ ]|$)'
|
15265 |
model: 'ZP980+'
|
15266 |
- regex: '(?:ZOPO_)?ZP980(?:[);/ ]|$)'
|
@@ -15302,7 +15679,7 @@ Zopo:
|
|
15302 |
|
15303 |
# ZTE
|
15304 |
ZTE:
|
15305 |
-
regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:L110|L[2357]|L7A|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310|460|465|475|520|530|602)|V580|V Ultra|Q Lux)|N9[15]8St|NX(?:403A|404H|406E|40[X2]|507J|503A|505J|506J|508J|510J|512J|511J|513J|521J|523J_V1|529J|531J|541J|5[48]9J|551J|563J|569[HJ]|573J|575J|59[157]J|60[1689]J|61[12679]J|62[79]J|65[19]J|907J)|N818S|N951[0579]|N91[38]0|N9101|N913[267]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:233V|331|5031O|559DL|6621O|667T|768G|792|81[25]|818L|82[08]|83[12359]|85[125]|851M|(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)|Apex2|G (LTE|Lux)|Vec|Z959|V865M|Z3001S|902ZT|KIS II Max|Kis 3|K3DX-V5G|Z930L|Optus X|Blade[ _](A510|A[35] 2019-T|A6 MAX|A0622|X9)|Z3153V|Nubia Z(?:9|11)|Ctyon-A9|602ZT|MO-01[JK]|Z963U|402ZT|P545|P609|dandelion|901ZT|A001ZT|Z-01K)(?:[);/ ]|$)'
|
15306 |
device: 'smartphone'
|
15307 |
models:
|
15308 |
# explicit smartphone models
|
@@ -15702,7 +16079,7 @@ ZTE:
|
|
15702 |
model: '$1'
|
15703 |
- regex: 'ZTE-(?:G |G-)?([a-z0-9 _]+)'
|
15704 |
model: '$1'
|
15705 |
-
- regex: 'ZTE[ _]([a-z0-9]+)'
|
15706 |
model: '$1'
|
15707 |
|
15708 |
Zuum:
|
@@ -15757,9 +16134,10 @@ Lemhoov:
|
|
15757 |
models:
|
15758 |
- regex: 'Lemhoov[ _-]([^/;]+) Build'
|
15759 |
model: '$1'
|
15760 |
-
|
|
|
15761 |
MTC:
|
15762 |
-
regex: 'MTC[ _](968|97[82]|970|982[OT]?|1078)|(?:MTC[_ ])?SMART[ _]?(?:Race[2]?|Sprint|Run|Surf[2]?)[ _]4G|MTC975|MTC[ _]SMART[ _](?:Run|Start_2)'
|
15763 |
device: 'smartphone'
|
15764 |
models:
|
15765 |
- regex: 'MTC[ _]?(97[258]|970[H]?|982[OT]?|968)'
|
@@ -15771,16 +16149,23 @@ MTC:
|
|
15771 |
model: 'Smart Race 4G'
|
15772 |
- regex: 'SMART[ _]Race2[ _]4G'
|
15773 |
model: 'Smart Race 2 4G'
|
15774 |
-
- regex: '(MTC_)?SMART[ _]Sprint[ _]4G'
|
15775 |
model: 'Smart Sprint 4G'
|
15776 |
-
- regex: '(MTC_)?SMART[ _]Start_2'
|
15777 |
model: 'Smart Start 2'
|
|
|
|
|
|
|
|
|
15778 |
- regex: 'SMART[ _]?Run(?:[ _]4G)?'
|
15779 |
model: 'Smart Run 4G'
|
15780 |
- regex: 'SMART[ _]Surf2[ _]4G'
|
15781 |
model: 'Smart Surf 2 4G'
|
15782 |
- regex: 'SMART[ _]Surf[ _]4G'
|
15783 |
model: 'Smart Surf 4G'
|
|
|
|
|
|
|
15784 |
|
15785 |
# MegaFon
|
15786 |
MegaFon:
|
@@ -15815,18 +16200,23 @@ Inoi:
|
|
15815 |
|
15816 |
# Vertex
|
15817 |
Vertex:
|
15818 |
-
regex: 'Lion_Dual|V709X|Baccara|Eagle[ _]4G|ImpressMAX|Impress[ _]([^;/]+)(?:Build|\))'
|
15819 |
device: 'smartphone'
|
15820 |
models:
|
15821 |
-
- regex: '(Lion_Dual|Baccara|Eagle[ _]4G)'
|
15822 |
model: '$1'
|
15823 |
- regex: 'ImpressMAX(?:[);/ ]|$)'
|
15824 |
model: 'Impress Max'
|
|
|
|
|
15825 |
- regex: '(Impress[ _]([^;/]+))(?:Build|\))'
|
15826 |
model: '$1'
|
15827 |
- regex: '(V709X)'
|
15828 |
device: 'tablet'
|
15829 |
model: '$1'
|
|
|
|
|
|
|
15830 |
|
15831 |
# Devices with undectable brand, but detectable model
|
15832 |
Unknown:
|
@@ -15972,7 +16362,7 @@ FORME:
|
|
15972 |
models:
|
15973 |
- regex: 'FORME[ _-]F520(?:[);/ ]|$)'
|
15974 |
model: 'Forever'
|
15975 |
-
- regex: 'FORME[ _-](A37|R7S)(?:[);/ ]|$)'
|
15976 |
model: '$1'
|
15977 |
|
15978 |
# Shuttle
|
@@ -15993,7 +16383,7 @@ BDF:
|
|
15993 |
|
15994 |
# Highscreen
|
15995 |
Highscreen:
|
15996 |
-
regex: 'HIGHSCREEN|(Easy[- ]Power(?:[- ]Pro)?|Pure[_ ]Power|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))|PowerFour|BOOST II(?:se)?|FestXL|Tasty|Boost3|Expanse)(?:[);/ ]|$)'
|
15997 |
device: 'smartphone'
|
15998 |
models:
|
15999 |
- regex: '(Power Ice(?:[ ](?:Max|Evo))?|Power Rage(?: Evo)?|Zera[ _][UFS])(?:[);/ ]|$)'
|
@@ -16010,6 +16400,8 @@ Highscreen:
|
|
16010 |
model: 'Power Five Max'
|
16011 |
- regex: 'FestXL(?:[);/ ]|$)'
|
16012 |
model: 'Fest XL'
|
|
|
|
|
16013 |
- regex: 'PowerFour(?:[);/ ]|$)'
|
16014 |
model: 'Power Four'
|
16015 |
- regex: 'Pure[_ ]Power(?:[);/ ]|$)'
|
@@ -16028,6 +16420,10 @@ Highscreen:
|
|
16028 |
model: 'Boost 2'
|
16029 |
- regex: 'BOOST IIse(?:[);/ ]|$)'
|
16030 |
model: 'Boost 2 SE'
|
|
|
|
|
|
|
|
|
16031 |
- regex: 'BOOST3(?:[);/ ]|$)'
|
16032 |
model: 'Boost 3'
|
16033 |
- regex: 'Zera-S-Power(?:[);/ ]|$)'
|
@@ -16057,24 +16453,29 @@ Globex:
|
|
16057 |
- regex: '(GU1011C|GU7013C|GU730C)(?:[);/ ]|$)'
|
16058 |
model: '$1'
|
16059 |
|
16060 |
-
# Atom
|
16061 |
Atom:
|
16062 |
-
regex: 'ATOM-(108AM)(?:[);/ ]|$)'
|
16063 |
device: 'tv'
|
16064 |
model: '$1'
|
16065 |
|
16066 |
# Qumo
|
16067 |
Qumo:
|
16068 |
-
regex: 'QUMO[ _]?|(Vega[ _]?78[23])(?:[);/ ]|$)'
|
16069 |
device: 'tablet'
|
16070 |
models:
|
16071 |
- regex: '(?:QUMO[ _]?)?Vega[ _]?(78[23]|8002)(?:[);/ ]|$)'
|
16072 |
model: 'Vega $1'
|
16073 |
- regex: 'Yooda(?:[);/ ]|$)'
|
16074 |
model: 'Yooda'
|
|
|
|
|
16075 |
- regex: '(?:QUMO)?(Sirius 101-4G 8GB Black|Altair 701 8GB Black|Altair 71 4GB Black|Altair 700[24]|Altair 706)(?:[);/ ]|$)'
|
16076 |
model: '$1'
|
16077 |
-
- regex: 'QUMO[ _]Quest[ _]?(35[34]|40[26]|45[28]|
|
|
|
|
|
|
|
16078 |
device: 'smartphone'
|
16079 |
model: 'Quest $1'
|
16080 |
|
@@ -16099,12 +16500,12 @@ Mann:
|
|
16099 |
|
16100 |
# Unihertz
|
16101 |
Unihertz:
|
16102 |
-
regex: '(Titan|Jelly-Pro|
|
16103 |
device: 'smartphone'
|
16104 |
models:
|
16105 |
- regex: '(Jelly)-(Pro)(?:[);/ ]|$)'
|
16106 |
model: '$1 $2'
|
16107 |
-
- regex: '(Titan|
|
16108 |
model: '$1'
|
16109 |
|
16110 |
# Chuwi
|
@@ -16186,13 +16587,19 @@ Xoro:
|
|
16186 |
|
16187 |
# Vinga
|
16188 |
Vinga:
|
16189 |
-
regex: 'VMP-(021-82|041-162|011-81)(?:[);/ ]|$)'
|
16190 |
device: 'tv'
|
16191 |
models:
|
16192 |
- regex: 'VMP-021-82'
|
16193 |
model: '021'
|
|
|
|
|
|
|
|
|
16194 |
- regex: 'VMP-041-162'
|
16195 |
model: '041'
|
|
|
|
|
16196 |
- regex: 'VMP-011-81'
|
16197 |
model: '011'
|
16198 |
|
@@ -16244,12 +16651,16 @@ Yota:
|
|
16244 |
|
16245 |
# Mystery
|
16246 |
Mystery:
|
16247 |
-
regex: '
|
16248 |
device: 'tablet'
|
16249 |
models:
|
16250 |
-
- regex: 'MID-(123G|72[12]|7[01348]3G|753G|
|
16251 |
model: 'MID-$1'
|
16252 |
|
|
|
|
|
|
|
|
|
16253 |
# Ritzviva
|
16254 |
Ritzviva:
|
16255 |
regex: '(RITZVIVA[_ ]S500C)(?:[);/ ]|$)'
|
@@ -16312,10 +16723,10 @@ Spectrum:
|
|
16312 |
|
16313 |
# Kivi
|
16314 |
Kivi:
|
16315 |
-
regex: '(?:24H600G[RU]|24FR50WU|24HK30B|32HR55GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|55UP50GU|
|
16316 |
device: 'tv'
|
16317 |
models:
|
16318 |
-
- regex: '(24H600G[RU]|24FR50WU|24HK30B|32HR55GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|55UP50GU|
|
16319 |
model: '$1'
|
16320 |
- regex: '(55UC30G|40FK30G|43UK30G|32HR50G[RU]|32HK30G|32FK32G)_-Ver0([0-9])(?:[);/ ]|$)'
|
16321 |
model: '$1 v$2'
|
@@ -16340,9 +16751,9 @@ Kanji:
|
|
16340 |
|
16341 |
#Kaiomy
|
16342 |
Kaiomy:
|
16343 |
-
|
16344 |
-
|
16345 |
-
|
16346 |
|
16347 |
# National
|
16348 |
National:
|
@@ -16352,11 +16763,13 @@ National:
|
|
16352 |
|
16353 |
# Vsun
|
16354 |
Vsun:
|
16355 |
-
regex: 'VSUN (ILLUSION|RACE|V9)(?:[);/ ]|$)'
|
16356 |
device: 'smartphone'
|
16357 |
models:
|
16358 |
- regex: 'ILLUSION(?:[);/ ]|$)'
|
16359 |
model: 'Illusion'
|
|
|
|
|
16360 |
- regex: 'RACE(?:[);/ ]|$)'
|
16361 |
model: 'Race'
|
16362 |
- regex: '(V9)(?:[);/ ]|$)'
|
@@ -16370,7 +16783,7 @@ Shift Phones:
|
|
16370 |
|
16371 |
# RugGear
|
16372 |
RugGear:
|
16373 |
-
regex: '(RugGear|RG(?:310|500|65[05]|702|
|
16374 |
device: 'smartphone'
|
16375 |
models:
|
16376 |
- regex: '(RG[0-9]+)(?:[);/ ]|$)'
|
@@ -16381,7 +16794,7 @@ Aligator:
|
|
16381 |
regex: 'ALIGATOR[_ ]'
|
16382 |
device: 'smartphone'
|
16383 |
models:
|
16384 |
-
- regex: 'ALIGATOR[ _](S4080|S50(?:6[56]|[678]0)|RX510|S6500|RX710|RX800)(?:[);/ ]|$)'
|
16385 |
model: '$1'
|
16386 |
|
16387 |
# Maxcom
|
@@ -16430,7 +16843,7 @@ Soyes:
|
|
16430 |
|
16431 |
# Zidoo
|
16432 |
Zidoo:
|
16433 |
-
regex: 'ZIDOO[ _](H6 Pro|X6 Pro|X9S|Z10|X[158])(?:[);/ ]|$)'
|
16434 |
device: 'tv'
|
16435 |
model: '$1'
|
16436 |
|
@@ -16442,7 +16855,7 @@ Zfiner:
|
|
16442 |
|
16443 |
# iGet
|
16444 |
iGet:
|
16445 |
-
regex: '
|
16446 |
device: 'tablet'
|
16447 |
model: 'Smart $1'
|
16448 |
|
@@ -16536,13 +16949,19 @@ Wigor:
|
|
16536 |
|
16537 |
# NEXON
|
16538 |
NEXON:
|
16539 |
-
|
16540 |
-
|
16541 |
-
|
16542 |
|
16543 |
# ONN
|
16544 |
ONN:
|
16545 |
-
regex: '(ONA19TB00[
|
|
|
|
|
|
|
|
|
|
|
|
|
16546 |
device: 'tablet'
|
16547 |
model: '$1'
|
16548 |
|
@@ -16742,13 +17161,13 @@ Contixo:
|
|
16742 |
|
16743 |
# E-Ceros
|
16744 |
'E-Ceros':
|
16745 |
-
|
16746 |
-
|
16747 |
-
|
16748 |
-
|
16749 |
-
|
16750 |
-
|
16751 |
-
|
16752 |
|
16753 |
# How (how.com.br)
|
16754 |
How:
|
@@ -16769,6 +17188,8 @@ Multilaser:
|
|
16769 |
models:
|
16770 |
- regex: 'Multilaser[ _]G[_ ]Pro(?:[);/ ]|$)'
|
16771 |
model: 'G Pro'
|
|
|
|
|
16772 |
- regex: 'Multilaser[ _]G[_ ]Max(?:[);/ ]|$)'
|
16773 |
model: 'G Max'
|
16774 |
- regex: 'Multilaser[ _]G(?:[);/ ]|$)'
|
@@ -16834,7 +17255,7 @@ Positivo BGH:
|
|
16834 |
|
16835 |
# Maxtron
|
16836 |
Maxtron:
|
16837 |
-
regex: 'Maxtron[ _-](V[327]|
|
16838 |
device: 'smartphone'
|
16839 |
model: '$1'
|
16840 |
|
@@ -16927,13 +17348,13 @@ Tone:
|
|
16927 |
|
16928 |
# AT&T
|
16929 |
AT&T:
|
16930 |
-
|
16931 |
-
|
16932 |
-
|
16933 |
-
|
16934 |
-
|
16935 |
-
|
16936 |
-
|
16937 |
|
16938 |
# BIHEE
|
16939 |
BIHEE:
|
@@ -17009,7 +17430,7 @@ Vipro:
|
|
17009 |
|
17010 |
# OzoneHD
|
17011 |
OzoneHD:
|
17012 |
-
regex: 'OzoneHD[ _](T2 WiFi|4K(?: TV)
|
17013 |
device: 'tv'
|
17014 |
model: '$1'
|
17015 |
|
@@ -17095,7 +17516,7 @@ Wortmann:
|
|
17095 |
|
17096 |
# BB Mobile
|
17097 |
BB Mobile:
|
17098 |
-
regex: 'Techno[_ ](TQ863Q|X595BT|S700BF|I700AJ|10.1 LTE TQ060X|7.0 LTE TQ763I)(?:[);/ ]|$)'
|
17099 |
device: 'tablet'
|
17100 |
models:
|
17101 |
- regex: 'Techno[_ ]S700BF(?:[);/ ]|$)'
|
@@ -17106,10 +17527,17 @@ BB Mobile:
|
|
17106 |
model: 'Techno 8.0" Poplar LTE TQ863Q'
|
17107 |
- regex: 'Techno[_ ]I700AJ(?:[);/ ]|$)'
|
17108 |
model: 'Techno 7.0" Mozg LTE I700AJ'
|
|
|
|
|
|
|
|
|
17109 |
- regex: 'Techno[_ ]7.0 LTE TQ763I(?:[);/ ]|$)'
|
17110 |
model: 'Techno 7.0" Kalash LTE TQ763I'
|
17111 |
|
17112 |
-
- regex: 'Techno[_ ](
|
|
|
|
|
|
|
17113 |
device: 'smartphone'
|
17114 |
model: 'Techno Spark 3G X595BT'
|
17115 |
|
@@ -17134,14 +17562,14 @@ Tele2:
|
|
17134 |
regex: 'Tele2[ _](?:Mi[dn]i[ _][12][\._][10]|Mi[dn]i|Maxi(?:[ _](?:Plus|LTE))?)(?:[);/ ]|$)'
|
17135 |
device: 'smartphone'
|
17136 |
models:
|
17137 |
-
|
17138 |
-
|
17139 |
-
|
17140 |
-
|
17141 |
-
|
17142 |
-
|
17143 |
-
|
17144 |
-
|
17145 |
|
17146 |
# Alfawise
|
17147 |
Alfawise:
|
@@ -17151,9 +17579,14 @@ Alfawise:
|
|
17151 |
|
17152 |
# Klipad
|
17153 |
Klipad:
|
17154 |
-
regex: '(KL-V905)(?:[);/ ]|$)'
|
17155 |
device: 'smartphone'
|
17156 |
-
|
|
|
|
|
|
|
|
|
|
|
17157 |
|
17158 |
# SQOOL (sqool.fr)
|
17159 |
SQOOL:
|
@@ -17169,7 +17602,7 @@ TurboKids:
|
|
17169 |
|
17170 |
# Jinga
|
17171 |
Jinga:
|
17172 |
-
regex: 'Jinga[-_ ]|(?:Optim4G|PassPlus|PicassoNote|Hotz[_ ]M1)(?:[);/ ]|$)'
|
17173 |
device: 'smartphone'
|
17174 |
models:
|
17175 |
- regex: 'Optim4G(?:[);/ ]|$)'
|
@@ -17178,6 +17611,12 @@ Jinga:
|
|
17178 |
model: 'Hotz M1'
|
17179 |
- regex: 'PassPlus(?:[);/ ]|$)'
|
17180 |
model: 'Pass Plus'
|
|
|
|
|
|
|
|
|
|
|
|
|
17181 |
- regex: 'PicassoNote(?:[);/ ]|$)'
|
17182 |
model: 'Picasso Note'
|
17183 |
- regex: 'Jinga Iron(?:[);/ ]|$)'
|
@@ -17190,8 +17629,8 @@ Jinga:
|
|
17190 |
model: 'Trezor S1 Plus'
|
17191 |
- regex: 'JINGA_IGO_L2(?:[);/ ]|$)'
|
17192 |
model: 'IGO L2'
|
17193 |
-
- regex: '
|
17194 |
-
model: 'IGO
|
17195 |
- regex: 'Jinga Trezor S1 Plus(?:[);/ ]|$)'
|
17196 |
model: 'Trezor S1 Plus'
|
17197 |
|
@@ -17227,11 +17666,11 @@ Oyyu:
|
|
17227 |
|
17228 |
# Primux
|
17229 |
Primux:
|
17230 |
-
|
17231 |
-
|
17232 |
-
|
17233 |
-
|
17234 |
-
|
17235 |
|
17236 |
# iMars
|
17237 |
iMars:
|
@@ -17251,6 +17690,16 @@ Logic:
|
|
17251 |
- regex: 'LOGIC[_ ](X[13]|X4M|L5D|X5[AFT]|X60G)(?:[);/ ]|$)'
|
17252 |
model: '$1'
|
17253 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17254 |
# Cloudfone
|
17255 |
Cloudfone:
|
17256 |
regex: 'Thrill (?:Boost[ ]?(2|3)?|Snap|Access)(?:[);/ ]|$)'
|
@@ -17279,15 +17728,16 @@ Vsmart:
|
|
17279 |
|
17280 |
# MiXzo
|
17281 |
MiXzo:
|
17282 |
-
regex: '(?:MiXzo )?(?:ME1030|MX1037|
|
17283 |
device: 'tablet'
|
17284 |
models:
|
17285 |
-
- regex: 'MiXzo
|
17286 |
-
model: '
|
17287 |
-
- regex: '(?:
|
17288 |
-
model: '
|
17289 |
-
|
17290 |
-
|
|
|
17291 |
|
17292 |
# Openbox
|
17293 |
Openbox:
|
@@ -17354,8 +17804,8 @@ i-Cherry:
|
|
17354 |
regex: 'iCherry_?'
|
17355 |
device: 'smartphone'
|
17356 |
models:
|
17357 |
-
|
17358 |
-
|
17359 |
|
17360 |
# NextTab
|
17361 |
NextTab:
|
@@ -17365,9 +17815,9 @@ NextTab:
|
|
17365 |
|
17366 |
# Time 2
|
17367 |
Time2:
|
17368 |
-
|
17369 |
-
|
17370 |
-
|
17371 |
|
17372 |
# Sunstech
|
17373 |
Sunstech:
|
@@ -17395,7 +17845,7 @@ Dolamee:
|
|
17395 |
|
17396 |
# INVIN
|
17397 |
Invin:
|
17398 |
-
regex: 'INVIN[ _-](X[24]|
|
17399 |
device: 'tv'
|
17400 |
model: '$1'
|
17401 |
|
@@ -17459,9 +17909,19 @@ Beelink:
|
|
17459 |
|
17460 |
# MAXVI
|
17461 |
MAXVI:
|
17462 |
-
regex: 'MAXVI[ _](MS401)(?:[);/ ]|$)'
|
17463 |
device: 'smartphone'
|
17464 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17465 |
|
17466 |
# meanIT (meanit.hr)
|
17467 |
meanIT:
|
@@ -17608,3 +18068,169 @@ Iris:
|
|
17608 |
model: 'Vox Pop Plus'
|
17609 |
- regex: 'VOX POP Pro'
|
17610 |
model: 'Vox Pop Pro'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
176 |
model: 'Lumia 435'
|
177 |
- regex: 'RM-1031|Lumia 532'
|
178 |
model: 'Lumia 532'
|
179 |
+
- regex: 'Lumia 535 Dual SIM'
|
180 |
+
model: 'Lumia 535 Dual SIM'
|
181 |
- regex: 'RM-109[02]|RM-1089|Lumia 535'
|
182 |
model: 'Lumia 535'
|
183 |
- regex: 'RM-1141|Lumia 540'
|
186 |
model: 'Lumia 550'
|
187 |
- regex: 'RM-1010'
|
188 |
model: 'Lumia 638'
|
189 |
+
- regex: 'Lumia 640 XL LTE'
|
190 |
+
model: 'Lumia 640 XL LTE'
|
191 |
+
device: 'phablet'
|
192 |
- regex: 'RM-106[57]|RM-1096|Lumia 640 XL'
|
193 |
model: 'Lumia 640 XL'
|
194 |
device: 'phablet'
|
195 |
+
- regex: 'Lumia 640 LTE Dual SIM'
|
196 |
+
model: 'Lumia 640 LTE Dual SIM'
|
197 |
+
- regex: 'Lumia 640 LTE'
|
198 |
+
model: 'Lumia 640 LTE'
|
199 |
+
- regex: 'Lumia 640 Dual SIM'
|
200 |
+
model: 'Lumia 640 Dual SIM'
|
201 |
- regex: 'RM-1109|RM-1113|RM-107[23467]|Lumia 640'
|
202 |
model: 'Lumia 640'
|
203 |
- regex: 'RM-1154|Lumia 650'
|
206 |
model: 'Lumia 650 SS'
|
207 |
- regex: 'Lumia 850'
|
208 |
model: 'Lumia 850'
|
209 |
+
- regex: 'Lumia 950 XL Dual SIM'
|
210 |
+
model: 'Lumia 950 XL Dual SIM'
|
211 |
+
device: 'phablet'
|
212 |
- regex: 'Lumia 950 XL'
|
213 |
model: 'Lumia 950 XL'
|
214 |
device: 'phablet'
|
215 |
+
- regex: 'Lumia 950 Dual SIM'
|
216 |
+
model: 'Lumia 950 Dual SIM'
|
217 |
- regex: 'Lumia 950'
|
218 |
model: 'Lumia 950'
|
219 |
- regex: 'RM-994|Lumia 1320'
|
706 |
model: 'Bolt Selfie'
|
707 |
- regex: 'Q426'
|
708 |
model: 'Canvas Mega 2'
|
709 |
+
|
710 |
+
- regex: 'MicroMax(?:[ \-\_])?(X291|X246|X252|X458|X312)'
|
711 |
+
model: '$1'
|
712 |
+
device: 'feature phone'
|
713 |
+
|
714 |
- regex: 'MicroMax(?:[ \-\_])?(P[a-z0-9]+)'
|
715 |
model: '$1'
|
716 |
device: 'tablet'
|
832 |
model: 'A510 Jeans 4G'
|
833 |
- regex: 'A509_Jeans'
|
834 |
model: 'A509 Jeans'
|
835 |
+
- regex: 'BRAVIS NEO'
|
836 |
+
model: 'A401 Neo'
|
837 |
- regex: 'N1_550_Cruiser'
|
838 |
model: 'N1-550 Cruiser'
|
839 |
- regex: 'BRAVIS OMEGA'
|
842 |
model: 'Biz'
|
843 |
- regex: 'BRAVIS POWER'
|
844 |
model: 'Power'
|
845 |
+
- regex: 'BRAVIS[ _]SPARK'
|
846 |
+
model: 'Spark'
|
847 |
|
848 |
- regex: 'BRAVIS[ _]SLIM[ _]3G'
|
849 |
model: 'Slim 3G'
|
867 |
|
868 |
# Acer
|
869 |
Acer:
|
870 |
+
regex: 'acer|(?<!Satellite |ZTE BLADE |ImSmart |ERGO |X-Style Tab )a(?:101|110|2[10]0|211|50[10]|51[10]|70[10])(?:[);/ ]|$)|Android.*V3[67]0(?:[);/ ]|$)|Android.*Z1[23456]0 Build|Android.*Z5\d{2} Build|Android.*T0[234678] Build|Android.*S55(?:[);/ ]|$)|(?:A1-(713(HD)?|7[23]4|830|841|840FHD|81[01])|A3-A[1234][01]|B1-(7[1235-8][01](HD)?|7[23]3|7A0|8[1235]0|A71|860A)|TPA60W|B3-(A[125]0|A3[02]|A40FHD)|E39)(?:[);/ ]|$)|S5[12]0 Build|(DA[0-9]+HQ?L|Aspire (?:V5-121|XC-704G|V5-573G)|Chromebook 14 \(CB3-431\)|Predator G9-793|GT-810|B1-870|B3-A4[02]|B3-A50FHD)(?:[);/ ]|$)'
|
871 |
device: 'smartphone'
|
872 |
models:
|
873 |
# smart displays
|
885 |
- regex: 'A1-81[01]'
|
886 |
model: 'Iconia A'
|
887 |
device: 'tablet'
|
888 |
+
- regex: 'TPA60W'
|
889 |
+
model: 'TPA60W'
|
890 |
+
device: 'tablet'
|
891 |
- regex: 'A1-84(1|0FHD)'
|
892 |
model: 'Iconia Tab 8'
|
893 |
device: 'tablet'
|
918 |
- regex: 'B1-8[123567]0'
|
919 |
model: 'Iconia One 8'
|
920 |
device: 'tablet'
|
921 |
+
- regex: 'B3-A([125]0|3[02]|[45]0FHD|4[02])'
|
922 |
model: 'Iconia One 10'
|
923 |
device: 'tablet'
|
924 |
- regex: 'A101'
|
1002 |
- regex: '(?:Acer )?(Chromebook 14)'
|
1003 |
model: '$1'
|
1004 |
device: 'desktop'
|
1005 |
+
- regex: '(Aspire (?:V5-121|XC-704G|V5-573G))'
|
1006 |
model: '$1'
|
1007 |
device: 'desktop'
|
1008 |
- regex: '(Predator G9-793)'
|
1116 |
- regex: '70 ST7001RW'
|
1117 |
model: '70'
|
1118 |
|
1119 |
+
# Alcatel (alcatelmobile.com)
|
1120 |
Alcatel:
|
1121 |
+
regex: 'Alcatel|Alc(?!or )[a-z0-9]+|One[ _]?Touch|idol3|TIMXL|(?:(?:4003[AJ]|4009[ADEFIKMSX]|4013[DEJKMX]|4014[ADEKMX]|4015[ADNTX]|4016[ADX]|4017[ADEFSX]|4018[ADEFMX]|4024[EDX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|4034L|4034[ADEFGX]|4035[ADXY]|4045[ADEX]|4047[ADFGNX]|4049[DEGMX]|4060[SW]|A466BG|A621BL|4114E|5001[ADJTU]|5002[ADF]|5003[ADG]|5006D|5007[AU]|5008[DUY]|5009[AD]|5010[DEGSUX]|5011A|5012[DFG]|5015[ADEX]|5016[AXJ]|5017[ABDEOX]|5019D|5022[EDX]|5023[EF]|5024[ADJF]|5025[DEG]|5026[ADJ]|5027B|5028[AYD]|5029[EYD]|5030D|5032W|5033[AEFXDJGMOTXY]|5034D|5036D|5038[ADEX]|5039[D]|5041[CD]|5042[ADEFGWXT]|5044[ADGIKOPSTY]|5045[ADFGIJTXY]|5046[ADGIJSTUY]|5047[DIUY]|5048[AYUI]|5049[EGSWZ]|5050[ASXY]|5051[ADEJMTWX]|5052[ADY]|5053[AKY]|5054[ADNSTWX]|5056[ADEGIJMNTUWX]|5057M|5058[AIY]|5059[ADXYZIST]|5060D|5061[KU]|5065[ADNWX]|5070D|5080[ADFQUX]|5085[ABCDGHIJNOQY]|5086[ADY]|5090[AIY]|5095[IKY]|5098[OS]|5099[ADYUI]|5116J|5145A|6016[ADEX]|6036[AXY]|6037[BKY]|6039[AHJKY]|6042D|6043[AD]|6044D|6045[BFIKOYX]|6050[AFY]|6055[ABDHIKPUYZ]|6058[ADX]|6060S|6062W|6070K|7040[ADEFKRT]|7041[DX]|7042A|7043[AEKY]|7044[AX]|7045Y|7048[ASWX]|7053D|7055A|7070X|8030Y|8050[DEGX]|8063|8088[XQ]|9001[DIX]|9002X|9003[AX]|9024O|9005X|9026X|9007[ATX]|9008[ADIJNTUX]|9009G|9010X|9020A|9022X|9027[FTWX]|9203A|A(?:464BG|570BL|50[13]DL|57[17]VL|574BL)|I213|I216X)(?:_(?:EEA|RU))?)(?:[);/ ]|$)'
|
1122 |
device: 'smartphone'
|
1123 |
models:
|
1124 |
- regex: '5022[EDX]|5070D'
|
1187 |
model: 'One Touch Astro'
|
1188 |
- regex: '5027B'
|
1189 |
model: 'One Touch Dawn'
|
1190 |
+
- regex: '5024[ADF]|5028Y'
|
1191 |
model: '1S'
|
1192 |
- regex: '5002[AD]'
|
1193 |
model: '1B (2020)'
|
1199 |
model: 'One Touch Fierce 2'
|
1200 |
- regex: '5056[NW]'
|
1201 |
model: 'One Touch Fierce 4'
|
1202 |
+
- regex: '5054N'
|
1203 |
model: 'One Touch Fierce XL'
|
1204 |
+
- regex: '6042D'
|
1205 |
+
model: 'One Touch Flash'
|
1206 |
- regex: '6016[AX]'
|
1207 |
model: 'One Touch Idol 2 mini'
|
1208 |
- regex: '6016[DE]'
|
1272 |
- regex: '9007[TX]'
|
1273 |
model: 'One Touch Pixi 3 7" 4G'
|
1274 |
device: 'tablet'
|
1275 |
+
- regex: '9009G'
|
1276 |
+
model: '1T'
|
1277 |
+
device: 'tablet'
|
1278 |
- regex: '9022X'
|
1279 |
model: 'One Touch Pixi 3 8"'
|
1280 |
device: 'phablet'
|
1334 |
model: 'A30 Fierce'
|
1335 |
- regex: '5085[GO]'
|
1336 |
model: 'A50'
|
1337 |
+
- regex: '5048[AYUI]'
|
1338 |
model: '3X (2019)'
|
1339 |
- regex: '5049W'
|
1340 |
model: 'Revvl'
|
1432 |
model: '1V (2020)'
|
1433 |
- regex: '5003[ADG]'
|
1434 |
model: '1C (2019)'
|
1435 |
+
- regex: '5006D'
|
1436 |
+
model: '3C (2019)'
|
1437 |
- regex: '5024J'
|
1438 |
model: '1S'
|
1439 |
+
- regex: '5028[AD]'
|
1440 |
model: '1S (2020)'
|
1441 |
+
- regex: '5030D'
|
1442 |
+
model: '1SE (2020)'
|
1443 |
- regex: '5001[ADJTU]'
|
1444 |
model: '1V'
|
1445 |
- regex: '5059[ADXYZIT]'
|
1453 |
model: '3'
|
1454 |
- regex: '5029E'
|
1455 |
model: '3 (2020)'
|
1456 |
+
- regex: '5029[DY]'
|
1457 |
model: '3L (2020)'
|
1458 |
- regex: '5032W|5099[ADYUI]'
|
1459 |
model: '3V'
|
1464 |
device: 'phablet'
|
1465 |
- regex: '5058[AIY]'
|
1466 |
model: '3X'
|
1467 |
+
- regex: '5061[KU]'
|
1468 |
+
model: '3X (2020)'
|
1469 |
- regex: '5086[ADY]'
|
1470 |
model: '5'
|
1471 |
- regex: '6062W'
|
1490 |
|
1491 |
# Allview
|
1492 |
Allview:
|
1493 |
+
regex: 'Allview|A4You|A5_(?:Easy(?:_TM)?|Ready(?:_TM)?|Quad|Quad_Plus_TM)|A[56789]_Lite|A5Smiley|A6_Duo|A10_Lite_2019|A10_Plus|AX2_Frenzy|AX4Nano|AX5NanoQ|C6_Duo|E[23]_Living|E3_(?:Jump|Sign)|E4_Lite|M9_Connect|P(?:43_Easy|[5689]_Energy|6_Energy_Lite|[68]_Energy_Mini(?:_TM)?|(41|[458])_eMagic(?:_TM)?|[589](?:_)?Life(?:_TM)?|[567]_Lite(?:_TM)?|6_plus|[45678]_Pro|7_Seon|10_Life|10_Max|10_Style|7_Xtreme|6_Qmax|4_Quad)|V(?:[134]_Viper|1_Viper_I|2_Viper_(?:E|I|S|X|X_plus|Xe))|X4_Soul_Vision|X(?:[12346]_Soul_Xtreme|[12345]_Soul|3_Soul_Lite|[23456]_Soul_Mini(?:_TM)?|4_Soul_Mini_S(?:_TM)?|[2345]_Soul_Style(?:_TM)?|2_Soul_Style_Plus|2_Twin)|Viva_(H801|100[13]G|H1001_LTE|C701|i701G)'
|
1494 |
device: 'smartphone'
|
1495 |
models:
|
1496 |
- regex: 'A4You'
|
1563 |
model: 'V2 Viper X Plus'
|
1564 |
- regex: 'V2_Viper_(E|I|S|X(?:e)?)'
|
1565 |
model: 'V2 Viper $1'
|
1566 |
+
- regex: 'X4_Soul_Vision'
|
1567 |
+
model: 'X4 Soul Vision'
|
1568 |
+
- regex: 'X([1246])_Soul_Xtreme'
|
1569 |
model: 'X$1 Soul Xtreme'
|
1570 |
- regex: 'X4_Soul_Infinity_(L|N|S|Z)'
|
1571 |
model: 'X4 Soul Infinity $1'
|
1581 |
model: 'X$1 Soul Pro'
|
1582 |
- regex: 'X2_Soul_Style_Plus'
|
1583 |
model: 'X2 Soul Style Plus'
|
1584 |
+
- regex: 'X([2345])_Soul_Style(?:_TM)?'
|
1585 |
model: 'X$1 Soul Style'
|
1586 |
- regex: 'X([12345])_Soul'
|
1587 |
model: 'X$1 Soul'
|
1628 |
- regex: 'Allview3SpeedQuad'
|
1629 |
device: 'tablet'
|
1630 |
model: 'Alldro 3 Speed Quad'
|
1631 |
+
- regex: 'Viva_(H801|100[13]G|H1001_LTE|C701|i701G)'
|
1632 |
device: 'tablet'
|
1633 |
model: 'Viva $1'
|
1634 |
- regex: 'ALLVIEW ?SPEEDI'
|
1657 |
regex: '(?:QUAD-CORE A64 p3|ZY-07B)(?:[);/ ]|$)'
|
1658 |
device: 'tablet'
|
1659 |
models:
|
1660 |
+
- regex: 'QUAD-CORE A64 p3'
|
1661 |
+
model: 'A64 QUAD-CORE p3'
|
1662 |
+
- regex: 'ZY-07B'
|
1663 |
+
model: 'ZY-07B'
|
1664 |
|
1665 |
# altron
|
1666 |
altron:
|
1724 |
|
1725 |
# Ainol
|
1726 |
Ainol:
|
1727 |
+
regex: 'Numy|novo[0-9]|Novo 10 Hero|AX10PRO|NUMY3GAX9|NOVO10 Spark|Aurora-II'
|
1728 |
device: 'tablet'
|
1729 |
models:
|
1730 |
- regex: 'Numy 3G AX1'
|
1743 |
model: 'Numy 3G AX9'
|
1744 |
- regex: '(Novo 10 Hero QuadCore)'
|
1745 |
model: '$1'
|
1746 |
+
- regex: 'Aurora-II'
|
1747 |
+
model: 'Novo 7 Aurora II'
|
1748 |
- regex: 'Novo7 Flame(?:[);/ ]|$)'
|
1749 |
model: 'Novo 7 Flame'
|
1750 |
- regex: 'NOVO7(?:[);/ ]|$)'
|
1941 |
|
1942 |
# Ark (Ark Electronic Technology)
|
1943 |
Ark:
|
1944 |
+
regex: '(ARK[_ -])?Benefit[_ -]([^/;]*)(?: Build|\))|EDGE A5HD|Elf_S8|ICON (R40\+|R45)|Impulse[ _](P[12])|Wizard_[12](?:[);/ ]|$)'
|
1945 |
device: 'smartphone'
|
1946 |
models:
|
1947 |
- regex: '(?:ARK[_ -])?Benefit[_ -]([^/;]*)(?: Build|\))'
|
1954 |
model: 'Edge $1'
|
1955 |
- regex: 'ICON (R40\+|R45)'
|
1956 |
model: 'Icon $1'
|
1957 |
+
- regex: 'Wizard_([12])'
|
1958 |
+
model: 'Wizard $1'
|
1959 |
- regex: 'Elf_S8(?:[);/ ]|$)'
|
1960 |
model: 'Elf S8'
|
1961 |
|
1973 |
|
1974 |
# Asus
|
1975 |
Asus:
|
1976 |
+
regex: 'Asus|Transformer|ZenFone Max|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|P(?:00[18ACIL]|01[MTVWYZ]|01MA|01T_1|02[13478])(?: Build|\))|X015D|X018D|X003|X00[7ABT]D|Z00D|Z00[MTY]D|Z01[7FGHKMR]D)(?:[);/ ]|$)|G55[023]KL|ZB(631|602|633|55[135]|50[01])KL|ZC(55[134]|520|600)KL|ZA550KL|ZE(520|620|55[2345])KL|ZD55[23]KL|ZS661KS|ZS(6[0236]0|55[10])KL|ZB(500KG|601KL)|MeMo Pad FHD 10 LTE|Z00[SV]D'
|
1977 |
device: 'smartphone'
|
1978 |
models:
|
1979 |
# explicit tablet models
|
2108 |
model: 'ZenFone Max Pro M1'
|
2109 |
- regex: '(?:ASUS_)?(X01([AB]D)|ZB633KL)(?:[);/ ]|$)'
|
2110 |
model: 'ZenFone Max M2'
|
2111 |
+
- regex: '(?:ASUS_)?(?:Z00[AD]|Z008D|Z008|Z00AD[AB]?|ZE551ML)'
|
2112 |
model: 'ZenFone 2'
|
2113 |
- regex: '(?:ASUS_)?(?:ZenFone 2E)'
|
2114 |
model: 'ZenFone 2E'
|
2152 |
model: 'ZenFone Go Life'
|
2153 |
- regex: '(?:ASUS_)?G550KL'
|
2154 |
model: 'ZenFone Go TV'
|
2155 |
+
- regex: '(?:ASUS_)?Z00[SV]D' #ZC500TG
|
2156 |
model: 'ZenFone Go'
|
2157 |
- regex: '(?:ASUS_)?(X00[23])'
|
2158 |
model: 'ZenFone Pegasus'
|
2202 |
model: 'ROG Phone'
|
2203 |
- regex: '(?:ASUS_)?(?:I001D[ABCE]?|ZS660KL)'
|
2204 |
model: 'ROG Phone 2'
|
2205 |
+
- regex: '(?:ASUS_)?(?:I003DD?|ZS661KS)'
|
2206 |
model: 'ROG Phone 3'
|
2207 |
|
2208 |
# general detections
|
2215 |
- regex: '(?:Asus|Transformer) ((?:Pad |Prime )?TF[0-9a-z]+)'
|
2216 |
device: 'tablet'
|
2217 |
model: 'Transformer $1'
|
2218 |
+
- regex: 'Chromebook Flip (C100PA|C302)'
|
2219 |
+
device: 'desktop'
|
2220 |
+
model: 'Chromebook Flip $1'
|
2221 |
|
2222 |
# Audiovox
|
2223 |
Audiovox:
|
2309 |
|
2310 |
# Blu
|
2311 |
Blu:
|
2312 |
+
regex: 'BLU[ _]|(?:blu|Dash)[ _]([^/;)]+)(?: Build|[;)])|Studio (5.0K|5.5|View XL|Mega|C 8\+8|C HD|C|G|Selfie LTE|Touch|M HD|M5 Plus|J[1258]|X|X8 HD)|Advance (4.0 ?[LM]|5.[02](?: HD)?|A4|L5)|ENERGY (DIAMOND|XL)|LIFE XL|B110DL|Dash (?:X[2L]|L3)|PURE XL|Life One X2|GRAND (?:5.5 HD|XL LTE)|R1 (HD|PLUS)|Tank Xtreme 5.0|Tank Xtreme Pro|STUDIO SELFIE|Touchbook M7 Pro'
|
2313 |
+
device: 'smartphone'
|
2314 |
+
models:
|
2315 |
+
- regex: 'Advance (4.0 ?[LM]|4.0|5.[02](?: HD)?|A4|L5)'
|
2316 |
+
model: 'Advance $1'
|
2317 |
+
- regex: 'Studio (5.0 C|5.5|View XL|Mega|C 8\+8|C HD|C|G|Touch|M HD|M5 Plus|J[1258]|X|X8 HD)'
|
2318 |
+
model: 'Studio $1'
|
2319 |
+
- regex: 'Studio (5.0)K'
|
2320 |
+
model: 'Studio $1 K'
|
2321 |
+
- regex: 'STUDIO SELFIE LTE'
|
2322 |
+
model: 'Studio Selfie LTE'
|
2323 |
+
- regex: 'STUDIO ONE'
|
2324 |
+
model: 'Studio One'
|
2325 |
+
- regex: 'STUDIO SELFIE ([23]|LTE)'
|
2326 |
+
model: 'Studio Selfie $1'
|
2327 |
+
- regex: 'STUDIO SELFIE'
|
2328 |
+
model: 'Studio Selfie'
|
2329 |
+
- regex: 'BLU_STUDIO_XL'
|
2330 |
+
model: 'Studio XL'
|
2331 |
+
- regex: 'ENERGY DIAMOND'
|
2332 |
+
model: 'Energy Diamond'
|
2333 |
+
- regex: 'ENERGY XL'
|
2334 |
+
model: 'Energy XL'
|
2335 |
+
- regex: 'ENERGY X PLUS 2'
|
2336 |
+
model: 'Energy X Plus 2'
|
2337 |
+
- regex: 'ENERGY X PLUS'
|
2338 |
+
model: 'Energy X Plus'
|
2339 |
+
- regex: 'LIFE XL'
|
2340 |
+
model: 'Life XL'
|
2341 |
+
- regex: 'Dash XL'
|
2342 |
+
model: 'Dash XL'
|
2343 |
+
- regex: 'PURE XL'
|
2344 |
+
model: 'Pure XL'
|
2345 |
+
- regex: 'Life One X2'
|
2346 |
+
model: 'Life One X2'
|
2347 |
+
- regex: 'LIFE ONE'
|
2348 |
+
model: 'Life One'
|
2349 |
+
- regex: 'NEO X PLUS'
|
2350 |
+
model: 'Neo X Plus'
|
2351 |
+
- regex: 'NEO (XL|X)'
|
2352 |
+
model: 'Neo $1'
|
2353 |
+
- regex: 'GRAND 5.5 HD'
|
2354 |
+
model: 'Grand 5.5 HD'
|
2355 |
+
- regex: 'Grand X LTE'
|
2356 |
+
model: 'Grand X LTE'
|
2357 |
+
- regex: 'Grand XL LTE'
|
2358 |
+
model: 'Grand XL LTE'
|
2359 |
+
- regex: 'B110DL'
|
2360 |
+
model: 'View Mega'
|
2361 |
+
- regex: 'R1 HD'
|
2362 |
+
model: 'R1 HD'
|
2363 |
+
- regex: 'R1 PLUS'
|
2364 |
+
model: 'R1 Plus'
|
2365 |
+
- regex: 'Tank Xtreme 5.0'
|
2366 |
+
model: 'Tank Xtreme 5.0'
|
2367 |
+
- regex: 'Tank Xtreme Pro'
|
2368 |
+
model: 'Tank Xtreme Pro'
|
2369 |
+
- regex: 'VIVO AIR LTE'
|
2370 |
+
model: 'Vivo Air LTE'
|
2371 |
+
|
2372 |
+
- regex: 'Touchbook M7 Pro'
|
2373 |
+
model: 'Touchbook M7 Pro'
|
2374 |
+
device: 'tablet'
|
2375 |
+
|
2376 |
+
- regex: 'DASH[ _]([^/;]+) Build'
|
2377 |
+
model: 'Dash $1'
|
2378 |
+
- regex: 'DASH (5.0|L3|L|M|X2|X)'
|
2379 |
+
model: 'Dash $1'
|
2380 |
+
- regex: 'blu[ _]([^/;]+) Build'
|
2381 |
+
model: '$1'
|
2382 |
|
2383 |
# Bluegood
|
2384 |
Bluegood:
|
2390 |
|
2391 |
# Blackview
|
2392 |
Blackview:
|
2393 |
+
regex: 'Blackview|(BV([24-9]000|[46]900|(5[589]|9[15689])00|6[138]00)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550|BV9700Pro|(?<!Lenovo[_ ])A[68]0(?:Pro)?\))'
|
2394 |
device: 'smartphone'
|
2395 |
models:
|
2396 |
- regex: 'A60Pro\)'
|
2403 |
model: '$1'
|
2404 |
- regex: '(BV9700)Pro'
|
2405 |
model: '$1 Pro'
|
2406 |
+
- regex: 'Blackview (A[78]|E7S)'
|
2407 |
model: '$1'
|
2408 |
- regex: 'BV9000Pro-F'
|
2409 |
model: 'BV9000 Pro F'
|
2412 |
- regex: '(BV6100)(?:[);/ ]|$)'
|
2413 |
model: '$1'
|
2414 |
device: 'phablet'
|
2415 |
+
- regex: '(BV([24-9]000|6900|4900|(5[589]|9[15689])00)(?:[ _](?:PRO))?)'
|
2416 |
model: '$1'
|
2417 |
- regex: '(P10000(?:[ _](?:PRO))?)'
|
2418 |
model: '$1'
|
2441 |
|
2442 |
# Black Fox
|
2443 |
'Black Fox':
|
2444 |
+
regex: 'BMM[ _-]?(?:44[123]D|44[12]S|431D|533D|54[12]S|541[ABW]|54[123]D|543S|531[ABD])(?:[);/ ]|$)'
|
2445 |
device: 'smartphone'
|
2446 |
models:
|
2447 |
- regex: 'BMM443D'
|
2448 |
model: 'B7 Fox+'
|
2449 |
- regex: 'BMM441S'
|
2450 |
model: 'B8 Fox'
|
2451 |
+
- regex: 'BMM442S'
|
2452 |
+
model: 'B8 Fox+'
|
2453 |
- regex: 'BMM442D'
|
2454 |
model: 'B7'
|
2455 |
- regex: 'BMM531D'
|
2540 |
|
2541 |
# Vivo (vivo.com.cn, vivo.com)
|
2542 |
Vivo:
|
2543 |
+
regex: '((?:VIV-|BBG-)?(?<!FBCR/)vivo(?!(?:Browser)))|(?:V1730(D[AT]|GA)|V18(18CA|01A0|13B[AT]|18T|09[AT]|1[346][AT]|[13]8[AT]|14A|24[B]?A|2[19][AT]|3[12][AT]|36[AT])|V1731CA|V1732[AT]|V1818CT|V19[01]1[AT]|V1932[AT]|V191[3469][AT]|V192[1348]A|V193[04]A|V194[15]A|V1938CT|V1955A|V1938T|V1730EA|V19[26]2A|V196[35]A|V198[16]A|V1936A[L]?|V19[59]0A|V200[125]A|1819|V201[12]A|V202[0345]C?A|V202[2357])(?:[);/ ]|$)'
|
2544 |
device: 'smartphone'
|
2545 |
models:
|
2546 |
- regex: 'V1824[B]?A(?:[);/ ]|$)'
|
2569 |
model: 'iQOO 5'
|
2570 |
- regex: 'V2025A(?:[);/ ]|$)'
|
2571 |
model: 'iQOO 5 Pro'
|
2572 |
+
- regex: 'V2025(?:[);/ ]|$)'
|
2573 |
+
model: 'V20'
|
2574 |
- regex: 'vivo 1805(?:[);/ ]|$)'
|
2575 |
model: 'Nex'
|
2576 |
- regex: 'V1923A(?:[);/ ]|$)'
|
2607 |
model: 'V15 Pro'
|
2608 |
- regex: 'vivo 1909(?:[);/ ]|$)'
|
2609 |
model: 'V17 Pro'
|
2610 |
+
- regex: 'V2022(?:[);/ ]|$)'
|
2611 |
+
model: 'V20 SE'
|
2612 |
- regex: '(?:VIV-|BBG-)?vivo[ _]1601(?:[);/ ]|$)'
|
2613 |
model: 'V5'
|
2614 |
- regex: 'vivo 1609(?:[);/ ]|$)'
|
2802 |
|
2803 |
# BenQ
|
2804 |
BenQ:
|
2805 |
+
regex: 'BENQ(?:[ \-])?([a-z0-9]+)|F52_09(?:[);/ ]|$)'
|
2806 |
device: 'feature phone'
|
2807 |
+
models:
|
2808 |
+
- regex: 'F52_09(?:[);/ ]|$)'
|
2809 |
+
model: 'F52'
|
2810 |
+
- regex: 'BENQ(?:[ \-])?([a-z0-9]+)'
|
2811 |
+
model: '$1'
|
2812 |
|
2813 |
# Blaupunkt
|
2814 |
Blaupunkt:
|
2815 |
+
regex: 'Blaupunkt|Atlantis[_ ](?:1001A|1010A|A10\.G40[23])|SLplus02|Discovery[_ ](?:A10_302|111C|1000C|1001A?)|Endeavour[_ ](?:785|101[GLM]|1000|1001|101[03]|1100)|Polaris[_ ]803'
|
2816 |
device: 'tablet'
|
2817 |
models:
|
2818 |
- regex: 'Discovery[_ ]111C'
|
2831 |
model: 'Polaris $1'
|
2832 |
- regex: 'Atlantis[_ ](1001A|1010A|A10\.G40[23])'
|
2833 |
model: 'Atlantis $1'
|
2834 |
+
- regex: 'SLplus02'
|
2835 |
+
model: 'SL Plus 02'
|
2836 |
- regex: 'Blaupunkt (SL 0[124]|SM 01)'
|
2837 |
device: 'smartphone'
|
2838 |
model: '$1'
|
2839 |
|
2840 |
# Bmobile
|
2841 |
Bmobile:
|
2842 |
+
regex: 'Bmobile[_ ]|AX-?(?:[1-9][0-9]{2,3}[eEO+]?|7OO)(?:[);/ ]|$)'
|
2843 |
device: 'smartphone'
|
2844 |
models:
|
2845 |
- regex: 'AX-?([1-9][0-9]{2,3}[eEO+]?)'
|
2860 |
model: 'Strike LTE'
|
2861 |
- regex: 'BQ(?:ru)?-(?:6035L)(?:[);/ ]|$)'
|
2862 |
model: 'Strike Power Max'
|
2863 |
+
- regex: 'BQ(?:ru)?-(?:5535L)(?:[);/ ]|$)'
|
2864 |
model: 'Strike Power Plus'
|
2865 |
+
- regex: 'BQ(S|ru)?-(?:5070|6040L)(?:[);/ ]|$)'
|
2866 |
model: 'Magic'
|
2867 |
+
- regex: 'BQ(S|ru)?-(?:6424L)(?:[);/ ]|$)'
|
2868 |
+
model: 'Magic O'
|
2869 |
- regex: 'BQ(?:S|ru)?-(?:5730L)(?:[);/ ]|$)'
|
2870 |
model: 'Magic C'
|
2871 |
- regex: 'BQ(?:S|ru)?-(?:5731L)(?:[);/ ]|$)'
|
2872 |
model: 'Magic S'
|
2873 |
+
- regex: 'BQ(?:S|ru)?-(?:5732L)(?:[);/ ]|$)'
|
2874 |
+
model: 'Aurora SE'
|
2875 |
- regex: 'BQ-9011[G]?(?:[);/ ]|$)'
|
2876 |
model: 'Vision'
|
2877 |
device: 'tablet'
|
2922 |
model: 'Aura'
|
2923 |
- regex: 'BQ(ru)?[ -]6015L'
|
2924 |
model: 'Universe'
|
2925 |
+
- regex: 'BQ(?:S|ru)?-(?:5525|6030G|6010G)'
|
2926 |
model: 'Practic'
|
2927 |
- regex: 'BQ-6001L|BQ-6050'
|
2928 |
model: 'Jumbo'
|
2932 |
model: 'Spring'
|
2933 |
- regex: 'BQ-5700L(?:[);/ ]|$)'
|
2934 |
model: 'Space X'
|
2935 |
+
- regex: 'BQ-(?:5591|551[89]G)(?:[);/ ]|$)'
|
2936 |
model: 'Jeans'
|
2937 |
- regex: 'BQ-5522'
|
2938 |
model: 'Next'
|
2968 |
model: 'Strike Selfie Max'
|
2969 |
- regex: 'BQ(?:ru)?-5503(?:[);/ ]|$)'
|
2970 |
model: 'Nice 2'
|
2971 |
+
- regex: 'BQ(?:ru)?-6045L(?:[);/ ]|$)'
|
2972 |
+
model: 'Nice'
|
2973 |
+
- regex: 'BQ(?:ru)?-4030G(?:[);/ ]|$)'
|
2974 |
+
model: 'Nice Mini'
|
2975 |
- regex: 'BQS-5502(?:[);/ ]|$)'
|
2976 |
model: 'Hammer'
|
2977 |
- regex: 'BQS-5501(?:[);/ ]|$)'
|
3000 |
model: 'Space'
|
3001 |
- regex: 'BQ-5082(?:[);/ ]|$)'
|
3002 |
model: 'Sense 2'
|
3003 |
+
- regex: 'BQ-5045L(?:[);/ ]|$)'
|
3004 |
+
model: 'Wallet'
|
3005 |
- regex: 'BQ-5071(?:[);/ ]|$)'
|
3006 |
model: 'Belief'
|
3007 |
- regex: 'BQ[S]?-(?:5065|5340)(?:[);/ ]|$)'
|
3263 |
regex: 'Bush[ _-]'
|
3264 |
device: 'smartphone'
|
3265 |
models:
|
3266 |
+
- regex: 'BUSH ([^;/)]+)Tablet(?: Build|[);])'
|
3267 |
model: '$1Tablet'
|
3268 |
device: 'tablet'
|
3269 |
+
- regex: 'BUSH ([^;/)]+)(?: Build|[);])'
|
3270 |
model: '$1'
|
3271 |
|
3272 |
# CAGI
|
3329 |
|
3330 |
# Cat (Caterpillar, Catphones)
|
3331 |
Cat:
|
3332 |
+
regex: 'Cat ?(tablet|stargate|nova)|B15Q|CAT B35|CAT-B100'
|
3333 |
device: 'tablet'
|
3334 |
models:
|
3335 |
- regex: 'B15Q'
|
3343 |
- regex: 'Cat ?tablet'
|
3344 |
model: 'Nova'
|
3345 |
|
3346 |
+
- regex: 'CAT-(B100)'
|
3347 |
+
device: 'feature phone'
|
3348 |
+
model: '$1'
|
3349 |
+
|
3350 |
# Carrefour
|
3351 |
Carrefour:
|
3352 |
regex: 'CT(?:10[0123]0|7[12]0|820)(?:W|FR)?(?:[);/ ]|$)'
|
3361 |
|
3362 |
# Celkon
|
3363 |
Celkon:
|
3364 |
+
regex: 'Celkon|Millennia Hero'
|
3365 |
device: 'smartphone'
|
3366 |
models:
|
3367 |
- regex: 'Celkon[ _*](C[78]20)'
|
3368 |
model: '$1'
|
3369 |
device: 'tablet'
|
3370 |
+
- regex: 'Millennia Hero'
|
3371 |
+
model: 'Millennia Hero'
|
3372 |
- regex: 'Celkon[ _*](CT[^;/]+) Build'
|
3373 |
model: '$1'
|
3374 |
device: 'tablet'
|
3468 |
|
3469 |
# Artel
|
3470 |
Artel:
|
3471 |
+
regex: 'Artel[_ ]|\w+_ARTEL_\w+'
|
3472 |
device: 'smartphone'
|
3473 |
models:
|
3474 |
- regex: 'Artel[_ ](Quadro(?: Pro)?|Tesla|Air|Tomchi|Premium|U3_4G|Z5|Sentinel (?:X 8G|X D5|X))'
|
3479 |
model: '$1'
|
3480 |
device: 'tablet'
|
3481 |
|
3482 |
+
- regex: '(?:\w+_)?ARTEL_([FVM]5|X4)_\w+'
|
3483 |
+
device: 'feature phone'
|
3484 |
+
model: '$1'
|
3485 |
+
|
3486 |
# ComTrade Tesla
|
3487 |
ComTrade Tesla:
|
3488 |
regex: 'Tesla|Impulse 7.85 3G|Smartphone_6.1|SP(?:6.2|6.2_Lite)|TTL(?:713G|8)'
|
3677 |
|
3678 |
# Coolpad
|
3679 |
Coolpad:
|
3680 |
+
regex: '(?:YL-)?Coolpad|(?:Cool_9S|8190Q|1831-A0|8676-[AM]01|CP8298_I00|CP3648A|CP8676_I0[23]|REVVLPLUS C3701A|VCR-[AI]0|C105-E0|C106-[79]|MTS-T0|cp3705A[S]?|ORL-C0|DLS-E0|8298-M02|5560S)(?:[);/ ]|$)|(8295|5860S) Build'
|
3681 |
device: 'smartphone'
|
3682 |
models:
|
3683 |
- regex: 'VCR-[AI]0'
|
3689 |
device: 'phablet'
|
3690 |
- regex: '8190Q(?:[);/ ]|$)'
|
3691 |
model: '8190Q'
|
3692 |
+
- regex: 'DLS-E0(?:[);/ ]|$)'
|
3693 |
+
model: 'N5'
|
3694 |
- regex: 'CP3705A[S]?(?:[);/ ]|$)'
|
3695 |
model: 'Legacy'
|
3696 |
- regex: 'CP3648A(?:[);/ ]|$)'
|
3697 |
model: 'Legacy S'
|
3698 |
- regex: 'MTS-T0(?:[);/ ]|$)'
|
3699 |
model: 'N2M'
|
3700 |
+
- regex: 'C106-[79](?:[);/ ]|$)'
|
3701 |
model: 'Cool 1'
|
3702 |
+
- regex: 'C105-E0(?:[);/ ]|$)'
|
3703 |
+
model: 'Cool S1'
|
3704 |
- regex: 'ORL-C0(?:[);/ ]|$)'
|
3705 |
model: 'Cool 9'
|
3706 |
- regex: 'Cool_9S(?:[);/ ]|$)'
|
3707 |
model: 'Cool 9S'
|
3708 |
+
- regex: '5560S(?:[);/ ]|$)'
|
3709 |
+
model: 'Arise'
|
3710 |
- regex: '(5860S|8295) Build'
|
3711 |
model: '$1'
|
3712 |
- regex: 'CP8676_I02(?:[);/ ]|$)'
|
3715 |
model: 'Note 3 Plus'
|
3716 |
- regex: 'CP8298_I00(?:[);/ ]|$)'
|
3717 |
model: 'Note 3 Lite'
|
3718 |
+
- regex: '(8676-[AM]01|8298-M02)(?:[);/ ]|$)'
|
3719 |
model: '$1'
|
3720 |
- regex: '(?:YL-)?Coolpad[ _\-]?([^/;]+) Build'
|
3721 |
model: '$1'
|
3762 |
|
3763 |
# AllDocube (https://www.alldocube.com/)
|
3764 |
AllDocube:
|
3765 |
+
regex: '(?:T1001XS?|iPlay_20|U1006H?)(?:[);/ ]|$)'
|
3766 |
device: 'tablet'
|
3767 |
models:
|
3768 |
- regex: 'T1001XS(?:[);/ ]|$)'
|
3769 |
model: 'M5XS'
|
3770 |
- regex: 'T1001X(?:[);/ ]|$)'
|
3771 |
model: 'M5X'
|
3772 |
+
- regex: 'U1006H?(?:[);/ ]|$)'
|
3773 |
model: 'iPlay 10 Pro 10.1"'
|
3774 |
- regex: 'iPlay_20(?:[);/ ]|$)'
|
3775 |
model: 'iPlay 20'
|
3805 |
|
3806 |
# CUBOT
|
3807 |
CUBOT:
|
3808 |
+
regex: 'CUBOT|RAINBOW 2|KING_KONG_3|KINGKONG_MINI|KING KONG CS|(?<!QUMO )QUEST(?!(?:[0-9]|\s[0-9]))(?: LITE)?'
|
3809 |
device: 'smartphone'
|
3810 |
models:
|
3811 |
- regex: 'CHEETAH 2'
|
3930 |
|
3931 |
# Danew
|
3932 |
Danew:
|
3933 |
+
regex: 'Dslide ?([^;/]+) Build|Konnect_?(402|504|60[127])|GEODROID_A5'
|
3934 |
device: 'smartphone'
|
3935 |
models:
|
3936 |
- regex: 'Konnect_?(402|504|60[127])'
|
3938 |
- regex: 'Dslide ?([^;/]+) Build'
|
3939 |
device: 'tablet'
|
3940 |
model: 'DSlide $1'
|
3941 |
+
- regex: 'GEODROID_A5'
|
3942 |
+
device: 'tablet'
|
3943 |
+
model: 'Geodroid A5'
|
3944 |
|
3945 |
# Denver Electronics
|
3946 |
Denver:
|
3989 |
|
3990 |
# DEXP
|
3991 |
DEXP:
|
3992 |
+
regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|Larus_TV1|IxionML4.7|M150Storm|(?:SENIOR|F4[38]D8000K|VA[12]10|VA170|ML450|MS[56]50|BL[123]50|BS155|BS160|BS[1256]50|AL[12]40|AL[23]50|AS155|AS260| (?:N280i|P380i|R110|B450|B340|A1[45]0))(?:[);/ ]|$)'
|
3993 |
device: 'smartphone'
|
3994 |
models:
|
|
|
3995 |
- regex: 'Ixion[_ ]([^;/]+)(?: Build|\))'
|
3996 |
model: 'Ixion $1'
|
3997 |
- regex: '(ML450|MS[56]50)(?:[);/ ]|$)'
|
3998 |
model: 'Ixion $1'
|
3999 |
+
- regex: 'IxionML4.7(?:[);/ ]|$)'
|
4000 |
+
model: 'Ixion ML 4.7"'
|
4001 |
+
- regex: 'M150Storm(?:[);/ ]|$)'
|
4002 |
+
model: 'Ixion M150 Storm'
|
4003 |
+
- regex: 'AL250(?:[);/ ]|$)'
|
4004 |
+
model: '4.5" AL250'
|
4005 |
+
- regex: 'AL350(?:[);/ ]|$)'
|
4006 |
+
model: '5.0" AL350'
|
4007 |
+
- regex: 'AS155(?:[);/ ]|$)'
|
4008 |
+
model: '5.45" AS155'
|
4009 |
- regex: 'AS260(?:[);/ ]|$)'
|
4010 |
model: '5.85" AS260'
|
4011 |
device: 'phablet'
|
4013 |
- regex: 'Ursus ([^;/)]+)(?: Build|\))'
|
4014 |
model: 'Ursus $1'
|
4015 |
device: 'tablet'
|
4016 |
+
- regex: '(VA[21]10|VA170|R110|N280i|P380i)(?:[);/ ]|$)'
|
4017 |
model: 'Ursus $1'
|
4018 |
device: 'tablet'
|
4019 |
|
4022 |
- regex: 'SENIOR(?:[);/ ]|$)'
|
4023 |
model: 'Senior'
|
4024 |
|
4025 |
+
- regex: 'Larus_TV1'
|
4026 |
+
device: 'feature phone'
|
4027 |
+
model: 'Larus_TV1'
|
4028 |
+
|
4029 |
- regex: 'H135[ _]Build'
|
4030 |
model: 'Atlas'
|
4031 |
device: 'desktop'
|
4032 |
+
- regex: '(BL[123]50|BS155|BS160|BS[1256]50|AL[12]40|A1[45]0)(?:[);/ ]|$)'
|
4033 |
model: '$1'
|
4034 |
- regex: 'DEXP[ _]([^;/]+) Build'
|
4035 |
model: '$1'
|
4085 |
|
4086 |
# Digma
|
4087 |
Digma:
|
4088 |
+
regex: 'Digma[_ ]([^;/]+) Build|HIT HT707[10]MG|CITI ATL 4G|CITI Kids|CITI Octa [178]0|CITI 1902 3G|CITI Z530 3G|(CITI[_ ](?:[A-Z0-9]+)[_ ][34]G)[ _][TC][ST](606[32]ML|1114ML|11[459]4MG|1207MG|1210MG|1195MG|1196ML|3001ML|4024PG|500[67]PG|720[48]MG|7113PL|7193MG|820[69]MG|8139ML|8143MG|8152ML|1050PL|8205PG|7203MG|1062ML)|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 B510 3G LT5037MG|LINX A452 3G LT4030PG|LINX A453 3G LT4038PG|LINX A420 3G LS4019PG|LINX A450 3G LT4028PG|Linx A400 3G LT4001PG|Linx C500 3G LT5001PG|Linx PS474S|LS504[01]PL|LT40(47|54)MG|PS1043MG|LS405[01]MG|LS5053ML|LT5048MG|HT7071MG|LT5052ML|HT5035PG|HT4039PG|LT4049PG|NS6902QL|NS9797MG|TS7854M|TS1012E 3G|TT1004PG|TT702[045]MG|TT7026MW|((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)'
|
4089 |
device: 'smartphone'
|
4090 |
models:
|
4091 |
- regex: 'HIT(?: 3G)? HT707[10]MG'
|
4131 |
model: 'CITI ATL 4G'
|
4132 |
- regex: '(CITI Z530 3G)'
|
4133 |
model: '$1'
|
4134 |
+
- regex: '(CITI [A-Z0-9]+ [34]G) C[ST](?:606[32]ML|4024PG)'
|
4135 |
+
model: '$1'
|
4136 |
|
4137 |
+
- regex: 'TS7854M'
|
4138 |
+
model: 'Plane 8.1" 3G'
|
4139 |
+
device: 'tablet'
|
4140 |
- regex: 'PS1043MG'
|
4141 |
model: 'Plane 10.3" 3G'
|
4142 |
device: 'tablet'
|
4143 |
+
- regex: 'TS1012E 3G'
|
4144 |
+
model: 'Plane 10.1" 3G'
|
4145 |
+
device: 'tablet'
|
4146 |
- regex: 'MVM900H(?:WZ|C)'
|
4147 |
model: 'iDx8'
|
4148 |
device: 'tablet'
|
4159 |
- regex: 'HIT 4G HT7074ML'
|
4160 |
model: 'HIT 4G'
|
4161 |
device: 'tablet'
|
4162 |
+
- regex: '(CITI 1902 3G|CITI Kids|CITI_8527_4G|CITI Octa [178]0)'
|
4163 |
model: '$1'
|
4164 |
device: 'tablet'
|
4165 |
+
- regex: '(CITI[ _](?:[A-Z0-9]+)[ _][34]G)[ _][TC][ST](?:1062ML|1114ML|1207MG|1210MG|3001ML|500[67]PG|720[48]MG|820[69]MG|11[459]4MG|1195MG|1196ML|3001ML|8152ML|1050PL|7113PL|7193MG|7216MG|8205PG|7203MG|8143MG)'
|
|
|
|
|
|
|
4166 |
model: '$1'
|
4167 |
device: 'tablet'
|
4168 |
- regex: 'iDxD8 3G'
|
4183 |
- regex: 'TT7025MG'
|
4184 |
model: 'Optima 7.5" 3G'
|
4185 |
device: 'tablet'
|
4186 |
+
- regex: 'TT7026MW'
|
4187 |
+
model: 'Optima 7.6" 3G'
|
4188 |
+
device: 'tablet'
|
4189 |
+
- regex: 'TT7020MG'
|
4190 |
+
model: 'Optima 7.3" 3G'
|
4191 |
+
device: 'tablet'
|
4192 |
+
- regex: 'TT7024MG'
|
4193 |
+
model: 'Optima 7.4" 3G'
|
4194 |
+
device: 'tablet'
|
4195 |
- regex: '((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.STNM]+|Prime)(?:[ _][43]G)?)'
|
4196 |
model: '$1'
|
4197 |
device: 'tablet'
|
4213 |
|
4214 |
# Doogee
|
4215 |
Doogee:
|
4216 |
+
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?)(?:[);/ ]|$)|BL[579]000(?:[);/ ]|$)|BL12000|BL5500[_ ]Lite|X9 Mini|LEO_DG280|Y9Plus|Hitman_DG850|S(?:68|9[05])Pro|S40Lite|(?<!Lenovo )S90C'
|
4217 |
device: 'smartphone'
|
4218 |
models:
|
4219 |
- regex: '(?:Valencia2_)?Y100_Plus(?:[);/ ]|$)'
|
4222 |
model: 'Valencia2 Y100 Pro'
|
4223 |
- regex: 'LEO_(DG280)'
|
4224 |
model: 'Leo $1'
|
4225 |
+
- regex: '(BL[579]000|S90C)(?:[);/ ]|$)'
|
4226 |
model: '$1'
|
4227 |
- regex: 'BL12000 PRO'
|
4228 |
model: 'BL12000 Pro'
|
4230 |
model: 'BL5500 Lite'
|
4231 |
- regex: 'BL12000'
|
4232 |
model: 'BL12000'
|
4233 |
+
- regex: 'S(68|9[05])Pro'
|
4234 |
+
model: 'S$1 Pro'
|
4235 |
+
- regex: 'S40Lite'
|
4236 |
+
model: 'S40 Lite'
|
4237 |
- regex: 'KISSME-DG580'
|
4238 |
model: 'Kissme DG580'
|
4239 |
- regex: 'Hitman_DG850'
|
4240 |
model: 'Hitman DG580'
|
4241 |
- regex: 'X9 Mini'
|
4242 |
model: 'X9 Mini'
|
4243 |
+
- regex: 'x5_doogee'
|
4244 |
+
model: 'X5'
|
4245 |
+
- regex: 'Shoot_([12])'
|
4246 |
+
model: 'Shoot $1'
|
4247 |
- regex: '(X5max(?:[_ ]PRO)?)'
|
4248 |
model: '$1'
|
4249 |
- regex: '(?:DOOGEE[ _-])?(BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|Valencia2_Y100pro|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)(?:[);/ ]|$)'
|
4324 |
models:
|
4325 |
- regex: '(EasyPhone[^/;]+) Build'
|
4326 |
model: '$1'
|
4327 |
+
- regex: 'EasyPad ([^/;)]+)(?: Build|[;)])'
|
4328 |
+
model: 'EasyPad $1'
|
4329 |
device: 'tablet'
|
4330 |
|
4331 |
# Ebest
|
4510 |
|
4511 |
# Senseit
|
4512 |
Senseit:
|
4513 |
+
regex: 'SENSEIT[ _]?([^;/)]+)( Build|\))'
|
4514 |
+
device: 'smartphone'
|
4515 |
+
model: '$1'
|
4516 |
|
4517 |
# Sony & Sony Ericsson (combined as they are mixed up)
|
4518 |
Sony:
|
4519 |
+
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)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5316|D5322|D5503|D58[03]3|D65(?:0[23]|43|63)|D66[03458]3|D66[14]6|D6708|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|65[35]3|66[0358]3|68[358]3)|I[34]312|I4332|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3416|G342[136]|G823[12]|G834[123]|G8[14]4[12]|H(?:3113|3123|3133|3213|3223|3311|3321|4113|4133|4213|4233|4311|4331|4413|4433|82[167]6|83[12]4|8416|9436)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|SOG01|SOL2[246]|SOV3[1-9]|SOV4[0-3]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[345]D|[234]E|[1-5]F|[1-5]G|[1-4]H|[1-4]J|[1-5]K|1M|[1-3]L)|R800[aix]|J3173|J82[17]0|J9110|J92[16]0|J81[17]0|I[34]113|I3[12]23|I42[19]3|H9493|H8296|H8166|H4493|LiveWithWalkman|BRAVIA|SGP771|E3 Dual|A001SO|I4193|E6508|SOT31|SO-[45]1A|XQ-A[DT]51|XQ-AT42|XQ-AS72|XQ-A[TSU]52|SOL25|SOG02|A002SO|NW-A100Series'
|
4520 |
device: 'smartphone'
|
4521 |
models:
|
4522 |
# SONY ERICSSON: explicit smartphone models
|
4672 |
model: 'Xperia 5 Dual'
|
4673 |
- regex: '(?:Sony(?:Ericsson)?)?(?:J82[17]0|SO-01M|SOV41|901SO)'
|
4674 |
model: 'Xperia 5'
|
4675 |
+
- regex: '(?:Sony(?:Ericsson)?)?(?:SOG02|A002SO|XQ-AS[75]2)'
|
4676 |
model: 'Xperia 5 II'
|
4677 |
- regex: '(?:Sony(?:Ericsson)?)?(?:SOV42|902SO)'
|
4678 |
model: 'Xperia 8'
|
5037 |
- regex: 'ERGO[_ ]Tab[ _]Hero[ _]II'
|
5038 |
model: 'Tab Hero II'
|
5039 |
device: 'tablet'
|
5040 |
+
- regex: 'ERGO[_ ](B700)'
|
5041 |
+
model: 'Tab $1'
|
5042 |
+
device: 'tablet'
|
5043 |
+
|
5044 |
+
- regex: 'ERGO SmartBox SX'
|
5045 |
+
model: 'SmartBox SX'
|
5046 |
+
device: 'tv'
|
5047 |
|
5048 |
# Ericsson
|
5049 |
Ericsson:
|
5127 |
regex: 'EVOLVEO'
|
5128 |
device: 'smartphone'
|
5129 |
models:
|
5130 |
+
- regex: 'EVOLVEO MultiMedia Box M4'
|
5131 |
+
device: 'tv'
|
5132 |
+
model: 'MultiMedia Box M4'
|
5133 |
- regex: 'Smart TV ([^;/]*) Build'
|
5134 |
device: 'tv'
|
5135 |
model: 'Smart TV $1'
|
5136 |
- regex: 'EVOLVEO StrongPhone G([248])'
|
5137 |
model: 'StrongPhone G$1'
|
5138 |
+
- regex: 'EVOLVEO[ _]StrongPhone[ _]Q([67])(_LTE)?'
|
5139 |
+
model: 'StrongPhone Q$1$2'
|
5140 |
- regex: 'EVOLVEO[ _]([^;/]*) Build'
|
5141 |
model: '$1'
|
5142 |
|
5143 |
# Explay
|
5144 |
Explay:
|
5145 |
+
regex: 'Explay|[\w]+-EXPLAY-FIN|ActiveD[ _]|Atlant |Informer[ _][0-9]+|CinemaTV 3G|Surfer[ _][0-9\.]|sQuad[ _][0-9\.]|Onliner[1-3]|RioPlay|Leader|Infinityll|Imperium[78]'
|
5146 |
device: 'tablet'
|
5147 |
models:
|
5148 |
- regex: 'ActiveD[ _]7.4[ _]3G'
|
5166 |
- regex: 'Atlant(?:[);/ ]|$)'
|
5167 |
device: 'smartphone'
|
5168 |
model: 'Atlant'
|
5169 |
+
|
5170 |
+
- regex: '[\w]+-EXPLAY-FIN'
|
5171 |
+
device: 'feature phone'
|
5172 |
+
model: 'Fin'
|
5173 |
+
|
5174 |
+
|
5175 |
- regex: 'Explay[ _-]([^;/]+) Build'
|
5176 |
model: '$1'
|
5177 |
- regex: 'Explay[ _-]([^;/]+)(?:[;/)]|$)'
|
5184 |
|
5185 |
# EvroMedia
|
5186 |
EvroMedia:
|
5187 |
+
regex: 'EVROMEDIA|Playpad[ _]|PLAY_PAD_PRO_XL'
|
5188 |
device: 'tablet'
|
5189 |
models:
|
5190 |
- regex: 'Playpad 3G GOO'
|
5191 |
model: 'Play Pad 3G Goo'
|
5192 |
- regex: 'Play Pad PRO'
|
5193 |
model: 'Play Pad Pro'
|
5194 |
+
- regex: 'PLAY_PAD_PRO_XL'
|
5195 |
+
model: 'Play Pad Pro XL'
|
5196 |
- regex: 'PlayPad 3GTab XL'
|
5197 |
model: 'Play Pad 3G Tab XL'
|
5198 |
# EKO
|
5433 |
|
5434 |
# General Mobile
|
5435 |
General Mobile:
|
5436 |
+
regex: 'GM 5 Plus|GM8 go|GM [68] d|GM 8|General Mobile 4G'
|
5437 |
device: 'smartphone'
|
5438 |
models:
|
5439 |
- regex: 'GM 5 Plus'
|
5440 |
model: 'GM 5 Plus'
|
5441 |
+
- regex: 'GM ([68]) d'
|
5442 |
+
model: 'GM $1D'
|
5443 |
- regex: 'GM 8'
|
5444 |
model: 'GM 8'
|
5445 |
- regex: 'GM8 go'
|
5446 |
model: 'GM 8 Go'
|
5447 |
+
- regex: 'General Mobile 4G Dual'
|
5448 |
+
model: '4G Dual'
|
5449 |
+
- regex: 'General Mobile 4G'
|
5450 |
+
model: '4G'
|
5451 |
|
5452 |
# Geotel
|
5453 |
Geotel:
|
5474 |
|
5475 |
# Gigabyte
|
5476 |
Gigabyte:
|
5477 |
+
regex: 'GSmart[ _][a-z0-9 ]+(?: Build|\))|Gigabyte-[a-z0-9]+|Simba SX1|Classic[_ ](?:Joy|Pro)'
|
5478 |
device: 'smartphone'
|
5479 |
models:
|
5480 |
- regex: '(GSmart[ _][a-z0-9 ]+)(?: Build|\))'
|
5481 |
model: '$1'
|
5482 |
- regex: 'Gigabyte-([a-z0-9]+)'
|
5483 |
model: '$1'
|
5484 |
+
- regex: '(Classic[ _](?:Joy|Pro))'
|
5485 |
+
model: '$1'
|
5486 |
+
- regex: 'Simba SX1'
|
5487 |
+
model: 'GSmart Simba SX1'
|
5488 |
|
5489 |
# Gigaset
|
5490 |
Gigaset:
|
5513 |
|
5514 |
# Ginzzu
|
5515 |
Ginzzu:
|
5516 |
+
regex: 'GINZZU[_ ]|((?:RS(?:7[14]|81|9[67])D)|S5002|(?<!Wave Pro )S5021|S5230|S50[45]0|S5120|RS(6[12]|9[45])D|S40[23]0|RS850[12]|RS9602)(?:[);/ ]|$)'
|
5517 |
device: 'smartphone'
|
5518 |
models:
|
5519 |
+
- regex: 'GINZZU[_ ]?(S40[17]0|S4710|ST60[14]0|ST6120)'
|
5520 |
model: '$1'
|
5521 |
+
- regex: 'GINZZU[_ ]?(GT-(?:1050|7105|70[1-4]0|7115|7210|[WX]831|X[78]70|7810|8[01]10|X853))'
|
5522 |
model: '$1'
|
5523 |
device: 'tablet'
|
5524 |
- regex: '(RS6[12]D) ULTIMATE'
|
5525 |
model: '$1 Ultimate'
|
5526 |
+
- regex: '(?:GINZZU[ _])?((?:RS(?:7[14]|81|9[4-7])D)|S50[45]0|S5002|S5021|S5230|S5120|S40[23]0|RS850[12]|RS9602|RS94D)(?:[);/ ]|$)'
|
5527 |
model: '$1'
|
5528 |
|
5529 |
# Gionee
|
5719 |
|
5720 |
# Haier
|
5721 |
Haier:
|
5722 |
+
regex: 'Haier|I6_Infinity|Titan[ _]T[135]|(?:HW-)?W(?:716|757|860|970)(?:[);/ ]|$)|S5 Silk|(?:HM-)?(N505|N700|G(?:152|303|353|552|70[01])?-FL|HM-N501-FL|G(?:303)?-W|I(?:557)?-FL)|(?:PAD[ _](?:D71|G781|d85))|A2_Lite_NFC'
|
5723 |
device: 'smartphone'
|
5724 |
models:
|
5725 |
+
- regex: 'A2_Lite_NFC'
|
5726 |
+
model: 'Alpha A2 Lite NFC'
|
5727 |
- regex: 'HM-N505-FL'
|
5728 |
model: 'I8'
|
5729 |
- regex: 'S5 Silk'
|
5734 |
model: 'L56'
|
5735 |
- regex: '(?:HM-)?(G(?:152|353|552|70[01])|G(?:303)|I(?:557))'
|
5736 |
model: '$1'
|
5737 |
+
- regex: '(Titan[_ ]T[135]|I6_Infinity)'
|
5738 |
model: '$1'
|
5739 |
- regex: '(?:HW-)?W(716|757|860|970)(?:[);/ ]|$)'
|
5740 |
model: 'W$1'
|
5929 |
|
5930 |
# Huawei
|
5931 |
Huawei:
|
5932 |
+
regex: '(HW-)?(?:Huawei|MediaPad T1|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANE|ARE|ARS|ASK|ATH|ATU|AUM|BAC|BAH[23]?|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|GEM|GRA|HDN|HLK|HMA|Hol|HRY|HWI|H[36]0|INE|JAT|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|NEM|NEO|NXT|PAR|PCT|PIC|PLE|PLK|POT|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]|A23L|701u|823L)|G7-(?:L01|TL00)|HW-01K|JNY-(LX[12]|AL10)|OXF-AN[01]0|TAS-(A[LN]00|L29|TL00)|WLZ-(AL10|AN00)|NIC-LX1A|MRX-(AL09|W09)|CDY-(?:[AT]N00|AN90|NX9A)|GLK-[AT]L00|JER-[AT]N10|ELS-(?:[AT]N[10]0|NX9|N39|N04)|AKA-(AL10|L29)|MON-(W|AL)19|BMH-AN[12]0|AQM-([AT]L[01]0|LX1)|MOA-(AL00|LX9N)|NTS-AL00|ART-(?:[AT]L00[xm]|L29N?)|JEF-(?:[AT]N00|AN20)|MED-(?:[AT]L00|LX9N?)|EBG-AN[01]0|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-AN00|MXW-AN00|JKM-AL00[ab]|TAH-(?:N29|AN00)m|C8817D|T1-821W|d-01J|d-02[HK]|HWT31|Y320-U10|Y541-U02|VAT-L19|70[14]HW|60[58]HW|TNNH-AN00|LIO-(?:[TA]L00|[LN]29|AN00)|KOB2-[LW]09|PPA-LX2|AGS3-L09|DNN-LX9|NEY-NX9'
|
5933 |
device: 'smartphone'
|
5934 |
models:
|
5935 |
- regex: 'POT-[TA]L00a(?:[);/ ]|$)'
|
6192 |
model: 'Honor X10'
|
6193 |
- regex: 'KKG-AN00(?:[);/ ]|$)'
|
6194 |
model: 'Honor X10 Max'
|
6195 |
+
- regex: 'DNN-LX9(?:[);/ ]|$)'
|
6196 |
+
model: 'Honor X10 Lite'
|
6197 |
- regex: 'U8500(?:[);/ ]|$)'
|
6198 |
model: 'Ideos X2'
|
6199 |
- regex: 'U8510(?:[);/ ]|$)'
|
6304 |
model: 'P smart'
|
6305 |
- regex: 'POT-(?:LX(?:[13]|1T|2J|1AF)|AL00)(?:[);/ ]|$)'
|
6306 |
model: 'P smart (2019)'
|
6307 |
+
- regex: 'POT-LX1A(?:[);/ ]|$)'
|
6308 |
+
model: 'P smart (2020)'
|
6309 |
- regex: 'PPA-LX2(?:[);/ ]|$)'
|
6310 |
model: 'P smart (2021)'
|
6311 |
- regex: 'STK-LX1(?:[);/ ]|$)'
|
6328 |
model: 'P30'
|
6329 |
- regex: '(?:MAR-(?:LX(?:1[BM]|2J?|3BM)|TL00)|NIC-LX1A|HWV33)(?:[);/ ]|$)'
|
6330 |
model: 'P30 Lite'
|
6331 |
+
- regex: 'MAR-LX[13]Am?(?:[);/ ]|$)'
|
6332 |
model: 'P30 Lite Dual SIM'
|
6333 |
- regex: '(?:VOG-(?:L(?:04|09|29)|TL00|AL10)|HW-02L)(?:[);/ ]|$)'
|
6334 |
model: 'P30 Pro'
|
6338 |
model: 'P40 Lite E'
|
6339 |
- regex: 'ART-L29N(?:[);/ ]|$)'
|
6340 |
model: 'P40 Lite E NFC'
|
6341 |
+
- regex: '(?:ELS-(?:[AT]N00|NX9|N04)|NEY-NX9)(?:[);/ ]|$)'
|
6342 |
model: 'P40 Pro'
|
6343 |
- regex: 'ELS-(?:AN10|N39)(?:[);/ ]|$)'
|
6344 |
model: 'P40 Pro Plus'
|
6378 |
model: 'Y5 (2019)'
|
6379 |
- regex: 'DRA-LX5(?:[);/ ]|$)'
|
6380 |
model: 'Y5 lite'
|
6381 |
+
- regex: 'DRA-LX9(?:[);/ ]|$)'
|
6382 |
+
model: 'Y5p'
|
6383 |
- regex: 'CRO-L[02]3(?:[);/ ]|$)'
|
6384 |
model: 'Y5 Lite (2017)'
|
6385 |
- regex: 'CAG-L[02]3(?:[);/ ]|$)'
|
6632 |
|
6633 |
# iBall
|
6634 |
iBall:
|
6635 |
+
regex: 'iBall[ _]([^;/)]+)[ _]Build|(?:Snap_4G2|6351-Q400i)(?:[);/ ]|$)'
|
6636 |
device: 'tablet'
|
6637 |
models:
|
6638 |
- regex: '(Snap_4G2)(?:[);/ ]|$)'
|
6639 |
model: '$1'
|
6640 |
+
- regex: '6351-Q400i(?:[);/ ]|$)'
|
6641 |
+
model: 'Slide'
|
6642 |
- regex: 'iBall[ _]([^;/)]+)[ _]Build'
|
6643 |
model: '$1'
|
6644 |
|
6656 |
|
6657 |
# iRulu
|
6658 |
iRulu:
|
6659 |
+
regex: 'iRULU[ _](X11|V[34]|U2)(?:[);/ ]|$)'
|
6660 |
device: 'tablet'
|
6661 |
+
models:
|
6662 |
+
- regex: 'iRULU[ _](X11|V[34])(?:[);/ ]|$)'
|
6663 |
+
model: '$1'
|
6664 |
+
- regex: 'iRULU[ _](U2)(?:[);/ ]|$)'
|
6665 |
+
device: 'smartphone'
|
6666 |
+
model: '$1'
|
6667 |
|
6668 |
# Irbis
|
6669 |
Irbis:
|
6670 |
+
regex: 'IRBIS|TZ(1(?:0[04]|42|5[01]|84|65|7[01345-89]|8[356]|9[12578])|49|7(?:1[12467]|2[01567]|37|4[257]|5[23457]|6[12]|72|7[17]|8[1]|9[47])|8(?:[34]1|5[3-8]|6[45]|7[2478]|8[1-5]|9[0127])|96[0-9])|TZ85|TZ13|TZ(?:one|art|HIT|81L)|(SP(?:0[56]|2[01]|4[1-36]|40[12]|45[345]|49[34]|50|51[0147]|531|54[12]|55[0124]|571))(?:[);/ ]|$)'
|
6671 |
device: 'tablet'
|
6672 |
models:
|
6673 |
- regex: '(TZ(?:[0-9]+)|TZ(?:one|art|HIT|81L))(?:[);/ ]|$)'
|
6714 |
|
6715 |
# IconBIT
|
6716 |
IconBIT:
|
6717 |
+
regex: 'IconBIT|NT-(3506M|0704S|0909T|1009T|10[01]1T|1017T|3601P/3602P|3603P|3702S|3805C|3905T|3701S|0701S|0805C|0902S|370[23]M)|XDS[789]4K|Omnicast UHD|Movie Smart 4K|Movie IPTV Quad'
|
6718 |
device: 'tablet'
|
6719 |
models:
|
6720 |
- regex: 'NT-3506M'
|
6753 |
- regex: 'NT-3703M'
|
6754 |
model: 'NetTAB Matrix 3GT'
|
6755 |
|
6756 |
+
- regex: '(?:iconBIT )?(Movie Smart 4K|Movie IPTV Quad|Movie Ultra HD 4K|XDS[789]4K|Omnicast UHD)'
|
6757 |
model: '$1'
|
6758 |
device: 'tv'
|
6759 |
|
7297 |
|
7298 |
#iLife or i-life (lifedigital.com)
|
7299 |
iLife:
|
7300 |
+
regex: '(ITELL[_ ](?:K3300|K3500N))(?:[);/ ]|$)'
|
7301 |
device: 'tablet'
|
7302 |
model: '$1'
|
7303 |
|
7339 |
|
7340 |
# Jiayu
|
7341 |
Jiayu:
|
7342 |
+
regex: 'JIAYU[ _-]|(?:JY-G4[\\_]G5|(?:JY-[a-z0-9]+)|JY_G4C)(?:[);/ ]|$)'
|
7343 |
device: 'smartphone'
|
7344 |
models:
|
7345 |
- regex: '(?:JIAYU G4_G5|JY-G4[\\_]G5)(?:[);/ ]|$)'
|
7346 |
model: 'G4/G5'
|
7347 |
- regex: 'JIAYU[ _-](G4[S]?|G2F|G3[S]?|S[23])(?:[);/ ]|$)'
|
7348 |
model: '$1'
|
7349 |
+
- regex: 'JY[-_]([a-z0-9]+|G4C)(?:[);/ ]|$)'
|
7350 |
+
model: 'JY-$1'
|
7351 |
|
7352 |
# Jolla
|
7353 |
Jolla:
|
7393 |
|
7394 |
# Kazam
|
7395 |
Kazam:
|
7396 |
+
regex: 'Kazam|Trooper_X[0-9][0-9](?:[);/ ]|$)|Tornado 348|TROOPER 4\.0'
|
7397 |
device: 'smartphone'
|
7398 |
models:
|
7399 |
- regex: 'Tornado 348'
|
7400 |
model: 'Tornado 348'
|
7401 |
- regex: 'Thunder 450W'
|
7402 |
model: 'Thunder 450W'
|
7403 |
+
- regex: 'TROOPER 4\.0'
|
7404 |
+
model: 'Trooper X4.0'
|
7405 |
- regex: 'Trooper_X([0-9])([0-9])(?:[);/ ]|$)'
|
7406 |
model: 'Trooper X$1.$2'
|
7407 |
- regex: 'Kazam[; _]([^;/)]+)(?: Build|\))'
|
7618 |
|
7619 |
# kyocera (kyocera.co.jp, kyocera.com)
|
7620 |
Kyocera:
|
7621 |
+
regex: 'Kyocera|KWC-|QC-|(?:NP501KC|302KC|503KC|602KC|705KC|C51[27]0|C5155|C5215|C67[35]0|C6522N?|C6530N|C6740N?|C6743|E6[89]10|KYL2[13]|KYV3[13-9]|KYT3[123]|KYF3[123579]|KYY2[1-4]|S2151|KC-S701|S4-KC|KYV40U?|KYV4[1-8]|KYV4[47][-_]u|KC-S301AE|X3-KC|S6-KC|E6560[CT]|E6782[L]?|E6790(?:TM)?|704KC|A001KC)(?:[);/ ]|$)'
|
7622 |
device: 'smartphone'
|
7623 |
models:
|
7624 |
# explicit smartphone models
|
7636 |
model: 'Digno E'
|
7637 |
- regex: '704KC(?:[);/ ]|$)'
|
7638 |
model: 'Digno J'
|
7639 |
+
- regex: '302KC(?:[);/ ]|$)'
|
7640 |
+
model: 'Digno T'
|
7641 |
- regex: 'NP501KC(?:[);/ ]|$)'
|
7642 |
model: 'Digno'
|
7643 |
- regex: 'KYV36(?:[);/ ]|$)'
|
7754 |
|
7755 |
# Krüger&Matz (Kruger&Matz)
|
7756 |
Krüger&Matz:
|
7757 |
+
regex: 'Kruger[ _&]Matz|KrugerMatz[ _]|FLOW5PLUS|FLOW7|FLOW6S|DRIVE[_ ]6S?|MOVE_|LIVE_6plus|LIVE 5 PLUS|LIVE4_KM043[89]|KM(?:106[67]|1065G|0701_1|0702|0805_1)'
|
7758 |
device: 'smartphone'
|
7759 |
models:
|
7760 |
- regex: 'MOVE_6_mini'
|
7763 |
model: 'MOVE $1'
|
7764 |
- regex: 'DRIVE 4 mini LTE'
|
7765 |
model: 'DRIVE 4 mini LTE'
|
7766 |
+
- regex: 'DRIVE[ _]([456][S]?)(?:[);/ ]|$)'
|
7767 |
model: 'DRIVE $1'
|
7768 |
+
- regex: 'FLOW5PLUS(?:[);/ ]|$)'
|
7769 |
+
model: 'FLOW 5 Plus'
|
7770 |
+
- regex: 'FLOW[ _]?([476][S]?)(?:[);/ ]|$)'
|
7771 |
model: 'FLOW $1'
|
7772 |
- regex: 'LIVE4_(KM043[89])(?:[);/ ]|$)'
|
7773 |
model: 'LIVE 4 $1'
|
7775 |
model: 'LIVE 4'
|
7776 |
- regex: '_LIVE5_(KM0450)(?:[);/ ]|$)'
|
7777 |
model: 'LIVE 5 $1'
|
7778 |
+
- regex: 'LIVE 5 PLUS(?:[);/ ]|$)'
|
7779 |
+
model: 'LIVE 5 Plus'
|
7780 |
+
- regex: 'LIVE_6plus(?:[);/ ]|$)'
|
7781 |
+
model: 'LIVE 6 Plus' # KM0454
|
7782 |
|
7783 |
- regex: 'KM(106[67])(?:[);/ ]|$)'
|
7784 |
device: 'tablet'
|
7814 |
- regex: 'Kingcomm C500'
|
7815 |
model: 'Super Smart Plus X3'
|
7816 |
|
7817 |
+
# Lava (Lavamobiles.com)
|
7818 |
Lava:
|
7819 |
+
regex: 'Lava[ _]|LAVAA1|(?:DISCOVER136|KKT QUADRA)|iris[ _]?([^/;]+)(?:\)| Build)|A(?:67|76) Build|X1 Selfie Build|X41 Plus Build|(?:Flair Z1|PixelV1|Z61_2GB|A97 IPS)(?:[);/ ]|$)'
|
7820 |
device: 'smartphone'
|
7821 |
models:
|
7822 |
- regex: 'Flair Z1(?:[);/ ]|$)'
|
7833 |
model: 'Iris X1 Selfie'
|
7834 |
- regex: 'X41 Plus Build'
|
7835 |
model: 'X41 Plus'
|
7836 |
+
- regex: 'LAVA[_ ]?A([13])(?:[);/ ]|$)'
|
7837 |
+
model: 'A$1'
|
7838 |
- regex: 'LAVA_R1'
|
7839 |
model: 'R1'
|
7840 |
- regex: 'Z61_2GB(?:[);/ ]|$)'
|
7841 |
model: 'Z61'
|
7842 |
+
|
7843 |
+
- regex: 'DISCOVER136'
|
7844 |
+
device: 'feature phone'
|
7845 |
+
model: 'Discover 136'
|
7846 |
+
- regex: 'KKT QUADRA'
|
7847 |
+
device: 'feature phone'
|
7848 |
+
model: 'KKT Quadra'
|
7849 |
+
- regex: 'KKT40[ ]?Power[P\+]'
|
7850 |
+
device: 'feature phone'
|
7851 |
+
model: 'KKT40 Power Plus'
|
7852 |
+
|
7853 |
- regex: 'iris[ _]?([^/;]+)(?:\)| Build)'
|
7854 |
model: 'Iris $1'
|
7855 |
- regex: 'Lava[ _]?([^/;]+)(?:/| Build)'
|
7954 |
|
7955 |
# Leagoo
|
7956 |
Leagoo:
|
7957 |
+
regex: 'LEAGOO[ _-]?|(?:M5 EDGE|KIICAA (POWER|MIX)|Leapad[ _]7s|Elite 1|Venture 1|Z10-E)(?:[);/ ]|$)'
|
7958 |
device: 'smartphone'
|
7959 |
models:
|
7960 |
- regex: 'LEAGOO[- _]M8[_-]?Pro(?:[);/ ]|$)'
|
7973 |
model: 'Elite 1'
|
7974 |
- regex: 'Venture 1(?:[);/ ]|$)'
|
7975 |
model: 'Venture 1'
|
7976 |
+
- regex: '(Z10-E)(?:[);/ ]|$)'
|
7977 |
+
model: '$1'
|
7978 |
|
7979 |
- regex: '(Leapad[ _]7s)'
|
7980 |
model: '$1'
|
7992 |
|
7993 |
# LeEco
|
7994 |
LeEco:
|
7995 |
+
regex: 'Letv|LeEco|Le ?X[0-9][^;/]+|Le Max|Le [12]|Le2[_ ]x527|X900 Build|(?:X[89]00\+|X52[67])(?:[);/ ]|$)'
|
7996 |
device: 'smartphone'
|
7997 |
models:
|
7998 |
- regex: 'X800\+'
|
8005 |
model: '$1'
|
8006 |
- regex: 'X900 Build'
|
8007 |
model: 'Le X900'
|
8008 |
+
- regex: '(?:Le ?X526|Le2[_ ]x527|Le 2|X52[67])(?:[);/ ]|$)'
|
8009 |
model: 'Le 2'
|
8010 |
- regex: 'Le ?X([^;/]+) Build'
|
8011 |
model: 'Le X$1'
|
8037 |
|
8038 |
# Lephone
|
8039 |
Lephone:
|
8040 |
+
regex: 'lephone[ _]|lephoneP1'
|
8041 |
device: 'smartphone'
|
8042 |
models:
|
8043 |
- regex: 'lephone[ _](K7|K10)'
|
8044 |
device: 'feature phone'
|
8045 |
model: '$1'
|
8046 |
+
- regex: 'lephone(?:[ _])?(W(1[0125]|[279])|T2|P1)(?:[);/ ]|$)'
|
8047 |
model: '$1'
|
8048 |
- regex: 'lephone_W7_plus'
|
8049 |
model: 'W7 Plus'
|
8056 |
|
8057 |
# lenovo
|
8058 |
Lenovo:
|
8059 |
+
regex: '(?:LNV-)?Lenovo|IdeaTab|IdeaPad|Thinkpad|Yoga Tablet|Tab2A[0-9]-[0-9]{2}[a-z]?|ZUK[ -_]|(?:TB2-X30L|TB3-710I|YT3-X50[ML]|K50a40|TB-(?:X103F|8504F|X304F|X704V|X704A)|A5500-H|A2107A-H|S6000|Z2 Plus|Vibe P1|VIBE C|VIBE [ZX]2|Vibe K5(?: Plus)?|P2A42|L18011|[5-8]01LV|Z2131|K350t|K31-t3|TAB 2 A8-50LC)(?:[);/ ]|$)'
|
8060 |
device: 'smartphone'
|
8061 |
models:
|
8062 |
- regex: 'Lenovo ?G780'
|
8068 |
- regex: 'Lenovo ?A3500-(H|HV|F)'
|
8069 |
model: 'IdeaTab A7-50'
|
8070 |
device: 'tablet'
|
8071 |
+
- regex: '(?:Lenovo[ _])?A5500-[HF]'
|
8072 |
model: 'IdeaTab A8-50'
|
8073 |
device: 'tablet'
|
8074 |
- regex: 'Lenovo ?A7600-[HF]'
|
8107 |
- regex: '801LV(?:[);/ ]|$)'
|
8108 |
model: 'TAB5 10.1"'
|
8109 |
device: 'tablet'
|
8110 |
+
- regex: 'TB-X103F(?:[);/ ]|$)'
|
8111 |
+
model: 'TAB10 10.1"'
|
8112 |
+
device: 'tablet'
|
8113 |
- regex: 'TB-X704A(?:[);/ ]|$)'
|
8114 |
model: 'Moto Tab'
|
8115 |
device: 'tablet'
|
8219 |
model: 'Vibe K5'
|
8220 |
- regex: 'VIBE Z2(?:[);/ ]|$)'
|
8221 |
model: 'Vibe Z2'
|
8222 |
+
- regex: 'VIBE C(?:[);/ ]|$)'
|
8223 |
+
model: 'Vibe C'
|
8224 |
- regex: 'VIBE X2(?:[);/ ]|$)'
|
8225 |
model: 'Vibe X2'
|
8226 |
- regex: 'k33a48(?:[);/ ]|$)'
|
8233 |
model: 'K6 Power'
|
8234 |
- regex: 'P1ma40(?:[);/ ]|$)'
|
8235 |
model: 'Vibe P1m'
|
8236 |
+
- regex: '(?:P1(?:a42|c72)|Vibe P1)(?:[);/ ]|$)'
|
8237 |
model: 'Vibe P1'
|
8238 |
- regex: 'A2016a40(?:[);/ ]|$)'
|
8239 |
model: 'Vibe B'
|
8347 |
|
8348 |
# LG
|
8349 |
LG:
|
8350 |
+
regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?: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]))(?:[);/ ]|$)|NetCast|RS98[78]|RS500|VS(?:50[01]|835|876|880|98[0578]|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-05D|L-03K|L-01[LJK]|L-[45]1A|901LG|A001LG|802LG|402LG|LGT32|L-02K|L-01F|LM-V40'
|
8351 |
device: 'smartphone'
|
8352 |
models:
|
8353 |
- regex: 'LG-D325'
|
8500 |
model: 'Aristo 2'
|
8501 |
- regex: 'LM-X220'
|
8502 |
model: 'Aristo 3'
|
8503 |
+
- regex: 'LM-V40(?:5|9N)?(?:[);/ ]|$)'
|
8504 |
model: 'V40 ThinQ'
|
8505 |
- regex: 'LM-V500N'
|
8506 |
model: 'V50'
|
8769 |
- regex: 'Link5(?:[);/ ]|$)'
|
8770 |
model: 'Link 5'
|
8771 |
|
8772 |
+
# Karbonn (karbonnmobiles.com)
|
8773 |
Karbonn:
|
8774 |
+
regex: '(?:Browser-)?Karbonn|K9 Kavach 4G|K9 Music 4G|K9 Smart|K9 VIRAAT 4G|Aura Sleek Plus|Aura Note Play|Titanium[ _](?:3D-Plex|Octane Plus|Vista 4G|Jumbo|S360|S1[059]|S35|S20[13]|S22|S1|S200 HD)|K-lite F3'
|
8775 |
device: 'smartphone'
|
8776 |
models:
|
8777 |
- regex: 'K9 Kavach 4G'
|
8796 |
model: 'K9 Viraat 4G'
|
8797 |
- regex: 'Titanium[ _]S2[ _]Plus'
|
8798 |
model: 'Titanium S2 Plus'
|
8799 |
+
- regex: 'Titanium[_ ]S(99|360|1[059]|109|35|200 HD|20[13]|22|1)(?:[);/ ]|$)'
|
8800 |
+
model: 'Titanium S$1'
|
8801 |
- regex: 'Titanium Vista 4G'
|
8802 |
model: 'Titanium Vista 4G'
|
8803 |
- regex: 'Titanium Jumbo 2'
|
8804 |
model: 'Titanium Jumbo 2'
|
8805 |
- regex: 'Titanium Jumbo'
|
8806 |
model: 'Titanium Jumbo'
|
8807 |
+
- regex: 'Titanium Octane Plus'
|
8808 |
+
model: 'Titanium Octane Plus'
|
8809 |
+
- regex: 'Titanium[ _]3D-Plex'
|
8810 |
+
model: 'Titanium 3D Plex'
|
8811 |
+
- regex: 'K-lite F3'
|
8812 |
+
model: 'K-Lite F3'
|
8813 |
- regex: 'Karbonn ([a-z0-9]+) WAP-Browser'
|
8814 |
model: '$1'
|
8815 |
device: 'feature phone'
|
8864 |
regex: 'MAJESTIC[ _-]|CRONO ?[0-9]+|TAB (?:647|411) 3G|URANO 77LTE'
|
8865 |
device: 'smartphone'
|
8866 |
models:
|
8867 |
+
- regex: 'URANO 77LTE(?:[);/ ]|$)'
|
8868 |
+
model: 'Urano 77 LTE'
|
8869 |
+
- regex: 'TAB (647|411) 3G'
|
8870 |
+
model: 'Tab $1 3G'
|
8871 |
+
device: 'tablet'
|
8872 |
+
- regex: 'MAJESTIC[ _]Tab([^;/]+)Build'
|
8873 |
+
model: 'Tab$1'
|
8874 |
+
device: 'tablet'
|
8875 |
+
- regex: 'MAJESTIC[ _]Tab([^);/]+)(?:[);/]|$)'
|
8876 |
+
model: 'Tab$1'
|
8877 |
+
device: 'tablet'
|
8878 |
+
- regex: 'MAJESTIC[ _]([^;/]+)Build'
|
8879 |
+
model: '$1'
|
8880 |
+
- regex: 'MAJESTIC[ _]([^);/]+)(?:(?:[);/ ]|$)|$)'
|
8881 |
+
model: '$1'
|
8882 |
+
- regex: 'CRONO ?([0-9]+) Build'
|
8883 |
+
model: 'Crono $1'
|
8884 |
+
- regex: 'CRONO ?([0-9]+)(?:[);/]|$)'
|
8885 |
+
model: 'Crono $1'
|
8886 |
|
8887 |
# Manta Multimedia
|
8888 |
Manta Multimedia:
|
8889 |
+
regex: 'MSP950(1[245]|2[01])|MSP96017|((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))(?:[);/ ]|$)'
|
8890 |
device: 'smartphone'
|
8891 |
models:
|
8892 |
- regex: '((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))(?:[);/ ]|$)'
|
8893 |
device: 'tablet'
|
8894 |
model: '$1'
|
8895 |
+
- regex: 'MSP95012'
|
8896 |
+
model: 'Titano 1'
|
8897 |
- regex: 'MSP95014'
|
8898 |
model: 'Titano 3'
|
8899 |
- regex: 'MSP95015'
|
9046 |
- regex: 'M[_-]PP[Ax]X(470|510|520)U(?:[);/ ]|$)'
|
9047 |
model: 'PhonePad Duo X$1U'
|
9048 |
device: 'smartphone'
|
9049 |
+
- regex: 'M-PPxG(400|501|[457][PM]?)(?:[);/ ]|$)'
|
9050 |
model: 'PhonePad Duo G$1'
|
9051 |
device: 'smartphone'
|
9052 |
+
- regex: 'M-PPxS(470|501|5P?)(?:[);/ ]|$)'
|
9053 |
model: 'PhonePad Duo S$1'
|
9054 |
device: 'smartphone'
|
9055 |
|
9202 |
|
9203 |
# Memup
|
9204 |
Memup:
|
9205 |
+
regex: 'SlidePad ?([^;/]*) Build|SPNG?[0-9]{2,4}[a-z]{0,2}(?:[);/ ]|$)|SP704CE?|SP-NG708-3G'
|
9206 |
device: 'tablet'
|
9207 |
models:
|
9208 |
- regex: 'SlidePad ?([^;/]*) Build'
|
9209 |
model: 'SlidePad $1'
|
9210 |
- regex: 'SPNG([0-9]{2,4}[a-z]{0,2})(?:[);/ ]|$)'
|
9211 |
model: 'SlidePad NG$1'
|
9212 |
+
- regex: 'SP-NG(708)-3G(?:[);/ ]|$)'
|
9213 |
+
model: 'SlidePad NG$1 3G'
|
9214 |
- regex: 'SP704(CE?)'
|
9215 |
model: 'SlidePad 704$1'
|
9216 |
|
9232 |
|
9233 |
# mio
|
9234 |
Mio:
|
9235 |
+
regex: 'MIO(?:/)?([a-z0-9]+)|(?:MOBIX M6|Mio TouchPad 7 Quad Core)(?:[);/ ]|$)'
|
9236 |
device: 'smartphone'
|
9237 |
models:
|
9238 |
- regex: 'MOBIX M6(?:[);/ ]|$)'
|
9239 |
model: 'Mobix M6'
|
9240 |
- regex: 'MIO(?:/)?([a-z0-9]+)'
|
9241 |
model: '$1'
|
9242 |
+
- regex: 'Mio TouchPad 7 Quad Core'
|
9243 |
+
device: 'tablet'
|
9244 |
+
model: 'TouchPad 7 Quad Core'
|
9245 |
|
9246 |
# Miray
|
9247 |
Miray:
|
9314 |
|
9315 |
# Mobicel
|
9316 |
Mobicel:
|
9317 |
+
regex: 'Mobicel_(R1)|(?:Matrix|TRENDY PLUS)(?:[);/ ]|$)'
|
9318 |
device: 'smartphone'
|
9319 |
models:
|
9320 |
- regex: 'Matrix'
|
9321 |
model: 'Matrix'
|
9322 |
+
- regex: 'TRENDY PLUS'
|
9323 |
+
model: 'Trendy Plus'
|
9324 |
- regex: 'Mobicel_(R1)'
|
9325 |
model: '$1'
|
9326 |
|
9677 |
- regex: 'MyTAB-U55GT(?:[);/ ]|$)'
|
9678 |
model: 'U55GT'
|
9679 |
|
9680 |
+
# myphone (myphone.com.ph)
|
9681 |
MyPhone:
|
9682 |
+
regex: '(?:MyPhone|MyPad|MyTab)[ _][^;/)]+( Build|\))|Cube_LTE|myTab10II|HAMMER[ _](Blade2_PRO|IRON_3|Explorer|ENERGY|Titan 2|AXE[_ ](?:M[_ ]LTE|Pro)|Iron 2|Active[2]?(_LTE)?)|C-Smart_pix|myPhone_Fun_8|myA17|myX12|Pocket_2|myT6 DTV|myXI1 (?:Plus|Pro)|myXI3'
|
9683 |
device: 'smartphone'
|
9684 |
models:
|
9685 |
+
# explicit table models
|
9686 |
- regex: 'MyPad[ _]([^;/]+) Build'
|
9687 |
model: 'MyPad $1'
|
9688 |
device: 'tablet'
|
9689 |
- regex: 'MyTab[ _]([^;/]+) Build'
|
9690 |
model: 'MyTab $1'
|
9691 |
device: 'tablet'
|
9692 |
+
- regex: 'myTab_10III'
|
9693 |
+
model: 'MyTab 10 III'
|
9694 |
+
device: 'tablet'
|
9695 |
- regex: 'myTab10II'
|
9696 |
model: 'MyTab 10 II'
|
9697 |
device: 'tablet'
|
9698 |
+
- regex: 'myT6 DTV'
|
9699 |
+
model: 'myT6 DTV'
|
9700 |
+
device: 'tablet'
|
9701 |
+
|
9702 |
+
# explicit smartphones models
|
9703 |
- regex: 'Cube_LTE'
|
9704 |
model: 'Cube LTE'
|
9705 |
- regex: 'HAMMER[ _]ENERGY'
|
9708 |
model: 'Hammer Axe M LTE'
|
9709 |
- regex: 'Hammer Titan 2'
|
9710 |
model: 'Hammer Titan 2'
|
9711 |
+
- regex: 'Hammer[ _]Iron[ _](2|3)'
|
9712 |
+
model: 'Hammer Iron $1'
|
9713 |
+
- regex: 'Hammer[ _]Explorer'
|
9714 |
+
model: 'Hammer Explorer'
|
9715 |
- regex: 'Hammer Active(?:[);/ ]|$)'
|
9716 |
model: 'Hammer Active'
|
9717 |
- regex: 'Hammer_Active2(?:[);/ ]|$)'
|
9724 |
model: 'Hammer Blade 2 Pro'
|
9725 |
- regex: 'C-Smart_pix'
|
9726 |
model: 'C-Smart Pix'
|
9727 |
+
- regex: 'Pocket_2(?:[);/ ]|$)'
|
9728 |
+
model: 'Pocket 2'
|
9729 |
- regex: 'myA17(?:[);/ ]|$)'
|
9730 |
model: 'myA17'
|
9731 |
- regex: 'myPhone_Fun_8'
|
9732 |
model: 'FUN 8'
|
9733 |
+
- regex: 'myX12(?:[);/ ]|$)'
|
9734 |
+
model: 'myX12'
|
9735 |
+
- regex: 'myXI1 Plus(?:[);/ ]|$)'
|
9736 |
+
model: 'myXI1 Plus'
|
9737 |
+
- regex: 'myXI1 Pro(?:[);/ ]|$)'
|
9738 |
+
model: 'myXI1 Pro'
|
9739 |
+
- regex: 'myXI3(?:[);/ ]|$)'
|
9740 |
+
model: 'myXI3'
|
9741 |
+
|
9742 |
+
# general detections
|
9743 |
- regex: 'MyPhone[ _]([^;/)]+)( Build|\))'
|
9744 |
model: '$1'
|
9745 |
|
9785 |
|
9786 |
# Navon
|
9787 |
Navon:
|
9788 |
+
regex: 'Navon[_ ]|(?:Superme_Max|Supreme[_ ](?:Fine|Chief|Pure|Pro)(?:[_ ](?:Mini|Plus))?)(?:[);/ ]|$)'
|
9789 |
device: 'smartphone'
|
9790 |
models:
|
9791 |
- regex: 'Superme_Max(?:[);/ ]|$)'
|
9806 |
model: 'Supreme Pro'
|
9807 |
- regex: 'Navon[_ ]Infinity(?:[);/ ]|$)'
|
9808 |
model: 'Infinity'
|
9809 |
+
- regex: 'Navon[_ ]Platinum 10 3G(?:[);/ ]|$)'
|
9810 |
+
model: 'Platinum 10.1" 3G'
|
9811 |
|
9812 |
# NOA
|
9813 |
NOA:
|
9814 |
+
regex: 'NOA[ _]|Hummer(?:_2019_R|LE)|NextSE'
|
9815 |
device: 'smartphone'
|
9816 |
models:
|
9817 |
- regex: 'NOA[_ ]CORE[_ ]FORTE'
|
9818 |
model: 'Core Forte'
|
9819 |
- regex: 'HummerLE'
|
9820 |
model: 'Hummer LE'
|
9821 |
+
- regex: 'Hummer_2019_R'
|
9822 |
+
model: 'Hummer R (2019)'
|
9823 |
- regex: 'NOA[_ ]Hummer[_ ]Lite'
|
9824 |
model: 'Hummer Lite'
|
9825 |
- regex: 'NOA[_ ]MOVEse'
|
9852 |
|
9853 |
# nec
|
9854 |
NEC:
|
9855 |
+
regex: 'NEC[ _\-]|KGT/2\.0|PC-TE508HAW|portalmmm/1\.0 (?:DB|N)|(?:portalmmm|o2imode)/2.0[ ,]N|(?:N-06C|N-02E)(?:[);/ ]|$)'
|
9856 |
device: 'smartphone'
|
9857 |
models:
|
9858 |
- regex: 'N-06C(?:[);/ ]|$)'
|
9859 |
model: 'Medias Amadana'
|
9860 |
+
- regex: 'N-02E(?:[);/ ]|$)'
|
9861 |
+
model: 'Medias U'
|
9862 |
- regex: '(?:NEC[ _\-]|KGT/2\.0 )([a-z0-9]+)'
|
9863 |
model: '$1'
|
9864 |
- regex: 'portalmmm/1\.0 ((?:DB|N)[a-z0-9]+)'
|
9902 |
regex: 'GTV100'
|
9903 |
device: 'tv'
|
9904 |
models:
|
9905 |
+
- regex: 'GTV100'
|
9906 |
+
model: 'NeoTV Prime'
|
9907 |
|
9908 |
# NeuImage
|
9909 |
NeuImage:
|
9915 |
|
9916 |
# NextBook
|
9917 |
NextBook:
|
9918 |
+
regex: 'Next[0-9]|NX(?:785QC8G|M900MC|008HD8G|010HI8G|M908HC|M726|16A8116K|A8QC116|16A10132S|16A11264)'
|
9919 |
device: 'tablet'
|
9920 |
models:
|
9921 |
- regex: 'NX008HD8G'
|
9922 |
model: 'Premium 8 HD'
|
9923 |
- regex: 'NXA8QC116'
|
9924 |
model: 'Ares 8'
|
9925 |
+
- regex: 'NX16A8116K'
|
9926 |
+
model: 'Ares A8'
|
9927 |
+
- regex: 'NX16A10132S'
|
9928 |
+
model: 'Ares A10'
|
9929 |
+
- regex: 'NX16A11264'
|
9930 |
+
model: 'Ares A11'
|
9931 |
- regex: 'NXM908HC'
|
9932 |
model: 'Premium 9'
|
9933 |
- regex: 'NX010HI8G'
|
9988 |
|
9989 |
# Nomu
|
9990 |
Nomu:
|
9991 |
+
regex: 'Nomu[ _-](?:T18|S30mini|S10)(?:[);/ ]|$)|V1600S(?:[);/ ]|$)'
|
9992 |
device: 'smartphone'
|
9993 |
models:
|
9994 |
- regex: 'Nomu[ _-]T18(?:[);/ ]|$)'
|
9995 |
model: 'T18'
|
9996 |
+
- regex: 'Nomu[ _-]s10(?:[);/ ]|$)'
|
9997 |
+
model: 'S10'
|
9998 |
- regex: 'Nomu[ _-]S30mini(?:[);/ ]|$)'
|
9999 |
model: 'S30 Mini'
|
10000 |
+
- regex: '(V1600S)(?:[);/ ]|$)'
|
10001 |
+
model: '$1'
|
10002 |
|
10003 |
# Nomi
|
10004 |
Nomi:
|
10005 |
+
regex: 'Nomi[ _-]|(C101010 Ultra2|i501[234]|i5032|i50[57]0|i5510|i5532|C0(700(?:[02358]|2HD)|7850)|C1010[0-3])(?:[);/ ]|$)'
|
10006 |
device: 'smartphone'
|
10007 |
models:
|
10008 |
- regex: 'i501[23](?:[);/ ]|$)'
|
10009 |
model: 'Evo M2'
|
10010 |
+
- regex: 'I5070(?:[);/ ]|$)'
|
10011 |
+
model: 'Iron-X'
|
10012 |
- regex: 'i5014(?:[);/ ]|$)'
|
10013 |
model: 'Evo M4'
|
10014 |
- regex: 'i5032(?:[);/ ]|$)'
|
10145 |
|
10146 |
# Odys
|
10147 |
Odys:
|
10148 |
+
regex: 'ODYS[ _-]|IEOS[_ ]([^/;]+)|NOON(?:_PRO)? Build|SPACE10_(?:PLUS|PRO)_3G|THOR_?10|TAO_X10|RAPID_?(?:10|7)_?LTE|MAVEN_?10_|CONNECT[78]|ELEMENT10_PLUS_3G|XELIO[_0-9P]|ADM816HC|ADM8000KP|NEO6_LTE|EOS10|AEON|FALCON_10_PLUS_3G|FUSION|THANOS_10|MAVEN_X10_HD(?:_LTE)?|JUNIOR_8_PRO|JuniorT8Pro|(?:NOVA|PYRO)_X?7_PLUS_3G|UNO_X8|SLADE_X55'
|
10149 |
device: 'tablet'
|
10150 |
models:
|
10151 |
- regex: 'XELIO[_ ]A10'
|
10162 |
model: 'Xelio 10 Xtreme'
|
10163 |
- regex: 'XELIO10_PLUS_3G'
|
10164 |
model: 'Xelio 10 Plus 3G'
|
10165 |
+
- regex: 'XELIO10_HD_PLUS_3G'
|
10166 |
+
model: 'Xelio 10 HD Plus 3G'
|
10167 |
+
- regex: 'XELIO_10_HD'
|
10168 |
+
model: 'Xelio 10 HD'
|
10169 |
- regex: 'ELEMENT10_PLUS_3G'
|
10170 |
model: 'Element 10 Plus 3G'
|
10171 |
- regex: 'CONNECT8PLUS'
|
10196 |
model: 'Space 10 Pro 3G'
|
10197 |
- regex: 'THOR_?10 Build'
|
10198 |
model: 'Thor 10'
|
10199 |
+
- regex: 'JuniorT8Pro'
|
10200 |
+
model: 'Junior T8 Pro'
|
10201 |
- regex: 'JUNIOR_8_PRO'
|
10202 |
model: 'Junior 8 Pro'
|
10203 |
- regex: 'ADM816HC'
|
10210 |
model: 'Falcon 10 Plus 3G'
|
10211 |
- regex: 'FUSION'
|
10212 |
model: 'Fusion 7'
|
10213 |
+
- regex: 'UNO_X8'
|
10214 |
+
model: 'Uno X8'
|
|
|
10215 |
- regex: 'ADM8000KP'
|
10216 |
model: 'Titan'
|
10217 |
+
- regex: 'PYRO_7_PLUS_3G'
|
10218 |
+
model: 'Pyro 7 Plus 3G'
|
10219 |
+
- regex: 'NOVA_X7_PLUS_3G'
|
10220 |
+
model: 'Nova X7 Plus 3G'
|
10221 |
+
- regex: 'ODYS_NOVA_X7'
|
10222 |
+
model: 'Nova X7'
|
10223 |
- regex: 'THOR_?10_PLUS_3G'
|
10224 |
model: 'Thor 10 Plus 3G'
|
10225 |
+
|
10226 |
+
# explicit smartphones models
|
10227 |
+
- regex: 'NEO6[_ ]LTE'
|
10228 |
+
model: 'Neo 6 LTE'
|
10229 |
+
device: 'smartphone'
|
10230 |
+
- regex: 'SLADE_X55'
|
10231 |
+
model: 'Slade X55'
|
10232 |
+
device: 'smartphone'
|
10233 |
+
|
10234 |
+
# general detections
|
10235 |
- regex: 'IEOS[ _]([^/;]+) Build'
|
10236 |
model: 'Ieos $1'
|
10237 |
- regex: '(?:ODYS[ _-])?NOON Build'
|
10281 |
- regex: 'Obi[ _-]([^;/)]+)(?:[;/)]|$)'
|
10282 |
model: '$1'
|
10283 |
|
10284 |
+
# Okapia
|
10285 |
+
Okapia:
|
10286 |
+
regex: 'Signature (?:L|Pro|Touch)'
|
10287 |
+
device: 'smartphone'
|
10288 |
+
models:
|
10289 |
+
- regex: 'Signature (L|Pro|Touch)'
|
10290 |
+
model: 'Signature $1'
|
10291 |
+
|
10292 |
# onda
|
10293 |
Onda:
|
10294 |
+
regex: 'Onda|(?:(?:V820w|V891[w]?|V919(?: 3G)? Air)[ _-]DualOS|(?:V919 4G Air|V989 Air|V972) Core[48]|T2101L2B1C| V10 4G|OBOOK (?:20 SE|20 PLUS DUALOS)|OBOOK10 SE|V919 Air CH DualOS)(?:[);/ ]|$)'
|
10295 |
device: 'smartphone'
|
10296 |
models:
|
10297 |
# explicit tablet models
|
10319 |
- regex: 'V919 4G Air Core8'
|
10320 |
model: 'V919 4G Air Core 8'
|
10321 |
device: 'tablet'
|
10322 |
+
- regex: 'V972 Core4'
|
10323 |
+
model: 'V919 Core 4'
|
10324 |
+
device: 'tablet'
|
10325 |
- regex: 'V989 Air Core8'
|
10326 |
model: 'V989 Air Core 8'
|
10327 |
device: 'tablet'
|
10387 |
|
10388 |
# Realme (sub brand Oppo)
|
10389 |
Realme:
|
10390 |
+
regex: 'Realme[ _]|(?:RMX(?:19(03|4[1235]|19|9[23]|2[157]|[01379]1|73)|20(?:[025-7]1|[037]2|2[57]|63|7[56]|8[56]|[234]0)|21(?:[12]1|42|55|7[60]|8[059])|2200|18(0[1579]|11|3[13]|2[157]|[45]1|45))|(?:OPPO[ _]?)?CPH1861)(?:[);/ ]|$)'
|
10391 |
device: 'smartphone'
|
10392 |
models:
|
10393 |
- regex: '(?:OPPO[ _]?)?CPH1861(?:[);/ ]|$)'
|
10430 |
model: '6S'
|
10431 |
- regex: 'RMX206[13](?:[);/ ]|$)'
|
10432 |
model: '6 Pro'
|
10433 |
+
- regex: 'RMX2155'
|
10434 |
+
model: '7'
|
10435 |
- regex: 'RMX2170'
|
10436 |
model: '7 Pro'
|
10437 |
- regex: 'RMX1925(?:[);/ ]|$)'
|
10472 |
|
10473 |
# Oppo (oppo.com)
|
10474 |
OPPO:
|
10475 |
+
regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|R8001|OPG01|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|A33f|A33fw|A37fw?|PAAM00|PAAT00|PAC[TM]00)(?:[);/ ]|$)|R7kf|R7plusf|R7Plusm|A1601|CPH[0-9]{4}|CPH19(69|79|23|1[179])|PB(A[TM]00|CT10|BT30|CM[13]0|[FD]M00)|P(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|DK[TM]00|DPT00|DB[TM]00|DCM00|[CD]NM00|DVM00|DY[TM]20|DNT00|EA[TM]00)'
|
10476 |
device: 'smartphone'
|
10477 |
models:
|
10478 |
- regex: 'PCHM10(?:[);/ ]|$)'
|
10551 |
model: 'AX7'
|
10552 |
- regex: '(?:OPPO[ _]?)?X9009(?:[);/ ]|$)'
|
10553 |
model: 'F1 Plus'
|
10554 |
+
- regex: 'CPH191[135](?:[);/ ]|$)'
|
10555 |
model: 'F11'
|
10556 |
- regex: 'CPH19(?:69|87)(?:[);/ ]|$)'
|
10557 |
model: 'F11 Pro'
|
10558 |
+
- regex: '(?:OPPO[ _]?)?(?:CPH2119)(?:[);/ ]|$)'
|
10559 |
+
model: 'F17 Pro'
|
10560 |
- regex: '(?:OPPO[ _]?)?A1601(?:[);/ ]|$)'
|
10561 |
model: 'F1s'
|
10562 |
- regex: '(?:OPPO[ _]?)?CPH1609(?:[);/ ]|$)'
|
10631 |
model: 'Piano'
|
10632 |
- regex: '(?:OPPO[ _]?)?CPH1707(?:[);/ ]|$)'
|
10633 |
model: 'R11'
|
10634 |
+
- regex: 'R8001(?:[);/ ]|$)'
|
10635 |
+
model: 'R1K'
|
10636 |
- regex: '(?:OPPO[ _]?)?CPH1719(?:[);/ ]|$)'
|
10637 |
model: 'R11s'
|
10638 |
- regex: '(?:OPPO[ _]?)?CPH1721(?:[);/ ]|$)'
|
10647 |
model: 'R17'
|
10648 |
- regex: '(?:OPPO[ _]?)?(?:CPH1893)(?:[);/ ]|$)'
|
10649 |
model: 'R17 Neo'
|
10650 |
+
- regex: '(?:OPPO[ _]?)?(?:CPH1877|PBD[MT]00)(?:[);/ ]|$)'
|
10651 |
model: 'R17 Pro'
|
10652 |
- regex: '(?:OPPO[ _]?)?R8006(?:[);/ ]|$)'
|
10653 |
model: 'R1L'
|
10766 |
|
10767 |
# Oukitel
|
10768 |
Oukitel:
|
10769 |
+
regex: 'OUKITEL|(?:(?:C15|C16|K10000|K[46]000)(?:[ _]Pro)|K4000Pro|U20_Plus|WP5000|WP[58] Pro|K[46]000[ _](?:Plus|Lite)|Y4800|K10000|K[4567]000| WP[5-7])(?:[);/ ]|$)'
|
10770 |
device: 'smartphone'
|
10771 |
models:
|
10772 |
+
- regex: '(C15|C16|K10000|K[46]000|WP[258]|U15)[ _]?Pro(?:[);/ ]|$)'
|
10773 |
model: '$1 Pro'
|
10774 |
- regex: 'OUKITEL K([37])(?:[);/ ]|$)'
|
10775 |
model: 'K$1'
|
10776 |
- regex: '(K10000)[ _]Max(?:[);/ ]|$)'
|
10777 |
model: '$1 Max'
|
10778 |
+
- regex: '(U20|K[46]000)[_ ]?Plus(?:[);/ ]|$)'
|
10779 |
model: '$1 Plus'
|
10780 |
- regex: '(K4000)[_ ]Lite(?:[);/ ]|$)'
|
10781 |
model: '$1 Lite'
|
10782 |
+
- regex: '(Y4800|K10000|K[4567]000|WP2|WP5000)(?:[);/ ]|$)'
|
10783 |
+
model: '$1'
|
10784 |
+
- regex: ' (WP[5-7])(?:[);/ ]|$)'
|
10785 |
model: '$1'
|
10786 |
|
10787 |
# Ouki
|
10825 |
|
10826 |
# Oysters
|
10827 |
Oysters:
|
10828 |
+
regex: 'Oysters|T84ERI[ _]3G|T72HM(s_)?3G|T102MS_3G|T102ER3G|(T74HMi|T84Bi)[_ ]4G|T74MR4G|T84Ni[_ ][34]G|Pacific[ ]?800i|T104B_[34]G|IndianV|T72HA_3G|T74D_3G|T74N_3G|T74SC_3G|T74Mai_3G|T104MBi_3G|T104SCi_3G|T104ER4G|Atlantic4G|AntarcticE|T7V 3G'
|
10829 |
device: 'tablet'
|
10830 |
models:
|
10831 |
- regex: 'Pacific[ ]?800i'
|
10845 |
model: '$1'
|
10846 |
- regex: '(T84ERI[ _]3G|T72HM(s_)?3G|(?:(T74HMi|T84Bi)[_ ]4G)|T84Ni[_ ][34]G)'
|
10847 |
model: '$1'
|
10848 |
+
- regex: '(T74MR|T102MS|T104B|T74SC|T74[DN]|T72HA|T102ER|T104SCi|T104MBi|T104ER|T7V)[ _]?([34]G)'
|
10849 |
model: '$1 $2'
|
10850 |
- regex: 'T74Mai_3G'
|
10851 |
model: 'T74MAi 3G'
|
10953 |
|
10954 |
# ArmPhone
|
10955 |
ArmPhone:
|
10956 |
+
regex: '(TSD Octa A0520P|TSD Quadra A050[59]P)(?:[);/ ]|$)'
|
10957 |
device: 'smartphone'
|
10958 |
model: '$1'
|
10959 |
|
10979 |
|
10980 |
# philips
|
10981 |
Philips:
|
10982 |
+
regex: 'Philips|AND1E(?:[);/ ]|$)|NETTV/|PI3210G|TLE(821L|722G)|TPM1[79]1E|70PUH6774_96|QM16[134]E|Xenium S[25]66|S397|W5510'
|
10983 |
device: 'smartphone'
|
10984 |
models:
|
10985 |
- regex: '(?:Philips[_ ])?Xenium[ _](S[25]66|V787)(?:[);/ ]|$)'
|
10986 |
model: 'Xenium $1'
|
10987 |
+
- regex: '(?:Philips[_ ])?(S397|W5510)(?:[);/ ]|$)'
|
10988 |
+
model: '$1'
|
10989 |
- regex: 'AND1E(?: TV)?(?:[);/ ]|$)'
|
10990 |
model: 'Android TV'
|
10991 |
device: 'tv'
|
11061 |
model: 'Play Three v$1'
|
11062 |
- regex: 'Play Two'
|
11063 |
model: 'Play Two'
|
11064 |
+
- regex: 'Play Five'
|
11065 |
+
model: 'Play Five'
|
11066 |
+
- regex: 'Pixus[ _]Sprint'
|
11067 |
+
model: 'Sprint'
|
11068 |
- regex: 'Touch 7 3G'
|
11069 |
model: 'Touch 7 3G'
|
11070 |
- regex: 'Pixus[ _]hiMax'
|
11073 |
model: 'Blast 10.1"'
|
11074 |
- regex: 'Pixus[ _]Joker'
|
11075 |
model: 'Joker 10.1"'
|
11076 |
+
- regex: 'Pixus Blaze 10.1 3G'
|
11077 |
+
model: 'Blaze 10.1" 3G'
|
11078 |
|
11079 |
- regex: 'Raze'
|
11080 |
model: 'Raze'
|
11213 |
|
11214 |
# RoverPad or Rover Pad
|
11215 |
RoverPad:
|
11216 |
+
regex: '(?:Rover[ ]?Pad|RoverPhone|Sky 7.85 3G)(?:[);/ ]|$)'
|
11217 |
device: 'tablet'
|
11218 |
models:
|
11219 |
- regex: 'RoverPhone(?:[);/ ]|$)'
|
11220 |
model: ''
|
11221 |
device: 'smartphone'
|
11222 |
+
- regex: '(?:Rover[ ]?Pad)?sky 7.85(?: 3G)?(?:[);/ ]|$)'
|
11223 |
+
model: 'Sky 7.85" 3G'
|
11224 |
- regex: 'RoverPad (10.4|Air S70|9.7 3G|Sky 9.7|3W A73|3W7|3WT70|3W9.4)(?:[);/ ]|$)'
|
11225 |
model: '$1'
|
11226 |
|
11227 |
+
|
11228 |
# Roadrover
|
11229 |
Roadrover:
|
11230 |
regex: 'Roadrover ChangAn S'
|
11292 |
|
11293 |
# Soundmax
|
11294 |
Soundmax:
|
11295 |
+
regex: '((?:SM-LED32M(?:11|04)S)(?:_-Ver01)?|SM-LED40M04S)(?:[);/ ]|$)'
|
11296 |
+
device: 'tv'
|
11297 |
+
model: '$1'
|
11298 |
|
11299 |
# Samsung
|
11300 |
Samsung:
|
11315 |
# explicit tablet models
|
11316 |
- regex: '(?:SAMSUNG-)?(?:GT-)?N5100'
|
11317 |
device: 'tablet'
|
11318 |
+
model: 'Galaxy Note 8.0"'
|
11319 |
- regex: '(?:SAMSUNG-)?SM-T677(?:[ATV]|N[KL])?(?:[);/ ]|$)'
|
11320 |
device: 'tablet'
|
11321 |
+
model: 'Galaxy View 18.4" LTE'
|
11322 |
- regex: '(?:SAMSUNG-)?SM-T670(?:[);/ ]|$)'
|
11323 |
device: 'tablet'
|
11324 |
+
model: 'Galaxy View 18.4" WiFi'
|
11325 |
- regex: '(?:SAMSUNG-)?(?:GT-)?N5110'
|
11326 |
device: 'tablet'
|
11327 |
+
model: 'Galaxy Note 8.0" WiFi'
|
11328 |
- regex: '(?:SAMSUNG-)?GT-N5120'
|
11329 |
device: 'tablet'
|
11330 |
+
model: 'Galaxy Note 8.0" LTE'
|
11331 |
- regex: '(?:SAMSUNG-)?GT-N8000'
|
11332 |
device: 'tablet'
|
11333 |
+
model: 'Galaxy Note 10.1"'
|
11334 |
- regex: '(?:SAMSUNG-)?GT-N8010'
|
11335 |
device: 'tablet'
|
11336 |
+
model: 'Galaxy Note 10.1" WiFi'
|
11337 |
- regex: '(?:SAMSUNG-)?GT-N8020'
|
11338 |
device: 'tablet'
|
11339 |
+
model: 'Galaxy Note 10.1" LTE'
|
11340 |
- regex: '(?:SAMSUNG-)?GT-P1000M?|SCH-I800'
|
11341 |
device: 'tablet'
|
11342 |
+
model: 'Galaxy Tab'
|
11343 |
- regex: '(?:SAMSUNG-)?GT-P3100B?'
|
11344 |
device: 'tablet'
|
11345 |
+
model: 'Galaxy Tab 2 7"'
|
11346 |
- regex: '(?:SAMSUNG-)?GT-P311[03]'
|
11347 |
device: 'tablet'
|
11348 |
+
model: 'Galaxy Tab 2 7" WiFi'
|
11349 |
- regex: '(?:SAMSUNG-)?GT-P5100|SCH-I915'
|
11350 |
device: 'tablet'
|
11351 |
+
model: 'Galaxy Tab 2 10.1"'
|
11352 |
- regex: '(?:SAMSUNG-)?GT-P511[03]'
|
11353 |
device: 'tablet'
|
11354 |
+
model: 'Galaxy Tab 2 10.1" WiFi'
|
11355 |
- regex: '(?:SAMSUNG-)?SM-T217T'
|
11356 |
device: 'tablet'
|
11357 |
+
model: 'Galaxy Tab 3 7.0" 4G'
|
11358 |
- regex: '(?:SAMSUNG-)?GT-P5200'
|
11359 |
device: 'tablet'
|
11360 |
+
model: 'Galaxy Tab 3 10.1"'
|
11361 |
- regex: '(?:SAMSUNG-)?GT-P5210'
|
11362 |
device: 'tablet'
|
11363 |
+
model: 'Galaxy Tab 3 10.1" WiFi'
|
11364 |
- regex: '(?:SAMSUNG-)?GT-P5220'
|
11365 |
device: 'tablet'
|
11366 |
+
model: 'Galaxy Tab 3 10.1" LTE'
|
11367 |
- regex: '(?:SAMSUNG-)?GT-P6200'
|
11368 |
device: 'tablet'
|
11369 |
+
model: 'Galaxy Tab 7" Plus'
|
11370 |
- regex: '(?:SAMSUNG-)?GT-P6201'
|
11371 |
device: 'tablet'
|
11372 |
+
model: 'Galaxy Tab 7" Plus N'
|
11373 |
- regex: '(?:SAMSUNG-)?GT-P6810'
|
11374 |
device: 'tablet'
|
11375 |
+
model: 'Galaxy Tab 7.7"'
|
11376 |
- regex: '(?:SAMSUNG-)?GT-P7100'
|
11377 |
device: 'tablet'
|
11378 |
+
model: 'Galaxy Tab 10.1v'
|
11379 |
- regex: '(?:SAMSUNG-)?GT-P75[01]0'
|
11380 |
device: 'tablet'
|
11381 |
+
model: 'Galaxy Tab 10.1"'
|
11382 |
- regex: '(?:SAMSUNG-)?SM-P600'
|
11383 |
device: 'tablet'
|
11384 |
+
model: 'Galaxy Note 10.1" 2014 Edition WiFi'
|
11385 |
- regex: '(?:SAMSUNG-)?SM-P60[12]'
|
11386 |
device: 'tablet'
|
11387 |
+
model: 'Galaxy Note 10.1" 2014 Edition'
|
11388 |
- regex: '(?:SAMSUNG-)?SM-(?:P605|P607T)'
|
11389 |
device: 'tablet'
|
11390 |
+
model: 'Galaxy Note 10.1" 2014 Edition LTE'
|
11391 |
- regex: '(?:SAMSUNG-)?SM-P900'
|
11392 |
device: 'tablet'
|
11393 |
+
model: 'Galaxy NotePRO 12.2" WiFi'
|
11394 |
- regex: '(?:SAMSUNG-)?SM-P901'
|
11395 |
device: 'tablet'
|
11396 |
+
model: 'Galaxy NotePRO 12.2"'
|
11397 |
- regex: '(?:SAMSUNG-)?SM-P905'
|
11398 |
device: 'tablet'
|
11399 |
+
model: 'Galaxy NotePRO 12.2" LTE'
|
11400 |
- regex: '(?:SAMSUNG-)?SM-P587(?:[);/ ]|$)'
|
11401 |
device: 'tablet'
|
11402 |
+
model: 'Galaxy Tab A 10.1" with S Pen (2016) LTE'
|
11403 |
- regex: '(?:SAMSUNG-)?SM-P205(?:[);/ ]|$)'
|
11404 |
device: 'tablet'
|
11405 |
+
model: 'Galaxy Tab A 8.0" with S Pen (2019) LTE'
|
11406 |
- regex: '(?:SAMSUNG-)?SM-P200(?:[);/ ]|$)'
|
11407 |
device: 'tablet'
|
11408 |
+
model: 'Galaxy Tab A 8.0" with S Pen (2019) WiFi'
|
11409 |
- regex: '(?:SAMSUNG-)?SM-T11[03]'
|
11410 |
device: 'tablet'
|
11411 |
+
model: 'Galaxy Tab 3 7.0" Lite WiFi'
|
11412 |
- regex: '(?:SAMSUNG-)?SM-(?:T830[X]?|T837R4)(?:[);/ ]|$)'
|
11413 |
device: 'tablet'
|
11414 |
+
model: 'Galaxy Tab S4 10.5" WiFi'
|
11415 |
- regex: '(?:SAMSUNG-)?SM-(?:T835[CN]?|T837[VTA])(?:[);/ ]|$)'
|
11416 |
device: 'tablet'
|
11417 |
+
model: 'Galaxy Tab S4 10.5"'
|
11418 |
- regex: '(?:SAMSUNG-)?SM-(?:T725[N]?|T720X|T727[AV])(?:[);/ ]|$)'
|
11419 |
device: 'tablet'
|
11420 |
+
model: 'Galaxy Tab S5e 10.5"'
|
11421 |
- regex: '(?:SAMSUNG-)?SM-T720(?:[);/ ]|$)'
|
11422 |
device: 'tablet'
|
11423 |
+
model: 'Galaxy Tab S5e 10.5" WiFi'
|
11424 |
- regex: '(?:SAMSUNG-)?SM-T865N?(?:[);/ ]|$)'
|
11425 |
device: 'tablet'
|
11426 |
+
model: 'Galaxy Tab S6 10.5"'
|
11427 |
- regex: '(?:SAMSUNG-)?SM-T867[V]?(?:[);/ ]|$)'
|
11428 |
device: 'tablet'
|
11429 |
+
model: 'Galaxy Tab S6 10.5" LTE'
|
11430 |
- regex: '(?:SAMSUNG-)?SM-P615(?:[);/ ]|$)'
|
11431 |
device: 'tablet'
|
11432 |
+
model: 'Galaxy Tab S6 10.4" Lite'
|
11433 |
- regex: '(?:SAMSUNG-)?SM-P610(?:[);/ ]|$)'
|
11434 |
device: 'tablet'
|
11435 |
+
model: 'Galaxy Tab S6 10.4" Lite WiFi'
|
11436 |
- regex: '(?:SAMSUNG-)?SM-T860(?:[);/ ]|$)'
|
11437 |
device: 'tablet'
|
11438 |
+
model: 'Galaxy Tab S6 10.5" WiFi'
|
11439 |
- regex: '(?:SAMSUNG-)?SM-T111[M]?(?:[);/ ]|$)'
|
11440 |
device: 'tablet'
|
11441 |
+
model: 'Galaxy Tab 3 7.0" Lite'
|
11442 |
- regex: '(?:SAMSUNG-)?SM-T116(?:BU|NU|NY)?'
|
11443 |
device: 'tablet'
|
11444 |
+
model: 'Galaxy Tab 3 V'
|
11445 |
- regex: '(?:SAMSUNG-)?SM-(?:T2105|T212)'
|
11446 |
device: 'tablet'
|
11447 |
+
model: 'Galaxy Tab 3 7.0" Kids'
|
11448 |
- regex: '(?:SAMSUNG-)?SM-T210R?'
|
11449 |
device: 'tablet'
|
11450 |
+
model: 'Galaxy Tab 3 7.0" WiFi'
|
11451 |
- regex: '(?:SAMSUNG-)?SM-T21(?:[15]|7[AS])'
|
11452 |
device: 'tablet'
|
11453 |
+
model: 'Galaxy Tab 3 7.0"'
|
11454 |
- regex: '(?:SAMSUNG-)?SM-T230(?:NU)?'
|
11455 |
device: 'tablet'
|
11456 |
+
model: 'Galaxy Tab 4 7.0" WiFi'
|
11457 |
- regex: '(?:SAMSUNG-)?SM-T23[15]|403SC'
|
11458 |
device: 'tablet'
|
11459 |
+
model: 'Galaxy Tab 4 7.0" 3G'
|
11460 |
- regex: '(?:SAMSUNG-)?SM-(?:T239|T237P)'
|
11461 |
device: 'tablet'
|
11462 |
+
model: 'Galaxy Tab 4 7.0" LTE'
|
11463 |
- regex: '(?:SAMSUNG-)?SM-T310'
|
11464 |
device: 'tablet'
|
11465 |
+
model: 'Galaxy Tab 3 8.0" WiFi'
|
11466 |
- regex: '(?:SAMSUNG-)?SM-T311'
|
11467 |
device: 'tablet'
|
11468 |
+
model: 'Galaxy Tab 3 8.0"'
|
11469 |
- regex: '(?:SAMSUNG-)?SM-T315'
|
11470 |
device: 'tablet'
|
11471 |
+
model: 'Galaxy Tab 3 8.0" LTE'
|
11472 |
- regex: '(?:SAMSUNG-)?SM-T330'
|
11473 |
device: 'tablet'
|
11474 |
+
model: 'Galaxy Tab 4 8.0" WiFi'
|
11475 |
- regex: '(?:SAMSUNG-)?SM-(?:T33[215]|T337[AVT])'
|
11476 |
device: 'tablet'
|
11477 |
+
model: 'Galaxy Tab 4 8.0" LTE'
|
11478 |
- regex: '(?:SAMSUNG-)?SM-T520'
|
11479 |
device: 'tablet'
|
11480 |
+
model: 'Galaxy TabPRO 10.1" WiFi'
|
11481 |
- regex: '(?:SAMSUNG-)?SM-(?:T53[15]|T537[AV])'
|
11482 |
device: 'tablet'
|
11483 |
+
model: 'Galaxy Tab 4 10.1" LTE'
|
11484 |
- regex: '(?:SAMSUNG-)?SM-T536(?:[);/ ]|$)'
|
11485 |
device: 'tablet'
|
11486 |
+
model: 'Galaxy Tab 4 10.1" Advanced'
|
11487 |
- regex: '(?:SAMSUNG-)?SM-T320'
|
11488 |
device: 'tablet'
|
11489 |
+
model: 'Galaxy TabPRO 8.4" WiFi'
|
11490 |
- regex: '(?:SAMSUNG-)?SM-T325'
|
11491 |
device: 'tablet'
|
11492 |
+
model: 'Galaxy TabPRO 8.4" LTE'
|
11493 |
- regex: '(?:SAMSUNG-)?SM-T525'
|
11494 |
device: 'tablet'
|
11495 |
+
model: 'Galaxy TabPRO 10.1" LTE'
|
11496 |
- regex: '(?:SAMSUNG-)?SM-(?:T530(?:NU)?|T533)'
|
11497 |
device: 'tablet'
|
11498 |
+
model: 'Galaxy Tab 4 10.1" WiFi'
|
11499 |
- regex: '(?:SAMSUNG-)?SM-T700'
|
11500 |
device: 'tablet'
|
11501 |
+
model: 'Galaxy Tab S 8.4" WiFi'
|
11502 |
- regex: '(?:SAMSUNG-)?SM-(?:T705|T707A)'
|
11503 |
device: 'tablet'
|
11504 |
+
model: 'Galaxy Tab S 8.4" LTE'
|
11505 |
- regex: '(?:SAMSUNG-)?SM-T800'
|
11506 |
device: 'tablet'
|
11507 |
+
model: 'Galaxy Tab S 10.5" WiFi'
|
11508 |
- regex: '(?:SAMSUNG-)?(?:SM-(?:T805|T807[VP]?)|SCT21)'
|
11509 |
device: 'tablet'
|
11510 |
+
model: 'Galaxy Tab S 10.5" LTE'
|
11511 |
- regex: '(?:SAMSUNG-)?SM-(?:T813|T810)'
|
11512 |
device: 'tablet'
|
11513 |
+
model: 'Galaxy Tab S2 9.7" WiFi'
|
11514 |
- regex: '(?:SAMSUNG-)?SM-(?:T719[YC]?|T715(?:[YC]|N0)?)(?:[);/ ]|$)'
|
11515 |
device: 'tablet'
|
11516 |
+
model: 'Galaxy Tab S2 8.0" LTE'
|
11517 |
- regex: '(?:SAMSUNG-)?SM-(?:T71[03]|T710X)(?:[);/ ]|$)'
|
11518 |
device: 'tablet'
|
11519 |
+
model: 'Galaxy Tab S2 8.0" WiFi'
|
11520 |
- regex: '(?:SAMSUNG-)?SM-(?:T815|T817[ATW]?|T818[ATW]|T819[Y]?)'
|
11521 |
device: 'tablet'
|
11522 |
+
model: 'Galaxy Tab S2 9.7" LTE'
|
11523 |
- regex: '(?:SAMSUNG-)?SM-T820'
|
11524 |
device: 'tablet'
|
11525 |
+
model: 'Galaxy Tab S3 9.7" WiFi'
|
11526 |
- regex: '(?:SAMSUNG-)?SM-T82[57]'
|
11527 |
device: 'tablet'
|
11528 |
+
model: 'Galaxy Tab S3 9.7" LTE'
|
11529 |
- regex: '(?:SAMSUNG-)?SM-T900'
|
11530 |
device: 'tablet'
|
11531 |
+
model: 'Galaxy TabPRO 12.2" WiFi'
|
11532 |
- regex: '(?:SAMSUNG-)?SM-T280'
|
11533 |
device: 'tablet'
|
11534 |
+
model: 'Galaxy Tab A 7.0" WiFi'
|
11535 |
- regex: '(?:SAMSUNG-)?SM-T285'
|
11536 |
device: 'tablet'
|
11537 |
+
model: 'Galaxy Tab A 7.0" LTE'
|
11538 |
- regex: '(?:SAMSUNG-)?SM-T3[58]0'
|
11539 |
device: 'tablet'
|
11540 |
+
model: 'Galaxy Tab A 8.0" WiFi'
|
11541 |
- regex: '(?:SAMSUNG-)?SM-(?:P350|T3[58]5|T357[TW])'
|
11542 |
device: 'tablet'
|
11543 |
+
model: 'Galaxy Tab A 8.0" LTE'
|
11544 |
- regex: '(?:SAMSUNG-)?SM-T387(?:R4|VK|AA|[WVT])'
|
11545 |
device: 'tablet'
|
11546 |
+
model: 'Galaxy Tab A 8.0" LTE (2018)'
|
11547 |
- regex: '(?:SAMSUNG-)?SM-T295'
|
11548 |
device: 'tablet'
|
11549 |
+
model: 'Galaxy Tab A 8.0" LTE (2019)'
|
11550 |
- regex: '(?:SAMSUNG-)?SM-T290'
|
11551 |
device: 'tablet'
|
11552 |
+
model: 'Galaxy Tab A 8.0" WiFi (2019)'
|
11553 |
- regex: '(?:SAMSUNG-)?SM-(?:P355([MY])?|T550)'
|
11554 |
device: 'tablet'
|
11555 |
+
model: 'Galaxy Tab A 9.7" WiFi'
|
11556 |
- regex: '(?:SAMSUNG-)?SM-(?:P550|P555(M)?|T555)'
|
11557 |
device: 'tablet'
|
11558 |
+
model: 'Galaxy Tab A 9.7" LTE'
|
11559 |
- regex: '(?:SAMSUNG-)?SM-(?:T58[05]|P58[05])'
|
11560 |
device: 'tablet'
|
11561 |
+
model: 'Galaxy Tab A 10.1" WiFi (2016)'
|
11562 |
- regex: '(?:SAMSUNG-)?SM-T587[P]?'
|
11563 |
device: 'tablet'
|
11564 |
+
model: 'Galaxy Tab A 10.1" LTE (2016)'
|
11565 |
- regex: '(?:SAMSUNG-)?SM-T59[057]'
|
11566 |
device: 'tablet'
|
11567 |
+
model: 'Galaxy Tab A 10.5" LTE (2018)'
|
11568 |
- regex: '(?:SAMSUNG-)?SM-T51[05]'
|
11569 |
device: 'tablet'
|
11570 |
+
model: 'Galaxy Tab A 10.1" (2019)'
|
11571 |
- regex: '(?:SAMSUNG-)?SM-(?:T37[57]|T378[KLSV])'
|
11572 |
device: 'tablet'
|
11573 |
+
model: 'Galaxy Tab E 8.0"'
|
11574 |
- regex: '(?:SAMSUNG-)?SM-T56[02]'
|
11575 |
device: 'tablet'
|
11576 |
+
model: 'Galaxy Tab E 9.6" WiFi'
|
11577 |
- regex: '(?:SAMSUNG-)?SM-T561'
|
11578 |
device: 'tablet'
|
11579 |
+
model: 'Galaxy Tab E 9.6" 3G'
|
11580 |
- regex: '(?:SAMSUNG-)?SM-T567V'
|
11581 |
device: 'tablet'
|
11582 |
+
model: 'Galaxy Tab E 9.6" 4G'
|
11583 |
- regex: '(?:SAMSUNG-)?SM-T365(?:[);/ ]|$)'
|
11584 |
device: 'tablet'
|
11585 |
+
model: 'Galaxy Tab Active 8.0"'
|
11586 |
- regex: '(?:SAMSUNG-)?SM-T360(?:[);/ ]|$)'
|
11587 |
device: 'tablet'
|
11588 |
+
model: 'Galaxy Tab Active 8.0" WiFi'
|
11589 |
- regex: '(?:SAMSUNG-)?SM-T39[057][U]?(?:[);/ ]|$)'
|
11590 |
device: 'tablet'
|
11591 |
+
model: 'Galaxy Tab Active 2 8.0"'
|
11592 |
- regex: '(?:SAMSUNG-)?SM-P902(?:[);/ ]|$)'
|
11593 |
device: 'tablet'
|
11594 |
+
model: 'Galaxy Note Pro 12.2"'
|
11595 |
|
11596 |
# explicit wearable models
|
11597 |
- regex: '(?:SAMSUNG )?SM-R820'
|
11598 |
device: 'wearable'
|
11599 |
+
model: 'Galaxy Watch Active 2'
|
11600 |
|
11601 |
# explicit smartphone models
|
11602 |
- regex: '(?:SAMSUNG-)?SM-G850[AMSWYKLX]'
|
11603 |
+
model: 'Galaxy Alpha'
|
11604 |
- regex: '(?:SAMSUNG-)?GT-B5330'
|
11605 |
+
model: 'Galaxy Chat'
|
11606 |
- regex: '(?:SAMSUNG-)?SM-A605K'
|
11607 |
+
model: 'Galaxy Jean'
|
11608 |
- regex: '(?:SAMSUNG-)?SM-A202K'
|
11609 |
+
model: 'Galaxy Jean 2'
|
11610 |
- regex: '(?:SAMSUNG-)?GT-B5510'
|
11611 |
+
model: 'Galaxy Y Pro'
|
11612 |
- regex: '(?:SAMSUNG-)?GT-B5512'
|
11613 |
+
model: 'Galaxy Y Pro Duos'
|
11614 |
- regex: '(?:SAMSUNG-)?GT-B7510'
|
11615 |
+
model: 'Galaxy Pro'
|
11616 |
- regex: '(?:SAMSUNG-)?GT-I5700'
|
11617 |
+
model: 'Galaxy Spica'
|
11618 |
- regex: '(?:SAMSUNG-)?GT-I5801'
|
11619 |
+
model: 'Galaxy Apollo'
|
11620 |
- regex: '(?:SAMSUNG-)?GT-I5800'
|
11621 |
+
model: 'Galaxy 3'
|
11622 |
- regex: '(?:SAMSUNG-)?GT-I8000'
|
11623 |
model: 'Omnia II'
|
11624 |
- regex: '(?:SAMSUNG-)?(?:GT-I8150|SM-T255S)'
|
11625 |
+
model: 'Galaxy W'
|
11626 |
- regex: 'SC-01H(?:[);/ ]|$)'
|
11627 |
+
model: 'Galaxy Active Neo'
|
11628 |
- regex: '(?:SAMSUNG-)?GT-S5830'
|
11629 |
+
model: 'Galaxy Ace'
|
11630 |
- regex: '(?:SAMSUNG-)?SM-(?:G357(?:FZ|M)|G310HN)'
|
11631 |
+
model: 'Galaxy Ace Style'
|
11632 |
- regex: '(?:SAMSUNG-)?GT-I8160'
|
11633 |
+
model: 'Galaxy Ace 2'
|
11634 |
- regex: '(?:SAMSUNG-)?SM-G313(?:HY|M[LUY]|[FM])'
|
11635 |
+
model: 'Galaxy Ace 4'
|
11636 |
- regex: '(?:SAMSUNG-)?SM-G316M'
|
11637 |
+
model: 'Galaxy Ace 4 Duos'
|
11638 |
- regex: '(?:SAMSUNG-)?SM-G313[HU]'
|
11639 |
+
model: 'Galaxy Ace 4 Lite'
|
11640 |
- regex: '(?:SAMSUNG-)?SM-G318(?:H|ML)(?:[);/ ]|$)'
|
11641 |
+
model: 'Galaxy Ace 4 Neo'
|
11642 |
- regex: '(?:SAMSUNG-)?SM-G9100(?:[);/ ]|$)'
|
11643 |
+
model: 'Galaxy S II'
|
11644 |
- regex: '(?:SAMSUNG-)?SHV-E120S(?:[);/ ]|$)'
|
11645 |
+
model: 'Galaxy S II HD LTE'
|
11646 |
- regex: '(?:SAMSUNG-)?GT-I8190'
|
11647 |
+
model: 'Galaxy S III mini'
|
11648 |
- regex: '(?:SAMSUNG-)?GT-I8200'
|
11649 |
+
model: 'Galaxy S III mini Value Edition'
|
11650 |
- regex: '(?:SAMSUNG-)?GT-I826[02]'
|
11651 |
+
model: 'Galaxy Core'
|
11652 |
- regex: '(?:SAMSUNG-)?SM-G386W'
|
11653 |
+
model: 'Galaxy Core LTE'
|
11654 |
- regex: '(?:SAMSUNG-)?GT-I8320'
|
11655 |
model: 'H1'
|
11656 |
- regex: '(?:SAMSUNG-)?GT-I85[23]0'
|
11657 |
+
model: 'Galaxy Beam'
|
11658 |
- regex: '(?:SAMSUNG-)?SM-G3858'
|
11659 |
+
model: 'Galaxy Beam 2'
|
11660 |
- regex: '(?:SAMSUNG-)?SM-G600S'
|
11661 |
+
model: 'Galaxy Wide'
|
11662 |
- regex: '(?:SAMSUNG-)?GT-I855[028]'
|
11663 |
+
model: 'Galaxy Win'
|
11664 |
- regex: '(?:SAMSUNG-)?SM-G381[28]'
|
11665 |
+
model: 'Galaxy Win Pro'
|
11666 |
- regex: '(?:SAMSUNG-)?GT-I8580'
|
11667 |
+
model: 'Galaxy Core Advance'
|
11668 |
- regex: '(?:SAMSUNG-)?GT-I8730'
|
11669 |
+
model: 'Galaxy Express'
|
11670 |
- regex: '(?:SAMSUNG-)?SM-(?:E500(?:HQ|YZ|[0FHM])|S978L)'
|
11671 |
+
model: 'Galaxy E5'
|
11672 |
- regex: '(?:SAMSUNG-)?SM-E700(?:0|9|F|H|M)'
|
11673 |
+
model: 'Galaxy E7'
|
11674 |
- regex: '(?:SAMSUNG-)?GT-I90(?:00|08|18|88)'
|
11675 |
+
model: 'Galaxy S'
|
11676 |
- regex: '(?:SAMSUNG-)?GT-I9001'
|
11677 |
+
model: 'Galaxy S Plus'
|
11678 |
- regex: '(?:SAMSUNG-)?GT-I9003'
|
11679 |
+
model: 'Galaxy SL'
|
11680 |
- regex: '(?:SAMSUNG-)?GT-I9010'
|
11681 |
+
model: 'Galaxy S Giorgio Armani'
|
11682 |
- regex: '(?:SAMSUNG-)?GT-I9070'
|
11683 |
+
model: 'Galaxy S Advance'
|
11684 |
- regex: '(?:SAMSUNG-)?GT-I910[08]'
|
11685 |
+
model: 'Galaxy S II'
|
11686 |
- regex: '(?:SAMSUNG-)?ISW11SC'
|
11687 |
+
model: 'Galaxy S II WiMAX'
|
11688 |
- regex: '(?:SAMSUNG-)?GT-I9103'
|
11689 |
+
model: 'Galaxy R'
|
11690 |
- regex: '(?:SAMSUNG-)?GT-I9105'
|
11691 |
+
model: 'Galaxy S II Plus'
|
11692 |
- regex: '(?:SAMSUNG-)?SM-G730(?:W8|[AV])'
|
11693 |
+
model: 'Galaxy S3 mini'
|
11694 |
- regex: '(?:SAMSUNG-)?(?:GT-I919[025]|SCH-I435)'
|
11695 |
+
model: 'Galaxy S4 mini'
|
11696 |
- regex: '(?:SAMSUNG-)?GT-I9515'
|
11697 |
+
model: 'Galaxy S4 Value Edition'
|
11698 |
- regex: '(?:SAMSUNG-)?GT-I9295'
|
11699 |
+
model: 'Galaxy S4 ACTIVE'
|
11700 |
- regex: '(?:SAMSUNG-)?(?:GT-I9300|SCH-I535|SCH-L710|SCH-I939)'
|
11701 |
+
model: 'Galaxy S III'
|
11702 |
- regex: '(?:SAMSUNG-)?(?:GT-I9305|SCH-R530)'
|
11703 |
+
model: 'Galaxy S III LTE'
|
11704 |
+
- regex: '(?:SAMSUNG-)?(?:SM-S975L|GT-I9500|GT-I9502|GT-I9505|SCH-I545|SCH-I959|SCH-R970|Galaxy-S4|SGH-M919N?)|SC-04E'
|
11705 |
+
model: 'Galaxy S4'
|
11706 |
- regex: '(?:SAMSUNG-)?GT-I9506'
|
11707 |
+
model: 'Galaxy S4 with LTE+'
|
11708 |
- regex: '(?:SAMSUNG-)?GT-S5280'
|
11709 |
+
model: 'Galaxy STAR'
|
11710 |
- regex: '(?:SAMSUNG-)?GT-S5301'
|
11711 |
+
model: 'Galaxy POCKET Plus'
|
11712 |
- regex: '(?:SAMSUNG-)?GT-S5310'
|
11713 |
+
model: 'Galaxy POCKET Neo'
|
11714 |
- regex: '(?:SAMSUNG-)?SM-G110[BHM]'
|
11715 |
+
model: 'Galaxy POCKET 2'
|
11716 |
- regex: '(?:SAMSUNG-)?GT-S5360'
|
11717 |
+
model: 'Galaxy Y Hello Kitty'
|
11718 |
- regex: '(?:SAMSUNG-)?GT-S6310'
|
11719 |
+
model: 'Galaxy Young'
|
11720 |
- regex: '(?:SAMSUNG-)?GT-S6312'
|
11721 |
+
model: 'Galaxy Young DUOS'
|
11722 |
- regex: '(?:SAMSUNG-)?SM-G130(?:BT|HN|[EHMU])'
|
11723 |
+
model: 'Galaxy Young 2'
|
11724 |
- regex: '(?:SAMSUNG-)?SM-G130BU'
|
11725 |
+
model: 'Galaxy Young 2 Pro'
|
11726 |
- regex: '(?:SAMSUNG-)?GT-S6790'
|
11727 |
+
model: 'Galaxy FAME Lite with NFC'
|
11728 |
- regex: '(?:SAMSUNG-)?GT-S6810'
|
11729 |
+
model: 'Galaxy FAME'
|
11730 |
- regex: '(?:SAMSUNG-)?GT-S6812'
|
11731 |
+
model: 'Galaxy FAME Duos'
|
11732 |
- regex: 'SC-04J(?:[);/ ]|$)'
|
11733 |
+
model: 'Galaxy Feel'
|
11734 |
- regex: '(?:SAMSUNG-)?GT-S7275'
|
11735 |
+
model: 'Galaxy ACE 3'
|
11736 |
- regex: '(?:SAMSUNG-)?GT-S7500'
|
11737 |
+
model: 'Galaxy ACE Plus'
|
11738 |
- regex: '(?:SAMSUNG-)?(?:GT-S7560|SCH-I699)'
|
11739 |
+
model: 'Galaxy Trend'
|
11740 |
- regex: '(?:SAMSUNG-)?GT-S7390'
|
11741 |
+
model: 'Galaxy Trend Lite'
|
11742 |
- regex: '(?:SAMSUNG-)?GT-S7580'
|
11743 |
+
model: 'Galaxy Trend Plus'
|
11744 |
- regex: '(?:SAMSUNG-)?SCH-I739'
|
11745 |
+
model: 'Galaxy Trend 2'
|
11746 |
- regex: '(?:SAMSUNG-)?(?:GT-S7562|SCH-I919)'
|
11747 |
+
model: 'Galaxy S DUOS'
|
11748 |
- regex: '(?:SAMSUNG-)?GT-S7582'
|
11749 |
+
model: 'Galaxy S DUOS 2'
|
11750 |
- regex: '(?:SAMSUNG-)?SM-(?:G31[36]HU|G313HZ)'
|
11751 |
+
model: 'Galaxy S DUOS 3'
|
11752 |
- regex: '(?:SAMSUNG-)?GT-S7710'
|
11753 |
+
model: 'Galaxy Xcover 2'
|
11754 |
- regex: '(?:SAMSUNG-)?SM-G389F'
|
11755 |
+
model: 'Galaxy Xcover 3'
|
11756 |
- regex: '(?:SAMSUNG-)?SM-G715FN'
|
11757 |
+
model: 'Galaxy Xcover Pro'
|
11758 |
- regex: '(?:SAMSUNG-)?SM-G398FN'
|
11759 |
+
model: 'Galaxy Xcover 4s'
|
11760 |
- regex: '(?:SAMSUNG-)?SM-G390Y'
|
11761 |
+
model: 'Galaxy Xcover 4'
|
11762 |
- regex: '(?:SAMSUNG-)?GT-S8500'
|
11763 |
model: 'Wave'
|
11764 |
- regex: '(?:SAMSUNG-)?GT-S8530'
|
11778 |
- regex: '(?:SAMSUNG-)?GT-S7230'
|
11779 |
model: 'Wave 723'
|
11780 |
- regex: '(?:SAMSUNG-)?SM-(?:C101|C105([AL])?)'
|
11781 |
+
model: 'Galaxy S4 zoom'
|
11782 |
- regex: '(?:SAMSUNG-)?SM-(?:C111(M)?|C115)'
|
11783 |
+
model: 'Galaxy K zoom'
|
11784 |
- regex: '(?:SAMSUNG-)?SM-G318[HM]Z'
|
11785 |
+
model: 'Galaxy V Plus'
|
11786 |
- regex: '(?:SAMSUNG-)?SM-(?:G355[HM]|G3556D)'
|
11787 |
+
model: 'Galaxy Core 2'
|
11788 |
- regex: '(?:SAMSUNG-)?SM-G350'
|
11789 |
+
model: 'Galaxy Core Plus'
|
11790 |
- regex: '(?:SAMSUNG-)?SM-(?:G360[FH]?|S820L)'
|
11791 |
+
model: 'Galaxy Core Prime'
|
11792 |
- regex: '(?:SAMSUNG-)?SM-G361[FH]?'
|
11793 |
+
model: 'Galaxy Core Prime Value Edition'
|
11794 |
- regex: '(?:SAMSUNG-)?SM-(?:G386F|G3586V)'
|
11795 |
+
model: 'Galaxy Core LTE'
|
11796 |
- regex: '(?:SAMSUNG-)?SM-G3568V'
|
11797 |
+
model: 'Galaxy Core Mini 4G'
|
11798 |
- regex: '(?:SAMSUNG-)?SM-G5108Q'
|
11799 |
+
model: 'Galaxy Core Max'
|
11800 |
- regex: '(?:SAMSUNG-)?SM-G3815'
|
11801 |
+
model: 'Galaxy EXPRESS II'
|
11802 |
- regex: '(?:SAMSUNG-)?SM-G388F'
|
11803 |
+
model: 'Galaxy Xcover 3'
|
11804 |
- regex: '(?:SAMSUNG-)?SM-G390[FW]'
|
11805 |
+
model: 'Galaxy Xcover 4'
|
11806 |
- regex: '(?:SAMSUNG-)?SM-G800'
|
11807 |
+
model: 'Galaxy S5 mini'
|
11808 |
- regex: '(?:SAMSUNG-)?SM-G9009D'
|
11809 |
+
model: 'Galaxy S5 Dual-SIM'
|
11810 |
+
- regex: '(?:SAMSUNG-)?SM-(?:G900|G906[KLS]|S902L|S903VL)|Galaxy-S5|SCL23'
|
11811 |
+
model: 'Galaxy S5'
|
11812 |
- regex: '(?:SAMSUNG-)?SM-G901F'
|
11813 |
+
model: 'Galaxy S5 LTE+'
|
11814 |
- regex: '(?:SAMSUNG-)?SM-G870[AFW]|SC-02G'
|
11815 |
+
model: 'Galaxy S5 Active'
|
11816 |
- regex: '(?:SAMSUNG-)?SM-G903[FMW]'
|
11817 |
+
model: 'Galaxy S5 Neo'
|
11818 |
- regex: '(?:SAMSUNG-)?SM-G860P'
|
11819 |
+
model: 'Galaxy S5 K Sport'
|
11820 |
- regex: '(?:SAMSUNG-)?(?:SM-G920(?:F[DQ]|W8|[089AFIKLPRSTVX])?|SM-S907VL)|SC-05G'
|
11821 |
+
model: 'Galaxy S6'
|
11822 |
- regex: '(?:SAMSUNG-)?SM-G890A'
|
11823 |
+
model: 'Galaxy S5 Active'
|
11824 |
- regex: '(?:SAMSUNG-)?SM-G925[0ADFIKLPRSTVWX]|SCV31|404SC'
|
11825 |
+
model: 'Galaxy S6 Edge'
|
11826 |
- regex: '(?:SAMSUNG-)?SM-G928(?:7C|R4|W8|[07ACFGIKLPSTVX])'
|
11827 |
+
model: 'Galaxy S6 Edge+'
|
11828 |
- regex: '(?:SAMSUNG-)?SM-G930(?:FD|W8|[0AFKLPRSTUVX8])?(?:[);/ ]|$)'
|
11829 |
+
model: 'Galaxy S7'
|
11830 |
- regex: '(?:SAMSUNG-)?SM-G935(?:R4|W8|[0AFKLPSTUVX])|SC-02H|SCV33'
|
11831 |
+
model: 'Galaxy S7 Edge'
|
11832 |
- regex: '(?:SAMSUNG-)?SM-G891A'
|
11833 |
+
model: 'Galaxy S7 Active'
|
11834 |
- regex: '(?:SAMSUNG-)?SM-G950[08FNUW]?|SCV36|SC-02J'
|
11835 |
+
model: 'Galaxy S8'
|
11836 |
- regex: '(?:SAMSUNG-)?SM-G8750'
|
11837 |
+
model: 'Galaxy S8 Lite'
|
11838 |
- regex: '(?:SAMSUNG-)?SM-G892[AU]'
|
11839 |
+
model: 'Galaxy S8 Active'
|
11840 |
- regex: '(?:SAMSUNG-)?SM-G955[AFKLNPRTUVW0X]?|SCV35|SC-03J'
|
11841 |
+
model: 'Galaxy S8+'
|
11842 |
- regex: '(?:SAMSUNG-)?SM-G960[FNUWX0]?|SCV38|SC-02K'
|
11843 |
+
model: 'Galaxy S9'
|
11844 |
- regex: '(?:SAMSUNG-)?SM-G965[FNUWX0]|SCV39|SC-03K'
|
11845 |
+
model: 'Galaxy S9+'
|
11846 |
- regex: '(?:SAMSUNG-)?(?:SM-(?:G973|G977[PUTNB])|SCV41|SC-03L)'
|
11847 |
+
model: 'Galaxy S10'
|
11848 |
- regex: '(?:SAMSUNG-)?SM-G770F'
|
11849 |
+
model: 'Galaxy S10 Lite'
|
11850 |
- regex: '(?:SAMSUNG-)?(?:SM-G975[0FUWNX]|SCV42|SC-04L)'
|
11851 |
+
model: 'Galaxy S10+'
|
11852 |
- regex: '(?:SAMSUNG-)?SM-G970[08FUNWX](?:[);/ ]|$)'
|
11853 |
+
model: 'Galaxy S10e'
|
11854 |
- regex: '(?:SAMSUNG-)?SM-G980F'
|
11855 |
+
model: 'Galaxy S20'
|
11856 |
- regex: '(?:SAMSUNG-)?SM-G981(?:[0BNUW]|U1)|SCG01'
|
11857 |
+
model: 'Galaxy S20 5G'
|
11858 |
- regex: '(?:SAMSUNG-)?SM-G988(?:[0BNUW]|U1)'
|
11859 |
+
model: 'Galaxy S20 Ultra 5G'
|
11860 |
- regex: '(?:SAMSUNG-)?SM-G985F|SCG02'
|
11861 |
+
model: 'Galaxy S20+'
|
11862 |
- regex: '(?:SAMSUNG-)?SM-G986(?:[0BNUW]|U1)|SC-52A'
|
11863 |
+
model: 'Galaxy S20+ 5G'
|
11864 |
- regex: '(?:SAMSUNG-)?SM-F700(?:[0FNUW]|U1)|SCV47'
|
11865 |
+
model: 'Galaxy Z Flip'
|
11866 |
- regex: '(?:SAMSUNG-)?SCH-I200'
|
11867 |
+
model: 'Galaxy Stellar'
|
11868 |
- regex: '(?:SAMSUNG-)?SCH-I829'
|
11869 |
+
model: 'Galaxy Style Duos'
|
11870 |
- regex: '(?:SAMSUNG-)?(?:SGH-S730|SCH-R740)'
|
11871 |
+
model: 'Galaxy Discover'
|
11872 |
- regex: '(?:SAMSUNG-)?SCH-S738'
|
11873 |
+
model: 'Galaxy Centura'
|
11874 |
- regex: 'vollo Vi86(?:[);/ ]|$)'
|
11875 |
model: 'Vollo Vi86'
|
11876 |
- regex: '(?:SAMSUNG-)?SM-G386(?:T1|T)'
|
11877 |
+
model: 'Galaxy Avant'
|
11878 |
- regex: '(?:SAMSUNG-)?SM-A015[AFGM]'
|
11879 |
+
model: 'Galaxy A01'
|
11880 |
- regex: '(?:SAMSUNG-)?SM-A260[FG]'
|
11881 |
+
model: 'Galaxy A2 Core'
|
11882 |
- regex: '(?:SAMSUNG-)?SM-A300(?:FU|YZ|XU|[09FGHMY])'
|
11883 |
+
model: 'Galaxy A3 (2015)'
|
11884 |
- regex: '(?:SAMSUNG-)?SM-A310(?:N0|[FMYX])'
|
11885 |
+
model: 'Galaxy A3 (2016)'
|
11886 |
- regex: '(?:SAMSUNG-)?SM-A320(?:FL|[FYX])'
|
11887 |
+
model: 'Galaxy A3 (2017)'
|
11888 |
- regex: '(?:SAMSUNG-)?SM-A500[LSWY9]?(?:[);/ ]|$)'
|
11889 |
+
model: 'Galaxy A5'
|
11890 |
- regex: '(?:SAMSUNG-)?SM-A500[FGHKM0]'
|
11891 |
+
model: 'Galaxy A5 Duos'
|
11892 |
- regex: '(?:SAMSUNG-)?SM-A500(?:FU|X)'
|
11893 |
+
model: 'Galaxy A5 (2015)'
|
11894 |
- regex: '(?:SAMSUNG-)?SM-A510[08FKLMSYX]'
|
11895 |
+
model: 'Galaxy A5 (2016)'
|
11896 |
- regex: '(?:SAMSUNG-)?SM-A520[FKLSWX]'
|
11897 |
+
model: 'Galaxy A5 (2017)'
|
11898 |
- regex: '(?:SAMSUNG-)?SM-A600(?:AZ|FN|GN|T1|[AFGNPTUX])'
|
11899 |
+
model: 'Galaxy A6'
|
11900 |
- regex: '(?:SAMSUNG-)?SM-A605(?:[FG]N|[08FGX])'
|
11901 |
+
model: 'Galaxy A6+'
|
11902 |
- regex: '(?:SAMSUNG-)?SM-G6200'
|
11903 |
+
model: 'Galaxy A6s (2018)'
|
11904 |
- regex: '(?:SAMSUNG-)?SM-A60(?:60|6Y)'
|
11905 |
+
model: 'Galaxy A60'
|
11906 |
- regex: '(?:SAMSUNG-)?SM-A700(?:YD|[09FHKLSX])'
|
11907 |
+
model: 'Galaxy A7'
|
11908 |
- regex: '(?:SAMSUNG-)?SM-A710[08FKLMSYX]'
|
11909 |
+
model: 'Galaxy A7 (2016)'
|
11910 |
- regex: '(?:SAMSUNG-)?SM-A720[FSX]'
|
11911 |
+
model: 'Galaxy A7 (2017)'
|
11912 |
- regex: '(?:SAMSUNG-)?SM-A750(?:GN|[FGCNX])'
|
11913 |
+
model: 'Galaxy A7 (2018)'
|
11914 |
- regex: '(?:SAMSUNG-)?SM-A71(?:5[FW])?(?:[);/ ]|$)'
|
11915 |
+
model: 'Galaxy A71'
|
11916 |
- regex: '(?:SAMSUNG-)?SM-A716U(?:[);/ ]|$)'
|
11917 |
+
model: 'Galaxy A71 5G'
|
11918 |
- regex: '(?:SAMSUNG-)?SM-A(?:530F|800[0FISY])|SCV32'
|
11919 |
+
model: 'Galaxy A8'
|
11920 |
- regex: '(?:SAMSUNG-)?SM-G885[FSY]'
|
11921 |
+
model: 'Galaxy A8 Star'
|
11922 |
- regex: '(?:SAMSUNG-)?SM-A810(?:YZ|[FS])'
|
11923 |
+
model: 'Galaxy A8 (2016)'
|
11924 |
- regex: '(?:SAMSUNG-)?SM-G887[0F]'
|
11925 |
+
model: 'Galaxy A8s'
|
11926 |
- regex: '(?:SAMSUNG-)?SM-A530[NWXM]'
|
11927 |
+
model: 'Galaxy A8 (2018)'
|
11928 |
- regex: '(?:SAMSUNG-)?SM-A730F'
|
11929 |
+
model: 'Galaxy A8+ (2018)'
|
11930 |
- regex: '(?:SAMSUNG-)?SM-A9000'
|
11931 |
+
model: 'Galaxy A9'
|
11932 |
- regex: 'SM-A9\[7\]'
|
11933 |
+
model: 'Galaxy A9 7'
|
11934 |
- regex: '(?:SAMSUNG-)?SM-A920[0FXN]'
|
11935 |
+
model: 'Galaxy A9 (2018)'
|
11936 |
- regex: '(?:SAMSUNG-)?SM-G885[08]'
|
11937 |
+
model: 'Galaxy A9 Star'
|
11938 |
- regex: '(?:SAMSUNG-)?SM-(?:A910[0F]|G887N)'
|
11939 |
+
model: 'Galaxy A9 Pro'
|
11940 |
- regex: '(?:SAMSUNG-)?SM-A105[FGMN]'
|
11941 |
+
model: 'Galaxy A10'
|
11942 |
- regex: '(?:SAMSUNG-)?SM-A107[FM]'
|
11943 |
+
model: 'Galaxy A10s'
|
11944 |
- regex: '(?:SAMSUNG-)?SM-(?:S102DL|A102[NWU])'
|
11945 |
+
model: 'Galaxy A10e'
|
11946 |
- regex: '(?:SAMSUNG-)?SM-A115F'
|
11947 |
+
model: 'Galaxy A11'
|
11948 |
- regex: '(?:SAMSUNG-)?SM-(?:A205(?:[FGSWU]|YN|U1)|S205DL)|SC-02M|SCV46'
|
11949 |
+
model: 'Galaxy A20'
|
11950 |
- regex: '(?:SAMSUNG-)?SM-A215U(?:[);/ ]|$)'
|
11951 |
+
model: 'Galaxy A21'
|
11952 |
- regex: '(?:SAMSUNG-)?SM-A217F(?:[);/ ]|$)'
|
11953 |
+
model: 'Galaxy A21s'
|
11954 |
- regex: '(?:SAMSUNG-)?SM-A202[FG]'
|
11955 |
+
model: 'Galaxy A20e'
|
11956 |
- regex: '(?:SAMSUNG-)?SM-A207[0FM]'
|
11957 |
+
model: 'Galaxy A20s'
|
11958 |
- regex: '(?:SAMSUNG-)?(?:SM-A305(?:[GYF]N|GT|[NFG])|SCV43)'
|
11959 |
+
model: 'Galaxy A30'
|
11960 |
- regex: '(?:SAMSUNG-)?SM-A307(?:FN|GN|GT|[FG])'
|
11961 |
+
model: 'Galaxy A30s'
|
11962 |
- regex: '(?:SAMSUNG-)?SM-A315[FNG](?:[);/ ]|$)'
|
11963 |
+
model: 'Galaxy A31'
|
11964 |
- regex: '(?:SAMSUNG-)?SM-A405(?:F[NM]|S)'
|
11965 |
+
model: 'Galaxy A40'
|
11966 |
- regex: '(?:SAMSUNG-)?SM-A305[01](?:[);/ ]|$)'
|
11967 |
+
model: 'Galaxy A40s'
|
11968 |
- regex: '(?:SAMSUNG-)?(?:SM-A415F|SCV48)(?:[);/ ]|$)'
|
11969 |
+
model: 'Galaxy A41'
|
11970 |
- regex: '(?:SAMSUNG-)?SM-(?:A505(?:F[NG]|[FGNWUX]|YN|U1?)|S506DL|505FN)'
|
11971 |
+
model: 'Galaxy A50'
|
11972 |
- regex: '(?:SAMSUNG-)?SM-A5070(?:[);/ ]|$)'
|
11973 |
+
model: 'Galaxy A50s'
|
11974 |
- regex: '(?:SAMSUNG-)?SM-A507FN'
|
11975 |
+
model: 'Galaxy A50s'
|
11976 |
- regex: '(?:SAMSUNG-)?SM-A515[F]'
|
11977 |
+
model: 'Galaxy A51'
|
11978 |
- regex: '(?:SAMSUNG-)?SM-A705(?:GM|[MYF]N|F|[W0X])'
|
11979 |
+
model: 'Galaxy A70'
|
11980 |
- regex: '(?:SAMSUNG-)?SM-A707[0F]'
|
11981 |
+
model: 'Galaxy A70s'
|
11982 |
- regex: '(?:SAMSUNG-)?SM-A805[0FNX]'
|
11983 |
+
model: 'Galaxy A80'
|
11984 |
- regex: '(?:SAMSUNG-)?SM-A908[BN]'
|
11985 |
+
model: 'Galaxy A90'
|
11986 |
- regex: '(?:SAMSUNG-)?GT-I9301I'
|
11987 |
+
model: 'Galaxy S III Neo'
|
11988 |
- regex: '(?:SAMSUNG-)?SM-S120VL(?:[);/ ]|$)'
|
11989 |
+
model: 'Galaxy Luna'
|
11990 |
- regex: '(?:SAMSUNG-)?SM-J100(?:FN|VPP|MU|[FHMY])'
|
11991 |
+
model: 'Galaxy J1'
|
11992 |
- regex: '(?:SAMSUNG-)?SM-J105[BFHYM]'
|
11993 |
+
model: 'Galaxy J1 Mini'
|
11994 |
- regex: '(?:SAMSUNG-)?SM-J106[FMHB]'
|
11995 |
+
model: 'Galaxy J1 mini Prime'
|
11996 |
- regex: '(?:SAMSUNG-)?SM-(?:J120(?:ZN|[AFHGMTW])|J05H)'
|
11997 |
+
model: 'Galaxy J1 (2016)'
|
11998 |
- regex: '(?:SAMSUNG-)?SM-(?:J110[FHMLG]|J111[FM])'
|
11999 |
+
model: 'Galaxy J1 Ace'
|
12000 |
- regex: '(?:SAMSUNG-)?SM-J200[FGHYM]'
|
12001 |
+
model: 'Galaxy J2'
|
12002 |
- regex: '(?:SAMSUNG-)?SM-J200BT'
|
12003 |
+
model: 'Galaxy J2 Duos'
|
12004 |
- regex: '(?:SAMSUNG-)?SM-J260AZ'
|
12005 |
+
model: 'Galaxy J2 Pure'
|
12006 |
- regex: '(?:SAMSUNG-)?SM-(?:J260([AFGMY]|T1)|S260DL)'
|
12007 |
+
model: 'Galaxy J2 Core'
|
12008 |
- regex: '(?:SAMSUNG-)?SM-J(?:210F|250[FNMGY])'
|
12009 |
+
model: 'Galaxy J2 Pro'
|
12010 |
- regex: '(?:SAMSUNG-)?SM-(?:S367VL|S357BL)'
|
12011 |
+
model: 'Galaxy J3 Orbit'
|
12012 |
- regex: '(?:SAMSUNG-)?SM-J311(?:[09]|9S)'
|
12013 |
+
model: 'Galaxy J3 Pro'
|
12014 |
- regex: '(?:SAMSUNG-)?SM-S320VL(?:[);/ ]|$)'
|
12015 |
+
model: 'Galaxy J3 Sky'
|
12016 |
- regex: '(?:SAMSUNG-)?SM-S327VL(?:[);/ ]|$)'
|
12017 |
+
model: 'Galaxy J3 Luna Pro'
|
12018 |
- regex: '(?:SAMSUNG-)?SM-J327(?:T1|[ATW])(?:[);/ ]|$)'
|
12019 |
+
model: 'Galaxy J3 Prime'
|
12020 |
- regex: '(?:SAMSUNG-)?SM-J327(?:[FP]|R4)'
|
12021 |
+
model: 'Galaxy J3 Emerge'
|
12022 |
- regex: '(?:SAMSUNG-)?SM-J337R4(?:[);/ ]|$)'
|
12023 |
+
model: 'Galaxy J3 Aura'
|
12024 |
- regex: '(?:SAMSUNG-)?SM-J337T(?:[);/ ]|$)'
|
12025 |
+
model: 'Galaxy J3 Star'
|
12026 |
- regex: '(?:SAMSUNG-)?SM-J327V'
|
12027 |
+
model: 'Galaxy J3 Eclipse'
|
12028 |
- regex: '(?:SAMSUNG-)?SM-S337TL'
|
12029 |
+
model: 'Galaxy J3 Luna Pro'
|
12030 |
- regex: '(?:SAMSUNG-)?SM-J3109'
|
12031 |
+
model: 'Galaxy J3 (2015)'
|
12032 |
- regex: '(?:SAMSUNG-)?SM-J320(?:[ZF]N|R4|W8|YZ|[AFGHMNPVY])'
|
12033 |
+
model: 'Galaxy J3 (2016)'
|
12034 |
- regex: '(?:SAMSUNG-)?SM-(?:J330(?:[08FGLN]|FN)|J327(?:R7|U))(?:[);/ ]|$)'
|
12035 |
+
model: 'Galaxy J3 (2017)'
|
12036 |
- regex: '(?:SAMSUNG-)?SM-J337(?:[AWPUV]|VPP)(?:[);/ ]|$)'
|
12037 |
+
model: 'Galaxy J3 (2018)'
|
12038 |
- regex: '(?:SAMSUNG-)?SM-J400[FGM]'
|
12039 |
+
model: 'Galaxy J4'
|
12040 |
- regex: '(?:SAMSUNG-)?SM-J500(?:[8F]|FN|[7GYMH]|N0)(?:[);/ ]|$)'
|
12041 |
+
model: 'Galaxy J5 (2015)'
|
12042 |
- regex: '(?:SAMSUNG-)?SM-(?:J510(?:[8FHKLSYG]|[UFMG]N)|5108|G510H)(?:[);/ ]|$)'
|
12043 |
+
model: 'Galaxy J5 (2016)'
|
12044 |
- regex: '(?:SAMSUNG-)?SM-J530'
|
12045 |
+
model: 'Galaxy J5 (2017)'
|
12046 |
- regex: '(?:SAMSUNG-)?SM-G570[0FMY]'
|
12047 |
+
model: 'Galaxy J5 Prime'
|
12048 |
- regex: '(?:SAMSUNG-)?SM-J600[NFGL]' # 2018
|
12049 |
+
model: 'Galaxy J6'
|
12050 |
- regex: '(?:SAMSUNG-)?SM-J610[FG]'
|
12051 |
+
model: 'Galaxy J6+'
|
12052 |
- regex: '(?:SAMSUNG-)?SM-J410[FG]'
|
12053 |
+
model: 'Galaxy J4 Core'
|
12054 |
- regex: '(?:SAMSUNG-)?SM-J415(?:[FNG]|[FG]N)'
|
12055 |
+
model: 'Galaxy J4+'
|
12056 |
- regex: '(?:SAMSUNG-)?SM-J7[01]0(?:8|F|FN|H|K|M|MN)'
|
12057 |
+
model: 'Galaxy J7'
|
12058 |
- regex: '(?:SAMSUNG-)?SM-J700P'
|
12059 |
+
model: 'Galaxy J7 (2015)'
|
12060 |
- regex: '(?:SAMSUNG-)?SM-(?:J700(?:T1|T)|J710GN|J7109)'
|
12061 |
+
model: 'Galaxy J7 (2016)'
|
12062 |
- regex: '(?:SAMSUNG-)?SM-(?:J730[K]|J727(?:[AUSF]|R4))(?:[);/ ]|$)'
|
12063 |
+
model: 'Galaxy J7 (2017)'
|
12064 |
- regex: '(?:SAMSUNG-)?SM-J737(?:[AVPUS]|T1?|VPP|R4)(?:[);/ ]|$)'
|
12065 |
+
model: 'Galaxy J7 (2018)'
|
12066 |
- regex: '(?:SAMSUNG-)?SM-C710F'
|
12067 |
+
model: 'Galaxy J7+ (C7)'
|
12068 |
- regex: '(?:SAMSUNG-)?SM-G610[FMY]'
|
12069 |
+
model: 'Galaxy J7 Prime'
|
12070 |
- regex: '(?:SAMSUNG-)?SM-G611(?:FF|MT|M)'
|
12071 |
+
model: 'Galaxy J7 Prime 2'
|
12072 |
- regex: '(?:SAMSUNG-)?SM-G615[F]'
|
12073 |
+
model: 'Galaxy J7 Max'
|
12074 |
- regex: '(?:SAMSUNG-)?SM-(?:S727VL|S737TL)'
|
12075 |
+
model: 'Galaxy J7 Sky Pro'
|
12076 |
- regex: '(?:SAMSUNG-)?SM-J730(?:F|G|GM)'
|
12077 |
+
model: 'Galaxy J7 Pro'
|
12078 |
- regex: '(?:SAMSUNG-)?SM-J701(?:F|M)'
|
12079 |
+
model: 'Galaxy J7 Core' # also Galaxy J7 Nxt and Galaxy J7 Neo
|
12080 |
- regex: '(?:SAMSUNG-)?SM-J720[FM]'
|
12081 |
+
model: 'Galaxy J7 Duo'
|
12082 |
- regex: '(?:SAMSUNG-)?SM-(?:S767VL|S757BL)'
|
12083 |
+
model: 'Galaxy J7 Crown'
|
12084 |
- regex: '(?:SAMSUNG-)?SM-J727(?:P|T|V)'
|
12085 |
+
model: 'Galaxy J7 V'
|
12086 |
- regex: 'SM-J7\[7\]'
|
12087 |
+
model: 'Galaxy J7 7'
|
12088 |
- regex: '(?:SAMSUNG-)?SM-J810'
|
12089 |
+
model: 'Galaxy J8'
|
12090 |
- regex: 'SM-J8 Pro'
|
12091 |
+
model: 'Galaxy J8 Pro'
|
12092 |
- regex: 'SM-J9\[7\] Prime'
|
12093 |
+
model: 'Galaxy J9 7 Prime'
|
12094 |
- regex: 'SM-J9\[8\] Pro'
|
12095 |
+
model: 'Galaxy J9 8 Pro'
|
12096 |
- regex: '(?:SAMSUNG-)?SM-M015[FG]'
|
12097 |
+
model: 'Galaxy M01'
|
12098 |
- regex: '(?:SAMSUNG-)?SM-M105[FGM]'
|
12099 |
+
model: 'Galaxy M10'
|
12100 |
- regex: '(?:SAMSUNG-)?SM-M107F'
|
12101 |
+
model: 'Galaxy M10s'
|
12102 |
- regex: '(?:SAMSUNG-)?SM-M115F'
|
12103 |
+
model: 'Galaxy M11'
|
12104 |
- regex: '(?:SAMSUNG-)?SM-M205[FGNM]'
|
12105 |
+
model: 'Galaxy M20'
|
12106 |
- regex: '(?:SAMSUNG-)?SM-M215F'
|
12107 |
+
model: 'Galaxy M21'
|
12108 |
- regex: '(?:SAMSUNG-)?SM-M307([0F]|FN)'
|
12109 |
+
model: 'Galaxy M30s'
|
12110 |
- regex: '(?:SAMSUNG-)?SM-M305'
|
12111 |
+
model: 'Galaxy M30'
|
12112 |
- regex: '(?:SAMSUNG-)?SM-M315F'
|
12113 |
+
model: 'Galaxy M31'
|
12114 |
- regex: '(?:SAMSUNG-)?SM-M317F'
|
12115 |
+
model: 'Galaxy M31s'
|
12116 |
- regex: '(?:SAMSUNG-)?SM-M405'
|
12117 |
+
model: 'Galaxy M40'
|
12118 |
- regex: '(?:SAMSUNG-)?SM-W201([689])'
|
12119 |
+
model: 'Galaxy W201$1'
|
12120 |
|
12121 |
- regex: '(?:SAMSUNG-)?SM-G850F'
|
12122 |
+
model: 'Galaxy Alpha'
|
12123 |
- regex: '(?:SAMSUNG-)?SM-G910S'
|
12124 |
+
model: 'Galaxy Round'
|
12125 |
- regex: '(?:SAMSUNG-)?SM-(?:G550(?:FY|T[12]?)|S550TL|G55[01]0|G5520)'
|
12126 |
+
model: 'Galaxy On5'
|
12127 |
- regex: '(?:SAMSUNG-)?SM-G5528'
|
12128 |
+
model: 'Galaxy On5 (2016)'
|
12129 |
- regex: '(?:SAMSUNG-)?SM-G600(?:FY|[0F])'
|
12130 |
+
model: 'Galaxy On7'
|
12131 |
- regex: '(?:SAMSUNG-)?SM-G610[0KLS]'
|
12132 |
+
model: 'Galaxy On7 (2016)'
|
12133 |
- regex: '(?:SAMSUNG-)?SM-G611[FSKL]'
|
12134 |
+
model: 'Galaxy On7 Prime'
|
12135 |
- regex: '(?:SAMSUNG-)?SM-C5000'
|
12136 |
+
model: 'Galaxy C5'
|
12137 |
- regex: '(?:SAMSUNG-)?SM-C501[08]'
|
12138 |
+
model: 'Galaxy C5 Pro'
|
12139 |
- regex: '(?:SAMSUNG-)?SM-C7000'
|
12140 |
+
model: 'Galaxy C7'
|
12141 |
- regex: '(?:SAMSUNG-)?SM-C701[08F]'
|
12142 |
+
model: 'Galaxy C7 Pro'
|
12143 |
- regex: '(?:SAMSUNG-)?SM-C710[08]'
|
12144 |
+
model: 'Galaxy C8'
|
12145 |
- regex: '(?:SAMSUNG-)?SM-C900[08FY]'
|
12146 |
+
model: 'Galaxy C9 Pro'
|
12147 |
- regex: '(?:SAMSUNG-)?SM-Z130H'
|
12148 |
+
model: 'Galaxy Z1'
|
12149 |
- regex: '(?:SAMSUNG-)?SM-Z200[FMY]'
|
12150 |
+
model: 'Galaxy Z2'
|
12151 |
- regex: '(?:SAMSUNG-)?SM-Z300H'
|
12152 |
+
model: 'Galaxy Z3'
|
12153 |
- regex: '(?:SAMSUNG-)?SM-Z400[FY]'
|
12154 |
+
model: 'Galaxy Z4'
|
12155 |
- regex: '(?:SAMSUNG-)?SM-(?:G150|G155S)(?:[);/ ]|$)'
|
12156 |
+
model: 'Galaxy Folder'
|
12157 |
- regex: '(?:SAMSUNG-)?(?:SM-G16(?:[05]0?|0N))(?:[);/ ]|$)'
|
12158 |
+
model: 'Galaxy Folder 2'
|
12159 |
- regex: '(?:SAMSUNG-)?SM-J321AZ(?:[);/ ]|$)'
|
12160 |
+
model: 'Galaxy Sol'
|
12161 |
- regex: '(?:SAMSUNG-)?SM-J326AZ(?:[);/ ]|$)'
|
12162 |
+
model: 'Galaxy Sol 2'
|
12163 |
- regex: '(?:SAMSUNG-)?SM-J336AZ(?:[);/ ]|$)'
|
12164 |
+
model: 'Galaxy Sol 3'
|
12165 |
- regex: '(?:SAMSUNG-)?SM-J727AZ(?:[);/ ]|$)'
|
12166 |
+
model: 'Galaxy Halo'
|
12167 |
- regex: '(?:SAMSUNG-)?SM-J327AZ'
|
12168 |
+
model: 'Galaxy Amp Prime 2'
|
12169 |
- regex: '(?:SAMSUNG-)?SM-J337AZ'
|
12170 |
+
model: 'Galaxy Amp Prime 3 (2018)'
|
12171 |
|
12172 |
# explicit phablet models
|
12173 |
- regex: '(?:SAMSUNG-)?SM-(?:F900[0FU]|F907[BN])|SCV44'
|
12174 |
+
model: 'Galaxy Fold'
|
12175 |
device: 'phablet'
|
12176 |
- regex: '(?:SAMSUNG-)?GT-I9060(?:[);/ ]|$)'
|
12177 |
+
model: 'Galaxy Grand Neo'
|
12178 |
device: 'phablet'
|
12179 |
- regex: '(?:SAMSUNG-)?GT-I9063'
|
12180 |
+
model: 'Galaxy Grand Neo Duos'
|
12181 |
device: 'phablet'
|
12182 |
- regex: '(?:SAMSUNG-)?GT-I9(?:080|128)'
|
12183 |
+
model: 'Galaxy Grand'
|
12184 |
device: 'phablet'
|
12185 |
- regex: '(?:SAMSUNG-)?GT-I9168'
|
12186 |
+
model: 'Galaxy Grand Neo+'
|
12187 |
device: 'phablet'
|
12188 |
- regex: '(?:SAMSUNG-)?GT-I9082'
|
12189 |
+
model: 'Galaxy Grand Duos'
|
12190 |
device: 'phablet'
|
12191 |
- regex: '(?:SAMSUNG-)?GT-N7000'
|
12192 |
+
model: 'Galaxy Note'
|
12193 |
device: 'phablet'
|
12194 |
- regex: '(?:SC-01G|SCL24)(?:[);/ ]|$)'
|
12195 |
+
model: 'Galaxy Note Edge'
|
12196 |
device: 'phablet'
|
12197 |
- regex: '(?:SAMSUNG-)?SM-N935[FSLK](?:[);/ ]|$)'
|
12198 |
+
model: 'Galaxy Note Fan Edition'
|
12199 |
device: 'phablet'
|
12200 |
- regex: '(?:SAMSUNG-)?(?:(?:GT-)?N7100|SCH-I605|SCH-N719|SCH-R950|SPH-L900)(?:[);/ ]|$)'
|
12201 |
+
model: 'Galaxy Note II'
|
12202 |
device: 'phablet'
|
12203 |
- regex: '(?:SAMSUNG-)?GT-N7105'
|
12204 |
+
model: 'Galaxy Note II LTE'
|
12205 |
device: 'phablet'
|
12206 |
- regex: '(?:SAMSUNG-)?SM-G710[25L]?(?:[);/ ]|$)'
|
12207 |
+
model: 'Galaxy Grand 2'
|
12208 |
device: 'phablet'
|
12209 |
- regex: '(?:SAMSUNG-)?SM-G720(?:AX|N0|[02])(?:[);/ ]|$)'
|
12210 |
+
model: 'Galaxy Grand Max'
|
12211 |
- regex: '(?:SAMSUNG-)?SM-(?:G53(?:0[AFTYHWMP]|0[AF]Z|1[FH]|0[689]W|0MU|0BT|0R[47])|S920L)(?:[);/ ]|$)'
|
12212 |
+
model: 'Galaxy Grand Prime'
|
12213 |
device: 'phablet'
|
12214 |
- regex: '(?:SAMSUNG-)?SM-G531(?:BT|[MY])(?:[);/ ]|$)'
|
12215 |
+
model: 'Galaxy Grand Prime VE Duos'
|
12216 |
device: 'phablet'
|
12217 |
- regex: '(?:SAMSUNG-)?SM-G532F(?:[);/ ]|$)'
|
12218 |
+
model: 'Galaxy Grand Prime Plus' # also Galaxy J2 Prime
|
12219 |
device: 'phablet'
|
12220 |
- regex: '(?:SAMSUNG-)?SM-G532MT(?:[);/ ]|$)'
|
12221 |
+
model: 'Galaxy J2 Prime (TV)'
|
12222 |
device: 'phablet'
|
12223 |
- regex: '(?:SAMSUNG-)?SM-G532[MG](?:[);/ ]|$)'
|
12224 |
+
model: 'Galaxy J2 Prime'
|
12225 |
device: 'phablet'
|
12226 |
- regex: '(?:SAMSUNG-)?SM-N7502(?:[);/ ]|$)'
|
12227 |
+
model: 'Galaxy Note 3 Neo Duos'
|
12228 |
device: 'phablet'
|
12229 |
- regex: '(?:SAMSUNG-)?SM-N750[QL50]?'
|
12230 |
+
model: 'Galaxy Note 3 Neo'
|
12231 |
device: 'phablet'
|
12232 |
- regex: '(?:SAMSUNG-)?SM-N9002(?:[);/ ]|$)'
|
12233 |
+
model: 'Galaxy Note 3 Duos'
|
12234 |
device: 'phablet'
|
12235 |
- regex: '(?:SAMSUNG-)?SM-9005(?:[);/ ]|$)'
|
12236 |
+
model: 'Galaxy Note 3 LTE'
|
12237 |
device: 'phablet'
|
12238 |
- regex: '(?:SAMSUNG-)?(?:SM-N900(?:[05689][VQ]?|[AKLPSTV]|W8)?|SCL22|SC-01F(?:[);/ ]|$))'
|
12239 |
+
model: 'Galaxy Note 3'
|
12240 |
device: 'phablet'
|
12241 |
- regex: '(?:SAMSUNG-)?SM-(?:N910|910U)|N9100(?:[);/ ]|$)'
|
12242 |
+
model: 'Galaxy Note 4'
|
12243 |
device: 'phablet'
|
12244 |
- regex: '(?:SAMSUNG-)?SM-N916[SKL]'
|
12245 |
+
model: 'Galaxy Note 4 LTE'
|
12246 |
device: 'phablet'
|
12247 |
- regex: '(?:SAMSUNG-)?SM-N915'
|
12248 |
+
model: 'Galaxy Note 4 Edge'
|
12249 |
device: 'phablet'
|
12250 |
- regex: '(?:SAMSUNG-)?SM-N920(?:[0ACGIKLSTPFVX]|R[467]|W8)'
|
12251 |
+
model: 'Galaxy Note 5'
|
12252 |
device: 'phablet'
|
12253 |
- regex: '(?:SAMSUNG-)?SM-N9208'
|
12254 |
+
model: 'Galaxy Note 5 Duos'
|
12255 |
device: 'phablet'
|
12256 |
- regex: '(?:SAMSUNG-)?SM-G750(?:8Q|[9AFH])'
|
12257 |
+
model: 'Galaxy Mega 2'
|
12258 |
device: 'phablet'
|
12259 |
- regex: '(?:SAMSUNG-)?GT-I915[028]'
|
12260 |
+
model: 'Galaxy Mega 5.8'
|
12261 |
device: 'phablet'
|
12262 |
- regex: '(?:SAMSUNG-)?GT-I920[05]'
|
12263 |
+
model: 'Galaxy Mega 6.3'
|
12264 |
device: 'phablet'
|
12265 |
- regex: '(?:SAMSUNG-)?(?:SM-N930[VFST0P]|SCV34)'
|
12266 |
+
model: 'Galaxy Note 7'
|
12267 |
device: 'phablet'
|
12268 |
- regex: '(?:SAMSUNG[- ])?SM-N950|SCV37|SC-01K'
|
12269 |
+
model: 'Galaxy Note 8'
|
12270 |
device: 'phablet'
|
12271 |
- regex: '(?:SAMSUNG[- ])?(?:SM-N960|SCV40|SC-01L)'
|
12272 |
+
model: 'Galaxy Note 9'
|
12273 |
device: 'phablet'
|
12274 |
- regex: '(?:SAMSUNG[- ])?SM-(?:N970(?:U1|W8|[089DFJKLSXUW])|N971N)'
|
12275 |
+
model: 'Galaxy Note 10'
|
12276 |
device: 'phablet'
|
12277 |
- regex: '(?:SAMSUNG[- ])?SM-N770[FX]'
|
12278 |
+
model: 'Galaxy Note 10 Lite'
|
12279 |
device: 'phablet'
|
12280 |
- regex: '(?:SAMSUNG[- ])?(?:SM-N975(?:[0FUXW]|U1|Xu)|SM-N976[0BVNUQ]|SC-01M|SCV45)'
|
12281 |
+
model: 'Galaxy Note 10+'
|
12282 |
device: 'phablet'
|
12283 |
- regex: '(?:SAMSUNG[- ])?(?:SM-N980(?:F|F/DS))'
|
12284 |
+
model: 'Galaxy Note 20'
|
12285 |
device: 'phablet'
|
12286 |
- regex: '(?:SAMSUNG[- ])?(?:SM-N981(?:B|B/DS|N|U|U1|W))'
|
12287 |
+
model: 'Galaxy Note 20 5G'
|
12288 |
device: 'phablet'
|
12289 |
- regex: '(?:SAMSUNG[- ])?(?:SM-N985(?:F|F/DS))'
|
12290 |
+
model: 'Galaxy Note 20 Ultra'
|
12291 |
device: 'phablet'
|
12292 |
- regex: '(?:SAMSUNG[- ])?(?:SM-N986(?:B/DS|U1|[BNWU])|SCG06)'
|
12293 |
+
model: 'Galaxy Note 20 Ultra 5G'
|
12294 |
device: 'phablet'
|
12295 |
|
12296 |
- regex: '(?:SAMSUNG-)?SM-W750V'
|
12308 |
device: 'tablet'
|
12309 |
model: '$1'
|
12310 |
- regex: 'SC-02C'
|
12311 |
+
model: 'Galaxy S II'
|
12312 |
- regex: '(?:SAMSUNG-)?((?:SM-[TNP]|GT-P)[a-z0-9_\-]+)'
|
12313 |
device: 'tablet'
|
12314 |
model: '$1'
|
12318 |
device: 'tv'
|
12319 |
model: 'Smart TV'
|
12320 |
- regex: 'Galaxy ([^/;]+) Build'
|
12321 |
+
model: 'Galaxy $1'
|
12322 |
- regex: 'Galaxy ([a-z0-9]+)'
|
12323 |
+
model: 'Galaxy $1'
|
12324 |
- regex: 'SAMSUNG[\-][ ]?([a-z0-9]+[\-_][a-z0-9]+)'
|
12325 |
model: '$1'
|
12326 |
- regex: 'SAMSUNG;[ ]?([a-z0-9]+[\-_][a-z0-9]+)'
|
12364 |
|
12365 |
# Sencor
|
12366 |
Sencor:
|
12367 |
+
regex: 'Sencor|ELEMENT[ _]?(?:7|8|9\.7|10[ _]1)(?:[ _]?V[23])?(?:[);/ ]|$)|ELEMENT[ _]?(?:P[0-9]+|10.1 Q001)(?:[);/ ]|$)'
|
12368 |
device: 'tablet'
|
12369 |
models:
|
12370 |
# explicit tablet models
|
12371 |
+
- regex: '(?:SENCOR[ _])?Element (10\.1) (Q001)'
|
12372 |
+
model: 'Element $1" $2'
|
12373 |
- regex: '(?:SENCOR[ _])?ELEMENT[ _]?7[ _]?V3'
|
12374 |
model: 'Element 7 V3'
|
12375 |
- regex: '(?:SENCOR[ _])?ELEMENT[ _]?7[ _]?V2[ _]BASIC'
|
12584 |
|
12585 |
# SWISSMOBILITY
|
12586 |
SWISSMOBILITY:
|
12587 |
+
regex: 'SCHR9GR|ZUR(?:722M|70016W?|700[RW]|805A)'
|
12588 |
device: 'smartphone'
|
12589 |
models:
|
12590 |
- regex: 'SCHR9GR'
|
12593 |
device: 'phablet'
|
12594 |
model: 'Z72 go'
|
12595 |
|
12596 |
+
- regex: 'ZUR(70016W?|700[RW]|805A)(?:[);/ ]|$)'
|
12597 |
+
device: 'tablet'
|
12598 |
+
model: 'ZUR$1'
|
12599 |
+
|
12600 |
# Thomson
|
12601 |
Thomson:
|
12602 |
regex: '(?:Primo(7|8)|QM73[45]-8G|QM734-2|QM736-8G\(HD\)|8950|MID1002|5014G)(?:[);/ ]|$)|(?:Tlink|Every)[0-9]+'
|
12605 |
# already detected as manta device
|
12606 |
#- regex: 'MID1002'
|
12607 |
# model: 'MID1002'
|
12608 |
+
- regex: 'Primo(7|8)'
|
12609 |
model: 'Primo $1'
|
12610 |
- regex: 'QM734-2'
|
12611 |
model: 'QM734-2'
|
12674 |
|
12675 |
# Polaroid
|
12676 |
Polaroid:
|
12677 |
+
regex: 'Polaroid|(?:PMID|MIDC)[0-9a-z]+(?:[);/ ]|$)|MID(?:1014|0714)|PRO[VG]?(?:[0-9]{3,}[a-z]*|[0-9]{2}[a-z])|(?:P(?:400[56]|4526|500[56]|502[56]|504[67]|552[56])A|P902/A900|PSPC(?:505|550|[MZL]20A0|K21NA)|SIGMA 5)(?:[);/ ]|$)'
|
12678 |
device: 'smartphone'
|
12679 |
models:
|
12680 |
# explicit smartphone models
|
12727 |
- regex: '((?:PMID|MIDC)[0-9a-z]+)(?:[);/ ]|$)'
|
12728 |
model: '$1'
|
12729 |
device: 'tablet'
|
12730 |
+
- regex: '(P902/A900)(?:[);/ ]|$)'
|
12731 |
+
model: '$1'
|
12732 |
+
device: 'tablet'
|
12733 |
- regex: 'Polaroid'
|
12734 |
model: ''
|
12735 |
device: 'tablet'
|
12831 |
|
12832 |
# Prestigio
|
12833 |
Prestigio:
|
12834 |
+
regex: 'Prestigio 5500 DUO|(?:PMP|PAP|PMT|PSP|PGPS)[0-9]+[a-z0-9_]+(?:[);/ ]|$)|Muze C3'
|
12835 |
device: 'tablet'
|
12836 |
models:
|
12837 |
- regex: 'PMT3277_3G'
|
12846 |
model: 'Grace S5'
|
12847 |
- regex: 'PMT3287_3G'
|
12848 |
model: 'MultiPad Ranger 8.0 3G'
|
12849 |
+
- regex: 'Prestigio 5500 DUO' # PAP5500DUO
|
12850 |
+
model: 'MultiPhone 5500 Duo'
|
12851 |
+
device: 'smartphone'
|
12852 |
- regex: 'PMT3208[_ ]3G'
|
12853 |
model: 'MultiPad Wize 8.0 3G'
|
12854 |
- regex: 'PSP7546DUO([ _][A-Z]{2})?'
|
12969 |
|
12970 |
# Ramos
|
12971 |
Ramos:
|
12972 |
+
regex: 'Ramos ?([^/;]+) Build|MOS1(?:[);/ ]|$)'
|
12973 |
device: 'tablet'
|
12974 |
+
models:
|
12975 |
+
- regex: '(MOS1)(?:[);/ ]|$)'
|
12976 |
+
model: '$1'
|
12977 |
+
- regex: 'Ramos ?([^/;]+) Build'
|
12978 |
+
model: '$1'
|
12979 |
|
12980 |
# Razer
|
12981 |
Razer:
|
13054 |
|
13055 |
# Spice
|
13056 |
Spice:
|
13057 |
+
regex: '(?<![\d];)Spice'
|
13058 |
device: 'smartphone'
|
13059 |
models:
|
13060 |
- regex: 'Spice[ _\-]?([^/;]+)(?:[\)]| Build)'
|
13064 |
|
13065 |
# Sharp (jp.sharp)
|
13066 |
Sharp:
|
13067 |
+
regex: 'SHARP|SBM|SH-?[0-9]+[a-z]?(?:[);/ ]|$)|AQUOS|(?:SH-M0[45789]|SH-M1[123]|S[357]-SH|SH-[MZ](10|01)|SH-[CL]02|SH-RM(?:1[12]|02)|[34]04SH|401SH|[45]02SH|306SH|[36]05SH|70[1246]SH|80[138]SH|90[1678]SH|50[3679]SH|SHL22|SHV4[0-8]|SHV3[1-9](?:[-_]u)?|FS80(?:1[08]|32|28|0[29])|TG-L900S|NP601SH|603SH|SHV4[035][-_]u|SW001SH|SHG0[12]|X4-SH|A002SH|SH-A01|DM-01J)(?:[);/ ]|$)'
|
13068 |
device: 'smartphone'
|
13069 |
models:
|
13070 |
# explicit smartphone models
|
13130 |
model: 'Aquos Ever'
|
13131 |
- regex: 'SH-02H(?:[);/ ]|$)'
|
13132 |
model: 'Aquos Compact'
|
13133 |
+
- regex: '30[56]SH(?:[);/ ]|$)'
|
13134 |
model: 'Aquos Crystal'
|
13135 |
- regex: '402SH(?:[);/ ]|$)'
|
13136 |
model: 'Aquos Crystal X'
|
13164 |
model: 'Aquos U'
|
13165 |
- regex: 'TG-L900S(?:[);/ ]|$)'
|
13166 |
model: 'Luna S'
|
13167 |
+
- regex: 'SH-A01(?:[);/ ]|$)'
|
13168 |
+
model: 'B10'
|
13169 |
- regex: '(?:FS8002|SHV47)(?:[);/ ]|$)'
|
13170 |
model: 'Z2'
|
13171 |
- regex: 'FS8009(?:[);/ ]|$)'
|
13178 |
model: 'Star Wars'
|
13179 |
- regex: 'SH-RM02'
|
13180 |
model: 'Aquos SH-RM02'
|
13181 |
+
- regex: '401SH'
|
13182 |
+
model: 'Aquos 401SH'
|
13183 |
- regex: 'DM-01J'
|
13184 |
model: 'Disney Mobile'
|
13185 |
|
13319 |
|
13320 |
# Symphony
|
13321 |
Symphony:
|
13322 |
+
regex: 'SYMPHONY[ \_]([a-z0-9]+)|(?:roar (?:V20|E80))|ZVIII(?:[);/ ]|$)'
|
13323 |
device: 'smartphone'
|
13324 |
models:
|
13325 |
+
- regex: 'ZVIII'
|
13326 |
+
model: 'ZVIII'
|
13327 |
- regex: 'roar V20'
|
13328 |
model: 'Roar V20'
|
13329 |
- regex: 'roar E80'
|
13375 |
|
13376 |
# Tcl
|
13377 |
TCL:
|
13378 |
+
regex: 'TCL[_ -][a-z0-9]+|(?:TCL[_ -][^;/]+ Build)|(?:TCLGalaG60(?:\(9108A\))?|A502DL|T780H|5199I|7040N|5133A|5159[AJ]|5152D|T770H)(?:[);/ ]|$)'
|
13379 |
device: 'smartphone'
|
13380 |
models:
|
13381 |
- regex: 'TCLGalaG60(?:\(9108A\))?(?:[);/ ]|$)'
|
13398 |
model: 'LX'
|
13399 |
- regex: '5159[AJ](?:[);/ ]|$)'
|
13400 |
model: 'L9'
|
13401 |
+
- regex: 'T770H(?:[);/ ]|$)'
|
13402 |
+
model: '10L'
|
13403 |
|
13404 |
# Teclast
|
13405 |
Teclast:
|
13495 |
|
13496 |
# teXet
|
13497 |
teXet:
|
13498 |
+
regex: 'Texet|(NaviPad [^/;]*) Build|TM-(?:1046|1058|1057|1067|3000|3200R|3500|4003|4071|450[34]|451[30]|4377|4082R|508[34]|550[358]|5010|5017|507[4-7]|5[23]77|6003|6906|702[13]|7055HD|709[69]|9747BT|9758|9751HD|9767|5513|520[410]|507[13]|558[134]|570[23]|7859|8044|9748[ _]3G|9720|7047HD[ _]3G|9757|9740|4982|4515|4083|500[3567]|5571|3204R|5016|8043|7047HD[ _]3G|8041HD|8066|705[23]|7041|8041HD|8051|8048|974[96]|973[78]W|974[170]|9743W|9750HD|7043XD|7049|7887|7037W|702[46])|TB-(771A|711A)|X-Force[\(-]?TM-5009\)?|X-Plus[\(-]?TM-5577\)?|TM_5011|X-pad (?:AIR 8|iX 7|NAVI 7.[35]|NAVI 10|SKY 8.1|STYLE 8|STYLE 10.1|HIT|LITE 7.[12]|QUAD (?:7.2|10|7)|SHINE 8.1)(?: 3G)?'
|
13499 |
device: 'tablet'
|
13500 |
models:
|
13501 |
- regex: 'TM-9749'
|
13569 |
- regex: 'TM_5011'
|
13570 |
device: 'smartphone'
|
13571 |
model: 'X-Omega'
|
13572 |
+
- regex: 'TM-508(3|4)'
|
13573 |
+
device: 'smartphone'
|
13574 |
+
model: 'Pay $1G'
|
13575 |
+
- regex: 'TM-558(3|4)'
|
13576 |
+
device: 'smartphone'
|
13577 |
+
model: 'Pay 5.5" $1G'
|
13578 |
+
- regex: 'TM-5702'
|
13579 |
+
device: 'smartphone'
|
13580 |
+
model: 'Pay 5.7" 3G'
|
13581 |
+
- regex: 'TM-5703'
|
13582 |
+
device: 'smartphone'
|
13583 |
+
model: 'Pay 5.7" Pro'
|
13584 |
- regex: 'TM-5201'
|
13585 |
device: 'smartphone'
|
13586 |
model: 'Rock'
|
13596 |
- regex: 'TM-4982'
|
13597 |
device: 'smartphone'
|
13598 |
model: 'iX-Maxi'
|
13599 |
+
- regex: 'TEXET[_ ]IX-MINI'
|
13600 |
+
device: 'smartphone'
|
13601 |
+
model: 'iX-Mini'
|
13602 |
- regex: 'TM-5010'
|
13603 |
device: 'smartphone'
|
13604 |
model: 'X-Selfie'
|
13617 |
- regex: 'X-Plus[\(-]?TM-5577\)?'
|
13618 |
device: 'smartphone'
|
13619 |
model: 'X-Plus'
|
13620 |
+
- regex: 'teXet[_ ]X-medium[_ ]plus'
|
13621 |
+
device: 'smartphone'
|
13622 |
+
model: 'X-Medium Plus'
|
13623 |
|
13624 |
# Telefunken
|
13625 |
Telefunken:
|
13626 |
+
regex: 'TELEFUNKEN|Foxtrot|TEL-1013GIQA|TF-SP(?:500[12]|4002)|(TF-MID(?:[78]02G|70[78]G|80[46]G|9705RG|9707G|7805G|100[57]G|1010G))|(TF-LED(?:65S75T2SU|32S39T2S|32S5[289]T2S|32S70T2S))'
|
13627 |
device: 'tablet'
|
13628 |
models:
|
13629 |
- regex: 'TEL-1013GIQA'
|
13631 |
- regex: 'Foxtrot2'
|
13632 |
model: 'Foxtrot 2'
|
13633 |
device: 'smartphone'
|
13634 |
+
- regex: '(?:TELEFUNKEN)?(TF-SP(?:500[12]|4002)|Outdoor LTE|Foxtrot)'
|
13635 |
model: '$1'
|
13636 |
device: 'smartphone'
|
13637 |
+
- regex: '(TF-MID(?:[78]02G|70[78]G|80[46]G|9705RG|9707G|7805G|100[57]G|1010G))'
|
13638 |
model: '$1'
|
13639 |
- regex: '(TF-LED(?:65S75T2SU|32S39T2S|32S5[289]T2S|32S70T2S))'
|
13640 |
model: '$1'
|
13750 |
|
13751 |
# Touchmate
|
13752 |
Touchmate:
|
13753 |
+
regex: 'TOUCHMATE|(TM-(?:MID1020A|MID794C|MID795|MID710|MID798|MID792|MID788D|SM500N|SM410))'
|
13754 |
device: 'smartphone'
|
13755 |
models:
|
13756 |
+
- regex: '(TM-(?:MID1020A|MID794C|MID795|MID710|MID798|MID792|MID788D))'
|
13757 |
device: 'tablet'
|
13758 |
model: '$1'
|
13759 |
- regex: '(TM-(?:SM500N|SM410))'
|
13760 |
+
model: '$1'
|
13761 |
- regex: 'Touchmate ([^/;]+) Build'
|
13762 |
+
model: '$1'
|
13763 |
|
13764 |
# TrekStor
|
13765 |
TrekStor:
|
13874 |
|
13875 |
# Ulefone
|
13876 |
Ulefone:
|
13877 |
+
regex: 'Ulefone|Gemini Pro|Power_[356]|S10_Pro|(?:Armor(?:(?:[ _])(?:[2367]|X[236]|6[SE]|3WT|3W|X))?|U00[78][ _]Pro|Be[ _]X|Be[ _]Touch(?:[ _][23])?|Be[ _](?:One|Pure)(?:[ _]Lite)?)(?:[);/ ]|$)'
|
13878 |
device: 'smartphone'
|
13879 |
models:
|
13880 |
- regex: 'S10_Pro'
|
13895 |
model: 'U007 Pro'
|
13896 |
- regex: 'U008 Pro'
|
13897 |
model: 'U008 Pro'
|
|
|
|
|
|
|
|
|
|
|
|
|
13898 |
- regex: 'Armor[ _]X([236])(?:[);/ ]|$)'
|
13899 |
model: 'Armor X$1'
|
13900 |
- regex: 'Armor[ _]6S(?:[);/ ]|$)'
|
13901 |
model: 'Armor 6S'
|
13902 |
- regex: 'Armor[ _]6E(?:[);/ ]|$)'
|
13903 |
model: 'Armor 6E'
|
|
|
|
|
13904 |
- regex: 'Armor[ _]X5(?:[);/ ]|$)'
|
13905 |
model: 'Armor X5'
|
13906 |
- regex: 'Armor[ _]5S(?:[);/ ]|$)'
|
13907 |
model: 'Armor 5S'
|
13908 |
- regex: 'Armor[ _]X(?:[);/ ]|$)'
|
13909 |
model: 'Armor X'
|
13910 |
+
- regex: 'Armor[ _]3W(?:[);/ ]|$)'
|
13911 |
+
model: 'Armor 3W'
|
13912 |
+
- regex: 'Armor[ _]3WT(?:[);/ ]|$)'
|
13913 |
+
model: 'Armor 3WT'
|
13914 |
+
- regex: 'Armor[ _]([2367])(?:[);/ ]|$)'
|
13915 |
+
model: 'Armor $1'
|
13916 |
- regex: 'Armor(?:[);/ ]|$)'
|
13917 |
model: 'Armor'
|
13918 |
- regex: 'Gemini Pro(?:[);/ ]|$)'
|
13928 |
|
13929 |
# UMIDIGI
|
13930 |
UMIDIGI:
|
13931 |
+
regex: 'UMI(?:DIGI)?[ _]|A5_Pro|ROME[_ ]X'
|
13932 |
device: 'smartphone'
|
13933 |
models:
|
13934 |
- regex: 'A5_Pro'
|
13937 |
model: 'Touch X'
|
13938 |
- regex: 'UMI TOUCH'
|
13939 |
model: 'Touch'
|
13940 |
+
- regex: 'ROME[_ ]X'
|
13941 |
+
model: 'Rome X'
|
13942 |
- regex: 'UMI_(London|Diamond(?:_X)?)'
|
13943 |
model: '$1'
|
13944 |
- regex: 'UMI(?:DIGI)?[ _]([^/;)]+)(?: Build|\))'
|
14050 |
|
14051 |
# Vernee
|
14052 |
Vernee:
|
14053 |
+
regex: 'Vernee|Mars Pro|Apollo[ _](?:Lite|X)|Thor (?:E|Plus)|X2_euro'
|
14054 |
device: 'smartphone'
|
14055 |
models:
|
14056 |
+
- regex: 'Apollo[ _]Lite'
|
14057 |
model: 'Apollo Lite'
|
14058 |
+
- regex: 'Apollo[ _]X'
|
14059 |
model: 'Apollo X'
|
14060 |
- regex: 'Mars Pro'
|
14061 |
model: 'Mars Pro'
|
14065 |
model: 'Thor Plus'
|
14066 |
- regex: 'Vernee_M5'
|
14067 |
model: 'M5'
|
14068 |
+
- regex: 'X2_euro'
|
14069 |
+
model: 'X2'
|
14070 |
- regex: 'Vernee[ _-]([^;/]+) Build'
|
14071 |
model: '$1'
|
14072 |
- regex: 'Vernee[ _-]([a-z0-9_-]+)'
|
14122 |
- regex: 'verykool[ _]?([^/;]+);'
|
14123 |
model: '$1'
|
14124 |
|
14125 |
+
# Vestel (vestel.com)
|
14126 |
Vestel:
|
14127 |
+
regex: 'Vestel[ _]|Venus[ _](GO|E[43]|V[1-9]|Z[1-9]0)|V_?TAB|VP74|VT97PRO|VSP145M|VSP250[GS]|VSP355[GS]|V3_5580_Dual'
|
14128 |
device: 'smartphone'
|
14129 |
models:
|
14130 |
- regex: 'VT97PRO'
|
14160 |
model: 'Venus Z$1'
|
14161 |
- regex: 'Venus[ _]GO'
|
14162 |
model: 'Venus Go'
|
14163 |
+
- regex: 'Venus[ _]E([34])'
|
14164 |
+
model: 'Venus E$1'
|
14165 |
+
- regex: 'Vestel_5000_Dual'
|
14166 |
+
model: '5000 Dual'
|
14167 |
+
- regex: 'Vestel_5000_2gb'
|
14168 |
+
model: '5000 2GB'
|
14169 |
+
- regex: 'Vestel[ _](5000|5530)'
|
14170 |
+
model: '$1'
|
14171 |
|
14172 |
# Videocon
|
14173 |
Videocon:
|
14174 |
regex: 'Videocon[_ \-]|VT75C|V502430'
|
14175 |
device: 'smartphone'
|
14176 |
models:
|
14177 |
+
- regex: 'Videocon_V1585'
|
14178 |
+
device: 'feature phone'
|
14179 |
+
model: 'V1585'
|
14180 |
- regex: 'Videocon[_ \-]([a-z0-9]+)'
|
14181 |
model: '$1'
|
14182 |
- regex: 'VT75C(?:[);/ ]|$)'
|
14415 |
|
14416 |
# Wexler
|
14417 |
Wexler:
|
14418 |
+
regex: 'Wexler|(?:ULTIMA 7 TWIST PLUS|TAB10iQ3G|TAB[ _]10Q)(?:[);/ ]|$)|ZEN[ _](?:4\.5|4\.7|5)'
|
14419 |
device: 'tablet'
|
14420 |
models:
|
14421 |
- regex: '(?:Wexler[ _\-\.])?ZEN[ _]4\.5(?:[);/ ]|$)'
|
14429 |
device: 'smartphone'
|
14430 |
- regex: '(?:Wexler[ _\-\.])?TAB[ _]10Q(?:[);/ ]|$)'
|
14431 |
model: 'TAB 10Q'
|
14432 |
+
- regex: 'TAB10iQ3G(?:[);/ ]|$)'
|
14433 |
+
model: 'TAB 10iQ 3G'
|
14434 |
- regex: 'Wexler[ _\-\.]([^;/]+) Build'
|
14435 |
model: '$1'
|
14436 |
- regex: 'Wexler[ _\-\.]([^);/]+)(?:[);/]|$)'
|
14440 |
|
14441 |
# Wiko (wikomobile.com)
|
14442 |
Wiko:
|
14443 |
+
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|Getaway|Goa(?!nna)|Kite|Robby|Lenny[2-9]?|Slide|Sunset[2-9]?|Sunny[2-9]?|Tommy[2-9]?|PULP(?: Fab)?|Wax|HARRY|Ridge(?: Fab)?|U FEEL(?: Prime| Lite)?|U PULSE(?: LITE)?|View2 Go|View XL|View Prime)(?: Plus)?(?: 4G)?(?: Build|$)?|W_(?:C8[06]0|K[346]00|P130|P200|C200SN)|WC300|W-(?:V7[23]0|V8[30]0|P[36]11|K420|K510S?|K130)-(?:TMV|TIM|TVM|EEA|SUN|SWI|OPE|BYT|DU|TH)|WIM Lite|W-K360-TV|W-V600|W-K200|W-U300|U307AS|CINK PEAX 2|HIGHWAY PURE'
|
14444 |
device: 'smartphone'
|
14445 |
models:
|
14446 |
- regex: '(?:WIKO-)?Cink Peax 2'
|
14449 |
model: 'Cink$1'
|
14450 |
- regex: '(?:WIKO-)?CINK_([a-z0-9_]+)'
|
14451 |
model: 'Cink $1'
|
14452 |
+
- regex: '(?:WIKO-)?HIGHWAY PURE'
|
14453 |
+
model: 'Highway Pure'
|
14454 |
+
- regex: '(?:WIKO-)?HIGHWAY STAR'
|
14455 |
+
model: 'Highway Star'
|
14456 |
- regex: '(?:Wiko-)?Highway([^/;]*) Build'
|
14457 |
model: 'Highway$1'
|
14458 |
- regex: '(?:WIKO-)?HIGHWAY_([a-z0-9_]+)'
|
14497 |
model: 'Jerry Max'
|
14498 |
- regex: 'W_K300'
|
14499 |
model: 'Jerry 3'
|
14500 |
+
- regex: 'W-K420-TVM'
|
14501 |
+
model: 'Jerry 4'
|
14502 |
- regex: '(?:WIKO-)?Jerry2'
|
14503 |
model: 'Jerry 2'
|
14504 |
- regex: '(?:WIKO-)?Jerry'
|
14531 |
model: 'Sunset'
|
14532 |
- regex: '(?:WIKO-)?Sunny3'
|
14533 |
model: 'Sunny 3'
|
14534 |
+
- regex: 'W-K200'
|
14535 |
+
model: 'Sunny 3 Plus'
|
14536 |
- regex: '(?:WIKO-)?Sunny2 Plus'
|
14537 |
model: 'Sunny 2 Plus'
|
14538 |
- regex: '(?:WIKO-)?Sunny2'
|
14539 |
model: 'Sunny 2'
|
14540 |
- regex: 'W-K360-TV'
|
14541 |
model: 'Sunny 4 Plus'
|
14542 |
+
- regex: 'W-K130-TMV'
|
14543 |
+
model: 'Sunny 4'
|
14544 |
- regex: '(?:WIKO-)?Sunny'
|
14545 |
model: 'Sunny'
|
14546 |
- regex: '(?:W_K600|Tommy3|W_C200SN)'
|
14555 |
model: 'Wax'
|
14556 |
- regex: '(?:WIKO-)?HARRY'
|
14557 |
model: 'Harry'
|
14558 |
+
- regex: 'W-V600'
|
14559 |
+
model: 'Harry 2'
|
14560 |
- regex: '(?:WIKO-)?WIM Lite'
|
14561 |
model: 'WIM Lite'
|
14562 |
- regex: '(?:WIKO-)?Pulp Fab 4G'
|
14589 |
model: 'View Lite'
|
14590 |
- regex: 'W_C800'
|
14591 |
model: 'View 2'
|
14592 |
+
- regex: 'W_C860'
|
14593 |
+
model: 'View 2 Pro'
|
14594 |
- regex: 'W_P200'
|
14595 |
model: 'View Max'
|
14596 |
+
- regex: 'W_P130'
|
14597 |
+
model: 'View Go'
|
14598 |
+
- regex: 'W-V800-(TVM|TIM|EEA|OPE|DU)'
|
14599 |
model: 'View 3 Lite'
|
14600 |
+
- regex: 'W-K130-(?:OPE|EEA)'
|
14601 |
+
model: 'Y50'
|
14602 |
- regex: 'W-K420-EEA'
|
14603 |
model: 'Y50'
|
14604 |
+
- regex: 'W-K510-(?:TVM|EEA|OPE|SUN|BYT|TH)|W-K510S-SWI'
|
14605 |
model: 'Y60'
|
14606 |
+
- regex: 'W-V720-(?:EEA|OPE|SUN)'
|
14607 |
model: 'Y80'
|
14608 |
+
- regex: 'W-P311-(?:EEA|OPE|TVM)'
|
14609 |
model: 'View 3'
|
14610 |
+
- regex: 'W-P611-(?:EEA|OPE)'
|
14611 |
model: 'View 3 Pro'
|
14612 |
- regex: 'W-V830-EEA'
|
14613 |
model: 'View 4'
|
14622 |
|
14623 |
# Wieppo
|
14624 |
Wieppo:
|
14625 |
+
regex: 'Wieppo (S6 Lite|S[658]|E1)(?:[);/ ]|$)'
|
14626 |
device: 'smartphone'
|
14627 |
model: '$1'
|
14628 |
|
14727 |
|
14728 |
# Xiaomi
|
14729 |
Xiaomi:
|
14730 |
+
regex: 'Xiaomi(?!/(?:Miui|Mint[ ])Browser)|Mi9 Pro 5G|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?)(?:[);/ ]|$)|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|MI_NOTE_Pro|POCOPHONE|(?:SHARK )?(KLE|MBU)-[AH]0|SKR-[AH]0|SKW-[AH]0|POCO F1|DLT-[AH]0|MIBOX[234]([_ ]PRO)?|MiTV4[CSX]?|MiTV-(MSSP[01]|AXSO0)|AWM-A0|MI CC 9 Meitu Edition|MiBOX1S|MiTV4A|M2006C3(?:L[IGC]|LVG|MN?G)|M2007J1SC|M2002J9[EG]|HM2014819|WT88047|M2004J(?:7[AB]|19)C|M2006C3MII|M2003J15SC|M2007J3S[CYG]|HM NOTE 1(?:LTE|W)|MI[_ ]PLAY|XIG01'
|
14731 |
device: 'smartphone'
|
14732 |
models:
|
14733 |
# specific smartphone models
|
14767 |
model: 'MI CC 9'
|
14768 |
- regex: 'Xiaomi_M2001J2E_TD-LTE(?:[);/ ]|$)'
|
14769 |
model: 'MI 10'
|
14770 |
+
- regex: 'M2007J3S[CY](?:[);/ ]|$)'
|
14771 |
model: 'MI 10T 5G'
|
14772 |
- regex: 'M2007J3SG(?:[);/ ]|$)'
|
14773 |
model: 'MI 10T Pro 5G'
|
14817 |
model: 'Redmi 1'
|
14818 |
- regex: 'M2004J7AC(?:[);/ ]|$)'
|
14819 |
model: 'Redmi 10X'
|
14820 |
+
- regex: '(?:M2004J19C|M2006C3MII)(?:[);/ ]|$)'
|
14821 |
model: 'Redmi 9'
|
14822 |
- regex: 'M2006C3L[GCI](?:[);/ ]|$)'
|
14823 |
model: 'Redmi 9A'
|
14861 |
- regex: 'MiTV-MSSP1(?:[);/ ]|$)'
|
14862 |
model: 'MiTV 4S'
|
14863 |
device: 'tv'
|
14864 |
+
- regex: '(?:MiTV-AXSO0|MiTV4(?:A|-ANSM0)|MiTV-MSSP0)(?:[);/ ]|$)'
|
14865 |
model: 'MiTV 4A'
|
14866 |
device: 'tv'
|
14867 |
- regex: '(MiTV)(4[CSX]|4)(?:[);/ ]|$)'
|
15009 |
|
15010 |
# Yu
|
15011 |
Yu:
|
15012 |
+
regex: '(?:YU5[05]10[A]?|YU4711|AO5510|YU5050|YU501[14])(?:[);/ ]|$)'
|
15013 |
device: 'smartphone'
|
15014 |
models:
|
15015 |
- regex: 'YU5010[A]?(?:[);/ ]|$)'
|
15016 |
model: 'Yuphoria'
|
15017 |
+
- regex: 'YU5011(?:[);/ ]|$)'
|
15018 |
+
model: 'Yunique 2'
|
15019 |
- regex: 'YU5050(?:[);/ ]|$)'
|
15020 |
model: 'Yutopia'
|
15021 |
- regex: 'AO5510(?:[);/ ]|$)'
|
15024 |
model: 'Yureka Plus'
|
15025 |
- regex: 'YU4711(?:[);/ ]|$)'
|
15026 |
model: 'Yunique'
|
|
|
|
|
15027 |
- regex: 'YU5014(?:[);/ ]|$)'
|
15028 |
model: 'Ace'
|
15029 |
|
15572 |
regex: '(?:FTJ17A00|FTJ152[ABCD]|FT141B|FT142D_LTEXM|FT142A?|FTJ161[AB]|FTJ1[56]2E|FTJ162D|FTE161[GE])(?:[);/ ]|$)'
|
15573 |
device: 'smartphone'
|
15574 |
models:
|
15575 |
+
- regex: 'FTJ152C'
|
15576 |
+
model: 'Samurai Miyabi'
|
15577 |
+
- regex: 'FTJ17A00(?:[);/ ]|$)'
|
15578 |
+
model: 'Rei 2 Dual'
|
15579 |
+
- regex: 'FTJ161A'
|
15580 |
+
model: 'Musashi'
|
15581 |
+
- regex: 'FTE161E'
|
15582 |
+
model: 'Ice 2'
|
15583 |
+
- regex: 'FTE161G'
|
15584 |
+
model: 'Ice 2 Plus'
|
15585 |
+
- regex: 'FTJ162E'
|
15586 |
+
model: 'Raijin'
|
15587 |
+
- regex: 'FT141B'
|
15588 |
+
model: 'Nico'
|
15589 |
+
- regex: 'FT142D_LTEXM'
|
15590 |
+
model: 'XM'
|
15591 |
+
- regex: 'FT142A?'
|
15592 |
+
model: 'Priori 2'
|
15593 |
+
- regex: 'FTJ152A'
|
15594 |
+
model: 'Priori 3'
|
15595 |
+
- regex: 'FTJ162D'
|
15596 |
+
model: 'Priori 4'
|
15597 |
+
- regex: 'FTJ152B'
|
15598 |
+
model: 'Priori 3S LTE'
|
15599 |
+
- regex: 'FTJ152D'
|
15600 |
+
model: 'Samurai Kiwami'
|
15601 |
+
- regex: 'FTJ161B'
|
15602 |
+
model: 'Samurai Rei'
|
15603 |
+
- regex: 'FTJ152E'
|
15604 |
+
model: 'Katana 1'
|
15605 |
|
15606 |
# Zeemi
|
15607 |
Zeemi:
|
15634 |
regex: 'ZOPO|(?:ZOPO[_ ])?(Flash X3|ZP[0-9]{2,}[^/;]+)(?:\)| Build)'
|
15635 |
device: 'smartphone'
|
15636 |
models:
|
15637 |
+
- regex: '(?:ZOPO_C2_MOD|ZP998)(?:[);/ ]|$)'
|
15638 |
model: 'C2 II'
|
15639 |
+
- regex: 'ZOPO 9xxQuad(?:[);/ ]|$)'
|
15640 |
+
model: '9XX Quad'
|
15641 |
- regex: '(?:ZOPO_)?ZP980[+](?:[);/ ]|$)'
|
15642 |
model: 'ZP980+'
|
15643 |
- regex: '(?:ZOPO_)?ZP980(?:[);/ ]|$)'
|
15679 |
|
15680 |
# ZTE
|
15681 |
ZTE:
|
15682 |
+
regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:L110|L[2357]|L7A|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310|460|465|475|520|530|602)|V580|V Ultra|Q Lux)|N9[15]8St|NX(?:403A|404H|406E|40[X2]|507J|503A|505J|506J|508J|510J|512J|511J|513J|521J|523J_V1|529J|531J|541J|5[48]9J|551J|563J|569[HJ]|573J|575J|59[157]J|60[1689]J|61[12679]J|62[79]J|65[19]J|907J)|N818S|N951[0579]|N91[38]0|N9101|N913[267]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:233V|331|5031O|559DL|6621O|667T|768G|792|81[25]|818L|82[08]|83[12359]|85[125]|851M|(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)|Apex2|G (LTE|Lux)|Vec|Z959|V865M|Z3001S|902ZT|KIS II Max|Kis 3|K3DX-V5G|Z930L|Optus X|Blade[ _](A510|A[35] 2019-T|A6 MAX|A0622|X9)|Z3153V|Nubia Z(?:9|11)|Ctyon-A9|602ZT|MO-01[JK]|Z963U|402ZT|P545|P609|dandelion|901ZT|A001ZT|Z-01K|UZTE V808)(?:[);/ ]|$)'
|
15683 |
device: 'smartphone'
|
15684 |
models:
|
15685 |
# explicit smartphone models
|
16079 |
model: '$1'
|
16080 |
- regex: 'ZTE-(?:G |G-)?([a-z0-9 _]+)'
|
16081 |
model: '$1'
|
16082 |
+
- regex: 'U?ZTE[ _]([a-z0-9]+)'
|
16083 |
model: '$1'
|
16084 |
|
16085 |
Zuum:
|
16134 |
models:
|
16135 |
- regex: 'Lemhoov[ _-]([^/;]+) Build'
|
16136 |
model: '$1'
|
16137 |
+
|
16138 |
+
# MTC (MTS)
|
16139 |
MTC:
|
16140 |
+
regex: 'MTC[ _](968|97[82]|970|982[OT]?|1078)|(?:MTC[_ ])?SMART[ _]?(?:Race[2]?|Sprint|Run|Surf[2]?)[ _]4G|MTC975|Smart_(?:LINE|Light)|MTC[ _]SMART[ _](?:Run|Start_2)|Redbox Mini 5\(MTS\)'
|
16141 |
device: 'smartphone'
|
16142 |
models:
|
16143 |
- regex: 'MTC[ _]?(97[258]|970[H]?|982[OT]?|968)'
|
16149 |
model: 'Smart Race 4G'
|
16150 |
- regex: 'SMART[ _]Race2[ _]4G'
|
16151 |
model: 'Smart Race 2 4G'
|
16152 |
+
- regex: '(?:MTC_)?SMART[ _]Sprint[ _]4G'
|
16153 |
model: 'Smart Sprint 4G'
|
16154 |
+
- regex: '(?:MTC_)?SMART[ _]Start_2'
|
16155 |
model: 'Smart Start 2'
|
16156 |
+
- regex: 'Smart_LINE'
|
16157 |
+
model: 'Smart Line'
|
16158 |
+
- regex: 'Smart_Light'
|
16159 |
+
model: 'Smart Light'
|
16160 |
- regex: 'SMART[ _]?Run(?:[ _]4G)?'
|
16161 |
model: 'Smart Run 4G'
|
16162 |
- regex: 'SMART[ _]Surf2[ _]4G'
|
16163 |
model: 'Smart Surf 2 4G'
|
16164 |
- regex: 'SMART[ _]Surf[ _]4G'
|
16165 |
model: 'Smart Surf 4G'
|
16166 |
+
- regex: 'Redbox Mini 5\(MTS\)'
|
16167 |
+
device: 'tv'
|
16168 |
+
model: 'Redbox Mini 5'
|
16169 |
|
16170 |
# MegaFon
|
16171 |
MegaFon:
|
16200 |
|
16201 |
# Vertex
|
16202 |
Vertex:
|
16203 |
+
regex: 'Lion_Dual|V709X|Tab [43]G (?:7-2|8-1|10-1)|Pro_P3[01]0_4G|Lion_DC|Baccara|Eagle[ _]4G|ImpressMAX|Impress[ _]([^;/]+)(?:Build|\))'
|
16204 |
device: 'smartphone'
|
16205 |
models:
|
16206 |
+
- regex: '(Lion_Dual|Lion_DC|Baccara|Eagle[ _]4G)'
|
16207 |
model: '$1'
|
16208 |
- regex: 'ImpressMAX(?:[);/ ]|$)'
|
16209 |
model: 'Impress Max'
|
16210 |
+
- regex: 'Pro_P(3[01]0)_4G(?:[);/ ]|$)'
|
16211 |
+
model: 'Pro P$1 4G'
|
16212 |
- regex: '(Impress[ _]([^;/]+))(?:Build|\))'
|
16213 |
model: '$1'
|
16214 |
- regex: '(V709X)'
|
16215 |
device: 'tablet'
|
16216 |
model: '$1'
|
16217 |
+
- regex: 'Tab ([43])G ([78]|10)-([21])'
|
16218 |
+
device: 'tablet'
|
16219 |
+
model: 'Tab $1G $2.$3"'
|
16220 |
|
16221 |
# Devices with undectable brand, but detectable model
|
16222 |
Unknown:
|
16362 |
models:
|
16363 |
- regex: 'FORME[ _-]F520(?:[);/ ]|$)'
|
16364 |
model: 'Forever'
|
16365 |
+
- regex: 'FORME[ _-](A37|R7S?)(?:[);/ ]|$)'
|
16366 |
model: '$1'
|
16367 |
|
16368 |
# Shuttle
|
16383 |
|
16384 |
# Highscreen
|
16385 |
Highscreen:
|
16386 |
+
regex: 'HIGHSCREEN|(Easy[- ]Power(?:[- ]Pro)?|Pure[_ ]Power|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))|PowerFour|BOOST II(?:se)?|FestXL|Fest-Pro|Tasty|Boost3|Boost 3(?: Pro)? SE|Expanse)(?:[);/ ]|$)'
|
16387 |
device: 'smartphone'
|
16388 |
models:
|
16389 |
- regex: '(Power Ice(?:[ ](?:Max|Evo))?|Power Rage(?: Evo)?|Zera[ _][UFS])(?:[);/ ]|$)'
|
16400 |
model: 'Power Five Max'
|
16401 |
- regex: 'FestXL(?:[);/ ]|$)'
|
16402 |
model: 'Fest XL'
|
16403 |
+
- regex: 'Fest-Pro(?:[);/ ]|$)'
|
16404 |
+
model: 'Fest Pro'
|
16405 |
- regex: 'PowerFour(?:[);/ ]|$)'
|
16406 |
model: 'Power Four'
|
16407 |
- regex: 'Pure[_ ]Power(?:[);/ ]|$)'
|
16420 |
model: 'Boost 2'
|
16421 |
- regex: 'BOOST IIse(?:[);/ ]|$)'
|
16422 |
model: 'Boost 2 SE'
|
16423 |
+
- regex: 'Boost 3 SE(?:[);/ ]|$)'
|
16424 |
+
model: 'Boost 3 SE'
|
16425 |
+
- regex: 'Boost 3 Pro SE(?:[);/ ]|$)'
|
16426 |
+
model: 'Boost 3 Pro SE'
|
16427 |
- regex: 'BOOST3(?:[);/ ]|$)'
|
16428 |
model: 'Boost 3'
|
16429 |
- regex: 'Zera-S-Power(?:[);/ ]|$)'
|
16453 |
- regex: '(GU1011C|GU7013C|GU730C)(?:[);/ ]|$)'
|
16454 |
model: '$1'
|
16455 |
|
16456 |
+
# Atom ()
|
16457 |
Atom:
|
16458 |
+
regex: 'ATOM-(108AM|216RK|216AM)(?:[);/ ]|$)'
|
16459 |
device: 'tv'
|
16460 |
model: '$1'
|
16461 |
|
16462 |
# Qumo
|
16463 |
Qumo:
|
16464 |
+
regex: 'QUMO[ _]?|(?:Quest[ _]?(?:45[56]|50[67])|Vega[ _]?78[23]|Sirius[ _]?(?:1001|890))(?:[);/ ]|$)'
|
16465 |
device: 'tablet'
|
16466 |
models:
|
16467 |
- regex: '(?:QUMO[ _]?)?Vega[ _]?(78[23]|8002)(?:[);/ ]|$)'
|
16468 |
model: 'Vega $1'
|
16469 |
- regex: 'Yooda(?:[);/ ]|$)'
|
16470 |
model: 'Yooda'
|
16471 |
+
- regex: 'Sirius[ _]?(1001|890)(?:[);/ ]|$)'
|
16472 |
+
model: 'Sirius $1'
|
16473 |
- regex: '(?:QUMO)?(Sirius 101-4G 8GB Black|Altair 701 8GB Black|Altair 71 4GB Black|Altair 700[24]|Altair 706)(?:[);/ ]|$)'
|
16474 |
model: '$1'
|
16475 |
+
- regex: 'QUMO[ _]Quest[ _]?(35[34]|40[26]|45[28]|47[46]|507|5[17]0|600)(?:[);/ ]|$)'
|
16476 |
+
device: 'smartphone'
|
16477 |
+
model: 'Quest $1'
|
16478 |
+
- regex: 'Quest[ _]?(45[56]|50[67])(?:[);/ ]|$)'
|
16479 |
device: 'smartphone'
|
16480 |
model: 'Quest $1'
|
16481 |
|
16500 |
|
16501 |
# Unihertz
|
16502 |
Unihertz:
|
16503 |
+
regex: '(Titan|Jelly-Pro|Atom_X?L)(?:[);/ ]|$)'
|
16504 |
device: 'smartphone'
|
16505 |
models:
|
16506 |
- regex: '(Jelly)-(Pro)(?:[);/ ]|$)'
|
16507 |
model: '$1 $2'
|
16508 |
+
- regex: '(Titan|Atom_X?L)(?:[);/ ]|$)'
|
16509 |
model: '$1'
|
16510 |
|
16511 |
# Chuwi
|
16587 |
|
16588 |
# Vinga
|
16589 |
Vinga:
|
16590 |
+
regex: 'VMP-(015-162|021-82|041-162|011-81|025-324|045-664)(?:[);/ ]|$)'
|
16591 |
device: 'tv'
|
16592 |
models:
|
16593 |
- regex: 'VMP-021-82'
|
16594 |
model: '021'
|
16595 |
+
- regex: 'VMP-025-324'
|
16596 |
+
model: '025'
|
16597 |
+
- regex: 'VMP-015-162'
|
16598 |
+
model: '015'
|
16599 |
- regex: 'VMP-041-162'
|
16600 |
model: '041'
|
16601 |
+
- regex: 'VMP-045-664'
|
16602 |
+
model: '045'
|
16603 |
- regex: 'VMP-011-81'
|
16604 |
model: '011'
|
16605 |
|
16651 |
|
16652 |
# Mystery
|
16653 |
Mystery:
|
16654 |
+
regex: 'MYSTERY|(MID-(?:123G|72[12]|7[01348]3G|753G|8[23]3G))(?:[);/ ]|$)'
|
16655 |
device: 'tablet'
|
16656 |
models:
|
16657 |
+
- regex: 'MID-(123G|72[12]|7[01348]3G|753G|8[23]3G)(?:[);/ ]|$)'
|
16658 |
model: 'MID-$1'
|
16659 |
|
16660 |
+
- regex: 'MYSTERY_TV_(D3155CH31)'
|
16661 |
+
device: 'tv'
|
16662 |
+
model: '$1'
|
16663 |
+
|
16664 |
# Ritzviva
|
16665 |
Ritzviva:
|
16666 |
regex: '(RITZVIVA[_ ]S500C)(?:[);/ ]|$)'
|
16723 |
|
16724 |
# Kivi
|
16725 |
Kivi:
|
16726 |
+
regex: '(?:24H600G[RU]|24FR50WU|24HK30B|32HR55GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|55UP50GU|50U600G[RU]|55UR50GR|40FK30G|40FR50BR|43UK35G|50FK30G|50UK35G|32HR50GR|55UC30G|32HK30G|40FK30G|32HR50GU|43UK30G|32FR50(?:WR|BU)|32FK3[02]G)(?:_-Ver0[0-9])?(?:[);/ ]|$)'
|
16727 |
device: 'tv'
|
16728 |
models:
|
16729 |
+
- regex: '(24H600G[RU]|24FR50WU|24HK30B|32HR55GU|4[39]UP50GU|40UR50G[RU]|40U600G[RU]|55UP50GU|50U600G[RU]|55UR50GR|40FK30G|40FR50BR|43UK35G|50FK30G|50UK35G|32HR50GR|32FR50(?:WR|BU)|32FK3[02]G)(?:[);/ ]|$)'
|
16730 |
model: '$1'
|
16731 |
- regex: '(55UC30G|40FK30G|43UK30G|32HR50G[RU]|32HK30G|32FK32G)_-Ver0([0-9])(?:[);/ ]|$)'
|
16732 |
model: '$1 v$2'
|
16751 |
|
16752 |
#Kaiomy
|
16753 |
Kaiomy:
|
16754 |
+
regex: 'KaiCloud[ ]?(7[48]4|942)(?:[);/ ]|$)'
|
16755 |
+
device: 'tablet'
|
16756 |
+
model: 'KaiCloud $1'
|
16757 |
|
16758 |
# National
|
16759 |
National:
|
16763 |
|
16764 |
# Vsun
|
16765 |
Vsun:
|
16766 |
+
regex: '(?:VSUN (?:ILLUSION|RACE|V9)|MARS TOUCH)(?:[);/ ]|$)'
|
16767 |
device: 'smartphone'
|
16768 |
models:
|
16769 |
- regex: 'ILLUSION(?:[);/ ]|$)'
|
16770 |
model: 'Illusion'
|
16771 |
+
- regex: 'MARS TOUCH(?:[);/ ]|$)'
|
16772 |
+
model: 'Mars Touch'
|
16773 |
- regex: 'RACE(?:[);/ ]|$)'
|
16774 |
model: 'Race'
|
16775 |
- regex: '(V9)(?:[);/ ]|$)'
|
16783 |
|
16784 |
# RugGear
|
16785 |
RugGear:
|
16786 |
+
regex: '(RugGear|RG(?:310|500|65[05]|702|7[13]0|850))(?:[);/ ]|$)'
|
16787 |
device: 'smartphone'
|
16788 |
models:
|
16789 |
- regex: '(RG[0-9]+)(?:[);/ ]|$)'
|
16794 |
regex: 'ALIGATOR[_ ]'
|
16795 |
device: 'smartphone'
|
16796 |
models:
|
16797 |
+
- regex: 'ALIGATOR[ _](S4080|S50(?:6[56]|[678]0)|RX510|S6500|RX710|RX800|S5520)(?:[);/ ]|$)'
|
16798 |
model: '$1'
|
16799 |
|
16800 |
# Maxcom
|
16843 |
|
16844 |
# Zidoo
|
16845 |
Zidoo:
|
16846 |
+
regex: 'ZIDOO[ _](H6 Pro|X6 Pro|X9S|Z10|X[158]|X20 Pro)(?:[);/ ]|$)'
|
16847 |
device: 'tv'
|
16848 |
model: '$1'
|
16849 |
|
16855 |
|
16856 |
# iGet
|
16857 |
iGet:
|
16858 |
+
regex: 'SMART[_ ](G10[12]|S7[02]|G71|G81[H]?)(?:[);/ ]|$)'
|
16859 |
device: 'tablet'
|
16860 |
model: 'Smart $1'
|
16861 |
|
16949 |
|
16950 |
# NEXON
|
16951 |
NEXON:
|
16952 |
+
regex: 'NEXON (X[1589])(?:[);/ ]|$)'
|
16953 |
+
device: 'tv'
|
16954 |
+
model: '$1'
|
16955 |
|
16956 |
# ONN
|
16957 |
ONN:
|
16958 |
+
regex: '(ONA19TB00[327])(?:[);/ ]|$)'
|
16959 |
+
device: 'tablet'
|
16960 |
+
model: '$1'
|
16961 |
+
|
16962 |
+
# EXO S.A
|
16963 |
+
EXO:
|
16964 |
+
regex: '(Wave_i101G)(?:[);/ ]|$)'
|
16965 |
device: 'tablet'
|
16966 |
model: '$1'
|
16967 |
|
17161 |
|
17162 |
# E-Ceros
|
17163 |
'E-Ceros':
|
17164 |
+
regex: '(?:CT9716(?:-B)?)(?:[);/ ]|$)'
|
17165 |
+
device: 'tablet'
|
17166 |
+
models:
|
17167 |
+
- regex: 'CT9716(?:[);/ ]|$)'
|
17168 |
+
model: 'Revolution'
|
17169 |
+
- regex: 'CT9716-B(?:[);/ ]|$)'
|
17170 |
+
model: 'Revolution HD'
|
17171 |
|
17172 |
# How (how.com.br)
|
17173 |
How:
|
17188 |
models:
|
17189 |
- regex: 'Multilaser[ _]G[_ ]Pro(?:[);/ ]|$)'
|
17190 |
model: 'G Pro'
|
17191 |
+
- regex: 'Multilaser[ _]F[_ ]Pro(?:[);/ ]|$)'
|
17192 |
+
model: 'F Pro'
|
17193 |
- regex: 'Multilaser[ _]G[_ ]Max(?:[);/ ]|$)'
|
17194 |
model: 'G Max'
|
17195 |
- regex: 'Multilaser[ _]G(?:[);/ ]|$)'
|
17255 |
|
17256 |
# Maxtron
|
17257 |
Maxtron:
|
17258 |
+
regex: 'Maxtron[ _-](V[327]|S[89])(?:[);/ ]|$)'
|
17259 |
device: 'smartphone'
|
17260 |
model: '$1'
|
17261 |
|
17348 |
|
17349 |
# AT&T
|
17350 |
AT&T:
|
17351 |
+
regex: '(?:U304AA|QS5509A)(?:[);/ ]|$)'
|
17352 |
+
device: 'smartphone'
|
17353 |
+
models:
|
17354 |
+
- regex: 'U304AA(?:[);/ ]|$)'
|
17355 |
+
model: 'Radiant Core'
|
17356 |
+
- regex: 'QS5509A(?:[);/ ]|$)'
|
17357 |
+
model: 'Axia'
|
17358 |
|
17359 |
# BIHEE
|
17360 |
BIHEE:
|
17430 |
|
17431 |
# OzoneHD
|
17432 |
OzoneHD:
|
17433 |
+
regex: 'OzoneHD[ _](T2 WiFi|4K(?: TV)?|Fun)(?:[);/ ]|$)'
|
17434 |
device: 'tv'
|
17435 |
model: '$1'
|
17436 |
|
17516 |
|
17517 |
# BB Mobile
|
17518 |
BB Mobile:
|
17519 |
+
regex: 'Techno[-_ ](8\.0|9\.7|TQ863Q|X595BT|S700BF|I700AJ|10.1 LTE TQ060X|7.0 LTE TQ763I|I785AP|I101BI)(?:[);/ ]|$)'
|
17520 |
device: 'tablet'
|
17521 |
models:
|
17522 |
- regex: 'Techno[_ ]S700BF(?:[);/ ]|$)'
|
17527 |
model: 'Techno 8.0" Poplar LTE TQ863Q'
|
17528 |
- regex: 'Techno[_ ]I700AJ(?:[);/ ]|$)'
|
17529 |
model: 'Techno 7.0" Mozg LTE I700AJ'
|
17530 |
+
- regex: 'Techno[-_ ]I785AP(?:[);/ ]|$)'
|
17531 |
+
model: 'Techno 7.85" Mozg I785AP'
|
17532 |
+
- regex: 'Techno[-_ ]I101BI(?:[);/ ]|$)'
|
17533 |
+
model: 'Techno 10.1" Mozg I101BI'
|
17534 |
- regex: 'Techno[_ ]7.0 LTE TQ763I(?:[);/ ]|$)'
|
17535 |
model: 'Techno 7.0" Kalash LTE TQ763I'
|
17536 |
|
17537 |
+
- regex: 'Techno[_ ](9\.7|8\.0) 3G(?:[);/ ]|$)'
|
17538 |
+
model: 'Techno $1" 3G'
|
17539 |
+
|
17540 |
+
- regex: 'Techno[_ ](?:X595BT)(?:[);/ ]|$)'
|
17541 |
device: 'smartphone'
|
17542 |
model: 'Techno Spark 3G X595BT'
|
17543 |
|
17562 |
regex: 'Tele2[ _](?:Mi[dn]i[ _][12][\._][10]|Mi[dn]i|Maxi(?:[ _](?:Plus|LTE))?)(?:[);/ ]|$)'
|
17563 |
device: 'smartphone'
|
17564 |
models:
|
17565 |
+
- regex: 'Tele2[ _]Mini[ _]1[_\.]1(?:[);/ ]|$)'
|
17566 |
+
model: 'Mini 1.1'
|
17567 |
+
- regex: 'Tele2[ _]Midi[ _]2[_\.]0(?:[);/ ]|$)'
|
17568 |
+
model: 'Midi 2.0'
|
17569 |
+
- regex: 'Tele2[ _](Maxi(?:[_ ](?:Plus|LTE))?)(?:[);/ ]|$)'
|
17570 |
+
model: '$1'
|
17571 |
+
- regex: 'Tele2[ _](Midi[ _]1\.1|Mi[dn]i)(?:[);/ ]|$)'
|
17572 |
+
model: '$1'
|
17573 |
|
17574 |
# Alfawise
|
17575 |
Alfawise:
|
17579 |
|
17580 |
# Klipad
|
17581 |
Klipad:
|
17582 |
+
regex: 'KLIPAD_|(?:KL-V905|KL4889)(?:[);/ ]|$)'
|
17583 |
device: 'smartphone'
|
17584 |
+
models:
|
17585 |
+
- regex: '(?:KLIPAD_)?(V355B?|KL600|KL-V905)(?:[);/ ]|$)'
|
17586 |
+
model: '$1'
|
17587 |
+
- regex: '(KL4889)(?:[);/ ]|$)'
|
17588 |
+
device: 'tablet'
|
17589 |
+
model: '$1'
|
17590 |
|
17591 |
# SQOOL (sqool.fr)
|
17592 |
SQOOL:
|
17602 |
|
17603 |
# Jinga
|
17604 |
Jinga:
|
17605 |
+
regex: 'Jinga[-_ ]|(?:Optim4G|PassPlus|PicassoNote|Hotz[_ ]M1|WinPRO|Touch4G|Start3G|IGO[ _]L[41])(?:[);/ ]|$)'
|
17606 |
device: 'smartphone'
|
17607 |
models:
|
17608 |
- regex: 'Optim4G(?:[);/ ]|$)'
|
17611 |
model: 'Hotz M1'
|
17612 |
- regex: 'PassPlus(?:[);/ ]|$)'
|
17613 |
model: 'Pass Plus'
|
17614 |
+
- regex: 'WinPRO(?:[);/ ]|$)'
|
17615 |
+
model: 'Win Pro'
|
17616 |
+
- regex: 'Touch4G(?:[);/ ]|$)'
|
17617 |
+
model: 'Touch 4G'
|
17618 |
+
- regex: 'Start3G(?:[);/ ]|$)'
|
17619 |
+
model: 'Start 4G'
|
17620 |
- regex: 'PicassoNote(?:[);/ ]|$)'
|
17621 |
model: 'Picasso Note'
|
17622 |
- regex: 'Jinga Iron(?:[);/ ]|$)'
|
17629 |
model: 'Trezor S1 Plus'
|
17630 |
- regex: 'JINGA_IGO_L2(?:[);/ ]|$)'
|
17631 |
model: 'IGO L2'
|
17632 |
+
- regex: '(?:JINGA[_ ])?IGO[_ ]([ML]1|L4)(?:[);/ ]|$)'
|
17633 |
+
model: 'IGO $1'
|
17634 |
- regex: 'Jinga Trezor S1 Plus(?:[);/ ]|$)'
|
17635 |
model: 'Trezor S1 Plus'
|
17636 |
|
17666 |
|
17667 |
# Primux
|
17668 |
Primux:
|
17669 |
+
regex: 'Primux'
|
17670 |
+
device: 'smartphone'
|
17671 |
+
models:
|
17672 |
+
- regex: 'PrimuxDelta6(?:[);/ ]|$)'
|
17673 |
+
model: 'Delta 6'
|
17674 |
|
17675 |
# iMars
|
17676 |
iMars:
|
17690 |
- regex: 'LOGIC[_ ](X[13]|X4M|L5D|X5[AFT]|X60G)(?:[);/ ]|$)'
|
17691 |
model: '$1'
|
17692 |
|
17693 |
+
# Cloudpad
|
17694 |
+
Cloudpad:
|
17695 |
+
regex: '\+VT(?:107C|Q007C)(?:[);/ ]|$)'
|
17696 |
+
device: 'tablet'
|
17697 |
+
models:
|
17698 |
+
- regex: '\+VT(107C)'
|
17699 |
+
model: '+VT$1'
|
17700 |
+
- regex: '\+VTQ(007C)'
|
17701 |
+
model: '+VTQ$1'
|
17702 |
+
|
17703 |
# Cloudfone
|
17704 |
Cloudfone:
|
17705 |
regex: 'Thrill (?:Boost[ ]?(2|3)?|Snap|Access)(?:[);/ ]|$)'
|
17728 |
|
17729 |
# MiXzo
|
17730 |
MiXzo:
|
17731 |
+
regex: '(?:MiXzo[ _])?(?:ME1023|ME1030|MX1037|MX1024|MX10[24]1)([ _][34]G)?(?:[);/ ]|$)'
|
17732 |
device: 'tablet'
|
17733 |
models:
|
17734 |
+
- regex: 'MiXzo[_ ]ME(1023|1030)(?:[_ ]3G)(?:[);/ ]|$)'
|
17735 |
+
model: 'ME$1 3G'
|
17736 |
+
- regex: 'MiXzo[_ ]MX1021(?:[_ ]3G)?(?:[);/ ]|$)'
|
17737 |
+
model: 'MX1021 3G'
|
17738 |
+
|
17739 |
+
- regex: '(?:MiXzo[ _])?MX(1037|1041|1024)[ _]4G(?:[);/ ]|$)'
|
17740 |
+
model: 'MX$1 4G'
|
17741 |
|
17742 |
# Openbox
|
17743 |
Openbox:
|
17804 |
regex: 'iCherry_?'
|
17805 |
device: 'smartphone'
|
17806 |
models:
|
17807 |
+
- regex: 'iCherry[ _]C(25[125]|21[16]|110|121|22[079]|23[03])(?:[);/ ]|$)'
|
17808 |
+
model: 'C$1'
|
17809 |
|
17810 |
# NextTab
|
17811 |
NextTab:
|
17815 |
|
17816 |
# Time 2
|
17817 |
Time2:
|
17818 |
+
regex: '(TC1050G)(?:[);/ ]|$)'
|
17819 |
+
device: 'tablet'
|
17820 |
+
model: '$1 10.1"'
|
17821 |
|
17822 |
# Sunstech
|
17823 |
Sunstech:
|
17845 |
|
17846 |
# INVIN
|
17847 |
Invin:
|
17848 |
+
regex: 'INVIN[ _-](X[24]|KM[67])(?:[);/ ]|$)'
|
17849 |
device: 'tv'
|
17850 |
model: '$1'
|
17851 |
|
17909 |
|
17910 |
# MAXVI
|
17911 |
MAXVI:
|
17912 |
+
regex: 'MAXVI[ _](?:MS401)(?:[);/ ]|$)|(?:\w+)?_MAXVI_\w+|MS502[_ ]Orion|MS531'
|
17913 |
device: 'smartphone'
|
17914 |
+
models:
|
17915 |
+
- regex: 'MAXVI[ _](MS401)'
|
17916 |
+
model: '$1'
|
17917 |
+
- regex: 'MS531'
|
17918 |
+
model: 'MS531 Vega'
|
17919 |
+
- regex: 'MS502[_ ]Orion'
|
17920 |
+
model: 'MS502 Orion'
|
17921 |
+
- regex: '(?:\w+)?MAXVI_(P11|K10|X[358]00)_\w+'
|
17922 |
+
device: 'feature phone'
|
17923 |
+
model: '$1'
|
17924 |
+
|
17925 |
|
17926 |
# meanIT (meanit.hr)
|
17927 |
meanIT:
|
18068 |
model: 'Vox Pop Plus'
|
18069 |
- regex: 'VOX POP Pro'
|
18070 |
model: 'Vox Pop Pro'
|
18071 |
+
|
18072 |
+
# Fonos
|
18073 |
+
Fonos:
|
18074 |
+
regex: 'Fonos-(O1)(?:[);/ ]|$)'
|
18075 |
+
device: 'smartphone'
|
18076 |
+
model: '$1'
|
18077 |
+
|
18078 |
+
# Xtouch
|
18079 |
+
Xtouch:
|
18080 |
+
regex: 'Xtouch X10(?:[);/ ]|$)'
|
18081 |
+
device: 'smartphone'
|
18082 |
+
model: 'X10'
|
18083 |
+
|
18084 |
+
# Conquest
|
18085 |
+
Conquest:
|
18086 |
+
regex: 'Conquest[-_](?:S(?:[68]|1[0126])|F2)(?:[);/ ]|$)'
|
18087 |
+
device: 'smartphone'
|
18088 |
+
models:
|
18089 |
+
- regex: 'Conquest[-_]S([68]|1[0126])'
|
18090 |
+
model: 'S$1'
|
18091 |
+
- regex: 'Conquest-F2'
|
18092 |
+
model: 'F2'
|
18093 |
+
|
18094 |
+
# Zatec
|
18095 |
+
Zatec:
|
18096 |
+
regex: 'ZATEC[_ ]|[ ]WIND(?:[);/ ]|$)'
|
18097 |
+
device: 'smartphone'
|
18098 |
+
models:
|
18099 |
+
- regex: 'ZATEC[_ ]GRAVITY(?:[);/ ]|$)'
|
18100 |
+
model: 'Gravity'
|
18101 |
+
- regex: '[ ]WIND(?:[);/ ]|$)'
|
18102 |
+
model: 'Wind'
|
18103 |
+
|
18104 |
+
# Selenga
|
18105 |
+
Selenga:
|
18106 |
+
regex: 'Selenga[ _](A[134])(?:[);/ ]|$)'
|
18107 |
+
device: 'tv'
|
18108 |
+
model: '$1'
|
18109 |
+
|
18110 |
+
# Starlight
|
18111 |
+
Starlight:
|
18112 |
+
regex: '(?:My_Star_X|RIO STAR|C_Note_Pro)(?:[);/ ]|$)'
|
18113 |
+
device: 'smartphone'
|
18114 |
+
models:
|
18115 |
+
- regex: 'My_Star_X'
|
18116 |
+
model: 'My Star X'
|
18117 |
+
- regex: 'RIO STAR'
|
18118 |
+
model: 'Rio Star'
|
18119 |
+
- regex: 'C_Note_Pro'
|
18120 |
+
model: 'C Note Pro'
|
18121 |
+
|
18122 |
+
# GEOFOX
|
18123 |
+
GEOFOX:
|
18124 |
+
regex: 'GEOFOX[_](MID743)(?:[);/ ]|$)'
|
18125 |
+
device: 'tablet'
|
18126 |
+
model: '$1'
|
18127 |
+
|
18128 |
+
# Tinmo
|
18129 |
+
Tinmo:
|
18130 |
+
regex: 'TiNMO[- _](A11|K3)(?:[);/ ]|$)'
|
18131 |
+
device: 'smartphone'
|
18132 |
+
model: '$1'
|
18133 |
+
|
18134 |
+
# Matrix
|
18135 |
+
Matrix:
|
18136 |
+
regex: '(7116-A5)(?:[);/ ]|$)'
|
18137 |
+
device: 'tablet'
|
18138 |
+
model: '$1'
|
18139 |
+
|
18140 |
+
# Verico
|
18141 |
+
Verico:
|
18142 |
+
regex: '(RP-UDM0[12]A|RP-UDP05A)(?:[);/ ]|$)'
|
18143 |
+
device: 'tablet'
|
18144 |
+
model: 'Uni Pad $1'
|
18145 |
+
|
18146 |
+
# TTEC (ttec.com.tr)
|
18147 |
+
TTEC:
|
18148 |
+
regex: '(Magictab (?:9GX|7GE|718))(?:[);/ ]|$)'
|
18149 |
+
device: 'tablet'
|
18150 |
+
model: '$1'
|
18151 |
+
|
18152 |
+
# eSTAR
|
18153 |
+
eSTAR:
|
18154 |
+
regex: 'eSTAR[_ ](?:Grand|GO\!?|Zoom Quad|Gemini|MINI[_ ]3G|BEAUTY|MOON)'
|
18155 |
+
device: 'tablet'
|
18156 |
+
models:
|
18157 |
+
- regex: 'eSTAR (Grand|GO\!?) (HD Intel|IPS Intel|IPS|HD|Intel) Quad Core 3G'
|
18158 |
+
model: '$1 $2 Quad Core 3G'
|
18159 |
+
- regex: 'eSTAR (Zoom Quad|Gemini|GO)'
|
18160 |
+
model: '$1'
|
18161 |
+
- regex: 'eSTAR GRAND HD quad core( [34]G)?'
|
18162 |
+
model: 'Grand HD Quad Core$1'
|
18163 |
+
- regex: 'eSTAR GRAND'
|
18164 |
+
model: 'Grand'
|
18165 |
+
- regex: 'eSTAR BEAUTY HD Quad core'
|
18166 |
+
model: 'Beauty HD Quad Core'
|
18167 |
+
- regex: 'eSTAR MOON HD Quad core'
|
18168 |
+
model: 'Moon HD Quad Core 3G'
|
18169 |
+
- regex: 'eSTAR BEAUTY 2 HD Quad core'
|
18170 |
+
model: 'Beauty 2 HD Quad Core'
|
18171 |
+
- regex: 'eSTAR[_ ]MINI[_ ]3G'
|
18172 |
+
model: 'Mini 3G'
|
18173 |
+
|
18174 |
+
# Hometech
|
18175 |
+
Hometech:
|
18176 |
+
regex: 'Ideal (?:10S|Tab [79])(?:[);/ ]|$)'
|
18177 |
+
device: 'tablet'
|
18178 |
+
models:
|
18179 |
+
- regex: '(Ideal (?:10S|Tab 9))'
|
18180 |
+
model: '$1'
|
18181 |
+
- regex: 'Ideal Tab 7 Ips( 3G)?'
|
18182 |
+
model: 'Ideal Tab 7 IPS$1'
|
18183 |
+
|
18184 |
+
# ExMobile
|
18185 |
+
ExMobile:
|
18186 |
+
regex: 'EX(29|45)i(?:[);/ ]|$)'
|
18187 |
+
device: 'smartphone'
|
18188 |
+
model: 'EX $1i'
|
18189 |
+
|
18190 |
+
# Hipstreet
|
18191 |
+
Hipstreet:
|
18192 |
+
regex: '10DTB12(?:[);/ ]|$)'
|
18193 |
+
device: 'tablet'
|
18194 |
+
model: 'Phoenix'
|
18195 |
+
|
18196 |
+
# Navitech
|
18197 |
+
Navitech:
|
18198 |
+
regex: '(NeoTab)[ _-]((?:S1[23]0|S125|H85|H11[05]|KID741|S9700))(?:[);/ ]|$)'
|
18199 |
+
device: 'tablet'
|
18200 |
+
model: '$1 $2'
|
18201 |
+
|
18202 |
+
# NorthTech (north-tech.us)
|
18203 |
+
NorthTech:
|
18204 |
+
regex: '(NT-TP10)(?:[);/ ]|$)'
|
18205 |
+
device: 'tablet'
|
18206 |
+
model: 'TouchPad 10.0"'
|
18207 |
+
|
18208 |
+
# UNIWA
|
18209 |
+
UNIWA:
|
18210 |
+
regex: 'UNIWA[ _](X5)(?:[);/ ]|$)'
|
18211 |
+
device: 'smartphone'
|
18212 |
+
model: '$1'
|
18213 |
+
|
18214 |
+
# ANDOWL
|
18215 |
+
Andowl:
|
18216 |
+
regex: 'ANDOWL-(Q[45])(?:[);/ ]|$)'
|
18217 |
+
device: 'tv'
|
18218 |
+
model: '$1'
|
18219 |
+
|
18220 |
+
# Hardkernel (www.hardkernel.com)
|
18221 |
+
Hardkernel:
|
18222 |
+
regex: 'ODROID[-]?(C2|U2|XU[34])(?:[);/ ]|$)'
|
18223 |
+
device: 'peripheral'
|
18224 |
+
model: 'ODROID $1'
|
18225 |
+
|
18226 |
+
# Wiseasy (wiseasy.com)
|
18227 |
+
Wiseasy:
|
18228 |
+
regex: 'WISENET5(?:[);/ ]|$)'
|
18229 |
+
device: 'peripheral'
|
18230 |
+
model: 'WISENET5'
|
18231 |
+
|
18232 |
+
# Shtrikh-M
|
18233 |
+
Shtrikh-M:
|
18234 |
+
regex: 'SHTRIH-SMARTPOS-F2(?:[);/ ]|$)'
|
18235 |
+
device: 'peripheral'
|
18236 |
+
model: 'Smartpos F2'
|
app/vendor/matomo/device-detector/regexes/device/portable_media_player.yml
CHANGED
@@ -56,4 +56,4 @@ Samsung:
|
|
56 |
- regex: 'YP-G50'
|
57 |
model: 'Galaxy Player 50'
|
58 |
- regex: 'YP-GB70D'
|
59 |
-
model: 'Galaxy Player 70 Plus'
|
56 |
- regex: 'YP-G50'
|
57 |
model: 'Galaxy Player 50'
|
58 |
- regex: 'YP-GB70D'
|
59 |
+
model: 'Galaxy Player 70 Plus'
|
app/vendor/matomo/device-detector/regexes/device/televisions.yml
CHANGED
@@ -307,4 +307,4 @@ Videoweb:
|
|
307 |
- regex: '(tv2n)'
|
308 |
model: '$1'
|
309 |
- regex: '(videowebtv)'
|
310 |
-
model: 'VideoWeb TV'
|
307 |
- regex: '(tv2n)'
|
308 |
model: '$1'
|
309 |
- regex: '(videowebtv)'
|
310 |
+
model: 'VideoWeb TV'
|
app/vendor/matomo/device-detector/regexes/oss.yml
CHANGED
@@ -13,7 +13,6 @@
|
|
13 |
version: '$1'
|
14 |
|
15 |
|
16 |
-
|
17 |
##########
|
18 |
## Sailfish OS
|
19 |
###########
|
@@ -34,8 +33,8 @@
|
|
34 |
- regex: '(?:Windows Phone (?:OS)?|wds)[ ]?(\d+[\.\d]+)'
|
35 |
name: 'Windows Phone'
|
36 |
version: '$1'
|
37 |
-
|
38 |
-
|
39 |
- regex: 'XBLWP7|Windows Phone'
|
40 |
name: 'Windows Phone'
|
41 |
version: ''
|
@@ -43,17 +42,17 @@
|
|
43 |
- regex: 'Windows CE(?: (\d+[\.\d]+))?'
|
44 |
name: 'Windows CE'
|
45 |
version: '$1'
|
46 |
-
|
47 |
-
|
48 |
- regex: '(?:IEMobile|Windows ?Mobile)(?: (\d+[\.\d]+))?'
|
49 |
name: 'Windows Mobile'
|
50 |
version: '$1'
|
51 |
-
|
52 |
-
|
53 |
- regex: 'Windows NT 6.2; ARM;'
|
54 |
name: 'Windows RT'
|
55 |
version: ''
|
56 |
-
|
57 |
- regex: 'Windows NT 6.3; ARM;'
|
58 |
name: 'Windows RT'
|
59 |
version: '8.1'
|
@@ -109,7 +108,7 @@
|
|
109 |
- regex: '(?:(?:Orca-)?Android|Adr)[ /](?:[a-z]+ )?(\d+[\.\d]*)'
|
110 |
name: 'Android'
|
111 |
version: '$1'
|
112 |
-
|
113 |
- regex: 'Android|Silk-Accelerated=[a-z]{4,5}'
|
114 |
name: 'Android'
|
115 |
version: ''
|
@@ -131,7 +130,7 @@
|
|
131 |
name: 'Android'
|
132 |
version: '$1'
|
133 |
|
134 |
-
|
135 |
##########
|
136 |
# AmigaOS
|
137 |
##########
|
@@ -160,6 +159,13 @@
|
|
160 |
name: 'MTK / Nucleus'
|
161 |
version: '$1'
|
162 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
##########
|
164 |
# Linux
|
165 |
##########
|
@@ -191,6 +197,10 @@
|
|
191 |
name: '$1'
|
192 |
version: '$2'
|
193 |
|
|
|
|
|
|
|
|
|
194 |
# generic linux match -> end of file
|
195 |
|
196 |
##########
|
@@ -213,7 +223,7 @@
|
|
213 |
name: 'MorphOS'
|
214 |
version: '$1'
|
215 |
|
216 |
-
|
217 |
##########
|
218 |
# Windows
|
219 |
##########
|
@@ -289,7 +299,7 @@
|
|
289 |
name: 'Haiku OS'
|
290 |
version: ''
|
291 |
|
292 |
-
|
293 |
##########
|
294 |
# iOS
|
295 |
##########
|
@@ -497,7 +507,7 @@
|
|
497 |
- regex: 'Mac[ +]OS[ +]X(?:[ /](?:Version )?(\d+(?:[_\.]\d+)+))?'
|
498 |
name: 'Mac'
|
499 |
version: '$1'
|
500 |
-
|
501 |
- regex: 'Mac (\d+(?:[_\.]\d+)+)'
|
502 |
name: 'Mac'
|
503 |
version: '$1'
|
@@ -505,40 +515,38 @@
|
|
505 |
- regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC|iMac|MacBook'
|
506 |
name: 'Mac'
|
507 |
version: ''
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
##########
|
512 |
# ChromeOS
|
513 |
##########
|
514 |
- regex: 'CrOS [a-z0-9_]+ .* Chrome/(\d+[\.\d]+)'
|
515 |
name: 'Chrome OS'
|
516 |
version: '$1'
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
##########
|
521 |
# BlackBerry
|
522 |
##########
|
523 |
- regex: '(?:BB10;.+Version|Black[Bb]erry[0-9a-z]+|Black[Bb]erry.+Version)/(\d+[\.\d]+)'
|
524 |
name: 'BlackBerry OS'
|
525 |
version: '$1'
|
526 |
-
|
527 |
-
|
528 |
- regex: 'RIM Tablet OS (\d+[\.\d]+)'
|
529 |
name: 'BlackBerry Tablet OS'
|
530 |
version: '$1'
|
531 |
-
|
532 |
-
|
533 |
- regex: 'RIM Tablet OS|QNX|Play[Bb]ook'
|
534 |
name: 'BlackBerry Tablet OS'
|
535 |
version: ''
|
536 |
-
|
537 |
-
|
538 |
- regex: 'BlackBerry'
|
539 |
name: 'BlackBerry OS'
|
540 |
version: ''
|
541 |
-
|
542 |
- regex: 'bPod'
|
543 |
name: 'BlackBerry OS'
|
544 |
version: ''
|
@@ -552,8 +560,6 @@
|
|
552 |
version: ''
|
553 |
|
554 |
|
555 |
-
|
556 |
-
|
557 |
##########
|
558 |
# Symbian
|
559 |
##########
|
@@ -585,24 +591,23 @@
|
|
585 |
- regex: 'SymbianOS/(\d+[\.\d]+)'
|
586 |
name: 'Symbian OS'
|
587 |
version: '$1'
|
588 |
-
|
589 |
-
|
590 |
- regex: 'MeeGo|WeTab'
|
591 |
name: 'MeeGo'
|
592 |
version: ''
|
593 |
-
|
594 |
-
|
595 |
- regex: 'Symbian(?: OS)?|SymbOS'
|
596 |
name: 'Symbian OS'
|
597 |
version: ''
|
598 |
-
|
599 |
-
|
600 |
- regex: 'Nokia'
|
601 |
name: 'Symbian'
|
602 |
version: ''
|
603 |
|
604 |
|
605 |
-
|
606 |
##########
|
607 |
# Firefox OS
|
608 |
##########
|
@@ -633,8 +638,7 @@
|
|
633 |
- regex: 'bada(?:[ /](\d+[\.\d]+))'
|
634 |
name: 'Bada'
|
635 |
version: '$1'
|
636 |
-
|
637 |
-
|
638 |
- regex: 'bada'
|
639 |
name: 'Bada'
|
640 |
version: ''
|
@@ -647,29 +651,28 @@
|
|
647 |
name: 'Brew'
|
648 |
version: '$1'
|
649 |
|
650 |
-
|
651 |
- regex: 'Brew MP|BREW|BMP'
|
652 |
name: 'Brew'
|
653 |
version: ''
|
654 |
|
655 |
-
|
656 |
##########
|
657 |
# Web TV
|
658 |
##########
|
659 |
- regex: 'GoogleTV(?:[ /](\d+[\.\d]+))?'
|
660 |
name: 'Google TV'
|
661 |
version: '$1'
|
662 |
-
|
663 |
-
|
664 |
- regex: 'AppleTV(?:/?(\d+[\.\d]+))?'
|
665 |
name: 'Apple TV'
|
666 |
version: '$1'
|
667 |
-
|
668 |
-
|
669 |
- regex: 'WebTV/(\d+[\.\d]+)'
|
670 |
name: 'WebTV'
|
671 |
version: '$1'
|
672 |
-
|
673 |
|
674 |
##########
|
675 |
# Remix OS
|
@@ -693,54 +696,53 @@
|
|
693 |
- regex: '(?:SunOS|Solaris)(?:[/ ](\d+[\.\d]+))?'
|
694 |
name: 'Solaris'
|
695 |
version: '$1'
|
696 |
-
|
697 |
-
|
698 |
- regex: 'AIX(?:[/ ]?(\d+[\.\d]+))?'
|
699 |
name: 'AIX'
|
700 |
version: '$1'
|
701 |
-
|
702 |
-
|
703 |
- regex: 'HP-UX(?:[/ ]?(\d+[\.\d]+))?'
|
704 |
name: 'HP-UX'
|
705 |
version: '$1'
|
706 |
-
|
707 |
-
|
708 |
- regex: 'FreeBSD(?:[/ ]?(\d+[\.\d]+))?'
|
709 |
name: 'FreeBSD'
|
710 |
version: '$1'
|
711 |
-
|
712 |
-
|
713 |
- regex: 'NetBSD(?:[/ ]?(\d+[\.\d]+))?'
|
714 |
name: 'NetBSD'
|
715 |
version: '$1'
|
716 |
-
|
717 |
-
|
718 |
- regex: 'OpenBSD(?:[/ ]?(\d+[\.\d]+))?'
|
719 |
name: 'OpenBSD'
|
720 |
version: '$1'
|
721 |
-
|
722 |
-
|
723 |
- regex: 'DragonFly(?:[/ ]?(\d+[\.\d]+))?'
|
724 |
name: 'DragonFly'
|
725 |
version: '$1'
|
726 |
-
|
727 |
-
|
728 |
- regex: 'Syllable(?:[/ ]?(\d+[\.\d]+))?'
|
729 |
name: 'Syllable'
|
730 |
version: '$1'
|
731 |
-
|
732 |
-
|
733 |
- regex: 'IRIX(?:;64)?(?:[/ ]?(\d+[\.\d]+))'
|
734 |
name: 'IRIX'
|
735 |
version: '$1'
|
736 |
-
|
737 |
-
|
738 |
- regex: 'OSF1(?:[/ ]?v?(\d+[\.\d]+))?'
|
739 |
name: 'OSF1'
|
740 |
version: '$1'
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
##########
|
745 |
# Gaming Console
|
746 |
##########
|
@@ -751,35 +753,32 @@
|
|
751 |
- regex: 'PlayStation ?([3|4])'
|
752 |
name: 'PlayStation'
|
753 |
version: '$1'
|
754 |
-
|
755 |
-
|
756 |
- regex: 'Xbox|KIN\.(?:One|Two)'
|
757 |
name: 'Xbox'
|
758 |
version: '360'
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
##########
|
763 |
# Mobile Gaming Console
|
764 |
##########
|
765 |
- regex: 'Nitro|Nintendo ([3]?DS[i]?)'
|
766 |
name: 'Nintendo Mobile'
|
767 |
version: '$1'
|
768 |
-
|
769 |
-
|
770 |
- regex: 'PlayStation ((?:Portable|Vita))'
|
771 |
name: 'PlayStation Portable'
|
772 |
version: '$1'
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
##########
|
777 |
# IBM
|
778 |
##########
|
779 |
- regex: 'OS/2'
|
780 |
name: 'OS/2'
|
781 |
version: ''
|
782 |
-
|
783 |
|
784 |
|
785 |
###########
|
@@ -788,5 +787,3 @@
|
|
788 |
- regex: 'Linux(?:OS)?[^a-z]'
|
789 |
name: 'GNU/Linux'
|
790 |
version: ''
|
791 |
-
|
792 |
-
|
13 |
version: '$1'
|
14 |
|
15 |
|
|
|
16 |
##########
|
17 |
## Sailfish OS
|
18 |
###########
|
33 |
- regex: '(?:Windows Phone (?:OS)?|wds)[ ]?(\d+[\.\d]+)'
|
34 |
name: 'Windows Phone'
|
35 |
version: '$1'
|
36 |
+
|
37 |
+
|
38 |
- regex: 'XBLWP7|Windows Phone'
|
39 |
name: 'Windows Phone'
|
40 |
version: ''
|
42 |
- regex: 'Windows CE(?: (\d+[\.\d]+))?'
|
43 |
name: 'Windows CE'
|
44 |
version: '$1'
|
45 |
+
|
46 |
+
|
47 |
- regex: '(?:IEMobile|Windows ?Mobile)(?: (\d+[\.\d]+))?'
|
48 |
name: 'Windows Mobile'
|
49 |
version: '$1'
|
50 |
+
|
51 |
+
|
52 |
- regex: 'Windows NT 6.2; ARM;'
|
53 |
name: 'Windows RT'
|
54 |
version: ''
|
55 |
+
|
56 |
- regex: 'Windows NT 6.3; ARM;'
|
57 |
name: 'Windows RT'
|
58 |
version: '8.1'
|
108 |
- regex: '(?:(?:Orca-)?Android|Adr)[ /](?:[a-z]+ )?(\d+[\.\d]*)'
|
109 |
name: 'Android'
|
110 |
version: '$1'
|
111 |
+
|
112 |
- regex: 'Android|Silk-Accelerated=[a-z]{4,5}'
|
113 |
name: 'Android'
|
114 |
version: ''
|
130 |
name: 'Android'
|
131 |
version: '$1'
|
132 |
|
133 |
+
|
134 |
##########
|
135 |
# AmigaOS
|
136 |
##########
|
159 |
name: 'MTK / Nucleus'
|
160 |
version: '$1'
|
161 |
|
162 |
+
##########
|
163 |
+
# MRE / MAUI Runtime Environment
|
164 |
+
##########
|
165 |
+
- regex: 'MRE/(\d+)\.(\d+).*;MAUI'
|
166 |
+
name: 'MRE'
|
167 |
+
version: '$1.$2'
|
168 |
+
|
169 |
##########
|
170 |
# Linux
|
171 |
##########
|
197 |
name: '$1'
|
198 |
version: '$2'
|
199 |
|
200 |
+
- regex: 'OS ROSA; Linux'
|
201 |
+
name: 'Rosa'
|
202 |
+
version: ''
|
203 |
+
|
204 |
# generic linux match -> end of file
|
205 |
|
206 |
##########
|
223 |
name: 'MorphOS'
|
224 |
version: '$1'
|
225 |
|
226 |
+
|
227 |
##########
|
228 |
# Windows
|
229 |
##########
|
299 |
name: 'Haiku OS'
|
300 |
version: ''
|
301 |
|
302 |
+
|
303 |
##########
|
304 |
# iOS
|
305 |
##########
|
507 |
- regex: 'Mac[ +]OS[ +]X(?:[ /](?:Version )?(\d+(?:[_\.]\d+)+))?'
|
508 |
name: 'Mac'
|
509 |
version: '$1'
|
510 |
+
|
511 |
- regex: 'Mac (\d+(?:[_\.]\d+)+)'
|
512 |
name: 'Mac'
|
513 |
version: '$1'
|
515 |
- regex: 'Darwin|Macintosh|Mac_PowerPC|PPC|Mac PowerPC|iMac|MacBook'
|
516 |
name: 'Mac'
|
517 |
version: ''
|
518 |
+
|
519 |
+
|
|
|
520 |
##########
|
521 |
# ChromeOS
|
522 |
##########
|
523 |
- regex: 'CrOS [a-z0-9_]+ .* Chrome/(\d+[\.\d]+)'
|
524 |
name: 'Chrome OS'
|
525 |
version: '$1'
|
526 |
+
|
527 |
+
|
|
|
528 |
##########
|
529 |
# BlackBerry
|
530 |
##########
|
531 |
- regex: '(?:BB10;.+Version|Black[Bb]erry[0-9a-z]+|Black[Bb]erry.+Version)/(\d+[\.\d]+)'
|
532 |
name: 'BlackBerry OS'
|
533 |
version: '$1'
|
534 |
+
|
535 |
+
|
536 |
- regex: 'RIM Tablet OS (\d+[\.\d]+)'
|
537 |
name: 'BlackBerry Tablet OS'
|
538 |
version: '$1'
|
539 |
+
|
540 |
+
|
541 |
- regex: 'RIM Tablet OS|QNX|Play[Bb]ook'
|
542 |
name: 'BlackBerry Tablet OS'
|
543 |
version: ''
|
544 |
+
|
545 |
+
|
546 |
- regex: 'BlackBerry'
|
547 |
name: 'BlackBerry OS'
|
548 |
version: ''
|
549 |
+
|
550 |
- regex: 'bPod'
|
551 |
name: 'BlackBerry OS'
|
552 |
version: ''
|
560 |
version: ''
|
561 |
|
562 |
|
|
|
|
|
563 |
##########
|
564 |
# Symbian
|
565 |
##########
|
591 |
- regex: 'SymbianOS/(\d+[\.\d]+)'
|
592 |
name: 'Symbian OS'
|
593 |
version: '$1'
|
594 |
+
|
595 |
+
|
596 |
- regex: 'MeeGo|WeTab'
|
597 |
name: 'MeeGo'
|
598 |
version: ''
|
599 |
+
|
600 |
+
|
601 |
- regex: 'Symbian(?: OS)?|SymbOS'
|
602 |
name: 'Symbian OS'
|
603 |
version: ''
|
604 |
+
|
605 |
+
|
606 |
- regex: 'Nokia'
|
607 |
name: 'Symbian'
|
608 |
version: ''
|
609 |
|
610 |
|
|
|
611 |
##########
|
612 |
# Firefox OS
|
613 |
##########
|
638 |
- regex: 'bada(?:[ /](\d+[\.\d]+))'
|
639 |
name: 'Bada'
|
640 |
version: '$1'
|
641 |
+
|
|
|
642 |
- regex: 'bada'
|
643 |
name: 'Bada'
|
644 |
version: ''
|
651 |
name: 'Brew'
|
652 |
version: '$1'
|
653 |
|
|
|
654 |
- regex: 'Brew MP|BREW|BMP'
|
655 |
name: 'Brew'
|
656 |
version: ''
|
657 |
|
658 |
+
|
659 |
##########
|
660 |
# Web TV
|
661 |
##########
|
662 |
- regex: 'GoogleTV(?:[ /](\d+[\.\d]+))?'
|
663 |
name: 'Google TV'
|
664 |
version: '$1'
|
665 |
+
|
666 |
+
|
667 |
- regex: 'AppleTV(?:/?(\d+[\.\d]+))?'
|
668 |
name: 'Apple TV'
|
669 |
version: '$1'
|
670 |
+
|
671 |
+
|
672 |
- regex: 'WebTV/(\d+[\.\d]+)'
|
673 |
name: 'WebTV'
|
674 |
version: '$1'
|
675 |
+
|
676 |
|
677 |
##########
|
678 |
# Remix OS
|
696 |
- regex: '(?:SunOS|Solaris)(?:[/ ](\d+[\.\d]+))?'
|
697 |
name: 'Solaris'
|
698 |
version: '$1'
|
699 |
+
|
700 |
+
|
701 |
- regex: 'AIX(?:[/ ]?(\d+[\.\d]+))?'
|
702 |
name: 'AIX'
|
703 |
version: '$1'
|
704 |
+
|
705 |
+
|
706 |
- regex: 'HP-UX(?:[/ ]?(\d+[\.\d]+))?'
|
707 |
name: 'HP-UX'
|
708 |
version: '$1'
|
709 |
+
|
710 |
+
|
711 |
- regex: 'FreeBSD(?:[/ ]?(\d+[\.\d]+))?'
|
712 |
name: 'FreeBSD'
|
713 |
version: '$1'
|
714 |
+
|
715 |
+
|
716 |
- regex: 'NetBSD(?:[/ ]?(\d+[\.\d]+))?'
|
717 |
name: 'NetBSD'
|
718 |
version: '$1'
|
719 |
+
|
720 |
+
|
721 |
- regex: 'OpenBSD(?:[/ ]?(\d+[\.\d]+))?'
|
722 |
name: 'OpenBSD'
|
723 |
version: '$1'
|
724 |
+
|
725 |
+
|
726 |
- regex: 'DragonFly(?:[/ ]?(\d+[\.\d]+))?'
|
727 |
name: 'DragonFly'
|
728 |
version: '$1'
|
729 |
+
|
730 |
+
|
731 |
- regex: 'Syllable(?:[/ ]?(\d+[\.\d]+))?'
|
732 |
name: 'Syllable'
|
733 |
version: '$1'
|
734 |
+
|
735 |
+
|
736 |
- regex: 'IRIX(?:;64)?(?:[/ ]?(\d+[\.\d]+))'
|
737 |
name: 'IRIX'
|
738 |
version: '$1'
|
739 |
+
|
740 |
+
|
741 |
- regex: 'OSF1(?:[/ ]?v?(\d+[\.\d]+))?'
|
742 |
name: 'OSF1'
|
743 |
version: '$1'
|
744 |
+
|
745 |
+
|
|
|
746 |
##########
|
747 |
# Gaming Console
|
748 |
##########
|
753 |
- regex: 'PlayStation ?([3|4])'
|
754 |
name: 'PlayStation'
|
755 |
version: '$1'
|
756 |
+
|
757 |
+
|
758 |
- regex: 'Xbox|KIN\.(?:One|Two)'
|
759 |
name: 'Xbox'
|
760 |
version: '360'
|
761 |
+
|
762 |
+
|
|
|
763 |
##########
|
764 |
# Mobile Gaming Console
|
765 |
##########
|
766 |
- regex: 'Nitro|Nintendo ([3]?DS[i]?)'
|
767 |
name: 'Nintendo Mobile'
|
768 |
version: '$1'
|
769 |
+
|
770 |
+
|
771 |
- regex: 'PlayStation ((?:Portable|Vita))'
|
772 |
name: 'PlayStation Portable'
|
773 |
version: '$1'
|
774 |
+
|
775 |
+
|
|
|
776 |
##########
|
777 |
# IBM
|
778 |
##########
|
779 |
- regex: 'OS/2'
|
780 |
name: 'OS/2'
|
781 |
version: ''
|
|
|
782 |
|
783 |
|
784 |
###########
|
787 |
- regex: 'Linux(?:OS)?[^a-z]'
|
788 |
name: 'GNU/Linux'
|
789 |
version: ''
|
|
|
|
assets/js/asset_manager_core_js.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
/* Matomo Javascript - cb=
|
2 |
|
3 |
/*!
|
4 |
* Matomo - free/libre analytics platform
|
@@ -838,7 +838,7 @@ if(hash){if(/^popover=/.test(hash)){var hashParts=['',hash.replace(/^popover=/,'
|
|
838 |
var hashUrl=hashParts[0];var popoverParam='';if(hashParts.length>1){popoverParam=hashParts[1];popoverParam=decodeURIComponent(popoverParam);popoverParam=popoverParam.replace(/\$/g,'%');popoverParam=decodeURIComponent(popoverParam);}
|
839 |
var pageUrlUpdated=(popoverParam==''||(broadcast.currentHashUrl!==false&&broadcast.currentHashUrl!=hashUrl));var popoverParamUpdated=(popoverParam!=''&&hashUrl==broadcast.currentHashUrl);if(broadcast.currentHashUrl===false){pageUrlUpdated=true;popoverParamUpdated=(popoverParam!='');}
|
840 |
if(!broadcast.isWidgetizedDashboard()&&(pageUrlUpdated||broadcast.forceReload)){Piwik_Popover.close();if(hashUrl!=broadcast.currentHashUrl||broadcast.forceReload){broadcast.loadAjaxContent(hashUrl);$('.top_controls .dashboard-manager').hide();$('#dashboardWidgetsArea').dashboard('destroy');require('piwik/UI').UIControl.cleanupUnusedControls();}}
|
841 |
-
broadcast.forceReload=false;broadcast.currentHashUrl=hashUrl;broadcast.currentPopoverParameter=popoverParam;Piwik_Popover.close();if(popoverParamUpdated){var popoverParamParts=popoverParam.split(':');var handlerName=popoverParamParts[0];popoverParamParts.shift();var param=popoverParamParts.join(':');if(typeof broadcast.popoverHandlers[handlerName]!='undefined'&&!broadcast.isLoginPage()){broadcast.popoverHandlers[handlerName](param);}}}else{Piwik_Popover.close();if(!broadcast.isWidgetizedDashboard()){$('.pageWrap #content:not(.admin)').empty();}}},isWidgetizedDashboard:function(){return broadcast.getValueFromUrl('module')=='Widgetize'&&broadcast.getValueFromUrl('moduleToWidgetize')=='Dashboard';},isWidgetizeRequestWithoutSession:function(){return broadcast.getValueFromUrl('
|
842 |
var action=broadcast.getParamValue('action',currentHashStr);if(action!='goalReport'&&action!='ecommerceReport'&&action!='products'&&action!='sales'&&(''+ajaxUrl).indexOf('&idGoal=')===-1){currentHashStr=broadcast.updateParamValue('idGoal=',currentHashStr);}
|
843 |
var module=broadcast.getParamValue('module',currentHashStr);if(module!='Dashboard'){currentHashStr=broadcast.updateParamValue('idDashboard=',currentHashStr);}
|
844 |
if(module!='CustomDimensions'){currentHashStr=broadcast.updateParamValue('idDimension=',currentHashStr);}
|
1 |
+
/* Matomo Javascript - cb=f6964928f2b95428fdad8da54f736226*/
|
2 |
|
3 |
/*!
|
4 |
* Matomo - free/libre analytics platform
|
838 |
var hashUrl=hashParts[0];var popoverParam='';if(hashParts.length>1){popoverParam=hashParts[1];popoverParam=decodeURIComponent(popoverParam);popoverParam=popoverParam.replace(/\$/g,'%');popoverParam=decodeURIComponent(popoverParam);}
|
839 |
var pageUrlUpdated=(popoverParam==''||(broadcast.currentHashUrl!==false&&broadcast.currentHashUrl!=hashUrl));var popoverParamUpdated=(popoverParam!=''&&hashUrl==broadcast.currentHashUrl);if(broadcast.currentHashUrl===false){pageUrlUpdated=true;popoverParamUpdated=(popoverParam!='');}
|
840 |
if(!broadcast.isWidgetizedDashboard()&&(pageUrlUpdated||broadcast.forceReload)){Piwik_Popover.close();if(hashUrl!=broadcast.currentHashUrl||broadcast.forceReload){broadcast.loadAjaxContent(hashUrl);$('.top_controls .dashboard-manager').hide();$('#dashboardWidgetsArea').dashboard('destroy');require('piwik/UI').UIControl.cleanupUnusedControls();}}
|
841 |
+
broadcast.forceReload=false;broadcast.currentHashUrl=hashUrl;broadcast.currentPopoverParameter=popoverParam;Piwik_Popover.close();if(popoverParamUpdated){var popoverParamParts=popoverParam.split(':');var handlerName=popoverParamParts[0];popoverParamParts.shift();var param=popoverParamParts.join(':');if(typeof broadcast.popoverHandlers[handlerName]!='undefined'&&!broadcast.isLoginPage()){broadcast.popoverHandlers[handlerName](param);}}}else{Piwik_Popover.close();if(!broadcast.isWidgetizedDashboard()){$('.pageWrap #content:not(.admin)').empty();}}},isWidgetizedDashboard:function(){return broadcast.getValueFromUrl('module')=='Widgetize'&&broadcast.getValueFromUrl('moduleToWidgetize')=='Dashboard';},isWidgetizeRequestWithoutSession:function(){return broadcast.getValueFromUrl('token_auth')!=''&&broadcast.getValueFromUrl('force_api_session')!='1';},isLoginPage:function(){return!!$('body#loginPage').length;},propagateAjax:function(ajaxUrl,disableHistory){broadcast.init();globalAjaxQueue.abort();var currentHashStr=broadcast.getHash();ajaxUrl=ajaxUrl.replace(/^\?|&#/,'');var params_vals=ajaxUrl.split("&");for(var i=0;i<params_vals.length;i++){currentHashStr=broadcast.updateParamValue(params_vals[i],currentHashStr);}
|
842 |
var action=broadcast.getParamValue('action',currentHashStr);if(action!='goalReport'&&action!='ecommerceReport'&&action!='products'&&action!='sales'&&(''+ajaxUrl).indexOf('&idGoal=')===-1){currentHashStr=broadcast.updateParamValue('idGoal=',currentHashStr);}
|
843 |
var module=broadcast.getParamValue('module',currentHashStr);if(module!='Dashboard'){currentHashStr=broadcast.updateParamValue('idDashboard=',currentHashStr);}
|
844 |
if(module!='CustomDimensions'){currentHashStr=broadcast.updateParamValue('idDimension=',currentHashStr);}
|
classes/WpMatomo.php
CHANGED
@@ -50,6 +50,7 @@ class WpMatomo {
|
|
50 |
|
51 |
if ( self::is_safe_mode() ) {
|
52 |
if ( is_admin() ) {
|
|
|
53 |
new \WpMatomo\Admin\SafeModeMenu( self::$settings );
|
54 |
}
|
55 |
|
@@ -157,7 +158,14 @@ class WpMatomo {
|
|
157 |
}
|
158 |
|
159 |
public static function is_safe_mode() {
|
160 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
}
|
162 |
|
163 |
public function add_settings_link( $links ) {
|
50 |
|
51 |
if ( self::is_safe_mode() ) {
|
52 |
if ( is_admin() ) {
|
53 |
+
new Admin( self::$settings, false );
|
54 |
new \WpMatomo\Admin\SafeModeMenu( self::$settings );
|
55 |
}
|
56 |
|
158 |
}
|
159 |
|
160 |
public static function is_safe_mode() {
|
161 |
+
if ( defined( 'MATOMO_SAFE_MODE' ) && MATOMO_SAFE_MODE) {
|
162 |
+
return true;
|
163 |
+
}
|
164 |
+
|
165 |
+
return function_exists('is_plugin_active') &&
|
166 |
+
(is_plugin_active('cookiebot/cookiebot.php')
|
167 |
+
|| is_plugin_active('wp-rss-aggregator/wp-rss-aggregator.php')
|
168 |
+
);
|
169 |
}
|
170 |
|
171 |
public function add_settings_link( $links ) {
|
classes/WpMatomo/Admin/Admin.php
CHANGED
@@ -19,8 +19,10 @@ class Admin {
|
|
19 |
/**
|
20 |
* @param Settings $settings
|
21 |
*/
|
22 |
-
public function __construct( $settings ) {
|
23 |
-
|
|
|
|
|
24 |
|
25 |
add_action( 'admin_enqueue_scripts', array( $this, 'load_scripts' ) );
|
26 |
}
|
19 |
/**
|
20 |
* @param Settings $settings
|
21 |
*/
|
22 |
+
public function __construct( $settings, $init_menu = true ) {
|
23 |
+
if ($init_menu) {
|
24 |
+
new Menu( $settings );
|
25 |
+
}
|
26 |
|
27 |
add_action( 'admin_enqueue_scripts', array( $this, 'load_scripts' ) );
|
28 |
}
|
classes/WpMatomo/Admin/SystemReport.php
CHANGED
@@ -55,6 +55,8 @@ class SystemReport {
|
|
55 |
'data-tables-generator-by-supsystic', // uses an old version of twig causing some styles to go funny in the reporting and admin
|
56 |
'tweet-old-post-pro', // uses a newer version of monolog
|
57 |
'secupress', // see #369 depending on setting might have issues
|
|
|
|
|
58 |
);
|
59 |
|
60 |
private $valid_tabs = array( 'troubleshooting' );
|
@@ -381,18 +383,22 @@ class SystemReport {
|
|
381 |
);
|
382 |
|
383 |
$wpmatomo_updater = new \WpMatomo\Updater($this->settings);
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
|
|
|
|
|
|
|
|
396 |
if (!$wpmatomo_updater->load_plugin_functions()) {
|
397 |
// this should actually never happen...
|
398 |
$rows[] = array(
|
@@ -1354,11 +1360,19 @@ class SystemReport {
|
|
1354 |
$additional_comment .= '<br><br>If reports aren\'t being generated then you may need to disable the feature "Firewall -> Block Bad Request Methods" in SecuPress (if it is enabled) or add the following line to your "wp-config.php": <br><code>define( \'MATOMO_SUPPORT_ASYNC_ARCHIVING\', false );</code>.';
|
1355 |
}
|
1356 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1357 |
$rows[] = array(
|
1358 |
'name' => __( 'Not compatible plugins', 'matomo' ),
|
1359 |
'value' => count( $used_not_compatible ),
|
1360 |
'comment' => implode( ', ', $used_not_compatible ) . '<br><br> Matomo may work fine when using these plugins but there may be some issues. For more information see<br>https://matomo.org/faq/wordpress/which-plugins-is-matomo-for-wordpress-known-to-be-not-compatible-with/ ' . $additional_comment,
|
1361 |
-
'is_warning' =>
|
|
|
1362 |
);
|
1363 |
}
|
1364 |
}
|
55 |
'data-tables-generator-by-supsystic', // uses an old version of twig causing some styles to go funny in the reporting and admin
|
56 |
'tweet-old-post-pro', // uses a newer version of monolog
|
57 |
'secupress', // see #369 depending on setting might have issues
|
58 |
+
'cookiebot', // see https://wordpress.org/support/topic/critical-error-after-upgrade/ conflict re php-di version
|
59 |
+
'wp-rss-aggregator', // see https://wordpress.org/support/topic/critical-error-after-upgrade/ conflict re php-di version
|
60 |
);
|
61 |
|
62 |
private $valid_tabs = array( 'troubleshooting' );
|
383 |
);
|
384 |
|
385 |
$wpmatomo_updater = new \WpMatomo\Updater($this->settings);
|
386 |
+
if (!\WpMatomo::is_safe_mode()) {
|
387 |
+
|
388 |
+
$outstanding_updates = $wpmatomo_updater->get_plugins_requiring_update();
|
389 |
+
$upgrade_in_progress = $wpmatomo_updater->is_upgrade_in_progress();
|
390 |
+
$rows[] = array(
|
391 |
+
'name' => 'Upgrades outstanding',
|
392 |
+
'value' => !empty($outstanding_updates),
|
393 |
+
'comment' => !empty($outstanding_updates) ? json_encode($outstanding_updates) : '',
|
394 |
+
);
|
395 |
+
$rows[] = array(
|
396 |
+
'name' => 'Upgrade in progress',
|
397 |
+
'value' => $upgrade_in_progress,
|
398 |
+
'comment' => '',
|
399 |
+
);
|
400 |
+
}
|
401 |
+
|
402 |
if (!$wpmatomo_updater->load_plugin_functions()) {
|
403 |
// this should actually never happen...
|
404 |
$rows[] = array(
|
1360 |
$additional_comment .= '<br><br>If reports aren\'t being generated then you may need to disable the feature "Firewall -> Block Bad Request Methods" in SecuPress (if it is enabled) or add the following line to your "wp-config.php": <br><code>define( \'MATOMO_SUPPORT_ASYNC_ARCHIVING\', false );</code>.';
|
1361 |
}
|
1362 |
|
1363 |
+
$is_warning = true;
|
1364 |
+
$is_error = false;
|
1365 |
+
if (in_array('cookiebot', $used_not_compatible)) {
|
1366 |
+
$is_warning = false;
|
1367 |
+
$is_error = true;
|
1368 |
+
}
|
1369 |
+
|
1370 |
$rows[] = array(
|
1371 |
'name' => __( 'Not compatible plugins', 'matomo' ),
|
1372 |
'value' => count( $used_not_compatible ),
|
1373 |
'comment' => implode( ', ', $used_not_compatible ) . '<br><br> Matomo may work fine when using these plugins but there may be some issues. For more information see<br>https://matomo.org/faq/wordpress/which-plugins-is-matomo-for-wordpress-known-to-be-not-compatible-with/ ' . $additional_comment,
|
1374 |
+
'is_warning' => $is_warning,
|
1375 |
+
'is_error' => $is_error,
|
1376 |
);
|
1377 |
}
|
1378 |
}
|
classes/WpMatomo/Email.php
CHANGED
@@ -97,7 +97,8 @@ class Email {
|
|
97 |
$header = 'X-Matomo: ' . $random_id;
|
98 |
$executed_action = false;
|
99 |
|
100 |
-
add_action('phpmailer_init', function (
|
|
|
101 |
if ($executed_action) {
|
102 |
return; // already done, do not execute another time
|
103 |
}
|
97 |
$header = 'X-Matomo: ' . $random_id;
|
98 |
$executed_action = false;
|
99 |
|
100 |
+
add_action('phpmailer_init', function ($phpmailer) use ($attachments, $subject, $random_id, &$executed_action) {
|
101 |
+
/** @var PHPMailer $phpmailer */
|
102 |
if ($executed_action) {
|
103 |
return; // already done, do not execute another time
|
104 |
}
|
matomo.php
CHANGED
@@ -4,10 +4,10 @@
|
|
4 |
* Description: The #1 Google Analytics alternative that gives you full control over your data and protects the privacy for your users. Free, secure and open.
|
5 |
* Author: Matomo
|
6 |
* Author URI: https://matomo.org
|
7 |
-
* Version: 4.0.
|
8 |
* Domain Path: /languages
|
9 |
* WC requires at least: 2.4.0
|
10 |
-
* WC tested up to: 4.
|
11 |
*
|
12 |
* Matomo - free/libre analytics platform
|
13 |
*
|
4 |
* Description: The #1 Google Analytics alternative that gives you full control over your data and protects the privacy for your users. Free, secure and open.
|
5 |
* Author: Matomo
|
6 |
* Author URI: https://matomo.org
|
7 |
+
* Version: 4.0.3
|
8 |
* Domain Path: /languages
|
9 |
* WC requires at least: 2.4.0
|
10 |
+
* WC tested up to: 4.8.0
|
11 |
*
|
12 |
* Matomo - free/libre analytics platform
|
13 |
*
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
|
|
4 |
Tags: matomo,piwik,analytics,statistics,stats,tracking,ecommerce
|
5 |
Requires at least: 4.8
|
6 |
Tested up to: 5.6
|
7 |
-
Stable tag: 4.0.
|
8 |
Requires PHP: 7.2.5
|
9 |
License: GPLv3 or later
|
10 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
4 |
Tags: matomo,piwik,analytics,statistics,stats,tracking,ecommerce
|
5 |
Requires at least: 4.8
|
6 |
Tested up to: 5.6
|
7 |
+
Stable tag: 4.0.3
|
8 |
Requires PHP: 7.2.5
|
9 |
License: GPLv3 or later
|
10 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|